Governance you can point to in the architecture.
The AI runtime can never execute a side-effecting tool directly. It calls back through one gate that runs permission, policy, approval, and audit on every action — even across the service boundary. No bypass.
Ten controls, built into the boundary.
These aren't settings you can turn off — they're properties of where the code puts the gate.
The single governance gate
One choke point for every side effect; permission ∩ policy ∩ approval ∩ audit on every action, with no bypass, even across the Node↔Python language boundary. The AI runtime can never execute a side-effecting tool directly.
Least privilege, fail-closed
Effective permission = user ∩ agent ∩ org policy, and the default is deny. A sensitive tool with any missing input is denied rather than guessed.
Risk-tiered actions
Read-only runs automatically; controlled writes pause for approval; destructive actions are blocked. Risk level is declared per tool, not inferred at runtime.
Human-in-the-loop
Agents propose a plan and wait; approvals are explicit and scoped so authority can't leak across agent handoffs. Permissions are re-checked at each step.
Append-only audit, references only
Every governance decision is recorded using references and ids — never raw record content — so the trail is complete without becoming a second copy of your data.
Context minimization & privacy
The model only ever sees minimized references and counts. Boundaries block cross-record and cross-conversation mixing before a run; raw content is read only through governed tools.
Identity stays authoritative
The platform issues no identities of its own — your host token and adapter are the authority. It never becomes a second identity system.
Injection resistance
Authored instructions can't escalate privilege; injection attempts are evaluated at the governance boundary and gate at zero escalations in our test suite.
Host token vs service token
Two distinct tokens, never conflated: your host token (embed → Node, your app is the authority) and an internal service token (Node ↔ Python) that is constant-time compared and never logged or exposed to the browser.
Structured errors (RFC 7807)
Internal calls are authenticated with a constant-time-compared token; errors follow RFC 7807 problem-details and never leak internals or record content.
What we claim — and what we don't.
Certifications
No certifications are claimed here. We describe controls, not certification status. Ask the team for current posture.
AI models
OpenAI models today, selected under org and privacy allowlists with fail-closed selection if no approved model is available. Architected to add models over time — not a multi-provider claim.
Multi-tenancy
Single-tenant MVP today; tenantId threads through context, runs, audit, and host registration. Full per-tenant SaaS isolation is on the roadmap (Phase 2/3).
Straight answers for a review.
Can the AI runtime execute an action directly?
How are permissions decided?
What does the audit trail store?
Does the model see our raw data?
Whose identity is authoritative?
Are you certified (SOC 2, ISO 27001, etc.)?
Talk to us about your security review.
We'll walk the governance model and answer what's built versus roadmap — using an example close to your stack.