Skip to content
MaatX
AI Agentsdark interfacedemo

AUTONOM

AI Agent Operating System

AI agents that can reason, use tools and execute workflows.

AUTONOM
AUTONOM, ai agent operating system — product interface

Put AI agents into real workflows without risking a retry that charges a customer twice.

  • Durable execution
  • Typed tools
  • Idempotency keys
  • Capability scoping
  • Replay + eval

An agent runtime with typed tools, scoped permissions, durable memory, human approval gates and an execution log you can audit after the fact.

Product overview

What the product is built around.

AUTONOM treats an agent run as a durable, resumable execution rather than a chat session. Tools are typed and permissioned, side effects are idempotent, approval gates are part of the graph, and every step is recorded — so an agent failure is debuggable instead of mysterious.

Durable execution

A run is a persisted state machine. It survives process restarts, resumes from the last completed step and never re-executes a committed side effect.

Least authority per task

Tools are granted per agent and narrowed per run. An agent summarising tickets cannot reach the payments API because the capability is not in its scope.

Humans in the graph, not around it

Approval is a node with a real gate. The run pauses, holds state and resumes on decision — it does not proceed hopefully and apologise later.

The problem

What makes this hard.

Agent demos work. Agents in production do not, for boring reasons: they retry a side-effecting call after a timeout, they hold too much authority, they lose context halfway through a long task, and when something goes wrong there is no record of what the agent actually did.

  • 01

    A retried tool call executes a side effect twice

  • 02

    Agents run with far more authority than any single task requires

  • 03

    Long tasks exceed the context window and the agent forgets its own plan

  • 04

    There is no audit trail of what was called with what arguments

  • 05

    Nothing stops an agent from taking an irreversible action unsupervised

The solution

What the system does.

AUTONOM treats an agent run as a durable, resumable execution rather than a chat session. Tools are typed and permissioned per run, side effects carry idempotency keys so a retry after a timeout is a no-op, approval gates are nodes in the execution graph that hold state, and every model call and tool result is recorded so a failure is replayable instead of mysterious.

  • Idempotent side effects — a retried write never executes twice

  • Capabilities scoped per agent and narrowed per run into a short-lived token

  • The plan lives in durable state, not the prompt, so step 30 is as coherent as step 2

  • Approval gates pause and persist rather than proceeding optimistically

  • Full trace with cost per step, and deterministic replay against recorded responses

Product interface

AUTONOM, as working interface.

Rendered UI, not a mockup — real tables, charts, filters and states. Try ⌘K for the command palette.

DEMO
AUTONOMRuns
AUTONOM

Runs (30D)

84,204

+22.4% m/m

Task success

91.8%

+2.1pp after retry policy

Tool calls

1.24M

14.7 avg per run

Cost / run

$0.084

−31% after caching

Agent builder — invoice-recon v7

Goal

Reconcile unmatched supplier invoices against purchase orders and route anything above tolerance for human approval.

Instructions

  • Match on supplier, amount window and date proximity
  • Never approve an invoice that has no purchase order
  • Escalate any variance above €500 regardless of confidence
  • Record the reasoning for every match in the run log

Memory

Long-term
Supplier naming conventions
Long-term
18 prior cycles
Short-term
Run scratchpad
Recall
Top-k 6 · 0.82 min

Tools

  • Searchread
  • Databaseread
  • APIwritegate
  • Browserread
  • CRMread
  • Emailwritegate
  • Human Approvalgate
  • Paymentswritegate

Permissions

Granted
erp:read, erp:flag
Gated
email:send
Denied
payments:*, erp:delete
Token TTL
15 min per run
Tool budget
40 calls

Execution

Scheduled · weekdays 07:00Ready to deploy

Live run — run_8fK2q · invoice reconciliation agent

Objective

Reconcile the 14 unmatched supplier invoices from last week against purchase orders, flag discrepancies above €500, and draft approval requests for anything that clears.

  1. 01Decompose objectiveplannerComplete1.2s

    6 sub-tasks derived · dependency graph built · budget 40 tool calls

  2. 02Fetch unmatched invoiceserp.invoices.listComplete0.8s

    14 records · read-only scope · 0 side effects

  3. 03Retrieve matching purchase orderserp.po.searchComplete2.1s

    12 of 14 matched on supplier + amount window · 2 ambiguous

  4. 04Resolve ambiguous matchesknowledge.searchComplete1.6s

    Retrieved supplier naming conventions · both resolved · confidence 0.93

  5. 05Compute discrepanciessandbox.pythonRunning3.4s

    Executing in isolated sandbox · no network · 9 of 14 compared

  6. 06Flag items above €500erp.invoices.flagAwaiting approval

    Write scope · blocked pending human approval · 3 items in scope

  7. 07Draft approval requestsemail.draftQueued

    Draft only · sending requires a second approval gate

  8. 08Write run summarymemory.writeQueued

    Persist outcome to long-term memory for the next reconciliation cycle

Run context

