Agent context and the ledger

The decision, the context, and a copy in git.

A decision is more useful when you can see what the agent was doing when it made it. And a record is safer when it also lives somewhere that does not need Gavel running.

The forwarder

A small daemon on every machine.

The forwarder runs as a launchd agent and reads the logs that Claude and Codex sessions already write. It ships structured events to Chronicle, with secrets redacted, and tells Gavel which sessions exist so decisions can point at them.

Bounded by design

It reads by offset, never loads a whole file, and never ships a whole transcript. It uses only the standard library and serves a loopback-only status page.

Redacted at the source

Every field passes through the redactor before it leaves the machine.

Linked to the decision

A decision carries its session and time window. Gavel pulls a bounded excerpt from Chronicle on demand and pins one when an ask is filed, decided, or defaulted.

Gavel's Machines page: three StrataForge workstations with heartbeat time, status, hardware fingerprint, and forwarder and operating system versions.Gavel's Machines page: three StrataForge workstations with heartbeat time, status, hardware fingerprint, and forwarder and operating system versions.
Machines: each forwarder's heartbeat and versions.
Gavel's Agent Sessions tab: indexed Claude and Codex sessions with lane, model, machine, and the parent for sub-agent sessions.Gavel's Agent Sessions tab: indexed Claude and Codex sessions with lane, model, machine, and the parent for sub-agent sessions.
Sessions: the agent sessions decisions can link to, sub-agents included.
The nightly ledger

Every record, as a PubMark file, in git.

An exporter writes every decision, ask, directive, waiver, and ADR as a deterministic PubMark file in a private ledger repository, lints each file, and commits the result. The history is readable in any editor, and a restore script can rebuild a database from the ledger alone.

Deterministic

The same records always produce the same bytes, so a nightly diff shows only what changed.

Restorable

A restore from the ledger reproduces the counts, the hashes, and the chain head. A quarterly drill proves it.

For agents

Eighteen MCP tools, and tokens the owner controls.

Agents record decisions, request answers, add evidence, search the log, and manage ADRs through Gavel's MCP tools, relayed by Roost. Each caller says who it is, and Gavel keeps that provenance on the record. The owner issues machine and service tokens with narrow scopes, sees only a prefix afterward, and can revoke any of them.

Gavel's Imports page: three import batches with source units, imported, duplicate, skipped, and failed counts and the reconciliation percentage.Gavel's Imports page: three import batches with source units, imported, duplicate, skipped, and failed counts and the reconciliation percentage.
Imports: older records brought in with every source unit accounted for.
Gavel's Settings page: the list of machine tokens, each with its prefix, scopes, bound machine, and expiry.Gavel's Settings page: the list of machine tokens, each with its prefix, scopes, bound machine, and expiry.
Settings: tokens, scopes, and revocation.