Skip to content

jayant07-yb/remote-sync

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

remote-sync

Bidirectional project sync over SSH. A simple, vendor-neutral tool to push local project code to a remote machine and pull outputs back — without Git, SDKs, or editor lock-in.

Why remote-sync exists

When training models or running long jobs on remote machines (Vast.ai, EC2, bare metal, lab servers):

  • Git is too slow for iteration
  • Editors require SSH sessions
  • Outputs stay remote
  • Re-downloading data is painful
  • SDKs add lock-in

remote-sync solves exactly one problem:

Keep a local project directory and a remote project directory in sync — safely and predictably.

  • Nothing more.
  • What remote-sync does
  • Pushes local → remote paths
  • Pulls remote → local paths
  • Uses rsync over SSH
  • Works with any system that has SSH
  • Supports raw SSH commands (Vast.ai compatible)

What remote-sync does NOT do

  • ❌ Launch machines
  • ❌ Manage infrastructure
  • ❌ Install dependencies
  • ❌ Run training jobs
  • ❌ Replace your editor

It is intentionally minimal.

Requirements

  • Python 3.9+
  • SSH client (ssh)
  • rsync

Access to a remote machine via SSH

On macOS / Linux, these are usually already installed.

Installation

Development / local install (recommended)

From the repository root:

pip install -e .

This installs the remote-sync CLI in editable mode.

Verify:

remote-sync --help

Configuration

remote-sync uses a YAML configuration file.

Default config file name remote-sync.yaml

You can override it with --config.

Basic configuration example

remote_sync:
  ssh:
    user: root
    host: 1.2.3.4
    port: 23456

  push_paths:
    - local: .
      remote: /workspace/projects/biomass-experiment

  pull_paths:
    - remote: /workspace/projects/biomass-experiment/output
      local: ./outputs

  ignore_paths:
    - .git
    - __pycache__
    - outputs
    - data
    - kaggle.json

TODO:

  • Use git path command to update the remote
  • Support for storing creds in session variable
  • Support for rysnc + custom command (basically run rysnc + a following command)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages