Trace any agentic CLI to a unified local store, queryable from the CLI.
Project description
thirdeye
Trace every agent session on your machine — Claude Code, Cursor, Codex, Gemini, Copilot — into one history you and your agents can manage, search, and evaluate.
Install
brew install duncankmckinnon/tap/thirdeye # macOS / Linux
pipx install thrdi # or: uv tool install thrdi
Enable tracing
thirdeye add --claude # also: --cursor, --codex, --gemini, --copilot
To detach: thirdeye remove --claude.
Read your history
thirdeye list # every session, every platform
thirdeye events <id> # one session, terse
thirdeye tail <id> -n 5 # last few events
thirdeye event <id> <seq> # one event, fully expanded
thirdeye search "migration" # substring across all sessions
thirdeye stats # totals
Tag and filter
thirdeye tag <id> <seq> --add bug,review # tag an event
thirdeye tag <id> --list # list tagged events in a session
thirdeye tag <id> <seq> --remove bug # untag
thirdeye tags # global tag inventory
thirdeye search "migration" --tag review --platform claude --since 2026-05-01
Add --json for parseable JSONL, --tree for human-readable, --platform / --cwd / --tag / --since / --until to filter. Session IDs accept any unique prefix. Run thirdeye --help for the full reference.
Per-turn usage
thirdeye captures model name and token counts per turn into an append-only
sidecar (usage.jsonl) and a global SQLite index (usage.db). Capture starts
automatically on the next agent run after thirdeye add.
thirdeye usage # global rollup, sessions by token spend
thirdeye usage <id> # per-turn detail for one session
thirdeye usage --top 5 --since 2026-05-01
thirdeye usage <id> --json # parseable JSONL rows
thirdeye usage reindex # rebuild SQLite from sidecars
thirdeye usage errors # tail the capture audit log
Filters: --platform / --harness, --model SUBSTR, --since / --until,
--top N, --sort total|input|output|ts.
Evaluations
Grade a recorded session by dispatching one of your installed CLI agents (claude / codex / gemini) as an LLM-as-judge. Eval definitions are named rubrics — directive text shipped with sensible defaults and editable per-user.
thirdeye eval def list # available rubrics
thirdeye eval def show default # see the directive
thirdeye eval def create my-rubric --directive "<text>" # custom rubric
thirdeye eval run <id> --agent claude # foreground
thirdeye eval run <id> --agent gemini --using token-efficiency --background
thirdeye eval show <id> # latest result
thirdeye eval list --since 2026-05-01 --verdict warn # history
thirdeye eval status # background jobs
Per-turn findings are stored with the event seq they anchor to, and
thirdeye events <id> annotates the timeline inline by default (suppress with
--no-findings, filter with --eval NAME). The eval invocation itself is a
thirdeye-traced session, so every grading run has its own audit trail.
Dispatched agents run in read-only mode (Claude --allowedTools allowlist,
Codex --sandbox read-only, Gemini --approval-mode plan). No new Python
deps — thirdeye shells out to the agent binaries you already have installed.
Agent skills
Two bundled Claude-Code-format skills:
use-thirdeye— basic CLI fluency: enable tracing, search sessions, debug tool calls, analyze token usage.use-thirdeye-evals— eval workflow: create rubrics, dispatch evaluators, view per-turn findings.
thirdeye skill list # show bundled skill names
thirdeye skill install # all skills → .agents/skills/
thirdeye skill install .claude/skills # custom parent dir
thirdeye skill install --only use-thirdeye-evals # just one
thirdeye skill install --force # replace existing entries
Skills install as symlinks, so upgrading thirdeye (brew upgrade thirdeye or
pipx upgrade thrdi) automatically refreshes the skill content in every repo
where they're installed.
License
MIT.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file thrdi-0.0.5.tar.gz.
File metadata
- Download URL: thrdi-0.0.5.tar.gz
- Upload date:
- Size: 2.3 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9e53e29835075f9b2ea2c3e3c7095fe13928f611d5b8efba64d3e57ebc1f97f6
|
|
| MD5 |
a609bb81805f6467153b6c7c185d696c
|
|
| BLAKE2b-256 |
48d0c8137f8e2641a7011cadf6fca91d928490839289bef0c69c3d9d41e5d30f
|
Provenance
The following attestation bundles were made for thrdi-0.0.5.tar.gz:
Publisher:
release.yml on duncankmckinnon/thirdeye
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
thrdi-0.0.5.tar.gz -
Subject digest:
9e53e29835075f9b2ea2c3e3c7095fe13928f611d5b8efba64d3e57ebc1f97f6 - Sigstore transparency entry: 1615475348
- Sigstore integration time:
-
Permalink:
duncankmckinnon/thirdeye@b0ce064265e8f53a5833555467f6e5d418d6663c -
Branch / Tag:
refs/tags/v0.0.5 - Owner: https://github.com/duncankmckinnon
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@b0ce064265e8f53a5833555467f6e5d418d6663c -
Trigger Event:
push
-
Statement type:
File details
Details for the file thrdi-0.0.5-py3-none-any.whl.
File metadata
- Download URL: thrdi-0.0.5-py3-none-any.whl
- Upload date:
- Size: 89.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fcf081efd904c2afa29d471c9fd54d623b0997b30e9d4e80939a189fd2d349dc
|
|
| MD5 |
eb0816365f327a87286908c2141990a4
|
|
| BLAKE2b-256 |
d322a855b475e4e6e4267b6dbce2554e08c6194098938f4494a88968c5b2cdf6
|
Provenance
The following attestation bundles were made for thrdi-0.0.5-py3-none-any.whl:
Publisher:
release.yml on duncankmckinnon/thirdeye
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
thrdi-0.0.5-py3-none-any.whl -
Subject digest:
fcf081efd904c2afa29d471c9fd54d623b0997b30e9d4e80939a189fd2d349dc - Sigstore transparency entry: 1615475356
- Sigstore integration time:
-
Permalink:
duncankmckinnon/thirdeye@b0ce064265e8f53a5833555467f6e5d418d6663c -
Branch / Tag:
refs/tags/v0.0.5 - Owner: https://github.com/duncankmckinnon
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@b0ce064265e8f53a5833555467f6e5d418d6663c -
Trigger Event:
push
-
Statement type: