Zain Dana Harperflywheel · route + verify

A companion for every model.

Route to any model, local or hosted, online or offline. Flywheel answers what it can verify, escalates only the hard part, and hands you a receipt you can re-run yourself.

Every number on this page is a receipt file you can re-check offline.

flywheel · public · FSL-1.1-MIT · python scripts/run_harness_cli.py app --port 8799

Routing is not the hard part. Checking the work is.

Flywheel routes, runs, and verifies on one surface. Every accepted answer has passed a check the model does not control, and carries the record of that check with it. The authority that accepts an answer is an external verifier, never a model grading its own work.

Bring your keys, or bring your weights.

The verified-inference loop.

Propose cheap with a local model. Dispose with an external check that can fail. Carry a re-checkable receipt. What passes accumulates; the next identical ask is free, re-checked before it is served.

THE VERIFIED-INFERENCE LOOP Propose cheap. Dispose external. Carry a re-checkable receipt. 1 · PROPOSE Local model cheap, replaceable; raise N to widen the candidate pool 2 · DISPOSE External check the only thing that accepts; no learned model here 3 · RECEIPT Content-addressed re-derive it offline; tamper one byte and the check fails candidates PASS Proof cache the next identical ask is free, re-checked before it is served NO PASS · RAISE N Budget spent below confidence → Escalate route to a stronger tier; it is named, never called for you An external check earns capability a model cannot self-select. Self-test earned nothing; the external check is the lever. Every accepted answer, cached or fresh, carries the same receipt. The check can fail, which is what makes a pass mean something.
Schematic · the loop behind every accepted answer

One surface, four things it does that others do not.

Every provider, one surface Local weights, a local server, or any hosted provider you hold a key for. One roster, one verified path behind them all. Credentials are presence only, never a value.
A record you can keep Every accepted answer carries a receipt: the inputs, the check that passed, and hashes anyone can re-run offline.
Answer local, escalate the hard part Answers what it can verify locally for near-zero cost, and routes only the genuinely hard slice to a stronger tier, on evidence, not a guess. The stronger tier is named, never called for you.
Yours when the network is not Bring your keys and it routes online. Bring your weights and a capable coder, one file just under 9 GB, runs offline on a plane, when the network is down.

How it compares.

Ordinary routerLocal runnerAgent harnessFlywheel
Routes to many providersYesNoSomeYes
Runs a local modelNoYesSomeYes
Works offlineNoYesNoYes
Accepts on an external checkNoNoNoYes
Re-checkable receipt per answerNoNoNoYes
Answers local, escalates the hard partNoNoNoYes
One root-hashed shared stateNoNoNoYes
Zero dependencies, one file to runVariesVariesNoYes

Run it now.

Flywheel installs two ways, both one line. On any platform with Python: pip install flywheel-verify, then flywheel up (the PyPI name is flywheel-verify; the bare name belongs to an unrelated package; the installed command is flywheel). On Windows, the desktop installer bundles the engine, no Python, no setup: every tool the engine mounts renders as a fillable form, the first run picks a model that can actually answer, and provider keys live in the OS keychain, shown as presence only, never a value.

pip pip install flywheel-verify · flywheel up
download the latest Windows x64 installer · Flywheel-Setup-<version>-x64.exe · ~21 MB

Each installer ships from the platform repository's version tag with SHA256SUMS.txt published beside it in the same release. Verify the copy you downloaded against that file:

powershell Get-FileHash Flywheel-Setup-<version>-x64.exe -Algorithm SHA256
Release line
v0.3.x, August 2026; the releases page names the current version and carries its hash.

The honest caveat.

The installer is not code-signed yet, so Windows SmartScreen will warn on first run. The hash above is the substitute: it proves the file you hold is the file the pipeline built. Signing is planned; until then the receipt does the signature's job, checked by you instead of trusted by default.

Prefer source? Zero dependencies, Python standard library only. Route online with your keys, or run fully offline against local weights.

python scripts/run_harness_cli.py app --port 8799

Then open the surface in your browser. One origin, one page, same-origin JSON routes.

Benchmarks, with the interval.

The model is Flywheel-Local-Coder-14B, a trained artifact with a full provenance chain, just under 9 GB at 4-bit. Hard set, ten tasks, every arm carrying its Wilson 95% interval and 100% receipt reproducibility.

ArmResultWilson 95% CIReceipts
single-shot8 / 10 (80%)[0.490, 0.943]100%
verified inference9 / 10 (90%)[0.596, 0.982]100%
best-of-49 / 10 (90%)[0.596, 0.982]100%
single + oracle8 / 10 (80%)[0.490, 0.943]100%

The honest null.

Verified inference beats single-shot by +0.100 here. The 95% interval on that difference is [-0.236, +0.420], which includes zero, and plain best-of-4 sampling ties it. So we do not claim a capability uplift.

What we do claim, and can measure: 100% receipt reproducibility, every accepted answer re-checks; pass parity with the models it routes to; availability on your own schedule, from weights you hold; and local cost. A tool that refuses to overclaim is a tool whose other claims you can trust.

Evidence: the running app serves the receipt at /artifacts/flywheel-local-coder-14b-benchmark-ci.json, re-checkable offline. The number moves the day the evidence does, not before.

Spec, at a glance.

Install
pip install flywheel-verify, then flywheel up.
Desktop app
Windows x64 installer, engine bundled, no Python required. v0.3.x line, released from the platform repository with published checksums.
Dependencies
None. Python standard library only.
Network
Your choice per call: route online with hosted-provider keys, or run fully offline against local weights.
Entry point
flywheel up, or python scripts/run_harness_cli.py app --port 8799 from a clone.
Surface
One origin, one browser page, same-origin JSON routes.
Local model
Flywheel-Local-Coder-14B, ~9 GB 4-bit, GPU optional.
Accept authority
An external check. No learned model on the accept path.
Receipts
Content-addressed, re-checkable offline, on every accepted answer.

The replaceable half and the durable half.

Flywheel is the front surface of a verified-inference flywheel: propose with a cheap local model, dispose with an external check, keep the re-checkable receipt, and let what passes accumulate. The model is the replaceable half; the verification harness is the durable half.

The same discipline, an external check that can fail plus a receipt anyone can re-run, scales from routing a single call to composing a whole workshop of tools. This is the largest of them, and the front door to all of them.

Run it: github.com/HarperZ9/flywheel · the engine room · the workshop

State of the work, August 2026.

The engine, the receipt discipline, the witness graph, the infrastructure controls, and the verify layer are all on the public default branch. Merged as of 2026-08-03: capability-typed shell admission with Unicode-spoof neutralization, a domain oracle registry with three live verifier domains (code via pytest, mathematics via the Lean kernel, and a measurement gate for empirical claims) and an honest UNVERIFIABLE verdict elsewhere, a model-neutral router with quota failover, a subscription-auth adapter, and session tooling for past verified runs.

No capability uplift is claimed for the trained local model. The engine's first preregistered confirmatory run completed 2026-08-04: zero verdict disagreements across 2,646 certificate bodies in nine model contexts, significant held-out selection uplift at every model size on the solvable task family, nulls kept, analysis anchored in a signed ledger anyone can verify offline.