Local records of what an AI agent did on your machine.
When an AI agent does work on your computer, seven questions matter. The agent's own claim about itself does not answer them:
| Question | Command |
|---|---|
| What did it do? | agent-ops trace |
| What did it see? | agent-ops context |
| What may it call? | agent-ops mcp |
| What did it say? | agent-ops claims |
| What was proven? | agent-ops evidence |
| How good is the review? | agent-ops bench |
| What is running now? | agent-ops fleet |
Every answer is a local file: an index, a receipt, an audit line, or a digest. A receipt is a record you can open later to see what happened. Nothing sends data off the machine, and nothing asks the model to score itself.
The card is a receipt from testdata/contextpack/chunks.json (57 of 800
tokens used; all three chunks included). Extra shots go in
screenshots/.
| Term | Meaning |
|---|---|
| Local-first | The tool works on your computer. A cloud account is not required. |
| Fail-closed | If a check cannot prove the result is safe, the command stops. Missing evidence is treated as a failure. |
| Receipt | A local file that records what happened so you can check it later. |
go install github.com/nstranquist/agent-ops/cmd/agent-ops@latestRequires Go 1.26+. Pure Go, no cgo: the SQLite FTS5 index is modernc.org/sqlite.
Parses Claude Code and Codex session JSONL, discovers real local session roots, and indexes them into SQLite FTS5 so you can search across every session you have ever run.
agent-ops trace discover --limit 20
agent-ops trace index-discovered
agent-ops trace search "pressure coordinator"Budgeted progressive hydration. Given a chunk set and a token budget, it emits the selection plus a receipt recording what was included, what was omitted, and what was truncated — so a bad answer can be traced to a missing input rather than guessed at.
agent-ops context pack --fixture chunks.json --budget 8000A local policy gate for MCP tool calls. Evaluates allow/deny for
server + tool pairs against a YAML policy and appends a durable JSONL audit
log of every decision.
agent-ops mcp decide --policy policy.yaml --server docs-puller --tool search # allow → exit 0
agent-ops mcp decide --policy policy.yaml --server github --tool create_pr # deny → exit 1A deny exits non-zero, so the gate composes directly into a shell guard without parsing its JSON. The audit line is appended either way.
A fail-closed check for numbers in AI-generated text. If a quantity is not on the allowlist, the check fails. This stops a draft from asserting "3× faster" when nobody measured it.
agent-ops claims check --claims claims.yaml --file draft.mdCapture and verify evidence packs: a manifest of required paths plus SHA-256 digests, so "the evidence exists" is a checkable statement rather than a sentence in a status doc.
agent-ops evidence init --root ./pack --name release-proof
agent-ops evidence capture --root ./pack --path proof.txt
agent-ops evidence verify --root ./pack --manifest manifest.yamlFixture-based code-review evaluation with a deterministic rule reviewer and an F1 leaderboard. Scores a reviewer against gold labels so "the review got better" is measured, not asserted.
agent-ops bench score --gold gold.json --pred pred.jsonA board for multi-agent parallel work. Merges agent slots from a JSON file or a directory of slot files into one view of who is doing what.
agent-ops fleet show --slots slots.jsonThese began as seven separate repositories. Each was a real, working, tested tool — and each was 200–750 lines with a sub-1KB README, which is to say each one read as an abandoned weekend project no matter how well it worked.
The consolidation is not a rewrite. Every tool's logic moved across unchanged;
the merge reshapes argv so each embedded command sees exactly the arguments it
saw as its own binary. What changed is that there is now one story, one install,
one test suite, and one place to look — and six fewer half-finished-looking
repositories.
The case study explains the design decisions, failure modes, verification, and current evidence limits.
MIT.
