Agents

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.

The rule we won't break

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.

Pending approvals queue: a drafted rule next to its source clause, with approve, edit and reject-with-note controls
The approval queue. Every rule no human has approved yet, next to the clause it came from. Rejecting requires a note, and the next drafting run reads it.
The assistant

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 — local, on-network models, a European cloud, or hosted APIs — per task, from the app's settings.

Vi drafting report: rules landed, open conflict, seven rules needing declared signal cadence, one not-verifiable gap, and a note that approval is the user's
Vi after a drafting run. Where the rules went, what to look at, what it could not draft, and: "approval is yours in the review page; I can't sign them off."
YOUR MODELS

Run the language model where your data is allowed to go.

A local model on your own hardware, a European cloud, or a hosted API: several providers side by side, chosen per task. Detection, evaluation and recording need no model at all.

AI provider settings: a European cloud provider, local on-network models, and hosted providers
Background workers

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.

Root-cause analysis workflow: engine steps seed scope and references, a budgeted agent loop investigates, engine steps finalise and execute, a grounded summary closes
Root-cause analysis, as a declared workflow. The engine seeds the failing rule, its time windows and its requirement; one budgeted agent loop chooses signals and charts; the summary may only cite what was computed. Without grounding, the run says so instead of guessing.
Workflow execution report: every step with its state, backend model, duration and token count
Every AI step on the record. Each step's model, duration and tokens, next to the engine steps that took milliseconds.
Shared memory

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.

Signal relations extracted from documents awaiting review, each with the correlation measured on recorded runs
Knowledge is reviewed too. Relations extracted from documents are not visible to Vi until a person reviews them, and each carries what was actually measured on recorded runs.
Bring your own agent

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.

an MCP session against a Steriod project
> 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.
Get in touch

Want to see the agents work on a real specification?

Send us a specification; on the call we walk through its coverage, the drafted rules and the approval loop.

ping@steriod.ai