{"slug": "a-self-hostable-ai-workstation-with-a-coding-agent-and-answer-checking-flywheel", "title": "A self-hostable AI workstation with a coding agent and answer-checking (Flywheel 1.0.1)", "summary": "A developer released Flywheel 1.0.1, a self-hostable AI workstation and coding harness that runs locally via a pip-installed Python package and connects to hosted or local models without requiring a model download. The tool includes a permission-gated coding agent called relay, a check-output command that verifies answers against source contracts with confirmed/disagreed/unconfirmed exit codes, and sealed hash-chained tool-call receipts. It also ships domain packs for finance, medicine, and law, and can emit verification checks as Lean 4 files whose kernel-settled results are separated from named axioms.", "body_md": "Flywheel is a self-hostable AI workstation and coding harness. You run it on your own machine, point it at any model you hold a key for or a local one, and keep a record of every run. This post walks the parts a developer touches first: install, the coding agent, `check-output`, and the receipt path.\n\n```\npip install flywheel-verify\nflywheel up\n```\n\n`flywheel up` starts the local API gateway on `http://127.0.0.1:8799` and serves a browser shell there. The installed runtime uses only the Python standard library. The PyPI distribution name is `flywheel-verify`; the command it installs is `flywheel`.\n\nNo model download is required. Point the router at a hosted provider you hold a key for, or run local through ollama over HTTP, or fetch the published 14B and 32B weights. The roster reports that a credential is present, never its value.\n\n```\nflywheel auth login <provider>\n```\n\nThat runs a stepwise sign-in, stores the token in your OS credential store, and the router picks it up.\n\nFifteen lanes are declared in the roster; ten bundle natively from hash-pinned source. List their configured state, or probe each lane's live MCP connection:\n\n```\nflywheel lanes\nflywheel lanes --probe    # live MCP handshake per lane\n```\n\nLanes cover research intake (gather), a workspace map and symbol graph (index), memory with source checks (mneme), multi-agent routing (forum), claim recheck (crucible), writing quality and AI-tell detection (articulate), and more. Each runs on its own and composes with the others through JSON.\n\n`relay` is a permission-gated coding agent that works over your own folders on a local or hosted model:\n\n```\nflywheel relay\n```\n\nStage four of a run is the capability check. It reads a shell command the way a shell reads it and names what the command is able to do, and that name settles the decision: allow, refuse with a reason returned to the model, or escalate to a person. A blocked request is not a fatal error. The reason goes back to the model, which can pick a different route, and the ledger keeps the request, the refusal, and the reason.\n\nOne honest gap the repo does not paper over: the map of executable names is curated by hand, so a command it has never seen is admitted and written down as `unknown` rather than silently trusted.\n\nAn assistant that rechecks its own arithmetic gets the same wrong number twice. So Flywheel checks a value against the source that decides it and reports three outcomes:\n\n```\nflywheel check-output --contract task.contract.json --answer answer.json --allow-commands\n```\n\nExit 0 means confirmed, exit 1 means the value disagrees, exit 3 means nothing could confirm it. An unchecked value never reads as a confirmed one. The report also says whether the answer may ship: `RELEASE`, `RELEASE_WITH_CAVEAT`, or `HOLD` with the fields that blocked it. Inside a lane, a held answer does not accept.\n\nFinance, medicine, and law each ship a pack of field templates for the values that go wrong the same way: a dose banded by a formulary rather than computed, a deadline counted in calendar days where the rule counts court days, an amount carried to two decimals in a currency that has none. A pack ships field shapes and arithmetic, no domain data; the authorities stay yours to supply.\n\n```\nflywheel packs medicine\n```\n\nAdd `--lean Answer.lean --verify-lean` and the check is emitted as a Lean 4 file that the kernel runs. What the kernel settles becomes a theorem, what an outside authority decided becomes a named axiom, and one `#print axioms` line prints everything the result rests on.\n\nRouted runs keep a ledger of tool names, arguments, and outputs. With sealed tool-call receipts enabled, each receipt also records the capability, the outcome, argument and output hashes, and the prior receipt's hash. Sealed receipts form an ordered hash chain, so if one receipt is invalid, later entries in that chain become unverifiable.\n\nThe end-to-end gate runs oracle to group to receipt to re-witness with no model and no candidate code executed, and exits 0 only on a MATCH:\n\n```\nflywheel gate\n```\n\nAn independent witness re-runs the recorded check offline and reports MATCH, DRIFT, or UNVERIFIABLE. No learned model sits on the accept path. That is the whole point of the receipt: a run you can hand to someone who was not there, and they reach the same verdict.\n\nOn the shipped benchmark, continued pretraining on the workspace corpus did not improve general code completion: -3.05 points over 164 tasks, p = 0.40. The retired arms benchmark read +0.100 with 95% CI [-0.236, +0.420], an interval that includes zero. No capability uplift is claimed. A receipt shows the check reproduces. Whether the answer is right about the world is a separate question.", "url": "https://wpnews.pro/news/a-self-hostable-ai-workstation-with-a-coding-agent-and-answer-checking-flywheel", "canonical_source": "https://dev.to/zaindanaharper/a-self-hostable-ai-workstation-with-a-coding-agent-and-answer-checking-flywheel-101-5g3a", "published_at": "2026-09-19 23:50:13+00:00", "updated_at": "2026-09-20 00:24:45.999587+00:00", "lang": "en", "topics": ["ai-agents", "ai-tools", "developer-tools", "ai-infrastructure", "agent-protocols"], "entities": ["Flywheel", "ollama", "Lean 4", "PyPI", "MCP"], "alternates": {"html": "https://wpnews.pro/news/a-self-hostable-ai-workstation-with-a-coding-agent-and-answer-checking-flywheel", "markdown": "https://wpnews.pro/news/a-self-hostable-ai-workstation-with-a-coding-agent-and-answer-checking-flywheel.md", "text": "https://wpnews.pro/news/a-self-hostable-ai-workstation-with-a-coding-agent-and-answer-checking-flywheel.txt", "jsonld": "https://wpnews.pro/news/a-self-hostable-ai-workstation-with-a-coding-agent-and-answer-checking-flywheel.jsonld"}}