Find, clone and keep your repos in sync across GitHub, GitLab and Gitea/Forgejo, with the right account per repo. Launch coding agents in separate workspace copies and back up their uncommitted work.
Runs on macOS and Linux. Requires git on PATH.
- Discovery across accounts and hosts. Find repos by owner, organization, search, name, language or topic; saved rules pick up new matches.
- The right identity. Apply each account's SSH key, commit identity and signing settings to the repos it covers.
- Scheduled sync and backups. Fetch repos and snapshot uncommitted work, with optional offsite copies and upstream mirrors.
- Parallel coding agents. Give each agent its own branch and worktree or clone, then open them side by side with tmux, iTerm or Muxy.
- Portable setup. Share configuration and a manifest across machines;
preview configuration changes with
planbefore applying them.
Backups leave the working tree, index and branches untouched. Branch fast-forwarding, offsite pushes and cleanup follow explicit configuration; see scope and the backup and recovery guarantees.
brew install --cask ashtonian/tap/gitstead # macOS
go install github.com/ashtonian/gitstead@latest # Go version: see go.mod
docker pull ghcr.io/ashtonian/gitstead # linux/amd64, linux/arm64The releases have archives
for macOS and Linux on amd64 and arm64, with checksums. Name the cask in full,
ashtonian/tap/gitstead: Homebrew asks you to trust a third-party tap, and
naming its cask does.
gitstead shells out to git, so git must be on PATH.
gitstead setup # a few questions, a review, then it writes the config, clones and installs the background sync
gitstead status # what it tracks
gitstead cd api # jump to a repo (a new terminal picks up the shell integration)setup detects accounts, existing clones and tools, previews the proposed
configuration, and asks before writing it. It can configure your shell and
install background sync. Re-run it to change your setup; see the
full setup guide.
Already have clones? Track one and sync it without writing a config:
gitstead adopt ~/code/myrepo
gitstead sync
gitstead statusPreview a selection, then clone it and choose whether to save it as a rule:
gitstead clone --org acme --name billing --dry-run
gitstead clone --org acme --name billingSaved discovery rules keep finding new matches on later syncs. See finding your repos for accounts, filters and searches.
For a tracked repo, create four copies and open an agent in each:
gitstead ws create app --repo github.com/me/app --agents 4
gitstead ws open app --agent claude
gitstead topThis example needs Claude and a launcher such as tmux installed. Agent profiles also support Codex and custom commands. See workspaces, launchers, and live status.
| Task | Guide |
|---|---|
| Set up or move to another machine | Setup, shared manifests |
| Find and clone repos | Discovery and filters |
| Configure layout, clone shapes, hooks and sets | Configuration, example configs |
| Manage accounts, SSH keys and signing | Authentication and accounts |
| Understand configuration changes | Plan and apply |
| Protect and recover work | Backups, offsite copies and mirrors, archives |
| Run agents across one or more repos | Workspaces, fleets and launchers |
| Schedule sync and diagnose failures | Scheduling, operations |
| Find a command, flag or exit code | Command reference, shell integration |
| Contribute | Contributing, architecture, detailed spec |
See the documentation index, the fully annotated config.example.yaml, and SECURITY.md.
MIT — see LICENSE.