Change models.
See what breaks.
INSEAT builds open-source tools to check AI model changes and plan coding-agent workflows.
Illustrative offline walkthroughs below.
Expected
42.5refundedObserved
0still shippedFAIL The call was valid. The refund wasn’t recorded.
Offline CLI · Early development
Expected a refund.
Got one?
Give Switch an expectation and a saved response. See which checks pass, fail—or can’t be tested.
Illustrative playback · saved example
What this checks · fixture details and limits
Switch checks saved responses, not live providers. It does not execute refunds or verifiers. A pass covers only the configured checks and supplied evidence—not a universally safe model migration.
Fixture 06 · mismatch
expected: order.status = "refunded"
order.refund.amount = 42.5
observed: order.status = "shipped"
order.refund.amount = 0
tool-name: PASS
tool-arguments: PASS
outcome-assertion: FAILFixture 08 · missing record
expected: order.status = "refunded"
checks: ["outcome-assertion"]
outcomeEvidence.candidate.record: absent
outcome-assertion: SKIP / not-tested
reason: no-outcome-evidenceBoth synthetic fixtures save issue_refund({ orderId: "ORD-123456", amount: 42.5 }). Only fixture 06 checks that call. Other supported checks include structured output; outcome assertions support deep equality, JSON schema, property paths and saved verifier records.
Dry-run planner · Experimental
Who writes?
Who checks?
Give Fusion a task, risk level and model bindings. Inspect the planned roles and fallback paths before any agents run.
Dry-run plan · no agents executed
What is available today · policies, gates and limits
These are three checked-in synthetic tasks under default-static-v1, not a live model router. The output is a plan, not a verified patch. No providers, worktrees, verifiers or changes are executed.
Planned gates
All solvers: verify and patch-scope. Critic: critic-output-valid. Every plan ends with verify, patch-scope and base-unchanged. All are PLANNED, not passed.
Critique allows at most one repair; Single and Cascade allow zero.
Fixture bindings
Single: codex:gpt-5-codex
Cascade: codex:gpt-5-codex
→ claude-code:claude-opus-5
Critique: claude-code:claude-opus-5
→ codex:gpt-5-codex (read-only)
→ claude-code:claude-opus-5Model identifiers above are example fixture bindings, not recommendations or evidence of live compatibility. Current scope: static planning, adapter invocation construction/parsing, progress-schema validation and deterministic simulations. Budget fields are metadata, not aggregate spending enforcement; no cost or quality claim is made.
Try Switch locallyApache-2.0
Node.js 22+ and npm. Clone the public repo, install, then run the checked-in fixture.
git clone https://github.com/inseat-labs/inseat-switch.git
cd inseat-switch
npm ci
npm run dev -- check examples/fixtures/06-tool-passes-outcome-fails.jsonThe fixture intentionally reports FAIL and exits nonzero. That is the expected result.
Inspect a Fusion planApache-2.0
Node.js 22+ and npm. This prints a plan without launching providers.
git clone https://github.com/inseat-labs/inseat-fusion.git
cd inseat-fusion
npm ci
npm run dev -- plan examples/tasks/high-risk-critique.json