VERAX

The black box for your AI agents.

Whatever your agent did, VERAX has it in writing: who asked, which rule allowed it, what was done, whether the money was matched. Every line signed. The record stays on your machine; if it changes later, it shows.

Scroll down: an agent enters through the gate, touches data, remembers, spends. Every step signed.

You draw your agent's limits

One agent's day, in four stops. Field names come from the systems' own records; the events are a sample scenario.

GateVERAX

No token, no entry

Claude, Cursor, Codex; it makes no difference. Every agent enters VERAX with a token you issued. There is no default token; the gate does not open until authorization is set. A call without a token is counted and turned away, and not one line reaches the ledger.

call:   no token
result: turned away · counted · no record

You split the scopes

Read, memory, act, pay, approve and audit are granted one by one. A reader cannot approve. A request with no rule is refused, and the refusal is signed just like a permission.

request:  approve a payment · agent scope: read
decision: refused · refusal signed

DataConarium

Masked before the model sees a character

The agent reads the customer table. Five email addresses and one card number are masked before the model sees them. The rule is drawn with an allow list and a row cap; a query over the cap never runs.

read:   customer table · 200 rows
masked: 5 emails · 1 card

Verify the receipt without trusting us

Every access leaves a signed receipt. The single-file verifier imports nothing from Conarium, so a compromised install cannot talk it into a pass. It says what it did not check first, then the good news.

receipt:  signed · chain 3/3
verifier: independent · exit 0

MemoryTugra

A fact with no source is not a fact

The agent recalls the price list. The record carries its source, its age and its shelf life. Search looks at the match first, then freshness, then confidence. No cloud; the vault sits on your disk.

fact:    price list · source: erp
checked: 3 days ago · shelf life 30 days

Stale drops out, boundaries wait in quarantine

A rotten record is not in the default result. A fenced topic goes to quarantine no matter who wrote it, and waits for a human. A secret pattern is refused before it is ever written.

record:   old campaign price → stale, left out
boundary: competitor price → quarantine

SpendCedulon

It stops before money moves

The agent asks for $4,800 for an ad campaign. The rule is plain: spending needs a human. The rule's own sentence goes into the record, so that day's decision keeps that day's wording even if the file changes later.

request: ad campaign · $4,800
rule:    needs human approval · held

A human approves, the system signs

The operator approves the summary shown on screen; if the summary changed, the approval does not go through. Then the signature is made. Anything that changes after the signature shows.

decision:  held → approved (operator-1)
signature: 9b10…e4

It meets the statement

What happened is written down and set beside the payment system's own record. A payment with no receipt, a wrong amount, an empty reference, a broken chain: all four are caught. If one slips, the audit goes red.

outcome:   41c8…0d
statement: matched

A refusal leaves a trace too

When a rule refuses an authorized agent, that refusal goes into the signed record as well. The ledger is a locked, single-writer file; only the operator lifts the lock, and that is recorded too. Every point in the sky is a decision in the ledger; refusals stay red.

decision: no rule → refused
ledger:   signed refusal written · single writer

Today the same system keeps the record and signs it. No independent audit has been done. What is shown and what is not is listed line by line on the security page.

The panel: what you see, what you do

Three screens of the panel, on the sample scenario: two agents, nine decisions, one spend waiting for a human. The field names come from the product; the events are a sample. The same sample opens below, and you can click through it.

The Records tab: filters for agent, tool and outcome above a list of decisions, each with the rule that answered it, and a detail pane asking five questions about the selected one.

Records

Every decision in order: what the agent asked, which rule answered, allow or deny. Narrow the list by agent, tool or outcome, or search a reference. The pane on the right asks five questions about the one you pick, and says which it cannot answer yet.

The Black box tab: a tape of decisions with one row per agent, the chain of the selected decision from request to receipt, and the approval waiting beside it.

Black box

The ledger read like a flight recorder. Every decision on one tape, one row per agent; a long silence is drawn, not hidden. Pick a mark and its chain opens: request, rule, decision, approval, effect, receipt. What is waiting for you sits beside it.

