Contract
A typed, atomic work unit with risk tier, policy lane, and required gates. Lives as a row in PostgreSQL with a strict lifecycle.
Why: makes agent intent inspectable, durable, and resumable across crashes.
Reliable executor of digital tasks.
I built CentrOS as a production orchestration platform — the runtime underneath every agent demo that actually has to ship. Typed contracts move through gated multi-agent execution, land in a human approval inbox when the blast radius is high, and leave an audit trail you can read like a story.
I kept hitting the same three walls when building agentic workflows for real ops. CentrOS is what falls out when you take those walls seriously instead of papering over them with prompts.
Most agents are stateless prompts. Real ops need durable state.
Crash recovery, checkpointing, replay, idempotent retries — these are not optional when an agent's action touches money, communication, or anything a human will be embarrassed by tomorrow. CentrOS contracts are PostgreSQL rows with explicit lifecycle states; runtime crashes resume from the last gate, not the beginning.
Most demos auto-execute. Real ops need approval gates.
Legal sign-offs, monetary actions, irreversible writes — every workflow I actually run has a step where a human has to say "yes." CentrOS makes that step a first-class part of the runtime: policy lanes route high-blast-radius actions to an owner inbox, and an audit trail captures who approved what and on what evidence.
Most platforms ship one workflow. Real ops scale through reusable patterns.
When I add a new vertical, I don't want to build a new platform. CentrOS is structured so that a new vertical = new triggers + new atomic work units + new tool boundaries + new linters + new approval rules. The runtime, the gate engine, the owner inbox, and the observability layer don't change.
Everything in CentrOS rolls up into one of three concerns. If a feature can't be filed under one of these, I don't build it.
Typed contracts, eval gates, rollback, crash recovery. Built on PostgreSQL durability — not in-memory state, not "we'll add persistence later."
Every action lands in a policy lane. Lanes B and C route to the owner inbox before any write. Audit trails are state, not afterthoughts.
Same shell (Workbench), different controls per vertical. Motel ops today, hospitality-adjacent ops next, the same primitives carry both.
If you read the rest of this page or browse the repo, these five terms are the backbone. Learn them once and the rest of the architecture explains itself.
Contract
A typed, atomic work unit with risk tier, policy lane, and required gates. Lives as a row in PostgreSQL with a strict lifecycle.
Why: makes agent intent inspectable, durable, and resumable across crashes.
Risk tier
R1 / R2 / R3 — escalates with the blast radius of the action. Communications < money < regulatory.
Why: the runtime can refuse high-tier work without manual escalation criteria; tier maps to lane.
Policy lane
A (auto), B (confirm), C (careful). Determines whether the executor proceeds, waits for owner sign-off, or pauses for adversarial review first.
Why: maps intent to autonomy level — not the other way around.
Gate
Evidence · Adversary · Verifier · Rollback · Stop-Ship. Every contract must pass its required gates before close. Failure is a first-class outcome with its own state.
Why: non-deterministic systems need deterministic acceptance criteria.
Workbench mode
Ask · Books · Legal · Plan. The same shell renders different tool boundaries and linters depending on which mode the operator opens.
Why: verticals share infrastructure but need domain-specific controls at the edges.
Every contract moves through four agents. Click any to see what it reads, what it writes, what it can fail at, and what the next agent picks up.
The router reads the intake event and decides what it actually is. Then it produces a typed contract with the right risk tier and policy lane.
Equivalent layer to: LangGraph state-machine entry node, Temporal workflow signal handler, MCP capability discovery.
The executor does the actual work. It calls tools from a per-contract tool registry, pulls retrieval-backed context, and writes state at every checkpoint so the runtime can resume from the last gate if anything dies.
Equivalent layer to: LangChain / CrewAI tool-use loops, Temporal durable activities, agent-runtime function execution.
The adversary's job is to find what the executor missed. It reviews the evidence and asks: "what could go wrong if this ships?" If it finds a real issue, it escalates the contract — back to the executor for a retry, or straight to the owner inbox for a human call.
Equivalent layer to: LLM-as-judge eval patterns, golden-dataset regression scorers, safety review checkpoints.
The verifier is the gate runner. It checks that all required gates passed, writes the contract's final acceptance state, and either closes the contract (lane A) or routes it to the owner inbox (lane B/C).
gate-pending until owner resolves it.Equivalent layer to: LangFuse trace span aggregation, CI gate-pass checks, approval-workflow state machines.
Click a state to read what it means and what transitions into it.
Contract closed and durable. Evidence, tool calls, gate decisions, and approver (if any) are retained for audit. Read-only from this point — the audit trail outlives the runtime.
Lane B and lane C contracts route here. The operator sees the contract title, a trust strip summarising agent confidence, the full evidence timeline, and three actions: Approve, Hold, Deny.
Refund — Booking #4421 · $284 CAD
Reply to guest — late check-in for unit 12
Tax filing draft — quarterly remittance
The owner inbox is the only place CentrOS lets agents act on R2/R3 work. Approvals are reversible by design: every action has a rollback path, and the audit trail captures who approved on what evidence. Lane A contracts never touch this surface — they auto-close once gates pass.
CentrOS isn't a thought experiment. It runs on workflows where someone is actually waiting on an answer.
runPipeline patternNew vertical = new triggers, new atomic work units, new tool boundaries, new linters, new approval rules. Not a new platform.
Built solo. Ships fast. Runs in production daily. Concrete signals below so the runtime story isn't only a version number.
All of these tools are good. Stitched together, they leave seams — different governance models, different observability surfaces, different state stores. CentrOS is one runtime where the seams don't exist.
| What you'd stitch together | CentrOS gives you |
|---|---|
| LangGraph state machine | Router + policy lanes + contract state |
| Temporal durable execution | Contract lifecycle + gate runner + rollback gate |
| LangFuse traces & eval scores | Gate evidence + run history + owner inbox audit trail |
| Pydantic typed tool I/O | Zod contract schemas + Drizzle row schemas + linter passes |
| MCP tool servers | Tool registry + scoped auth + audit logs per call |
| n8n / Workato / Zapier connectors | Same trigger surface + risk lanes + approval gates + verifier |
| Separate approval-workflow tool | Owner inbox: Approve / Hold / Deny on the same contract row |
The same 3-stage pipeline from the main site, embedded here for convenience. Mock mode runs entirely in-browser. Classification → plan → draft, with HITL escalation surfaced in the JSON output.
Honest specs. CentrOS is built solo, ships fast, and runs in production.
Open to Canada-remote Staff AI Engineer, Agent Runtime, AI Platform, AI Architect, Workflow Automation, and Forward-Deployed roles. The platform is the proof; let's talk about how it maps to your problem.