All your agents.Every trace, every eval.On your machine.

thirdeye logo

Local-first observability for Claude Code and Codex, with optional live export to Pydantic Logfire.

$brew install duncankmckinnon/tap/thirdeye
terminal
$ thirdeye list --since 2026-05-01
PlatformStartedEventsTagsSession ID
claude2026-05-22 14:0847review,bugsess_3f9e2a
codex2026-05-22 09:3123-sess_b8c402
claude2026-05-21 18:5591refactorsess_71d9aa
codex2026-05-20 11:1412-sess_4e0f6b
claude2026-05-19 22:0256migrationsess_a2c1d3
$ thirdeye search "migration" --tag review --platform claude
2 result(s):
sess_3f9e2a · 2026-05-22 · "fix migration drift in user table" → seq 12, 31
sess_a2c1d3 · 2026-05-19 · "plan migration rollout for staging" → seq 4
━━━ Summary ━━━
5 sessions across 2 platforms · 229 events captured

How it works

Install

One command, including the browser UI and Logfire support. No background daemon.

$ brew install duncankmckinnon/tap/thirdeye

Wire it up

Attach to Claude Code or Codex. Tracing starts on the next session — no code changes.

$ thirdeye add --claude # or: --codex

Read your history

List, tail, search, tag, and evaluate every session that ever ran on this machine.

$ thirdeye list && thirdeye search "auth refactor" --tag review

From session to insight in two commands

Search and inspect
$ thirdeye search "OAuth bug" --tag review
3 result(s) — claude (2), codex (1)
$ thirdeye events sess_3f9e2a
[seq 12] tool_use Edit auth/oauth.py
[seq 13] tool_result ok
[seq 14] message user "still failing on refresh"
[seq 31] tool_use Bash pytest tests/test_oauth.py
Evaluate a session
$ thirdeye eval run sess_3f9e2a \
--agent claude --using token-efficiency
→ dispatching claude in read-only mode...
✓ completed in 41s
VERDICT: warn
findings:
seq 12 redundant Edit before reading file
seq 31 test rerun could have been targeted

Everything you need to see what your agents did

Claude + Codex capture

Two coding-agent harnesses, one unified local history and trace model.

Local-first storage

Everything stays in ~/.thirdeye/. No account or remote service required.

Pydantic Logfire export

Optionally mirror completed turns as nested OpenTelemetry traces without adding hook latency.

Per-turn token usage

JSONL sidecars + a SQLite index. Roll up by model, time, or platform.

Tag & search

Annotate any event with tags. Search substring or filter by platform, tag, or date.

Evals as rubrics

Named directive rubrics graded by an installed CLI agent as LLM-as-judge.

Try thirdeye

Install in 60 seconds. Start tracing your next session.

$brew install duncankmckinnon/tap/thirdeye
Get Started

Pair with workbench

Dispatch parallel agents and watch the trail unfold.

Set up the integration