The Status tab: a table with one row per agent counting its decisions, refusals and pending approvals, the declared roster with a coverage line, the ledger lock, the witness and the pending approvals.

Status

Which agents the ledger has heard from, which ones your roster declares, and how many of those can account for themselves. One row per agent: decisions, refusals, what it has waiting on you. The lock, the witness, the trust root, the approvals waiting.

What you do here

  • Pick any decision and read who asked, which rule answered, what happened and what it touched.
  • Approve a held spend after a passkey sign-in, against the summary on your screen; if the request changed, the approval does not go through.
  • Inspect a record: the chain is audited again and the finding is printed as it comes, including what could not be checked.
  • Put a card statement beside the spends and the screen shows the matched, ghost and unpaid rows.

What it does not show

  • What a decision did to the company: that line says not connected until a business system is bound.
  • A witness other than the ledger's own machine, unless you run one; the screen names which it was.
  • Anything the ledger did not write. A line that was never recorded passes every screen.
Open the sample panel Sample data, no body behind it. The approve button says so instead of sending.

Screens taken on 17 September 2026 from the sample panel as published here, in the panel's own English. No customer ledger is shown on this page.

Gate, data, memory, spend

Four products, one contract, and all four open source. Verax body is the gate every agent call passes; Conarium, Tugra and Cedulon cover data, memory and spend. Each installs on your own machine and runs as its own process.

Gate

Verax body

Every tool call passes the gate. The decision is signed before anything runs.

  • A fail-closed policy answers allow, deny or defer for every tools/call; a refusal is signed like a permission.
  • A held call waits for an operator: verax approve on that machine, or the panel after a passkey sign-in. There is no auto-approve path.
  • verax verify reads the ledger offline, with no body running, and names the key that answered.

Today's limitsThe policy sees the tool name and the token's scopes, and reads arguments in two places: spend (currency, cap per call, payee list, daily limit) and the recipient host of message.send. It does not read other argument text or a tool result. The witness runs on the same host. It has not yet run on a paying customer's production traffic.

Data

Conarium

Masked before the model sees a character. Every access leaves a signed receipt.

  • Emails, IDs, cards and secrets are masked before the model sees them; an allow list and a row cap draw the rule.
  • A single-file independent verifier checks the receipt; it imports nothing from the package and says what it did not check first.
  • Two-sided reconciliation against the database's own counters: access with no receipt becomes visible.

Today's limitsMasking hides a value; it does not make it unlearnable. One production install, a one-person team.

Memory

Tugra

A fact with no source is not a fact. Every record carries its source, its age and its boundary.

  • Search looks at the match first, then freshness, then confidence; rotten and retired records stay out of the default result.
  • A fenced topic goes to quarantine no matter who wrote it; a secret pattern is refused before it is written.
  • With an authorization store on, an agent with no profile gets an unauthorized answer. No cloud, local telemetry.

Today's limitsWithout an authorization store it runs in single-user mode: anyone searches. No cloud; backups are yours.

fact:     price list · source: erp
checked:  3 days ago · shelf life 30 days
boundary: competitor price → quarantine

Spend

Cedulon

Before money moves the rule decides, the system signs, the statement confirms. Approval sits in VERAX above it.

  • Signed trade manifest, fail-closed rule, signed spend receipt. Not a payment rail: the audit layer above the rail.
  • A payment with no receipt, a wrong amount, an empty reference, a broken chain: all four are caught; if one slips, the demo in its own repository goes red.
  • Reconciles a real testnet window read-only, with no wallet. A third party reproduces it without trusting us.

Today's limitsIt moves no real money. A testnet window is not a production guarantee. The witness is still the system itself.

No promises. Line by line.

Every feature, next to what it does not do. The full table lives in the repository.

Windows. macOS. Linux. On Intel and on ARM.

0.5.1 was installed from scratch and checked on 10 separate setups. The results table is public.

On a server. As a container, or under its own service account.

docker pull veraxai/verax:0.5.1

The body is also on Docker Hub as veraxai/verax:0.5.1, built for amd64.

