Sync watches the third-party APIs your code calls. When one breaks, drifts, or starts costing you money, it opens a pull request that fixes your code — already verified green by your own CI.
The operator console — every screen in one pass. This is the design mock, not shipped code. What is built today · the mock
vendor ships a breaking change → Sync finds every call site that depends on it
→ patches them
→ runs your CI
→ opens a PR carrying the evidence
Every command here runs in an ordinary terminal — no coding agent, no prefix. Every path ends at
the same console: http://127.0.0.1:4173, password sync-local-demo unless you exported
SYNC_CONSOLE_PASSWORD first.
git clone https://github.com/stroland02/sync.git
cd sync
npm startpnpm start is the same command. It checks for updates and fast-forwards a clean checkout, then
takes the route that works here: where Docker's daemon answers it hands over to docker compose
(Postgres, schema, API, then the console — 282 s measured cold, 22 s warm); where Docker cannot
run it takes the user-space route below, automatically, saying why. Only the console is exposed,
on loopback. npm run down stops whichever route is running.
Then put your own code on the screen — uv run sync index --repo <your-remote> reads your
call sites into the graph, and Getting started carries the whole
journey from nothing to a closed loop, including the
integration catalog of every vendor Sync watches or
recognizes today.
npm run no-adminEverything in user space from a checkout: an embedded Postgres in ~/.sync-postgres, a pinned
Python built by uv, the schema, a fixture, the same console. Nothing elevated, nothing
machine-wide, and it adopts what a previous run already set up rather than rebuilding it.
Windows-only today; B191 carries the rest.
npx @stroland02/sync-upThis is where the install story ends: that one command, on a machine that has never seen this
repository, reaching the console password prompt. The package is published and the command
resolves — the registry refused the bare name sync-up as too similar to an existing package,
so it lives under the owner's scope, and the command it installs is still sync-up. What it
can do without a checkout is check your machine and hand you the clone that works; one step
closes the rest of the gap: a prebuilt image for the registry form to pull (B190). Until
then, the checkout above is the same work and runs today.
Python 3.12, uv, Node 22.22+, Postgres on 5433 — docs/developing.md
carries the prerequisites, the install, and the quality gates.
Pre-alpha, and specific about it: the full loop — real breaking change to CI-green pull request, unattended — has happened once, with three qualifications that change what that means. Where it stands carries the result, the qualifications, and what is actually measured.
- Why Sync exists — the problem nobody owns, the journey, the honesty discipline, and where it stands. Start here.
- How it works — provenance rungs, the remediation state machine, the tier cascade, durable execution, containing the agent.
- Architecture and stack — the shape of the system and the constraints behind it.
- Working on Sync itself — from-source setup and the quality gates.
- Beta readiness — what stands between here and a stranger running this.
Apache-2.0. See LICENSE.