AgentSync¶
Snapshot, encrypt, and sync your AI agent configurations across machines through a Git-backed vault. Plaintext never leaves the machine.
What this page owns¶
The front door. It owns the pitch, the install commands, and the routing to the rest of the documentation. Every concept is owned by a single deeper page; this page only points at them.
Install¶
The primary path is a global install with Bun 1.3.9 or later.
After the global install, every example in the rest of this site runs as plain agentsync <command>.
If you would rather not install globally, use bunx:
The bunx form is fully supported. It is slower on cold runs because it fetches the package each time, but it keeps your machine clean.
The GitHub Release record is the canonical source for the version you are installing and what changed in it. Start at the latest release. Standalone compiled binaries are published there alongside SHA256 checksums and Sigstore build provenance attestations — see Operations → Verifying release binaries for the one-line check.
Quickstart¶
Five steps from zero to a working sync.
Tip: once you have run
initonce, runningagentsyncwith no arguments opens an interactive TUI that covers vault browsing, per-agent local view, push, browsing other machines and copying from them, and migrate. See Commands → tui.
- Create an empty Git repo to act as the vault. A private GitHub or GitLab repo works. Nothing in it will ever contain plaintext.
-
Initialise on the first machine.
agentsync initgenerates an age keypair, registers it as a recipient, writesagentsync.toml, and clones the empty vault. -
Push your current agent config.
agentsync pushwalks every enabled agent path, runs the sanitiser, encrypts, and fast-forwards the vault. -
Join from another machine. On the second machine,
initgenerates a fresh age keypair; on a machine that already has the vault, register the new public key as a recipient (agentsync key add <name> <pubkey>and push). Then, back on the new machine,copythe config you want from any machine's namespace (usecopy self …once it has its own backup).# on the new machine agentsync init --remote git@github.com:<you>/agentsync-vault.git --branch main # then on a machine that already has the vault, add the new recipient and push: # agentsync key add <name> <pubkey-printed-by-init> # agentsync push # back on the new machine, bring down another machine's config: agentsync copy <other-machine> claude/
Detailed flag, outcome, and caveat tables live in Commands.
Why?¶
- Plaintext never crosses the network. Every artefact in the vault is encrypted to one or more age recipients before any Git operation runs.
- Fast-forward only. Reconciliation never merges silently. If two machines diverge, AgentSync stops and prints a recovery path.
- Sanitiser is a hard gate. Literal secrets and never-sync paths abort the push before any bytes leave the machine.
- Vault removal is explicit.
copyis additive by design so an in-progress local edit cannot be wiped by a remote that omits it. Deletion is never silent: the CLIagentsync skill removedeletes a skill, and the TUI Sync tab removes any selected vault artifact after ay/nconfirm — both routed through oneperformVaultRemovecore. - Interactive TUI. Running
agentsyncwith no subcommand opens a tabbed UI to browse the vault, inspect per-agent local content, trigger a push, browse machines and copy from them, and migrate config — without memorising flags.
Where to go next¶
- Architecture — system model, vault format, push and copy pipelines, security boundaries.
- Commands — every subcommand, flag, outcome, and caveat in one reference.
- Migrate — translate config between Claude, Cursor, Codex, Copilot, and VS Code.
- Operations — key rotation, troubleshooting catalogue.
- Contributing — develop from source, run the test suite, release discipline, doc ownership.
Project status¶
AgentSync is pre-1.0. The CLI surface is stable enough to depend on for personal use across machines, but the vault format is versioned and may change in a minor release. Format migrations are recorded in Migrate.