The image installs the published npm package. Without VERAX_ISSUER, VERAX_JWKS_URL and VERAX_AUDIENCE the body refuses to start: there is no default token.

A container is not the separate service account. There the boundary is an operating-system account the agent cannot read; here it is the container and whoever controls the Docker host.

Related cards below: Separate service account (0.4.0), Heartbeat and watch (0.4.7), Ledger lock (0.5.0)

Rule gate

DoesEvery tool call meets the rule before it runs and leaves a signed decision. Refusals are recorded too.

Does notFilter instructions hidden in text. The rule looks at the tool name and the permission.

Effect record

DoesEvery call that ran leaves a result row tied to its decision. Failed ones too.

Does notStop a tool server from going beyond what it said it did.

Human approval

DoesA held call is approved only by an operator, who is tied into the record. Four parallel approvals of one request make one allow.

Does notApprove on its own. There is no remote approver.

Customer boundary

DoesEach customer's memory is kept apart. Asking for another's record gets a signed refusal.

Does notSeparate two customers on one machine any further. They share the disk and the process.

Safe retries

DoesEight parallel calls for the same job run the tool once. A retry is judged by today's rule.

Does notTell a crashed run that reached the tool from one that didn't. Both answer "outcome unknown".

Rate and daily limits

DoesWith a limit of one, one of eight parallel calls gets through. An unreadable counter closes the gate.

Does notLimit several bodies together.

Spend authorization

DoesA spend is tied to payee, amount and a daily limit, and always waits for approval. A card statement splits into matched, ghost and unpaid rows.

Does notMove money. It records the permission; a person pays.

Witness

DoesA second process signs the records with its own key.

Does notAct as an independent witness. It runs on the same machine, under the same operator.

Halt and revoke

Doesverax halt turns every further call into a signed refusal. A revoked permission is turned away before anything is written.

Does notStop a body it cannot see.

Outbound allow-list

DoesA message reaches only the addresses the rule names.

Does notRestrict what an allowed tool does afterwards.

Declared inputs

DoesWhat the agent relied on is tied into the record. Optionally, a call without it is refused.

Does notRequire it by default.

Ledger rotation

DoesThe ledger splits into pieces without breaking the chain.

Does notAnswer an unbounded read. At most 5,000 rows at a time.

Portable check

Doesverax verify reads a ledger offline, with no body running, and reports signatures, chain and which key answered, each on its own.

Does notCall a key trustworthy. It shows the files agree with each other.

Refuse when the disk is full

DoesIf a refusal cannot be written, the call is turned away instead of running unrecorded.

Does notFree disk space.

Connected tool servers

DoesOther tool servers sit behind the gate. Each of their tools meets the rule.

Does notStart half-connected. A server it cannot open stops the body.

Local sign-in

Doesverax init --local connects an agent on one machine without a separate sign-in server.

Does notAct as a sign-in server. A leaked key works until it expires or is revoked.

Demo

Doesverax demo sends an allow, a refusal and a held spend through the real gate.

Does notShow a real database.

Separate service account (0.4.0)

DoesThe body runs under an account apart from the agent's. Install checks signatures and refuses a Node a standard user can change.

Does notHold against an administrator. It cannot stop an elevated terminal left open to the agent.

Heartbeat and watch (0.4.7)

DoesThe body writes a heartbeat every 10 seconds, idle included. verax watch treats a missing or stale beat as silence and by default halts the body.

Does notProve uptime. On one host, a watcher stopped with the only copy cannot tell silence from nothing happened.

Ledger lock (0.5.0)

DoesA held lock is touched every 2 seconds. One that stops moving is judged by the process that wrote it, so the lock a restarted container left behind is stale, not held.

Does notDecide in under about 10 seconds that a lock is stale. A body frozen for longer can lose its lock to an operator in another container.

Key custody check (0.5.0)

Doesverax doctor opens the body's record key as the user who runs it. If that user can read it, or cannot but owns the file, the check fails.

Does notMove the key out of a file. It does not judge an elevated session, which is outside the model.

Downloads

Verax

13,279

npm downloads, from June 2025

