Commit the previously-untracked standard directories and catalog them in the
root README alongside proof:
- aac/ — communication cargo class: portable boards + a ten-level
offline-first cascade (Apache-2.0 code / CC-BY-4.0 spec).
- map/ — geospatial cargo class: range-requestable signed tilesets +
an F0–F4 fidelity cascade (Apache-2.0 code / CC-BY-4.0 spec).
- sandbox/— isolated, metered, attested execution across the heterogeneous
compute fabric (Apache-2.0 code / CC-BY-4.0 spec).
- jouleclaw-otel-authz, jouleclaw-trust — new jouleclaw reference crates.
Root README now lists aac, map, sandbox, and proof in the catalog, the tree,
and the contribution guide.
Co-Authored-By: Claude Opus 4.8 <[email protected]>
2.1 KiB
MCP server (agent integration)
A Sandbox host MAY expose itself as a Model Context Protocol server so that agents (Claude Code, Cursor, Codex, and any MCP client) can run untrusted code in the sandbox as a tool call. An MCP server is table stakes for an agent sandbox; the distinguishing feature here is the tool result.
The differentiator: an attested result
Every other agent sandbox returns the program's output. A Sandbox MCP server
returns the output and a signed, energy-metered receipt of the run: the
per-device joule receipt (JCR-1), the Ed25519 attestation, and a RATS EAT
(spec/eat.md). The agent — or whoever audits it later — gets a verifiable
record of what ran, at what isolation tier, and what it cost in joules, signed
by the host. That binding (attested joules per run, delivered through the agent
tool surface) is what no other sandbox tool emits.
Tools (reference)
sandbox-mcp (newline-delimited JSON-RPC 2.0 over stdio) exposes:
run_wasm— run a WebAssembly unit (run: () -> i32) at tier S2 under explicit capability grants (cpu_time_ms,memory_bytes,energy_budget_uj,kv,clock,storage_read/storage_writeglobs,max_iops). Agent-supplied code is untrusted, so it minimizes to S2. The result is the attested receipt: tier, outcome, per-device energy with provenance,receipt_id,attestation_id, the EAT (hex + profile + tier), the metered storage line, and the host's verifying keys. The server verifies the receipt, attestation, and EAT before returning — it hands back nothing it has not checked.verify_eat— verify a Sandbox EAT against a public key and return the recovered claims.
The result carries both a human-readable text block and MCP
structuredContent, so a client can render the receipt or consume it
programmatically.
Capability mapping
The MCP tool input is the capability grant: a field that is not set is not granted (deny-by-default, SPEC §5). There is no ambient authority — an agent cannot reach the network, the filesystem, or a subprocess unless the tool call named it, and whatever it does name is metered and attested.