Platform Platform
System
ConceptsEnginePolicy as codeDeclarationsSafe changeGatewaysIntegrationsObservabilityAdministrationSecurityHuman reviewAudit and evidenceData retentionSecrets and data classification
Controls
Registries and documentationAuthentication and authorizationInjection detectionData redactionCode fingerprintingRole and judge checksContent classificationSpend and loop limitsBusiness rules
Solutions Solutions
By what you do
Sell into the enterpriseControl the AI you run
By industry
Financial servicesDigital assetsInsuranceHealthcareLegalUser-generated content
By discipline
AI governanceTrust and safetyRisk and compliance
Cases Cases Embedded control planeSource-code leakTrading agents over MCPLive firehoseRefund assistant
Compare Compare LiteLLMNVIDIA NeMo GuardrailsOPAROOSTAgent Governance Toolkit
Resources Resources
Guides
Enterprise review questionsPrompt injectionAgent and control layerAgent architecturesDecision system mapAI control maturity model
Standards
Standards OWASP Agent Control StandardEU AI ActPMI AI standardNIST AI RMFERC-8004
Book a demo
Platform · System

Everything here is a declaration.

The policy is the part everyone expects to declare. So are the screens a reviewer works in, the entities the engine reasons about, the roles, the queues, the actions, and the fields that count as sensitive.

Declared, so changing any of it needs no release.

What you declare

DeclaredWhat it covers
Rules and signalsconditions, effects, constants, the state a rule keeps, the functions it calls and the profiles it calls them through
Entitieswhat the engine reasons about, their fields and their statuses
Appearancecolors, fonts, heading sizes, density, what is on screen at all — per tenant and per user
Screenswhat an operator or a reviewer works in, their columns, filters and routes
Actionswhat a rule may do, and who is allowed to invoke each one
Parametersthe settings an operator changes without a release, per tenant
Tamper-evidencewhich tables get a hash chain, and the condition that says from which moment a row is covered
Audit behaviorwhat is recorded, at what depth, and what a message says when something is refused
a screen, declared
hitl_cases_list:
  entity: hitl_case
  route: /hitl/cases
  columns: [created_at, queue, entity_id, event_type, status, priority, case_type,
            assigned_to, decision, case_id]

That is the review queue an operator opens, written like a rule. Add a column, change the route, split one queue into two — each is a declaration.

The claims this makes true

The claimWhy it holds
A review queue shaped to your teamthe queue and its screens are declared
Running in weeksnothing was built for it; it was declared
A control your auditor asks for is usually configurationthe control and its evidence are both declarations
Adapting it to your integration is configurationyou are changing a declaration, and the product stays the product

It is also why so little here is fixed behavior. What a queue does when nobody works it, what a gateway does when the engine is unreachable, what happens to an event no rule matched: each is yours to declare. A vendor who hard-wires them has decided something about your operation without asking.

The look is declared too

DeclaredWhat it covers
Colors and fontslight and dark are declared separately, so you set each one
Typography and densityheading sizes and line heights, row density, corner radius, zebra striping on tables
What is shown at alltop bar, side rail, sidebar, tabs, breadcrumbs, tenant switcher — and per screen type, the title, the action buttons, the row count
Your own stylesheetfor anything the fields do not reach. It loads after the tokens and wins on source order, so no rule needs !important

Each field is named after the CSS property it writes — surface_2 writes --surface-2 — so your own stylesheet reaches a token without a lookup table. The shades derived from your accent color are generated for you, and you can still set any of them by hand.

Every setting applies per tenant and per user. Two tenants on one deployment look like two products. A screen inside an iframe declares its own frame — top bar, side rail, tabs — so an embedded screen is not the full application with parts hidden.

What is not a declaration

The engine, the gateways and the order the rules run in are ours, and the same for every customer. That is deliberate: determinism, ordering and the record must work the same way everywhere. If they were configurable, two deployments would end up disagreeing about what happened.

Related: the engine underneath · the policy lifecycle · the queues and screens this shapes
Book a demo