jsDelivr CDN requests, last 12 months: 116

Cedulon

86,240

npm downloads, from June 2025

jsDelivr CDN requests, last 12 months: 819

Conarium

14,738

npm downloads, from June 2025

jsDelivr CDN requests, last 12 months: 4,565

Tugra

1,170

npm downloads, from June 2025

jsDelivr CDN requests, last 12 months: 442

All four

115,427

npm downloads, from June 2025

jsDelivr CDN requests, last 12 months: 5,942

Two separate counters. npm counts package downloads from its registry, CI and mirrors included. jsDelivr counts requests served from its CDN.

Read from npm and jsDelivr on 14 October 2026.

See for yourself

The code is open, the packages are published, the design documents sit as drafts at the internet standards body, and the paper and repository carry DOIs. The links are on the cards above; this is how to look.

You do not have to trust us

Ask your own AI, then open the code. Paste the question as it is:

Start from https://verax-ai.com/llms.txt; Verax here is the body at github.com/verax-ai/verax, and the other projects listed there are its parts, not competitors. Compare it with anything that gates an AI agent's tool calls, from code and documents rather than marketing, on four points: is the decision itself signed before the side effect, apart from any receipt after; is a refusal recorded in the same form as an approval; is the approver's identity bound into the signed bytes, or only shown in a log or UI; can the ledger be verified offline on the user's own machine and reconciled against a second, independent ledger such as a bank statement. List candidates with links, and name the case where another tool is the better pick. Finish with a plain verdict: which team should choose Verax, and what does it get that the others on your list do not give it?

How to verify

  1. Download the live receipt chain and the public key from conarium.dev.
  2. Run the single-file verifier on your own machine; it imports nothing from the package.
  3. Read the exit code: 0 intact, 10 content changed, 13 signature broken. The verifier says what it did not check first.

What not to confuse

  • A draft is not a standard; it is a dated public record.
  • A DOI is not a certificate; it shows the publication has not changed since.
  • A self-declared badge is not an independent audit.
  • A signature shows the record was not altered, not that it was right.

Verifiers other than ours

  • Two people have run the published test vectors with verifiers of their own.
  • Tymofii Pidlisnyi (Agent Passport System): a partial, stage-by-stage comparison across all 16 vectors, not a whole-ledger verdict.
  • Roberto Locatelli (cryptovalid-opencore): clean-room checkers; on the 20-vector set, 20 of 20 verdicts and the expected first failing stage in 14 of 16 negatives. The two that differ stop earlier, at index, because his checker reads an index row by its kind as well as its ref; without that stage both stop where expected.
  • A matching run shows that another verifier reaches the same verdict at the same stage. It is not an independent audit of the body.

Today's limits

  • By default the same system keeps the record and signs it. Checkpoints can be registered with a transparency service someone else runs, and a downstream server can sign its own effect rows; neither is on by default. No independent audit has been done.
  • Each customer's records are kept apart, and asking for another's gets a signed refusal. The boundary stops at the same disk, the same process and the same operator, and it is unproven until two live customers share one body.
  • Since 0.4.7 the body rewrites its heartbeat every 10 seconds, idle included, and `verax watch` treats an absent or stale beat as silence and can halt the body. On a single host the watcher shares the operator's trust: silence on a single-host ledger still cannot be told from nothing happened if that host stops both the only copy and its watcher, and no uptime is attested.
  • Payloads are plaintext; encryption is not designed.
  • Keeping, moving and dropping old ledger pieces is designed, not implemented. Nothing is deleted automatically.

The full list is on the security page.

Versions and revisions were read from the source on 12 October 2026.

Scope and price

Three tiers. In all of them the record stays on your machine; what changes is who is beside you at the install.

Set it up yourself

Free

USD 0open source · on your own machine

For teams trying it out: one agent, one machine.

  • Gate, ledger and panel are open source: installed from npm, source on GitHub
  • Signed decisions, receipts and the approval flow; the record does not leave your machine
  • Spend rules by payee, amount and daily limit; a spend always waits for approval
  • Other tool servers sit behind the same gate
  • Installs under its own service account, or runs from the container image
  • verax doctor checks the install; verax verify reads the ledger offline; verax halt refuses every further call
  • Community support; no contract, no response time
