AI that drafts, investigates, and explains — and never signs off.
Steriod is AI-assisted, not AI-trusted. Agents do the laborious work — reading documents, drafting rules, planning analyses — and every consequential action passes through a human gate. That division of labour is architectural, not a policy setting.
Approval is human-only. Always.
A requirement becomes part of your verification baseline only when a named human reviews and approves it in the UI. No agent — not ours, not one you connect over MCP — has an approve capability. The tool simply does not exist on the agent surface, so it cannot be prompted, jailbroken, or misconfigured into existence.
Draft ≠ approve
Agents produce drafts and proposals. The state change to "approved" is a separate, human-initiated action recording who signed and when.
Gated write tools
When the Vi assistant wants to modify anything, the change is shown to you for confirmation before it's applied.
Logged and replayable
Agent conversations and worker runs are durable records with full event logs — you can audit what an agent did and why, after the fact.
Vi — the in-app engineering assistant
Vi lives inside the Steriod UI with full project context: your requirements, runs, signals, and imported documents. Conversations are durable — reload the app mid-investigation and continue where you left off.
Answers from your data
"Which requirements failed in last night's run?" — answered from the live project, with links to the runs and rules it cites.
Drafts rules from specs
Point Vi at an imported specification and it proposes Axiom rules per requirement — each explained in plain English for review.
Hands off long work
Large jobs — importing a 200-page spec, drafting rules for a whole document — are delegated to background workers so the conversation stays responsive.
Provider-flexible
Configure the LLM providers you trust — hosted APIs or local, on-network models — per task, from the app's settings.
Long jobs run as durable worker agents
Document imports and bulk rule drafting run as background agents with their own lifecycle: they survive restarts, can be cancelled, resume where they stopped, and keep a full log you can inspect from the project Library.
Doc-import worker
Ingests a specification PDF batch by batch — resumable on failure, with the uploaded source and a complete import log kept with the project.
Rule-draft worker
Walks a document's requirements and produces draft rules for each — queued for human review, never auto-approved.
Analysis workflows
Turns a plain-language question into a versioned workflow run: bounded planning steps with verified contracts, deterministic execution — the LLM plans and narrates, the engine computes.
The project Library ties it together
Everything agents produce — analysis results, drafted documents, import manifests, full run audits — lands durably with the project. Humans browse it from the Library page; fresh agent sessions are seeded from it, so context survives across conversations instead of living in one chat's history.
Your agents can work here too — over MCP
The platform's tool layer is exposed as a Model Context Protocol server. Connect Claude or any MCP-capable agent and it can list projects, search requirements, inspect signals and runs, validate rules, and run analyses — under exactly the same constraint as our own agents: no approve tool.
> which requirements in "TTC" are still failing?
tool search_requirements → 3 results
tool get_pipeline_results → TTC-T-4 fail · TTC-T-9 not_exercised
> draft a fix for TTC-T-4 and validate it
tool validate_requirement → compiles, 0 warnings
-- draft saved for review. approval: a human, in the UI.
Want to see the agents work on a real specification?
Bring a spec PDF to a call and watch the import → coverage → draft-rules loop run live.