Skip to main content

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, auto-prefixes uv run
  • 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 --lang or SYNC_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
    use_uv: true                      # Auto-prefix python commands with uv run
    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:

  1. sync_config.yaml
  2. sync-pilot.yaml
  3. .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
use_uv No Auto-prefix python with uv run (default: true)
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

  1. Push uses rsync -avz --progress --delete with exclude patterns to sync code
  2. Train pushes code first, then creates a tmux session on the remote via ssh + tmux send-keys (ensures .bashrc is loaded for proper PATH)
  3. Watch queries nvidia-smi and tmux capture-pane over SSH to display GPU status and training logs
  4. Pull uses rsync without excludes to fetch all files from configured pull_directories

Requirements

  • Python >= 3.10
  • rsync and ssh available on PATH
  • tmux on 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-pilotuv add sync-pilot

快速开始:

sync-pilot init     # 生成配置文件
vim sync_config.yaml  # 编辑远端信息
sync-pilot          # 启动交互菜单

支持自动检测系统语言,也可通过 --lang zhSYNC_PILOT_LANG=zh 强制使用中文界面。

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sync_pilot-0.1.1.tar.gz (13.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sync_pilot-0.1.1-py3-none-any.whl (15.8 kB view details)

Uploaded Python 3

File details

Details for the file sync_pilot-0.1.1.tar.gz.

File metadata

  • Download URL: sync_pilot-0.1.1.tar.gz
  • Upload date:
  • Size: 13.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.7.11

File hashes

Hashes for sync_pilot-0.1.1.tar.gz
Algorithm Hash digest
SHA256 a38210548f9a901891a2ea55fe1b87e73547a71087282d2930e67206ce54d3d8
MD5 d3fc7241354308ef3e6f02b1bebb9b12
BLAKE2b-256 fab3cec629814e9f60f3bafa013cec6adf162ac5e9b7db26d53102e0bd592a9b

See more details on using hashes here.

File details

Details for the file sync_pilot-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: sync_pilot-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 15.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.7.11

File hashes

Hashes for sync_pilot-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 1fd2eab6293aab8124821b7cc1b0c4dd425b110de528ec645faa35e192becfb9
MD5 a28220d8d79e1e3adebe51f5880aaaf5
BLAKE2b-256 06447f3b887a011dc20e13059e58df492d9e785a4ff6616d8b45454cf23612ea

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page