Manifest is the lens
One JSON file declares which commits belong to which PR.
Hack in one place. Syncwheel rebuilds, reconciles, and publishes every PR branch from one declared manifest.
You work in one place. Syncwheel projects it into clean PRs.
Three to set up, four that loop forever — click through, or just watch.
$ syncwheel stack sync feature-a
$ syncwheel stack create feature-c
Two PRs existed already — declare them in the manifest. The third is born managed.
$ syncwheel int rebuild
Every declared commit lands in one integration branch — grouped stack by stack, in manifest order.
$ syncwheel stack absorb feature-b --staged
New work lands on integration first — absorb sends each change to the PR that owns it, file by file or hunk by hunk.
$ syncwheel reconcile
Dry-run: compare manifest, branches, and remote tips. Nothing mutates.
$ syncwheel sync --worktree-root ../wt
Same changes, new commits: each drifted branch is replayed onto the new base — in a worktree, backup first.
$ syncwheel publish --worktree-root ../wt
Push managed branches with --force-with-lease.
$ syncwheel resume
Another device or agent worked? Converge from the ledger.
One JSON file declares which commits belong to which PR.
Test everything together. Throw it away. Rebuild it identically.
Edits on integration get assigned — per file or per hunk — to their stack.
Append-only history. Any machine resumes where the last stopped.
Built for AI agents: no checkout is authoritative — agents follow the manifest, not memory.
Agent contract → Agent procedure →Everything advanced lives in the docs.
Python 3.11+, Git, uv. Start from the CLI, hand the bootstrap markdown to an AI agent, or install the companion skill.
Install the command on your machine, then verify the executable before touching a repo.
$ uv tool install "git+https://github.com/NestDevLab/syncwheel"
$ syncwheel self status
The markdown tells an agent how to install Syncwheel, verify it, inspect a repo, and add the skill.
$ curl -fsSL https://raw.githubusercontent.com/NestDevLab/syncwheel/main/install.md
Keep Syncwheel's Git safety rules available inside the runtime handling the repo.
$ agentwheel install github:NestDevLab/syncwheel --adapter codex --local --target-root /path/to/repo --skill syncwheel
$ syncwheel self status
$ syncwheel init # writes .syncwheel/manifest.json
$ syncwheel stack create feature-a --branch pr/feature-a -u # --include-in-integration
$ syncwheel stack set feature-a origin/main..HEAD
$ syncwheel reconcile # dry-run plan first, always
$ syncwheel sync --worktree-root ../wt
$ syncwheel publish --worktree-root ../wt
Shorthands (rec, s, i, -p, -u), repo aliases, and self update live in the
README.