Part of the Brigade fleet from Escoffier Labs

A searchable evidence layer for AI work history.

Your AI work history is scattered across harness logs, notes, exports, and chat archives. MiseLedger imports it all through one adapter contract, stores it in local SQLite, dedupes and indexes it with FTS5, relates it, and emits Brigade-ready evidence bundles. It is the bound ledger, Le Grand Livre, for everything your agents have already done. No network calls.

View on GitHub →

Ingest once. Search, relate, and cite the evidence later.

How it works

Source · adapter records

  • StationTrail exports harness session logs to adapter JSONL
  • SourceHarvest exports notes, files, HTML, JSON, and git history
  • Native adapters convert Codex, OpenClaw, Claude, and Hermes sessions
  • Records arrive from a file, stdin, or a wrapped exporter
  • Every record carries its own source.kind for mixed imports

Archive · the local ledger

  • Normalizes sources, collections, items, actors, and artifacts
  • Deduplicates by stable external IDs and preserves raw refs
  • Indexes evidence with SQLite FTS5 and shallow relations
  • Serves search, show, explain, export, HTTP, and MCP
  • Emits Brigade-ready evidence bundles marked as untrusted context
The evidence pipeline

Three tools, one adapter contract. StationTrail and SourceHarvest export to miseledger.adapter.v1 JSONL. MiseLedger archives, indexes, and serves it.

StationTrail

Exports harness session logs (Codex, Claude Code, OpenClaw, OpenCode, Hermes) to miseledger.adapter.v1 JSONL.

Site → GitHub →

SourceHarvest

Exports outside sources (notes, chat archives, crawler output, issues, git history) to the same adapter format.

Site → GitHub →

MiseLedger

Stores, dedupes, indexes, searches, relates, and emits Brigade-ready evidence bundles. You are here.

GitHub →

What it does

One adapter contract

Everything enters through miseledger.adapter.v1 JSONL. StationTrail, SourceHarvest, native compatibility adapters, and raw exports all speak the same normalized record shape, so the archive does not care where evidence came from.

Deduped and indexed

Records are normalized into sources, collections, items, actors, and artifacts, deduplicated by stable external IDs and raw refs, and indexed with SQLite FTS5. Re-running the same import is idempotent and never inflates item counts.

Search and explain

search queries the FTS5 index across all imported evidence. explain runs the same path and reports the quoted query, filters, result count, and source and item-kind breakdown so you can see why results matched.

Shallow relations

Import resolves relations when the target already exists: Codex tool calls link to results by call_id, Claude tool_result links to tool_use, and OpenClaw events preserve session and run membership. Unresolved targets are kept for later backfill.

Brigade evidence bundles

evidence emits structured bundles with a stable ID, a miseledger://evidence resource URI, provenance, raw refs, source and actor context, snippets, FTS scores, optional related items, and untrusted_context marking. Bundles are cached and re-showable.

Local only, by design

No network calls for init, import, search, evidence, show, export, status, SQL, MCP, HTTP, or doctor. Imported text is stored locally and treated as untrusted evidence, not executable instructions. The HTTP API binds to loopback.

Command reference
CommandWhat it does
miseledger initCreate the local config and SQLite archive under XDG paths with private permissions.
miseledger import adapterIngest miseledger.adapter.v1 JSONL from a file or stdin, deduped and indexed.
miseledger import stationtrailRun StationTrail for a harness and stream its adapter records straight into the archive.
miseledger import sourceharvestRun SourceHarvest for notes, files, HTML, JSON, or git history and import the output.
miseledger searchQuery the FTS5 index across imported evidence and return matching items.
miseledger evidenceEmit a Brigade-ready evidence bundle with provenance, snippets, and untrusted-context marking.
miseledger showPrint a normalized item by ID with its source, actor, raw refs, and artifacts.
miseledger explainRun the same FTS path as search and report the query, filters, and result breakdown.
miseledger relations backfillResolve stored target IDs once a later import adds the related item.
miseledger export markdownWrite normalized items out as Markdown for offline reading or review.
miseledger serveStart the local HTTP API bound to loopback for search, item, and evidence endpoints.
miseledger mcpStart the stdio MCP server exposing search, show, evidence, and source-listing tools.
miseledger statsSummarize the archive by source, item kind, actor type, collection, and recent imports.
miseledger doctorValidate config, archive integrity, FTS coverage, and the MCP surface, counts only.
From install to first bundle

Install the binary, initialize the archive, import a harness session through StationTrail, then search and emit a bundle. Every step is local and idempotent.