RunLedger
RunLedger stores agent execution as append-only JSONL events linked by SHA-256, then verifies the chain and renders a human-readable run report.

Why this needed to exist.
When an autonomous run fails, normal console logs are often mutable, incomplete or scattered across providers. It can be difficult to establish what the agent actually called, retried, decided and returned.
How I built around it.
- 01Write one structured event per line to a local JSONL ledger.
- 02Link every event to the previous event with SHA-256 so edits, deletion and reordering are detectable.
- 03Keep the core independent of any single model provider or agent framework.
- 04Render the same ledger into a readable HTML report without requiring a hosted observability service.
Capabilities
- Append-only JSONL events
- SHA-256 hash chain
- Tool-call and result events
- Decision and retry events
- Tamper verification
- Human-readable HTML reports
- No database required
- Local-first provenance
Architecture
- Runtime
- TypeScript · Node.js
- Storage
- JSONL
- Integrity
- SHA-256 hash chain
- Verification
- Deterministic chain check
- Output
- JSONL · HTML
- License
- MIT
What the system is meant to preserve.
- Boring formats are durable
- Local evidence before hosted telemetry
- Every event should be independently inspectable
- Integrity checks should not depend on the agent that created the log
Useful answers.
Is RunLedger an observability SaaS?
No. The current core is a local primitive: JSONL, SHA-256 and an HTML renderer. Hosted export can be added later without changing the ledger model.
What does tamper-evident mean here?
Each event hash includes the previous event hash. Editing, removing or reordering a recorded event breaks subsequent verification.
Does RunLedger require a database?
No. The current core stores append-only JSONL locally and can verify and render that ledger without a database or hosted telemetry service.
ActionMesh
Typed TypeScript action contracts for AI tools, MCP-style calls, HTTP and CLI with shared Zod validation, errors and retry semantics.
Keep exploring