Overview¶
An Agent Cartridge (.acx) is a single SQLite database that packages an AI agent — its skills, capability claims, memory, runtime contract, loop/context policy, and a cryptographically provable competence level — into one portable, signable, distributable artifact. Software engineering is the flagship use case, but the format is task-general: any agent that has skills, learns, and runs a loop fits — and cartridges level up, form teams, and run workflows together.
Where cartridges can come from
A cartridge can be assembled from a reviewed agent package or scaffolded directly with the ACX CLI.
AGENTIBUS inspired the studio vocabulary and exports its own package directories; an
operator can explicitly pass a compatible directory to acx export. AGENTIBUS does not currently
emit or import .acx files. See the current station outcome → cartridge boundary.
What an Agent Cartridge is¶
A cartridge is a self-describing SQLite ≥ 3.37 database, extension .acx, that an agent "trained"
(leveled up) in one environment can be shared, verified, remixed, and re-hosted in another with
deterministic integrity guarantees and no host lock-in (SPEC §1).
It is branded at the file-header level so file(1) recognizes it from a 72-byte read, with no page cache and no schema query:
$ file /tmp/demo.acx
/tmp/demo.acx: SQLite 3.x database, application id 1094932529, user version 16777472, ...
application_id = 1094932529is the magic0x41435831— the ASCII bytesA C X 1, stored at header offset 68.user_version = 16777472(0x01000100) packs[spec_MAJOR][spec_MINOR][vec0_storage_format][flags]at offset 60.
Everything else — skills, capabilities, memory, signatures, credentials — lives in ordinary tables inside that one file. Because it is stock SQLite, stock tools work on it unchanged:
Two zones, one file
Every cartridge splits into a ROM zone (signed, immutable, shareable core) and a SAVE zone (mutable, field-learned, codebase-specific memory). The ROM is signed once; SAVE mutates locally; derived vectors are always rebuilt by the consumer. See The cartridge model.
A cartridge is a signed harness¶
Lilian Weng's 2026 post "Harness Engineering for Self-Improvement" defines a harness as "the system surrounding a base model that orchestrates execution and decides how the model thinks and plans, calls tools and acts, perceives and manages context, stores artifacts, and evaluates results." She argues that "the layer between the raw model and the real-world context seems to be as important as the model's raw intelligence."
An Agent Cartridge is exactly that harness, captured as a self-contained, signed, portable artifact — an agent-OS image — that any compliant host can boot. The harness-requirements manifest is the boot contract; the loop/context policy encodes Weng's loop of "plan, execute, observe/test, improve, and execute again until the goal is achieved." See The agent OS.
The problem it solves¶
Today a specialized agent is trapped where it was built. Three properties are missing:
| Property | Status quo | What breaks |
|---|---|---|
| Portable | Identity binds to a hostname-derived instanceId; memory binds to a local repo. |
Move the agent and its trust, memory, and behavior fall apart. |
| Shareable | An agent's earned expertise is co-mingled with codebase-specific secrets and local paths. | You cannot hand someone the useful core without leaking the private field data. |
| Provable | "Level 20 agent" is a self-asserted string in a config file. | A recipient has no way to check the claim; anyone can fake it. |
The cartridge fixes each of these by construction, and the fix is machine-checkable rather than promised.
Provable, not asserted — from the real proof transcript
A level is never self-declared. It is earned by an independent verifier re-running the pinned ROM on a sealed held-out slice, then σ-gated. A weak agent is rejected; a strong one earns a credential bound to the ROM digest:
weak agent (competence 14): NOT ISSUED — gating failed: sigma=2.230 (<1.5?) ...
strong agent (competence 33): ISSUED ✅ mu=33.03 sigma=1.232 games=90 R=29.34 => acxLevel=29 tier=principal
anti-transplant — VC on mutated ROM: REJECTED ✅ [ 'ROM digest binding mismatch' ]
This is Weng's "candidates are accepted only if they have no regression on both held-in and held-out data" — made cryptographic. See Provable level.
The five design goals¶
The standard is governed by five goals (SPEC §1):
- Portable. Identity, trust, and behavior bind to a reverse-DNS publisher (e.g.
io.github.agentibus/scenario-research-designer) and a content-addressed ROM manifest — never to a hostname. A cartridge verifies and runs unchanged across machines, orgs, and hosts. - Codebase-agnostic base, but field-learning. Every memory record is partitioned into a TRANSFERABLE tier (generalizable, signed, shareable) and a FIELD-LEARNED tier (codebase-specific, pseudonymously namespaced, quarantined). The agent keeps learning in the field without contaminating its shareable core.
-
Shareable and remixable. The immutable ROM zone is the portable core; the mutable SAVE zone holds local learning. A
strip-to-ROMre-export proves, by hash equality, that field learning never mutated the core: -
Provable level. An agent's level is a W3C Verifiable Credential 2.0 embedding an Open Badges 3.0 achievement, issued by an independent verifier only after held-out re-execution, TrueSkill σ-gated (
sigma < 1.5,gamesPlayed >= 30, conservative ratingR = mu - 3*sigma), bound to the ROM digest, and revocable. - Open envelope, valuable contents. The container format, schemas, and descriptive layer are 100% open under Apache-2.0. Signed level attestations, verified capability evidence, and field-learned memory remain revocable, identity-bound assets inside a fully open envelope. Payments, entitlements, and licensing enforcement are outside ACX.
flowchart LR
subgraph ACX[".acx cartridge — one SQLite file"]
subgraph ROM["ROM zone · signed · shareable"]
S[skills]
C[capabilities]
RM[ROM memory]
SIG[Ed25519 / DSSE signature]
ATT[level credential]
end
subgraph SAVE["SAVE zone · mutable · field-learned"]
SM[codebase-fingerprinted memory]
end
end
ROM -->|strip-to-ROM re-export<br/>hash unchanged| ROM
What is inside a cartridge¶
Each part of the cartridge has its own format page:
- Container format — the SQLite header brand, the exact table schema (
cartridge,sqlar,memory,objects,signatures,attestations,vectors), the ROM/SAVE boundary, and strip-to-ROM (SPEC §3). - Signing & trust — Ed25519 in a DSSE / in-toto envelope over a content-addressed ROM manifest recomputed from live bytes, plus the
local / trusted / portable / legacy / tamperedtrust taxonomy (SPEC §4). - Skills —
SKILL.mdfiles underrom/skills/<name>/in thesqlartable, using agentskills.io frontmatter and extractable with stocksqlite3 -Ax(SPEC §5). - Capabilities — structured claims
{taskType, stack (purl), domain, proficiency (TrueSkill), evidenceRefs}that map to an A2A AgentCard;verified: trueonly when a level attestation resolves (SPEC §6). - Memory — the two-tier partition, mandatory
portable+codebaseFingerprinton every record, and the fail-closed secret-scrub gate on export (SPEC §7). - Harness requirements — the four required tool-roles (
acx:execute,acx:dispatch,acx:memory.write,acx:search), the MCP protocol floor, and the host capability-negotiation handshake (SPEC §8). - Loop & context policy — the
cycle [plan, gather_context, act, verify, reflect], verification with held-in/held-out regression gating, budgets, sub-agents, and observability (SPEC §9).
And beyond one cartridge:
- Conditional Agentic Loops — signed, bounded execution graphs that bind agent slots, required context, conditions, and completion contracts (SPEC §14).
- Agent Graph — the signed information architecture around those loops: who owns context, who directs or reports to whom, and where separate loops converge (SPEC §16).
- Provable level — how a level is earned by re-run and verified as unfakeable (SPEC §10).
- Distribution — the
.acxfile as one layer in an OCI image manifest (artifactType application/vnd.acx.cartridge.v1), verifiable with stock cosign/oras (SPEC §11).
About the reference implementation
The reference implementation is zero-dependency — Node ≥ 22.5.0's built-in node:sqlite and
node:crypto — and runs with node --experimental-sqlite. Its cartridge crypto, Agent Graph and
workflow signing, structural bounds, safe sharing path, σ-gating, and credential machinery are
exercised by the current suite; see Proofs. The benchmark's reference solver is
deterministic and pluggable — a production verifier plugs in a real sandboxed agent run. OCI push,
live namespace-proof verification (DNS-TXT / GitHub-OIDC), the host handshake runtime, the loop-policy
evaluator, and vec0 vectors are specified normatively and are host-side — they are not exercised
by the reference impl.