An operational ontology platform. Define what your operation consists of — object types, fields, links — at runtime, and get a governed, agent-ready mission control generated from that definition.
A business, a team, a household. The kernel is fixed. The model is yours.
All six are real renders of the product's own chrome, animated frame by frame in Remotion from the same data the application holds. The features take one operation end to end at opposite ends of the scale. Each short holds a single moment still: what one changed field touches, what happens after a human overrules the machine, who approves when nobody is at a desk, and what it costs to correct a model that turned out wrong.
Blue Valleythe CEO's cut
A 140-person B2B software company plugs in seven systems at once — email, Slack, Jira, Stripe, Calendar, Meet, Docs — and gets one model back. 24 310 records, 90 days of history, one morning briefing that joins a failed payment, a blocked sprint, a sev2 and a QBR into a single account.
The same platform from the other end of the scale: one person, one mailbox, an event production agency. The inbox is read, the operation is described back, the schema is drafted, and a summer party for 120 guests gets produced — every write a proposal the owner approves.
one mailboxthe analysisthe schemavendors & offerthe week
Impactshort · one date moves
A wedding shifts from 12 June to the 19th — one field, on one record. But a venue was held, two crew were confirmed, an invoice was dated, and three email threads still carry the old date. The impact reviewer follows the links, reads every one of them, and comes back with seven proposals. She approves six and rings the DJ herself.
one field movesthe reviewer readsseven proposalssix approved
Lessonsshort · it gets one wrong
The inbox orchestrator drafts a reply promising the fix ships Friday. It is wrong — the ticket is blocked and Friday is not real. She does not just reject it: she edits it, files her version as her own action, and the reason lands in the audit trail. Four of five drafts from that agent were rejected; the pattern gets mined, written down and confirmed. Thursday, same situation — and the draft no longer promises a date it cannot keep.
a wrong draftedit & approvethe pattern, minedcalibrated
Pocketshort · nobody is at a desk
An independent garage — two ramps, no office staff. At 09:14 a customer emails about a grinding noise; triage files three proposals into an empty office. They go to the owner's pocket instead: a bot paired once with a code, /pending, three cards, two taps and a dictated reply. By the time he washes his hands it is all in the trail — the same verbs, the same queue, the same audit. Not a lite version.
triage, unattendedthree cardsapproved with a thumbsame pipeline
You'll get it wrongshort · correcting a live model
The objection none of the other films answer. Six months in, deposit terms have been going into a notes field three different ways — unsearchable and unenforceable. So the model changes: two fields, an enum and a rule that watches them, proposed on a live workspace with 340 bookings already in it. Approve, and the form, the list, the board filter and what the assistant may read all reshape with it. No migration, no deploy, no ticket.
a hole in the modelfour approvalseverything reshapesno deploy
Rendered with narration and score, and served at 1080p — with a 4K switch in the player wherever a 4K master exists. Everything below runs live in this page: the same scenes, re-cut for the browser.
// the idea
It looks like an admin panel. It is not.
The screens are projections. What the platform actually holds is a model of an operation, where everything that exists, every relationship and every action is represented once and shared by every capability.
Traditional software asks
Which application owns this information?
Its predecessor asked, one business at a time
What business object does this information belong to?
Stratus asks, once
What kind of thing is this, and what may happen to it?
Both halves of that answer live in the database and are governed like everything else. Stratus ships with an empty ontology and a kernel that knows how to host one.
// the starting point
Systems that never talk to each other
Money in one system, delivery in another, the decision in a third, and the outside world in a mailbox. Nothing links an at-risk renewal to the sprint that slipped, to the meeting where it was raised. Connect the sources, and the platform reads all of them before it proposes anything.
Emailimap · smtp2 940 threads
Slack42 channels18 600 messages
Jira6 projects1 204 issues
Stripelive mode312 subscriptions
Calendarexec calendar486 events
Meetrecorded calls128 transcripts
Docsshared drive740 documents
one model24 310records mirrored
7 connectors
90 days of history
17 May – 15 Aug 2026
Figures from the Blue Valley film: seven connectors, ninety days of history, one model. Email, documents and Telegram ship in the box today — the rest arrive as packages against the same manifest, which is the whole point of the contract below.
// the model
The ontology is data, not code
Object types, their fields, their links — rows you create and reshape at runtime. There is deliberately no reference field: one relationship mechanism means one place to look for the graph and one backlinks panel that is always complete. Describe your operation in plain language and the ontology assistant drafts the schema — as proposals you approve inline. It cannot touch the schema on its own.
every edit above is a verbtype.createfield.addlink_def.createtrait.bind
Traits, not names
A package never names your types. It binds through a trait — party for the person-ish type, schedulable for anything with a date — so email resolves senders to real records and the calendar picks up appointments, jobs or events without knowing what you called them.
Deactivate, never delete
Objects, types, fields, links and facts are archived, not removed. Objects have identity, outlive workflows and accumulate history. The audit trail is never pruned.
Nothing in the platform knows what an Event or an Account is. Swap the model and the lists, forms, boards, calendar, assistants and approval cards are regenerated around it.
fixed — the kernel
objects · links · identifiers
verbs · the write pipeline
actions — audit + approval
jobs · facts · settings
An event producerproduction
ClientEventVendorTask
event → clientevent ↔ vendortask → event
// the guarantee
One write path, for people and machines alike
Reading is free — every assistant tool is read-only. Writing is not. Every mutation, from any source, is a verb going through one pipeline. The only difference between you and an agent is the mode.
your manual editmode: auto
assistant · agent · rulemode: propose
invoke()
authzactor is constructed, never parsed
validateagainst the runtime schema
dedupethe INSERT is the check
actions rowapproval queue + audit trail
apply()the one function that writes
appliedauto writes now · approving a proposal runs the exact same apply()
pendingan approval card, on the record it touches
rejectednothing happens — the reason is replayed to its author
The actions table does double duty on purpose: the approval queue while a proposal is pending, and the audit trail forever after.
// the decision
A proposal is never take-it-or-leave-it
Edit-and-approve opens the draft — an email in the real editor, an update in per-field inputs — and one click files your amended version as your own action, rejecting the original with a reason its author learns from.
email.sendpending
Email Northwind's CTO — latency fix plan before Thursday
grounded in incident BV-2841, the QBR notes and the sprint board
ops assistant · evidence 2 h old
Edit & approveRejectApprove
applied
Cards carry their evidence and how fresh it is, and warn before overwriting a value that changed more recently than the source behind them.
Impact review
Move an event's date and an agent reviews what else that touches: reminders to reschedule, related records to sync, the vendors and clients who were told the old value. Everything arrives as proposals. Nothing propagates silently.
Lessons are mined from the audit trail — what you keep rejecting, which rules misfire, what is left undecided. Every lesson you confirm calibrates every AI proposal afterwards, carried in the user turn so the system prompt stays byte-stable for the cache.
The assistant looks the records up with read-only tools, shows what it found and where each piece came from, and files what it wants to do as approvable cards.
stratus/admin/assistant/
What do I need to know this morning? Revenue, delivery and anything about to blow up.
search_objects("account", health:at_risk)stripe.read_subscriptions()jira.read_sprint("BV Sprint 24")slack.read_channel("#incidents")meet.read_notes(last: 7d)read_schema()read-only · every tool call traced
stripeNorthwind Systems — payment failed twice£18 400 MRR · renewal in 41 days · dunning stage 2 · health flipped to at_risk
jiraSprint 24 — Platform squad at 48%3 tickets blocked on the auth migration · release 4.9 confidence dropped to low
slack#incidents — API latency, sev2, 41 minutesDetected in Slack, tracked as BV-2841 · Northwind and two others affected
google meetQBR notes — Northwind, last ThursdayThey raised the same latency. Two action items were agreed and never filed.
calendarThursday 14:00 — Northwind renewal callTheir CTO is on the invite · no brief attached yet
The failed payment, the blocked sprint, the sev2 and the QBR are the same account.
email.sendEmail Northwind's CTO — latency fix plan before Thursdayawaiting you
object.create_fullCreate 2 tickets from the QBR action itemsawaiting you
object.updateRaise Northwind renewal to executive-ownedawaiting you
reminder.setReminder — brief for Thursday 14:00, due Wednesdayawaiting you
// the record
Every write, whoever made it
Connectors, rules, assistants and you, on the same ledger — with the full trace of every AI turn behind it: tool calls, reasoning, errors.
The kernel owns the data and the single write pipeline. Packages bring everything else — each one a manifest declaring its settings, traits, governed verbs, agents, job handlers, hooks and read tools. At boot they register into the kernel registries. The kernel never names a package.
connectormirrors an outside system · the only kind with a lifecycle dial
emailimap · smtp · triage · AI drafting
documentsR2 storage · files on any record
telegrampair a bot · approve from your phone
engineinternal machinery over the ontology · always on
ruleswhen this changes, propose that
impactwhat else does this change touch
notifyreminders and dispatch
lessonspatterns mined from your decisions
surfacea way to see or talk to the ontology · always on
agents · tools · hooks · settingsscheduled work · AI reads · reactions · config
own tablesone dated migration, owner column from day one
ui.tsxnav · dashboard cards · record panels
__tests__createPackageHarness() per suite
what ships for free
settings page/admin/packages/…
lifecycle dialconnectors only
scheduler + dialsauto · propose · manual
approval cardsrendered by the verb itself
AI surfacessee your read tools automatically
contract teststhe battery that gates a release
// the surfaces
Where you meet it
Everything is connected: reminders live on records, on the dashboard and on the calendar; proposals link to the records they touch and can be approved from Telegram; email drafts know the correspondent's schedule; inbound attachments save onto records and record documents attach to outbound mail.
Generated admin
Lists, forms, boards, an object page with backlinks and documents — generated from the ontology. Define a field, get a column and an input.
Email client
Threads, rich-text compose with Tiptap, signatures, R2-backed attachments and inline images. Drafting is grounded in the ontology and the fact book.
Calendar
Bind the schedulable trait to any type with a date field — appointments, jobs, events — and they land on a month grid.
Operations assistant
"Mari called — move the gala to June 20." Read-only tools find the records, the changes arrive as approvable cards.
Telegram
Pair a bot once with a code, then talk to the assistant from your phone and approve its proposals with a tap.
Upload a quote or a contract straight onto a record. Governed by verbs, readable by the assistant, attachable to outbound mail.
// under the hood
A single process you can actually reason about
Next.js App Router over SQLite in WAL mode with a single writer, one durable job queue, one LLM gateway. Deploy-per-client, one tenant per process. The whole workspace is one database file — exportable and restorable from Settings.
invoke() is the one pipeline, and the actions INSERT is the dedupe check — a unique partial index, not a SELECT-then-INSERT race.
02
One task at a time, enforced in the database
The queue's claim gate is a NOT-EXISTS heartbeat in SQL, never process memory. Restart the box mid-job and nothing doubles.
03
Merge policy bites only on agent auto-writes
Agents may propose overwrites; the approving human is the override; a person acting directly always wins.
04
Deactivate, never delete
Objects, types, fields, links and facts are archived. The actions table is never pruned — only jobs are.
05
Async verbs cannot lie
A verb that returns a job leaves its action executing; the queue flips it to applied or failed with the job's real outcome.
06
Actors are constructed, never parsed from input
userActor(id) comes from a verified session. invoke() takes no strings for identity.
07
Secrets are encrypted at rest
AES-256-GCM under a settings key. A missing key fails writes closed and lets reads fall through to env.
08
Watchers cannot cascade
Every actions-table watcher goes through one scanner whose loop guards — own actor key, own source kinds — are required parameters.
Held by a contract battery — package boundaries, table ownership, registry shape and the kernel's own invariants — that gates every release.
// what next
Looking for a solution for your business?
Stratus is ours, built end to end — kernel, packages, assistants and the films above. We deploy it per client and shape the ontology around how you already work, and we build software like this for other people too. Tell us what your operation is made of.