Governed runtime for AI agents

Set the rules your AI agent has to follow.
Change them anytime, without touching its code.

Zarel is the governed runtime for AI agents. Your agent's rules live in a contract, outside its code. Zarel checks every action that goes through it against that contract, outside the model. Your team edits the contract; if the contract says so, someone else approves the change; once it's published, the new version applies within seconds, with no deploy. Every state change that goes through it records the version that allowed it.

Zarel Desk
Record a $30,000 withdrawal from account 4417.

Done, it's recorded.

── new rule, approved and published with no deploy ──

If the destination account changed recently, the back office verifies it first.

Record a $30,000 withdrawal from account 4417.

It couldn't be recorded: the destination account changed recently.

── refused · recent_destination_change ──
Talk to us → How it works
The problem

Your agent works.
Until a rule changes.

AI agents went from answering to acting: they file requests, change records, move money. And they act under a business's rules, which change: a limit, a deadline, an exception, who has to approve. If your agent's are in its code, every change is a project. And when someone asks which rule applied the day it acted, you have to reconstruct it.

01

How long does changing a rule take?

If it's in the agent's code, a business change goes through a ticket, a release and a deploy, everywhere the agent acts from.

02

Who changes it, and who approves it?

When the code defines the limits, the same deploy that ships a feature can move them, and whoever answers for them can't read what changed.

03

Which rule applied when it acted?

Logs record what happened. Rarely which rule was checked, in which version, and who approved it.

Zarel answers all three from the runtime. Every chained event cites the contract version that decided it, and how that version went live: approved, by whom and in which role, or published without approval. zarel verify checks it offline. The record does not yet list, for every event, each rule it was checked against.

How it's solved today

Teams write those rules three ways today, and each one gets stuck somewhere else when they change.

01

In the agent's code

It's the fastest way, and enough for a pilot. You can build all of it in-house. The cost comes later: every change ships with a deploy, and only engineering can read what changed.

02

In the prompt, and in filters on what the model says

Quick to change. But a prompt asks the model to behave, and a filter checks what the model says, not what your system executes.

03

In a process or decision platform

They version rules, approve them, and some already change them with no deploy. The price is thinking about your business in their process model, and adopting one tends to be a project of its own.

What it should take, and what Zarel solves

The rule lives outside

Outside the agent's code and outside the model, in a document that gets reviewed before it applies. What goes through Zarel, the model can't skip.

A change gets tested, approved, and applies with no deploy

Before publishing, you see what it would have done to what already happened. If the contract says so, someone else approves it, and until then nothing changes. Then it takes effect without touching the agent's code.

Every state change that goes through Zarel says which version allowed it

When someone asks which rule applied, the answer comes from the record and doesn't have to be reconstructed. And someone outside can check it.

What Zarel does

Propose. Gate. Prove.

The model is an interface, not an executor. It does not execute a call, mutate state, or decide an outcome; where a contract allows chained actions, the model proposes the sequence and each step clears the same gates.

The model proposes a structured intent

A typed intent rather than free-form text or a tool call, validated against a schema before anything deterministic runs. Output from the model enters as untrusted data.

The contract decides. The runtime enforces.

A declarative contract holds the data model, roles, permissions, state transitions, bindings and checks in one reviewable artifact. Risk and compliance read and approve the contract, and never need to read the codebase.

What executed leaves a record you can check without us

State transitions and flow steps are hash-chained and checkpoints are signed. Verification runs offline, against the exported bundle, with no call back to Zarel.

When a rule changes

Try the change. Have someone else approve it. Publish it.

After a fraud, compliance decides: if an account’s withdrawal destination changed recently, no request goes through until the back office has verified it, and how many days depends on the account’s policy. That is new data and new logic, in the contract, with no code to change and no deploy.

Publish the model first

A policy with its hold in days, and when each destination changed and was verified. Nothing changes for anyone while the back office fills them in.

Try the rule against what already happened

In our demo, 2 of 5 past requests would now be refused by that rule and 3 wouldn’t change. What it can’t judge it says, instead of counting it as unchanged. It judges your rules over what happened, not what the model would have done.

Someone else approves, if your contract says so

Until then nothing changes, and the approver is told how many accounts the rule can’t apply to yet because they hold no value for it.

It applies from the next action

The same request is now refused, and the record names the rule and the version. Once the back office verifies the change, it goes through. Shortening the hold is an edit to a record, not a new version. Zarel records the request; it moves no money in this demo.

Run on 3 November 2026 on a demo contract in a local stack, by the API and the zarel CLI.

Three things you can verify

Anyone can verify it — including you, offline.

AUDIT

