neo · local workflow forensics · claude code
dashboard · mcp · evidence from disk
inspect what the UI leaves out

neo

The interesting part is what stayed on disk.

neo reads Claude Code's local artifacts directly: reminder text found on disk, raw transcripts, subagent copies, retained telemetry rows, memory files, and hook-visible lifecycle events. It indexes them into SQLite and exposes them through a dashboard and MCP server running on the same machine.

measured estimated inferred localhost only neo-harnesster
one machine
714

hidden reminder rows found on disk in a single local corpus.

data share
62.5%

of local data volume came from context outside the visible chat transcript in one sample corpus.

multiplier
2.7x

local evidence volume relative to what the UI would suggest from the primary conversation alone.

telemetry
varies

telemetry rows only count what is still retained on disk. Absence does not prove upload or deletion.

export boundary

Claude Code exports cleaner transcripts than the local corpus actually contains. neo exists in the gap between those two file surfaces.

local first

The dashboard binds to localhost, the database lives under ~/.neo/, and the project does not transmit your data anywhere.

same-machine mcp

The environment can be queried from inside itself: `neo-mcp` exposes the local evidence model back into Claude Code without claiming server internals it cannot see.

What It Surfaces
local files · hooks · accounting
capture

Reminder injections and raw transcripts

neo reads `~/.claude/projects/*.jsonl` directly, including system reminders and channel material that the export path strips away.

trace

Subagents, sidechains, and compaction churn

Hook events and local transcript structure make it possible to see when context was copied, compacted, or routed somewhere the main UI does not emphasize.

account

Measured vs estimated vs inferred

neo keeps row counts, cost heuristics, and anomaly interpretation in separate lanes so the strongest claims stay attached to the strongest evidence.

Surfaces
browser · terminal · mcp
dashboard

Browser-first local inspection

Summary cards, reminders with provenance, sessions, agents, correlations, retained telemetry, memory files, and heuristic state-model analysis served from localhost.

mcp

Query from inside Claude Code

`neo-mcp` registers into Claude Code so the local evidence can be queried from inside the same tool it is inspecting.

terminal

Quick accounting without the UI

`neo-tokens` and `neo-states` give you the accounting and state-model views directly when a browser is unnecessary.

What It Captures
raw locations
reads from

Local evidence paths

  • ~/.claude/projects/*.jsonl for full transcripts and reminders
  • ~/.claude/projects/*/subagents/ for spawned files and sidechains
  • ~/.neo/harness_log.jsonl for hook events and compaction traces
  • ~/.claude/telemetry/ for telemetry rows currently retained on disk
  • ~/.claude/projects/*/memory/ for persistent seeded memory
  • ~/.claude/tasks/ for task lifecycle state
cannot capture

Boundaries stay explicit

  • server-side reasoning or model internals that never land on disk
  • the contents of any secondary channel not persisted locally
  • whether absent telemetry rows were uploaded, deleted, or never written locally
  • system prompt assembly inside the compiled binary
  • HTTPS request and response bodies without a proxy
Install
package name changed · command stayed clean
recommended

Install with pipx

The package is neo-harnesster. The command stays neo.

pipx install neo-harnesster
neo
from source

Run directly from the repo

Useful if you want to inspect the implementation or keep the tool next to your own local experiments.

git clone https://github.com/asuramaya/neo.git
cd neo
python3 neo.py