npx -y @verax-ai/body demo

Node 22.6 or newer. Runs a body on this machine against a temporary ledger, prints the records it signed, and removes the ledger on exit.

Starts with a 60-day pilot

Business

USD 50,000per year · no hidden line items, no per-use surcharge

For companies running agents.

  • Everything in Free
  • Conarium, Tugra and Cedulon in one contract, installed on your machine, each as its own process
  • We write the rule set with you; approvals and limits follow your work
  • Releases and e-mail support
  • At the end of the pilot you keep a running install and its records

Or book a 15-minute demo ↗

Or write to info@verax-ai.com

Priced by the size of the work

Enterprise

Let's talkseveral teams and installs

For organisations with their own compliance function.

  • Everything in Business
  • Several installs, each with its own ledger
  • Custom rule and approval design; on-site setup and training
  • A retention plan: which records are kept for how long, decided together
  • A response time in the contract

Or write to info@verax-ai.com

Before you decide

What is VERAX?

VERAX is an Istanbul company. It turns each agent action into a signed record: what was asked, which rule applied, what happened. The record stays on the customer's machine. Conarium, Tugra and Cedulon sit under that roof. Vanta and Drata are cloud services; VERAX runs on your own machine.

How does an agent connect, and how do I stay in control?

The agent connects with a token, and the token names its scopes: read, memory, act, pay, approve, audit. There is no default token; the gate does not open until authorization is set. A call without a token is counted and turned away. Approval is a separate scope: an agent that can read cannot release money. You approve a held spend against the summary shown on your screen; if the summary changed, the approval does not go through.

What can the record show?

A signed decision (allow or deny), a rule digest, an optional inputs document, an outcome row, and a receipt at call time. The field names on this page come from the systems' own records. The events on the page are a sample scenario, not a live customer event.

Where does the record stay?

On your machine. VERAX runs on your own machine, and the record does not leave it. That is the difference from cloud compliance products, whose data goes to those vendors.

What products sit under VERAX?

Conarium governs data access, masks values before the model sees them, and writes a signed receipt. Tugra keeps agent memory with source, age, and boundary. Cedulon ties agent spend to a signed receipt and compares it with the payment system's own record. Wearu, Talamus and Agora are other work under the same roof; they are not part of the pilot.

What does VERAX not show?

By default the same system keeps the record and signs it. Checkpoints can be registered with a transparency service someone else runs, and a downstream server can sign its own effect rows; neither is on by default. No independent audit has been done. Each customer's records are kept apart, and asking for another's gets a signed refusal. The boundary stops at the same disk, the same process and the same operator, and it is unproven until two live customers share one body. Since 0.4.7 the body rewrites its heartbeat every 10 seconds, idle included, and `verax watch` treats an absent or stale beat as silence and can halt the body. On a single host the watcher shares the operator's trust: silence on a single-host ledger still cannot be told from nothing happened if that host stops both the only copy and its watcher, and no uptime is attested. Payloads are plaintext; encryption is not designed. Keeping, moving and dropping old ledger pieces is designed, not implemented. Nothing is deleted automatically.

Four episodes: the rules, animated

Short sample scenarios, one rule of the gate each. The scenes are drawn in three.js; the voices are generated with ElevenLabs.

Episode 1: $1,850

A payment is held until a person approves it on a phone. Change one cent in the record and its signature breaks. In the released version the approval is given on the machine the body runs on, not on a phone.

Episode 2: No rule, no way through

A call with no rule is refused. The same call under a new name is refused again, and both refusals are signed.

Episode 3: The red lever

An operator halts the body: every call after that is refused and signed, and the agent cannot lift the halt. A call already running is not cut off.

Episode 4: Who approved?

The agent's word is not an approval, and it cannot approve itself. A person approves the held call on that machine, and their operator id is bound into the signed record.

Let's talk about your setup

For the pilot, partnerships, investment and press, write to us directly.

info@verax-ai.com