Tamper-evident record

Hash-chained events with Ed25519-signed checkpoints. Altering any event a signed checkpoint covers is detectable at the exact sequence number where the chain breaks. It detects tampering; it does not prevent it.

BINDING

Values anchored to authoritative state

Where the contract declares a binding, a bound value comes from authoritative state and the model's version is discarded; an asserted one is refused if it breaks a rule over state the model cannot set. The model still reads and proposes.

PLANES

Separate contract and runtime

The surface that changes the rules and the surface that executes under them are distinct, with tenant isolation enforced by row-level security at the database and separate Postgres roles.

$ zarel verify bundle.tar.gz --keys trust-keys.json
✓ Audit chain bundle.tar.gz verified and attested.
Attested seq: 1..30
Checkpoints verified: 1
Signed by: k_1c3770f5d8450a57
Anchoring: no external timestamp anchor in range (self-asserted time only).
Transparency log: none in this bundle.
Decisions: 1 contract version(s) cited, 1 resolved offline to their bytes.
dd7b8e7116d6 — 30 event(s) from seq 1
approved (flows: approver@example.com as approver, four-eyes), proposed by author@example.com, publications seq 6
Publications chain attested seq 1..6.
 
$ zarel verify bundle-rewritten.tar.gz --keys trust-keys.json
✗ Audit chain verification FAILED (2 anomalies):
seq 26: event_hash_mismatch
seq 27: prev_hash_mismatch
Anchoring: no external timestamp anchor in range (self-asserted time only).
Transparency log: none in this bundle.
Decisions: 1 contract version(s) cited, 1 resolved offline to their bytes.
dd7b8e7116d6 — 30 event(s) from seq 1
approved (flows: approver@example.com as approver, four-eyes), proposed by author@example.com, publications seq 6
Publications chain attested seq 1..6.

Real output of the zarel CLI, run on 19 October 2026 on a demo tenant in a local development deployment. One person proposed the contract version and another approved it. For the second run, event 26 was changed and re-signed with the deployment's bundle key. The verifier runs with no network access.

Where Zarel fits

Fits with, not instead of.

Zarel is the layer between what your AI proposes and what your systems execute. Most of what you already run stays.

Your agent framework

Composes the agent and orchestrates the conversation. Zarel governs what that agent is permitted to execute.

Your durable execution engine

Keeps long-running workflows alive across failures. Zarel enforces the contract that determines which steps are allowed to proceed.

Your process engine

This is the overlap. If your process definitions already encode who may do what, Zarel is an alternative, one built for probabilistic callers.

Your AI provider

Customer-controlled. Bring your own key, choose your region, keep your existing contract with the provider.

Who it’s for

For any business with an agent that acts under rules that change.

It shows most where a wrong action is expensive: it touches money, customer data or an obligation to someone else.

"Mostly right" is expensive

An agent that's usually right isn't enough when the rule it has to follow just changed.

Someone outside will ask

A regulator, an auditor or your customer's customer. What can be verified comes as a consequence of every change.

Where we actually are

The limits, stated plainly.

What Zarel does not do yet, and where each guarantee stops.

It covers what goes through Zarel. Anything the agent can do some other way, it doesn't judge.

Someone still edits a contract. Changing a rule takes no deploy, but someone writes it and publishes it; today, in a file and a terminal.

Tamper-evidence, not tamper-prevention. The record makes altering any event a signed checkpoint covers detectable. It does not make alteration impossible, and the events since the last hourly checkpoint are not attested yet.

Approval is what the contract declares. Approval applies when the contract declares approvers. Without them a version goes live when it is published, and the record says who published it and that no one approved it. With one approver, the record says they approved alone.

Offline verification applies everywhere; trustlessness has a scope. Verifying a bundle without contacting us works on any deployment. Verifying without trusting the operator requires a customer-operated deployment where you hold the signing key.

What is deterministic, and what is not. Every check the contract declares (field rules, permissions, state transitions, bindings, confirmations) returns the same verdict for the same input. The sequence of actions is fixed only in the flows the contract declares; elsewhere the model proposes it, and each step is checked. The topic check can consult a classifier.

Production-oriented architecture, not certified. No SOC 2 report, ISO 27001 certification, PCI DSS attestation or HIPAA assessment to date. The architecture is designed toward those controls; it has not been audited against them.

Channels today. Zarel Desk runs on the web. WhatsApp is on the way, not shipped.

The Design Partner Program is opening. We are not claiming deployments or references we don't have.

Let's talk

Tell us about the last rule you had to change.

We're talking with teams that already have an agent acting on its own, to understand what changing a rule costs them. If that's you, write to us.