repo-keeper v0.1.0-beta.7 GitHub

repo-keeper

OpenSSF Best Practices

A lightweight, local-first background agent that keeps every repository you can access on GitHub, GitLab, Bitbucket, Azure DevOps and Gitea/Forgejo cloned and up to date, safely.

Status: beta. GitHub and GitLab are verified end to end; Gitea/Forgejo, Bitbucket Cloud, Azure DevOps and plain git remotes are implemented and fixture-tested but not yet verified against live servers. The sync engine, safe cleanup, rate limiting, daemon, web UI, tray, packaging, hardening and fuzzing are done and measured; the beta soak is next. See docs/, installation, security review and the roadmap.

What it does

Principles

  1. Never lose work. Fast-forward only, never touch dirty trees, never force, every deletion recoverable.
  2. Least privilege. Read-only tokens by default; secrets live in the OS keychain only.
  3. Lightweight. One static binary, no runtime, idle ≈ 0% CPU, <50 MB RSS.
  4. Polite. Official APIs only, identifiable User-Agent, honors Retry-After and rate-limit headers.
  5. Boring to install. Reproducible releases with cosign-signed checksums, SBOMs and build provenance; user-level autostart, no admin rights.

How this is built (AI assistance)

Much of this code is written with AI coding assistants. That is a reason to check the work, so the project is set up to make it checkable rather than taken on trust:

None of this makes the code correct by itself. Read the source, start with cleanup in dry-run (the default), and report anything wrong through SECURITY.md or an issue.

Documentation

Doc Purpose
Requirements What it must do (FR/NFR/SEC, prioritised)
Architecture Components, data model, sync algorithm
Providers & ToS Per-platform auth, limits, compliance
Security · Threat model Policy and analysis
Distribution & AV Packaging, signing, avoiding false positives
Testing Strategy and quality gates
Implementation plan Repo layout, work breakdown
Roadmap Milestones
Security review · Performance Self-audit findings, measured budgets
Decisions (ADRs) Why we chose what we chose
Beta guide · Changelog How to test the beta safely, what changed
Decisions & open items Resolved choices, what remains
AGENTS.md Rules for AI coding agents

License

Apache-2.0. Contributions: see CONTRIBUTING.md.

Installing as a service (NixOS, Home Manager, deb, rpm, tarball): see docs/INSTALL.md.

Quick start (development builds)

nix develop            # or install Go ≥ 1.26 and git ≥ 2.34
make build
./bin/repo-keeper init                      # writes a starter config
# GitHub: a fine-grained read-only token is recommended
./bin/repo-keeper accounts add personal --token-stdin --include 'me/*,my-org/*' < token.txt
# GitLab (nested groups welcome): a group/project access token with read_api + read_repository
./bin/repo-keeper accounts add work --provider gitlab --base-url https://gitlab.example.com --token-stdin --include 'acme/**' < token.txt
$EDITOR ~/.config/repo-keeper/config.toml   # set [general] root = "/home/you/code"   # or open `repo-keeper ui` → Settings
./bin/repo-keeper discover                  # preview what would be cloned
./bin/repo-keeper daemon                    # sync in the background (see packaging/systemd)
./bin/repo-keeper status
./bin/repo-keeper ui                        # opens the web interface (one-time sign-in link; --print-url for SSH)
./bin/repo-keeper-tray &                    # optional status icon (KDE, waybar/sway, GNOME with AppIndicator)

No keychain (headless server, container)? Use --token-file /run/secrets/gh-token (mode 600) or --token-env GH_TOKEN instead of --token-stdin.

Topics