Run ID
run_8fK2q
Agent
invoice-recon v7
Status
Awaiting approval
Steps
5 done · 1 running · 2 queued
Tool budget
18 / 40 used
Tokens
84,210
Cost
$0.14
Capabilities
erp:read, erp:flag, email:draft
Denied
payments:*, erp:delete

Agent graph

invoice-recon v7
  1. User requestTrigger

    Scheduled weekly · Mon 07:00

  2. PlannerAI

    Decompose into a dependency graph

  3. Agent loopAI

    Reason → select tool → observe → repeat

  4. Tool layerAction

    Typed, scoped, idempotent

    SearchDatabaseAPI
  5. Human approvalHuman

    Blocks on any write above threshold

    ApproveRejectEdit
  6. Result + traceOutput

    Durable log · replayable

Tool registry

FilterAll toolsWrite scopeRequires approvalSandboxedDeprecated
ToolScopeCalls (30D)p95Error rateIdempotentApprovalStatus
erp.invoices.listread184,2100.8s0.04%N/ANoneStable
erp.po.searchread142,8802.1s0.11%N/ANoneStable
erp.invoices.flagwrite8,4201.2s0.02%KeyedRequiredStable
sandbox.pythoncompute96,1043.4s1.84%PureNoneStable
email.draftwrite24,6100.6s0.08%KeyedRequiredStable
browser.navigateread41,2086.8s4.21%N/ANoneFlaky
payments.transferwrite0——Keyed2-of-2Restricted

Write-scope tools require an idempotency key and pass through an approval gate · counts shown for illustration

Task success rate

90D
91.8%+2.1pp after retry-policy changeprev period
JunJulAugSep

Failure attribution

Failures8.2%
  • Tool error / timeout41.0%
  • Plan degradation24.0%
  • Budget exhausted18.0%
  • Approval rejected11.0%
  • Guardrail triggered6.0%

Guardrails

per run
  • Tool-call budget18 / 40
  • Token budget84K / 200K
  • Wall-clock limit4m 12s / 15m
  • Write operations3 / 5
  • Recursion depth2 / 8

Memory

  • Supplier naming conventionsLong-term · referenced in 412 runs0.93
  • Prior reconciliation outcomesLong-term · 18 cycles retained0.88
  • Current run scratchpadShort-term · cleared on completionephemeral
  • Ambiguity resolutionsLong-term · promoted after 3 confirmations0.91
  • Failed approach logLong-term · prevents repeating dead ends0.76

Tool definition

