sincronizado
v2.0.1
Published
<p align="center"> <a href="https://github.com/Microck/sincronizado"> <img src="/assets/logo/logosmall.png" alt="logo" width="250"> </a> </p>
Downloads
997
Readme
sincronizado ("synchronized") is the missing link for ai-native development. it allows you to use your own local files while running your heavy ai agents and code execution on a powerful vps.
the problem
local machines have good editors but weak compute. running multiple ai agents locally kills battery and blocks your terminal.
vps instances have the compute but editing on them is painful. ssh latency lags. remote connections drop. terminal-only editing is limiting when you need rich gui tools.
the fix
sincronizado bridges the gap.
- keep your files on your local machine.
- sync them instantly to a vps using mutagen.
- run your ai agent (claude, opencode) on the vps in a persistent tmux session.
you get local speed with server-grade compute.
workflow scenarios
scenario a: the "macbook air + h100"
you love macos but need serious gpu power. edit your training script locally. sinc pushes it to the vps instantly. you run python train.py in the remote session. your laptop stays cool and silent.
scenario b: the "digital nomad"
bad hotel wifi? no problem. mutagen syncs when the connection allows. tmux keeps your heavy compilation or long-running agent alive even if you disconnect for hours. resume with sinc -r exactly where you left off.
scenario c: the "battery saver"
running ollama or huge node builds locally kills battery in 2 hours. offload it all to a cheap hetzner box. keep your local machine purely for editing and browsing.
what it actually does
sinc is the cli for sincronizado. it orchestrates mutagen, ssh, and tmux.
when you run sinc in a project folder:
- checks if a sync session exists. if not, creates one.
- syncs local files to
~/workspace/<folder_name>on remote. - opens an ssh connection.
- attaches to a tmux session named after your project.
- drops you into a shell where your agent is ready to run.
if you disconnect, the session stays alive. run sinc -r to reattach. files keep syncing in the background.
architecture
graph TB
subgraph local ["local machine"]
vs[editor]
cli[sinc cli]
end
subgraph sync ["tunnel"]
mut[mutagen daemon]
end
subgraph vps ["remote vps"]
agent[ai agent]
tmux[tmux session]
fs[file system]
end
vs <-->|file changes| cli
cli <-->|mutagen protocol| mut
mut <-->|ssh tunnel| fs
cli <-->|ssh stream| tmux
tmux <--> agent
agent <--> fsinstallation
automated (linux / macos)
installs the binary to ~/.local/bin (or similar) and sets up config.
curl -fsSL https://sync.micr.dev/install.sh | bashautomated (windows powershell)
requires powershell 5+ and administrative privileges for symlinks if you don't use developer mode.
irm https://sync.micr.dev/install.ps1 | iexllm-guided setup
want an ai assistant to walk you through install + vps setup? paste this into your llm agent session:
Install and configure sincronizado by following the instructions here:
https://raw.githubusercontent.com/Microck/sincronizado/refs/heads/main/INSTALL.mdif this helped, consider starring the repo ᕙ(⇀‸↼‶)ᕗ
manual (from source)
requires bun runtime.
git clone https://github.com/Microck/sincronizado.git
cd sincronizado
bun install
bun run build
# binary is in ./dist/sincusage
initial setup
run this once. it creates ~/.config/sincronizado/config.json, checks for ssh keys, and sets up your environment.
setup features:
- vps connection: configure host, user, and port.
- ssh keys: use existing or generate new ed25519 keys.
- custom alias: create a shortcut (e.g. type
opencodeto runsinc). - vps bootstrap: auto-install tmux and create workspace folders.
- security hardening: optional firewall (ufw), fail2ban, and auto-updates setup.
start a session
navigate to your project. run sync.
cd ~/my-project
sincthis creates the remote folder ~/workspace/my-project and starts syncing.
resume a session
detached? network drop? reattach to the existing tmux session.
sinc -rmanual sync (push / pull)
force a one-way sync for the current project. this requires an active session and asks for confirmation.
sinc push
sinc pullto skip the confirmation prompt:
sinc push --yes
sinc pull --yeskill a session
stop the sync and kill the remote tmux session.
sinc --kill <session_name>
sinc -k <session_name>
sinc kill <session_name>list active sessions:
sinc --list
sinc -l
sinc listconfiguration
config lives at ~/.config/sincronizado/config.json.
example:
{
"vps": {
"hostname": "192.168.1.50",
"user": "ubuntu",
"port": 22,
"keyPath": "~/.ssh/id_ed25519"
},
"sync": {
"mode": "two-way-safe",
"ignore": [
".git",
"node_modules",
"dist",
".next",
"coverage"
],
"remoteBase": "~/workspace"
},
"agent": "opencode"
}remote base
remoteBase defines where projects live on the vps. default is ~/workspace.
if you sync ~/code/my-app locally, it lands at ~/workspace/my-app remotely.
ignore files
create a .syncignore file in your project root to override global ignores. syntax matches .gitignore.
# .syncignore
build/
tmp/
*.logdependencies
local:
mutagen: handles file synchronization.sinc --setupattempts to install this.ssh: standard openssh client.
remote (vps):
tmux: required for session persistence.opencodeorclaude: the agent you want to run.git: recommended for version control operations.
bootstrap a fresh vps with our script:
# runs on your local machine, targets the vps
./scripts/setup-vps.shtroubleshooting
sync conflicts
run mutagen sync list to see status. if stuck, run mutagen sync terminate <id> and restart sinc.
ssh permission denied
check your key is loaded: ssh-add -l. verify you can ssh manually: ssh user@host.
agent not found
ensure your agent binary is in the remote $PATH. check .bashrc or .zshrc on the vps.
latency
mutagen is fast but big node_modules folders slow it down. ignore them in config.json or .syncignore. run npm install on the vps side instead.
license
MIT ᕙ(⇀‸↼‶)ᕗ
