Interactive TUI tool for syncing projects to remote servers via rsync + SSH
Project description
sync-pilot
Interactive TUI tool for syncing projects to remote servers via rsync + SSH. Built for ML/DL training workflows.
Features
- Push/Pull — Sync code and checkpoints with rsync
- Remote Training — One-click push + launch training in tmux
- Monitor — GPU utilization, tmux session output, live attach, session management (kill/refresh)
- Status — Project overview with remote directory sizes and checkpoint counts
- Data Push — One-time upload for large datasets
- i18n — Auto-detects system locale (Chinese/English), override with
--langorSYNC_PILOT_LANG
Install
pip install sync-pilot
# or
uv add sync-pilot
Quick Start
# 1. Initialize config in your project directory
cd /path/to/your/project
sync-pilot init
# 2. Edit sync_config.yaml with your remote server info
vim sync_config.yaml
# 3. Launch interactive TUI
sync-pilot
Usage
sync-pilot # Interactive TUI menu
sync-pilot init # Generate config files in current directory
sync-pilot push # Push code to remote
sync-pilot pull # Pull checkpoints from remote
sync-pilot train # Push + launch remote training in tmux
sync-pilot push-data # One-time data upload
sync-pilot watch # Monitor GPU & tmux sessions
sync-pilot status # Project status overview
Options
-c, --config FILE Config file path (default: auto-detect)
-p, --project NAME Target project name
--lang zh|en Force UI language
-V, --version Show version
Configuration
sync_config.yaml:
remote_host: 1.2.3.4
remote_user: root
remote_port: 22 # Optional, default 22
projects:
my_project:
description: "My ML project"
local_path: /home/user/workspace/project/
remote_path: /mnt/workspace/project/
exclude_file: rsync_exclude.txt # Relative to this config file
pull_directories:
- checkpoints/
checkpoint_patterns: # For status search (default: *.pth, *.pt)
- "*.pth"
- "*.safetensors"
training_data:
description: "Training dataset (32GB)"
local_path: /home/user/data/
remote_path: /mnt/data/
pull_only: true # Prevent accidental push
Config file auto-detection
sync-pilot looks for config files in this order:
sync_config.yamlsync-pilot.yaml.sync-pilot.yaml
Project options
| Field | Required | Description |
|---|---|---|
description |
No | Human-readable project description |
local_path |
Yes | Local directory path (must end with /) |
remote_path |
Yes | Remote directory path |
exclude_file |
No | rsync exclude file, relative to config file |
pull_directories |
No | Directories to pull from remote |
pull_only |
No | Prevent push, allow pull only |
checkpoint_patterns |
No | File patterns for status search (default: ["*.pth", "*.pt"]) |
How it works
- Push uses
rsync -avz --progress --deletewith exclude patterns to sync code - Train pushes code first, then creates a tmux session on the remote via
ssh+tmux send-keys(ensures.bashrcis loaded for proper PATH) - Watch queries
nvidia-smiandtmux capture-paneover SSH to display GPU status and training logs - Pull uses
rsyncwithout excludes to fetch all files from configuredpull_directories
Requirements
- Python >= 3.10
rsyncandsshavailable on PATHtmuxon the remote server (for training/watch features)- SSH key-based auth configured (recommended)
License
MIT
中文说明
sync-pilot 是一个交互式 TUI 工具,通过 rsync + SSH 同步项目到远端服务器,专为 ML/DL 训练工作流设计。
安装:pip install sync-pilot 或 uv add sync-pilot
快速开始:
sync-pilot init # 生成配置文件
vim sync_config.yaml # 编辑远端信息
sync-pilot # 启动交互菜单
支持自动检测系统语言,也可通过 --lang zh 或 SYNC_PILOT_LANG=zh 强制使用中文界面。
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file sync_pilot-0.1.2.tar.gz.
File metadata
- Download URL: sync_pilot-0.1.2.tar.gz
- Upload date:
- Size: 12.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.7.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
06ecf48b41b3a679926ec8743fc72ff381217679695a4d9f6413c5d18fa6cdbb
|
|
| MD5 |
34c1c7d1171543e675525cfc4d13c77d
|
|
| BLAKE2b-256 |
b4b1ddef13046801ad39c88579b02941381b781afa2ee4bffef41b9670e783e7
|
File details
Details for the file sync_pilot-0.1.2-py3-none-any.whl.
File metadata
- Download URL: sync_pilot-0.1.2-py3-none-any.whl
- Upload date:
- Size: 15.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.7.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aaad722327e33c632e56e65a56c11901a0da01f20f973af7271c9c6cfbd00100
|
|
| MD5 |
969b604da8261e1253dc9ac3f61dd244
|
|
| BLAKE2b-256 |
9e7fbc3c2df21419de1e39e7a4119c1c2d6d3fcf41c29e37bf1d34118808321e
|