Git repository synchronization tool for managing multiple repos across providers
Documentation • Installation • Quick Start • Features
| Feature | Description |
|---|---|
| Multi-Provider | GitHub, Gitea, and Bitbucket (Cloud + Server) |
| Sync Strategies | manual (explicit list), all (fetch from API), regex (pattern matching) |
| Parallel Operations | Clone and pull with configurable worker pools |
| Remote Configs | Load config from HTTP/HTTPS URLs or SSH paths |
| Dry Run | Preview changes before applying them |
| Interactive CLI | Beautiful diffs, prompts, and progress indicators |
| SSH Options | Custom ports and private keys per source |
Download the latest binary from the releases page.
# Linux (amd64)
curl -L https://github.com/arch-err/autogitter/releases/latest/download/ag-linux-amd64 -o ag
chmod +x ag
sudo mv ag /usr/local/bin/
# macOS (Apple Silicon)
curl -L https://github.com/arch-err/autogitter/releases/latest/download/ag-darwin-arm64 -o ag
chmod +x ag
sudo mv ag /usr/local/bin/
# Windows - download ag-windows-amd64.exe from releasesgo install github.com/arch-err/autogitter/cmd/ag@latest1. Set up authentication (for all/regex strategies):
ag connect2. Create your config:
ag configThis opens your config in $EDITOR. Example configuration:
sources:
# Sync all repos from a GitHub user
- name: "GitHub"
source: github.com/your-username
strategy: all
local_path: "~/Git/github"
# Sync specific repos manually
- name: "Work"
source: gitea.company.com/myteam
strategy: manual
local_path: "~/Git/work"
repos:
- myteam/project-alpha
- myteam/project-beta
# Sync repos matching a pattern
- name: "APIs"
source: github.com/myorg
strategy: regex
local_path: "~/Git/apis"
regex_strategy:
pattern: "^myorg/api-.*"3. Sync your repositories:
ag sync4. Keep repos updated:
ag pull# Show diff between local repos and config
ag diff
# Sync repositories (clone new, detect orphaned)
ag sync
# Preview what would happen
ag sync --dry-run
# Sync with 8 parallel workers
ag sync -j 8
# Prune repos not in config
ag sync --prune
# Pull updates for all repos
ag pull
# Edit config
ag config
# Validate config
ag config --validate
# Generate config template to stdout
ag config --generate > config.yaml
# Use a remote config
ag sync -c https://example.com/config.yaml
ag sync -c user@host:/path/to/config.yaml| Provider | Host Detection | Token Env Var |
|---|---|---|
| GitHub | github.com |
GITHUB_TOKEN |
| Gitea | Custom hosts | GITEA_TOKEN |
| Bitbucket | bitbucket.org or custom |
BITBUCKET_TOKEN |
For self-hosted instances, specify the type field explicitly:
- name: "Self-hosted Gitea"
source: git.company.com/user
type: gitea # explicit type
strategy: all
local_path: "~/Git/company"Full documentation available here.
- Go - Programming language
- Cobra - CLI framework
- Charm - Terminal UI libraries (Huh, Lip Gloss, Log)
- Claude Code - AI pair programming
MIT License - see LICENSE for details.
