Engineering that earns your trust.
Autonomy only helps if you can rely on it. The platform fabricates nothing and asks before anything risky.
It doesn’t make things up
Eight checks sit between a tool result and the words you read. Each one exists because something once got through without it.
Between a tool result and what you read
Rounds that call tools cannot write to you. One final round with no tools writes the answer.
During a task all eight checks enforce. A failure triggers a second attempt with the real evidence inlined.
Two separate questions, answered separately
The platform splits what a person may do from what they see. Four roles and sixty-four permissions govern actions, and areas govern data.
- Viewer, editor, admin and owner roles stack hierarchically. 64 permissions sit behind them.
- Areas split the data itself. A candidate desk and a client desk see different records.
- Chat and the REST routes both enforce it. Gating one alone leaves a back door.
- The server counts every suppressed row. It never tells the viewer what it hid.
- We audit every candidate read, allowed and denied alike.
We see your account's shape, never its contents.
An Opafex operator supporting you sees structure by default. They see your tables and none of the rows.
- Structure-only is the default for staff sessions; nobody chooses full access at launch
- Reading your records needs a stated reason. The audit row lands in your tenant first.
- We cannot see an unclassified resource. Everywhere else the default runs the other way.
- A build-failing test keeps it that way. A new data type cannot quietly become visible.
- One honest limit. It hides records while free text in your labels stays visible.
Nothing risky without a yes
One approval queue and three autonomy modes sit above a safety floor. You set the freedom and rules enforce it.
- Manual, guided, or autonomous — your choice
- Restricted and sensitive actions always need a human, even on full autonomy
- We scope approvals by risk. Reversible builds flow and destructive or external actions stop.
- The trust profiler recommends a level — it never flips the switch for you
It finishes the work, and survives crashes
The database records every step before it runs. A live-verified fix ran 15 times back-to-back with zero stalls.
- Atomic claim per task means it never double-runs
- Heartbeat recovery cleans up crashed runs automatically
- Resume from the exact step it reached — no lost or repeated work
- The screen loads from the database; a dropped live stream never corrupts state
- Live-verified: 15 consecutive runs through the durability fix, zero stalls
It won’t fake a broken tool
Your integrations report the truth and heal on their own. A blip cannot brick a tool and a dead token cannot hide.
- A single failure won’t drop a connection — it takes repeated, authoritative refusals
- A dead-credential signal from the provider flips it instantly
- Fix a token yourself and the next successful call heals it automatically
Your data stays yours
Run on your own database with your own model keys or a local model. Your own encryption keys cover it and the platform holds only metadata and config. fails closedIt errors instead of writing private data to shared storage.
- Bring your own database (your content never touches shared infra)
- Bring your own keys, or run a local model
- You hold the encryption keys. The platform cannot decrypt your content.
- One canonical switch every surface respects
Someone asks for their data. You press a button.
The product handles access, export and erasure requests plus restriction and objection. Export runs as one cross-store pass and we verify every erasure.
- One export covers every store a person appears in.
- We check each erasure afterwards. A missed row registers as a failure.
- Requests carry the statutory 30-day clock and a sweeper that watches it
- Coverage is default-deny: a new table is out of scope until somebody classifies it
- We write known gaps down in code before any audit finds them.
- Acting on a request is permission-gated and lands in the audit log
And it learns from outcomes, never trains on your data It improves by remembering what worked for you. Your data never trains a model.
See it for yourself
Autonomy you can watch
Get started and watch every task run step by step. It asks before anything risky and reports honest status.