typescript
defineTool({  name: "erp.invoices.flag",  scope: "write",  input: z.object({    invoiceId: z.string().regex(/^INV-\d{6}$/),    reason: z.enum(["amount", "missing_po", "duplicate"]),    delta: z.number().finite(),  }),  // Same key never executes twice, even across restarts.  idempotencyKey: (i) => `flag:${i.invoiceId}:${i.reason}`,  approval: { required: true, threshold: { delta: 500 } },  retry: { attempts: 3, backoff: "exponential", on: ["5xx"] },  timeout: "10s",  compensate: async (i) => erp.invoices.unflag(i.invoiceId),});

Approval decisions

  1. run_8fK2q · flag 3 invoicesPending

    Total delta €1,842 · awaiting approver · run state held

  2. Approved with edit09:41:22

    run_4Kq2m · approver reduced scope from 8 to 5 invoices

  3. Rejected09:12:04

    run_9Rt5n · supplier dispute open · agent logged reason and stopped

  4. Auto-approved08:47:51

    run_2Wb7x · all deltas below €500 threshold · policy path

  5. Guardrail halt08:04:18

    run_6Ln3v · recursion depth 8 reached · run terminated cleanly

Tool error rate by hour

000408121620
erp.listerp.list 00 1erp.list 04 1erp.list 08 2erp.list 12 2erp.list 16 1erp.list 20 1
erp.poerp.po 00 1erp.po 04 2erp.po 08 2erp.po 12 3erp.po 16 2erp.po 20 1
sandboxsandbox 00 3sandbox 04 4sandbox 08 6sandbox 12 8sandbox 16 7sandbox 20 4
emailemail 00 1email 04 1email 08 2email 12 2email 16 2email 20 1
browserbrowser 00 8browser 04 11browser 08 18browser 12 26browser 16 22browser 20 14

Interface states

UI states

No agents yet

Create an agent, give it an objective and grant it the tools it needs.

New agentEmpty state
Resuming durable run from step 5…
Loading state

Run halted — guardrail triggered

The agent attempted a tool outside its granted capabilities. The run was stopped before execution and the attempt was logged.

RetryCAPABILITY_DENIED
Error state
System architecture

How it is put together.

The tool layer is the security boundary. Reasoning quality is a product problem; tool authority is a safety problem, and they are kept separate.

  1. 01

    Builder & Console

    Agent composition, run inspection, trace viewer and approval UI.

    • Next.js
    • React
    • Streaming traces
  2. 02

    Planner

    Objective decomposition into a dependency graph with budgets attached.

    • LLM
    • Structured output
    • DAG
  3. 03

    Agent Runtime

    Durable state machine driving the reason–act loop with resumable checkpoints.

    • TypeScript
    • Durable execution
    • Checkpointing
  4. 04

    Tool Layer

    Schema validation, capability checks, idempotency, retries and compensation.

    • Zod
    • Capability tokens
    • Idempotency keys
  5. 05

    Memory

    Short-term scratchpad plus durable memory with promotion and recall scoring.

    • PostgreSQL
    • pgvector
    • Summarisation
  6. 06

    Approval Gate

    Blocking human decision nodes that hold run state and record the outcome.

    • State machine
    • RBAC
    • Notification routing
  7. 07

    Observability & Eval

    Full traces, cost attribution, replay and regression scoring.

    • OpenTelemetry
    • Trace store
    • Eval harness

What the product does.

The capability set the demonstration is built around.

Agent builder

Visual composition of objectives, tools, guardrails and approval gates.

Typed tools

Schema-validated tool definitions with retries, timeouts and idempotency keys.

Memory

Scoped short-term and durable long-term memory with summarisation and recall.

Permissions

Capability-scoped credentials per agent and per run with automatic expiry.

Workflows

Multi-step plans with branching, parallel execution and compensating actions.

Execution logs

Full trace of reasoning, tool arguments, results and token cost per step.

Human approval

Blocking gates on irreversible actions with context and a decision record.

Evaluation

Task-level scoring, regression suites and replay against recorded runs.

Engineering focus

Challenges, and the MaatX approach.

The problems that actually decide whether a system like this survives production — and how we address each one.

A retried tool call executes the same side effect twice

Every write-scope tool declares an idempotency key derived from its arguments. The runtime records committed effects, so a retry after a timeout is a no-op rather than a duplicate.

Agents accumulate more authority than any single task needs

Capabilities are granted per agent and narrowed per run into a short-lived token. A tool outside scope fails at the boundary before execution, and the attempt is logged.

Long tasks outrun the context window and the plan degrades

The plan lives in durable state, not in the prompt. Each step gets a focused context assembled from the plan node plus recalled memory, so step 30 is as coherent as step 2.

Non-determinism makes failures impossible to reproduce

Every model call and tool result is recorded. A run can be replayed against the recorded responses, which turns 'it did something strange once' into a debuggable trace.

Irreversible actions cannot be left to model judgement

Approval is a node in the execution graph with a threshold policy. The run pauses and persists; it does not proceed optimistically. Compensating actions are declared alongside the tool that needs them.

Cost is invisible until the invoice arrives

Token and tool budgets are enforced per run with cost attributed per step, so an expensive agent is visible in the trace rather than at month end.

The stack behind it.

Planning & reasoning

  • LLMs
  • Tool calling
  • Structured output
  • Objective decomposition
  • Dependency DAG
  • Focused context assembly

Durable runtime

  • TypeScript
  • Durable execution
  • Persisted state machine
  • Step checkpointing
  • Resumable runs
  • Deterministic replay
  • Compensating actions

Tool layer

  • Zod schemas
  • MCP
  • Idempotency keys
  • Capability tokens
  • Exponential backoff retries
  • Per-tool timeouts
  • Sandboxed compute

Memory

  • PostgreSQL
  • pgvector
  • Short-term scratchpad
  • Durable long-term memory
  • Summarisation
  • Recall scoring
  • Memory promotion

Guardrails & approval

  • Blocking approval gates
  • Threshold policy
  • RBAC
  • Tool-call budgets
  • Token budgets
  • Wall-clock limits
  • Recursion-depth caps

Observability & eval

  • OpenTelemetry
  • Trace store
  • Per-step cost attribution
  • Run replay
  • Eval harness
  • Regression suites

Console & platform

  • Next.js
  • React
  • Streaming traces
  • Notification routing
  • Redis
  • Queues
  • Kubernetes
Product evolution

How it grows with the business.

The same system at three stages. Most products should not start at the third — but the architecture should not have to be thrown away to get there.

MVP

One agent, read-only tools, proving the reasoning loop is useful.

  • Single agent with a fixed objective
  • Read-only tool set
  • Full execution tracing
  • Token and tool-call budgets
Scale

Write-capable agents with approval gates and evaluation.

  • Idempotent write tools with compensation
  • Human approval gates on irreversible actions
  • Durable execution with resumable checkpoints
  • Regression eval suite and run replay
Enterprise

Agent platform with governance across teams.

  • Multi-agent delegation with shared memory
  • Formal policy for what an agent may never do
  • Per-step model routing for cost control
  • Simulation environment for pre-deployment testing
Future expansion

Where it could go next.

Directions this system would extend into.

  • 01

    Multi-agent delegation with negotiated sub-goals and shared memory

  • 02

    Learned tool selection from historical run outcomes

  • 03

    Simulation environment for testing agents against synthetic systems

  • 04

    Fine-grained cost optimisation via model routing per step

  • 05

    Formal policy language for expressing what an agent may never do

Building an agent that takes real actions, where a retry must not charge a customer twice?

We built AUTONOM to work through exactly this. Tell us where you are and we will tell you what we would do differently for your constraints.