TOOL-002 Case file v0.2.0-alpha

Agent Noir — A private eye for your coding agents

A private eye for your coding agents.

Agent Noir is a local-first investigation tool for Claude Code and Codex sessions. It turns coding-agent histories into searchable cases with prompts, files, commands, errors, project paths, and handoff exports.

No cloud. No account. No alibi.

Try with bunx View source Read limitations
Catalog entry
ID
TOOL-002
Status
v0.2.0-alpha
Type
Local-first devtool
Inputs
Claude Code / Codex histories
Index
Local SQLite
Runtime
Bun ≥ 1.3
UI
Experimental local case desk
Distribution
bunx / npm alpha
Source
github.com/jeanlucaslima/noir
Case desk

Sessions become cases.

Session
Case
Timeline
Trail
Files / commands / errors
Evidence
Export
Case file
Continuation context
Handoff
Local-first

Reads local. Writes local. Goes nowhere.

Source logs are read from your machine. The SQLite index is stored locally under ~/.agent-noir/noir.sqlite unless overridden with AGENT_NOIR_DB_PATH. No data is uploaded. No account is required. The local UI binds to 127.0.0.1 and makes no external network calls.

The redactor is best-effort. Review exports before sharing.

Alpha

Packaged for private alpha.

Distributed via bunx and an npm alpha tag. Real Claude and Codex logs already produce useful evidence: file activity, shell commands, errors, and project paths.

Try Agent Noir

Agent Noir runs with Bun. Try the alpha package:

bunx @jean/noir@alpha

The first run scans your local Claude Code and Codex histories, builds a local SQLite index, and prints next commands.

Requirements

  • Bun ≥ 1.3
  • macOS or Linux (tested first)
  • Claude Code and/or Codex CLI histories on the machine, for real data

What it investigates

Agent Noir extracts a trail of evidence from Claude Code and Codex histories: prompts, assistant messages, file reads, file edits, shell commands, errors, project paths, and handoff-ready exports.

The vocabulary is deliberate. A session is a case. Its timeline is a trail. Files, commands, and errors are evidence. An export is a case file. Continuation context is a handoff.

Local log UI

Agent Noir ships an experimental local log inspector: a three-column case desk for browsing the same SQLite index the CLI uses — sessions, trace, and actions.

noir serve
noir serve --port 6647
noir serve --open
noir serve --scan

The server binds to 127.0.0.1 by default and is not exposed to the network. It reads from the local SQLite index, does not upload data, and makes no external network calls. If no index exists yet, the UI shows an empty state pointing to noir scan.

The UI is experimental. Feedback is wanted.

Common commands

Try

bunx @jean/noir@alpha

Inspect

bunx @jean/noir@alpha list
bunx @jean/noir@alpha show <case-id>

Search

bunx @jean/noir@alpha search "auth"

Export

bunx @jean/noir@alpha export <case-id> --format handoff

Diagnose

bunx @jean/noir@alpha doctor --json --redact

Local UI

bunx @jean/noir@alpha serve
bunx @jean/noir@alpha serve --scan --open

Alpha limitations

  • Parser coverage is best-effort across Claude Code and Codex log shapes.
  • Redaction is best-effort. Review exports before sharing.
  • Bun is required for now — npx is not supported in this slice.
  • The local log UI is experimental. Feedback is wanted.
  • No MCP server yet. No AI summaries yet. No project-metadata extraction yet.
  • Cursor, Aider, and Goose are not supported yet.

Bug reports

For bug reports, run doctor with JSON and redaction enabled. Redaction masks secrets and home directory paths.

bunx @jean/noir@alpha doctor --json --redact

Share redacted doctor output first. Do not paste raw Claude or Codex logs, private JSONL histories, local SQLite databases, or unreviewed exports into public issues.

Source & development

git clone https://github.com/jeanlucaslima/noir
cd noir
bun install
bun run dev --help

Source: github.com/jeanlucaslima/noir.