Telemetry for AI‑assisted development.
PromptConduit is an open-source CLI that records how you actually use Claude Code, Cursor, and Gemini CLI — every prompt, tool call, token, and dollar. Events land in a local JSONL file first. You can read every byte before anything leaves your machine.
brew install promptconduit/tap/promptconduit {
"schema": 2, ①
"tool": "claude-code",
"hook_event": "Stop",
"captured_at": "2026-07-03T21:16:54Z",
"enrichments": {
"vcs": { "repo": "acme/platform", "branch": "feat/billing",
"dirty": true }, ②
"turn": { "duration_ms": 187954 },
"diff": { "files_changed": 3, "insertions": 148,
"deletions": 27 }, ③
"cost": { "totals": { "usd": 1.0716,
"tokens": { "output": 11628,
"cache_read": 777374 } },
"signals": { "cache_hit_rate": 0.91 } } ④
}
}- ① One JSON line per hook event, written to disk before any network call. No account required for any of it.
- ② Branch and repo names — never your diff contents.
- ③ What the turn changed, as counts.
- ④ What the turn cost, priced locally from your own transcript.
What one captured event looks like
how_it_works
Three commands, then forget it's there.
1. Install hooks
promptconduit install claude-code wires the CLI into
your assistant's hook system. Cursor and Gemini CLI work the same
way. Nothing about how the tool behaves changes.
2. Work as usual
Every session appends structured events to
~/.promptconduit/events.jsonl — enriched with git
context, timing, tool outcomes, and exact cost. Secrets are
scrubbed on the way in.
3. Ask it questions
promptconduit cost for spend by session and model.
The editor extension shows live cost and
coaching insights, fully offline.
enrichments
Names and numbers, on the record.
Each event carries enrichment slugs computed locally at capture time. They record that things happened and what they cost — not what you or the model said.
env- host, OS, architecture, working directory
trace- W3C trace and span IDs linking every event in a session
vcs- repo, branch, commit, dirty counts, linked pull request
prompt- length, word count, interrupt detection — counts, not contents
cost- per-request tokens and USD, cache-hit rate, model tier
tools- tool call names, durations, failures, MCP server, skill
diff- files changed, insertions, deletions per turn
subagent- agent type, parallelism, duration, spend
turn- wall clock from prompt submit to Stop
permission- what was requested, what was denied
local_only
Local first is not a mode. It's the default.
The CLI works with no account and no API key — that's the whole free
tier, forever, MIT licensed. Sending anything anywhere requires you to
opt in, and local_only: true makes opting in impossible.
When you do connect a team, you can diff exactly what leaves the
machine, because it's the same file you've been reading all along.
teams
Your team already solved most of its problems. Once. Somewhere.
Connect a team account and everyone's telemetry rolls up: which workflows keep winning, what the tokens actually buy, where sessions go sideways. The best patterns come back out as artifacts your tools use directly.
--- name: deploy-preview description: Build, deploy to preview, and smoke-test a PR branch before review --- Deploy the current branch to a preview environment and verify it: 1. Run the build and fail fast on errors 2. Deploy with `wrangler pages deploy` ...
- Shared skills & patterns. Generated from real sessions, deduplicated across the team, installable by every member.
- Cost by member, model, and repo. The dashboard the person paying for tokens keeps asking for.
- Coaching trends. Interrupt rates, cache hits, plan-mode adoption — across the team, not just yourself.
- A weekly digest that answers "was this worth it" without a meeting.
$ brew install promptconduit/tap/promptconduit $ promptconduit install claude-code ✓ hooks installed — capturing to ~/.promptconduit/events.jsonl