autogitter

module
v0.9.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 27, 2026 License: MIT

README

Autogitter Banner

Autogitter

Git repository synchronization tool for managing multiple repos across providers

Release Build License Go Report

Go Cobra Charm Built with Claude Code

DocumentationInstallationQuick StartFeatures


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
Per-Repo Paths Override clone destination for individual repos
SSH Options Custom ports and private keys per source

Installation

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 releases

From Source

go install github.com/arch-err/autogitter/cmd/ag@latest

Quick Start

1. Set up authentication (for all/regex strategies):

ag connect

2. Create your config:

ag config

This 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
      - name: myteam/tmux-conf        # override clone destination
        local_path: "~/.config/tmux"

  # 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 sync

4. Keep repos updated:

ag pull

Usage

# 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

Providers

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"

Documentation

Full documentation available here.

Built With

  • Go - Programming language
  • Cobra - CLI framework
  • Charm - Terminal UI libraries (Huh, Lip Gloss, Log)
  • Claude Code - AI pair programming

License

MIT License - see LICENSE for details.

Directories

Path Synopsis
cmd
ag command
internal
git
ui

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL