GitHub organization
Pagination and conditional requests catch private, archived, and newly created repositories without burning the rate limit.
Continuous organization mirroring
Every repository. Every new repo. Branches, tags, issues, labels, milestones, PR conversations, and review context—kept usable on your forge and in a portable archive.
Open source · One binary · No telemetry · Tokens stay local
A living copy, not a cold backup
Pagination and conditional requests catch private, archived, and newly created repositories without burning the rate limit.
SQLite keeps idempotent mappings and an audit trail. Forge-neutral snapshots are committed to your own Git archive.
Missing projects are created, every ref is mirror-pushed, and discussions arrive with author and source links intact.
What survives the crossing
forge-sync keeps the social record readable even when the target cannot model a GitHub object exactly.
Start safely
This local builder never asks for tokens and sends nothing anywhere.
Designed for unattended runs
$ forge-sync sync --config forge-sync.toml
✓ discovered 48 repositories
✓ mirrored 48 ref sets
✓ synchronized 5,184 issues · 13,902 comments
✓ archived commit 8e10f4a
Completed in 01:42 · 0 failedRetry-safe. Stable source IDs prevent duplicates after interruption.
Partial-failure aware. One broken repo is audited while the rest continue.
Scriptable. Every operational command can emit JSON and meaningful exit codes.
Fair, legible pricing
Community
$0 forever
Migration Kit
$39 one-time
Your license is checked at most once per day.
Sociobot/Dodo is the merchant of record. Refunds are handled there and revoke the license automatically. Terms · Privacy
The sharp edges, stated plainly
It preserves pull-request descriptions, reviews, discussion comments, and inline file/line anchors in a labeled target issue. This remains valid after merge, branch deletion, or cross-fork work.
Not in v1. The experimental relay flag records intent but sends nothing. Reliable bidirectional identity and review-anchor mapping needs more real-world validation.
Tokens stay in environment variables. Metadata goes only to your chosen target, local SQLite state, and your local JSON archive. The documentation site never receives it.
Keep the exit open