If you work across multiple machines, you know the pain. Your laptop has that alias you added last week. Your desktop is missing the git config tweak you made yesterday. Your VM has an outdated .zshrc from three months ago. You spend more time keeping configs in sync than actually coding.
I got tired of this. So I built Tether.
What Tether Does
Tether is a CLI that syncs your development environment across machines:
- Encrypted dotfile sync - Your
.zshrc,.gitconfig, Claude Code settings, and other dotfiles sync via a Git repo you control - Project config sync - Files like
.env.localandappsettings.Local.jsonsync across machines, matched by Git remote - Global package sync - Homebrew formulae/casks, npm, pnpm, bun, and gem packages stay consistent
- Background daemon - Changes sync automatically every 5 minutes
- Nightly upgrades - Packages upgrade overnight so your machines stay current
- Secret detection - Scans for API keys, tokens, and credentials before committing
- Conflict resolution - Three-way merge detection with automatic backups before any overwrite
What makes it different from chezmoi, yadm, or stow? Those tools manage dotfiles. Tether syncs your entire dev environment:
- Automatic - A background daemon syncs changes. No manual commands to remember.
- Packages included - Homebrew formulae, casks (VS Code, Docker, etc.), npm globals, pnpm packages all stay in sync.
- Zero config - No templating language. No complex setup. Just point it at a private Git repo.
How It Works
Your shell reads plaintext. Git stores ciphertext. Your passphrase is the only key.
Tether keeps things simple:
- Dotfiles stay plaintext locally - Your shell reads
~/.zshrcnormally - Encrypted before sync - AES-256-GCM encryption happens before anything touches Git
- Passphrase unlocks everything - Same passphrase works across all your machines
- Package manifests sync unencrypted - Package names aren’t sensitive
When you set up a new machine, you enter your passphrase once. Tether decrypts your dotfiles and installs your packages. Done.
No external services. No cloud storage. No accounts. Just your Git repo and a passphrase you remember. You control everything.
Quick Start
# Install via Homebrew
brew tap paddo-tech/tap && brew install tether-cli
# Initialize (daemon auto-starts)
tether init
That’s it. Make changes to your dotfiles on any machine. They’ll sync to the others automatically.
What Tether Doesn’t Do
Being honest about scope:
- Not a full dotfile manager - No templating, no machine-specific config overrides (yet)
- macOS only - Linux support is built but needs testing
- Requires Git setup - You need a private repo somewhere (GitHub, GitLab, self-hosted)
- No conflict resolution UI - Uses last-write-wins by default
Help Wanted
I’ve been using Tether on my own machines for a while now. macOS sync is solid. But I need help testing:
- Linux - The code is there, but I don’t have a daily Linux setup to battle-test it
- Teams sync - Multiple users sharing configs via the same repo needs validation
- Edge cases - Large dotfiles, unusual package managers, network hiccups
If you’re interested in trying it out, the repo is open. PRs and issues welcome.
Links
- Website: tether-cli.com
- GitHub: github.com/paddo-tech/tether-cli
- Install:
brew tap paddo-tech/tap && brew install tether-cli


