Your Repo Your Keys No Cloud

Stop copying configs between machines

Sync dotfiles and packages across machines using your own Git repo. No accounts, no cloud service — just your repo, your keys, your data.

terminal
~ $ _

Everything you need to sync your dev environment

Tether combines automatic syncing, encryption, and package management into one seamless tool.

End-to-End Encrypted

AES-256-GCM encryption with passphrase-protected keys. Your dotfiles are encrypted before syncing to Git.

Automatic Sync

Set it once, forget about it. Background daemon syncs changes across all your machines every 5 minutes.

Team Secrets

Share encrypted secrets with your team using age encryption. Map GitHub orgs to auto-share project secrets across machines.

Machine Profiles

Control which dotfiles and packages sync to each machine. Work laptop gets IDE configs, server gets shell-only.

Project Configs

Sync .env files and IDE settings across machines. Matched by Git remote URL so the same project syncs everywhere.

Package Managers

Syncs Homebrew (formulae, casks, taps), npm, pnpm, bun, gem, and uv globals. Desktop apps included.

Secret Detection

Automatically scans for API keys, tokens, and credentials before syncing. Prevents accidental leaks.

Collab Secrets

Share project secrets with GitHub collaborators using age public-key encryption. No separate secret manager needed.

Built in Rust

Single binary, no dependencies. Fast, efficient, and reliable. <10MB size, <20MB memory usage.

Interactive dashboard

Run tether to launch the TUI. Monitor files, packages, machines, and config — all from your terminal.

tether
Tether My-MacBook.local daemon: running (4218) last sync: just now team
1:Overview 2:Files 3:Packages 4:Machines 5:Config
── Dotfiles ──
Personal (38) git@github.com:user/dotfiles-sync
ok .zshrc Jan 20 14:32
ok .gitconfig Feb 08 09:15
ok .config/starship.toml Feb 14 11:20
ok .config/ghostty/config Feb 12 16:45
ok .claude/settings.json 2h ago
── Packages ──
Brew casks 22 packages
Brew formulae 60 packages
Brew taps 10 packages
Bun 12 packages
Gem 180 packages
npm 1 package
uv 1 package
── Machines ──
 * My-MacBook.local 53f 308p just now
  My-Mac-mini.local 47f 286p 4m ago
── Activity ──
Synced 38 dotfiles and 286 packages
Daemon running — next sync in 5 minutes
quit sync daemon refresh ? help
Overview
Files, packages & machines at a glance
Files
Browse all synced dotfiles
Packages
Browse & uninstall packages
Machines
See connected machines
Config
Edit settings inline

Simple setup, automatic sync

Three steps to synchronized bliss

1

Initialize

bash
$ tether init
$ 

One-time setup with your private Git repository

2

Work Normally

bash
# Edit configs
$ vim ~/.zshrc

# Install packages
$ brew install ripgrep
$ 

Make changes like you always do

3

Auto-Sync

bash
# On your other machine:
$ tether status

✓ Synced automatically
✓ Everything up to date
$ 

Changes sync automatically across machines

Zero Trust Required

No cloud. No accounts. No trust required.

Tether is a local CLI that syncs to your own private Git repo. We never see your data — there's no server, no analytics, no accounts. AES-256-GCM encryption with keys only you control.

Read full security architecture

AES-256-GCM Encryption

Dotfiles encrypted before sync to Git

Passphrase Protection

Keys encrypted with passphrase, synced via Git

Secret Detection

Scans for API keys, tokens, credentials

Why Tether?

Comparing dotfile sync solutions

Feature Tether mackup chezmoi Manual Git
Automatic Sync
End-to-End Encryption
Project Configs (.env)
Package Managers
Secret Detection
macOS Support
Linux Support BETA
Team Secrets
Machine Profiles
Collab Secrets
Backup & Restore
Zero Config

Ready to sync?

Your repo. Your keys. No cloud service to trust. Open source and free forever.

View on GitHub

MIT Licensed • Made by Paddo Tech