Architecture
A runtime that makes agent authority explicit.
Five deterministic steps. Every agent, every run, no exceptions. Here's exactly what happens between zt run and a verified audit trail.
Step by step
From declaration to verified chain.
Every execution follows the same deterministic path. Authority is declared, identity is verified, actions are enforced, and every step is hash-logged.
Declare What Your Agent Needs
A skill is a plain .md file. YAML frontmatter declares every capability the agent needs — file paths, URLs, secrets, processes. Pure data. No code execution in the declaration, and nothing outside this list exists at runtime.
# Backup Database
capabilities:
- fs.read:/var/data
- fs.write:/var/backups
- secrets.read:DB_PASSWORD
steps:
- run: pg_dump -U admin {{secrets.DB_PASSWORD}} mydb > /var/backups/dump.sql Declare Capabilities
Every file path, URL pattern, secret name, and process must be explicitly listed. The runtime builds a capability set before execution starts. If it's not in the list, it doesn't exist as far as the skill is concerned.
| Capability | Example | What it grants |
|---|---|---|
fs.read | fs.read:/var/data | Read access to that path |
fs.write | fs.write:/var/backups | Write access to that path |
secrets.read | secrets.read:DB_PASSWORD | Read that specific secret |
network.fetch | network.fetch:api.stripe.com | HTTP to that domain only |
process.exec | process.exec:pg_dump | Execute that binary |
Prove the Skill Was Not Touched
Before execution begins, 0trace verifies the Ed25519 signature on the full skill bundle — frontmatter, steps, and metadata. Unverified? Blocked. Tampered? Blocked. This is structural, not configurable.
What Isn't Declared, Doesn't Exist
Every action the skill attempts is intercepted and checked against the declared capability set. The enforcement is synchronous and deterministic — blocked or allowed. There is no third state, no escape hatch, no ambient authority.
fs.read:/etc/passwd Not declared → blocked network.fetch:api.evil.com Not declared → blocked fs.write:/var/backups Declared → allowed A Record No One Can Alter
Every action produces a log entry, SHA-256 hashed with the previous entry. Change any entry and every subsequent hash breaks — independently verifiable without trusting 0trace itself. Exportable to JSON or CSV. When your auditor asks what happened, you have a chain that cannot be disputed.
{ timestamp, skill_id, action_type, resource, outcome, hash: SHA256(prev_hash + entry) } CLI
The full runtime in three commands.
Run a skill
$ zt run backup-database.md
✓ Signature verified (Ed25519)
✓ Capabilities declared: fs.read, fs.write, secrets.read
✗ Blocked: network.fetch (not declared)
✓ Execution complete — 3 actions logged, chain: a3f9b2c1... Start the HTTP server + dashboard
$ zt serve --port 8080
0trace runtime listening on http://0.0.0.0:8080
Dashboard: http://localhost:8080/dashboard Verify and display the audit trail
$ zt audit --skill=backup-database --verify
Chain integrity: ✓ valid (47 entries)
Last entry: 2025-03-31T18:42:11Z
Hash: sha256:a3f9b2c1d4e5f6a7... Dashboard
Every view you need to understand what your agents did.
Built into the binary. No separate service, no cloud dependency, no extra config.
Dashboard
Real-time stats — skills, runs, orgs, success rate. Recent activity feed and execution history.
Skills
Skill file registry with capability badges. See declared capabilities at a glance for every skill.
Runs
Execution history with status, timing, and direct links to the audit trail for each run.
Tasks
Kanban board per org. Three columns: Backlog, In Progress, Done. No external project tool required.
Agents & Teams
Agent registry and team builder. Define agents, group them into teams, track membership.
Traces
Causal chain visualizer showing execution lineage — timing, entity status, hash links.
Org Settings
Org info, member management, API keys, and integrations configuration.