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
  • 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
    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
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.2.tar.gz (12.9 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.2-py3-none-any.whl (15.6 kB view details)

Uploaded Python 3

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

Hashes for sync_pilot-0.1.2.tar.gz
Algorithm Hash digest
SHA256 06ecf48b41b3a679926ec8743fc72ff381217679695a4d9f6413c5d18fa6cdbb
MD5 34c1c7d1171543e675525cfc4d13c77d
BLAKE2b-256 b4b1ddef13046801ad39c88579b02941381b781afa2ee4bffef41b9670e783e7

See more details on using hashes here.

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

Hashes for sync_pilot-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 aaad722327e33c632e56e65a56c11901a0da01f20f973af7271c9c6cfbd00100
MD5 969b604da8261e1253dc9ac3f61dd244
BLAKE2b-256 9e7fbc3c2df21419de1e39e7a4119c1c2d6d3fcf41c29e37bf1d34118808321e

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