
TokenTrace
io.github.abhiyoheswaran1由 GitHub 帳號 abhiyoheswaran1 發布v0.21.2更新於 Oct 24, 2026
Local-first AI CLI usage analytics for agents.
概覽
本地優先的 AI CLI 用量分析工具:掃描 Claude Code、Codex 等日誌,向助理提供 token 數、成本、信心度與修復建議。
- 可以做什麼
- 在再次執行編碼代理前以預檢給出繼續、謹慎或阻擋的判斷
- 檢視本機用量狀態、能力清單與掃描健康狀況
- 透過證據鏈把指標追溯回來源檔案、解析器狀態與模型價格
- 列出未知成本的修復分組,並產生報告或摘要
- 執行明確的本機掃描,需傳入 confirmLocalScan=true 才會讀取用量檔案並寫入本機資料庫
- 適用情境
- 適合在本機使用 Claude Code、Codex 等 AI 命令列工具,並希望助理在開始下一次高成本執行前核查 token 與成本證據、找出異常或未知成本缺口、判斷本機用量資料是否可信的情境。
- 執行需求
- 透過 npx 以本機 stdio 程序執行 npm 套件 tokentrace(指令 tokentrace mcp)。需要 Node.js 20 或更新版本;better-sqlite3 可能需要建置工具或連網下載預編譯二進位檔。未宣告雲端帳號、API 金鑰或環境變數。預設以 macOS 為主,僅限桌面端。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 TokenTrace,將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
README
TokenTrace CLI
Local-first AI CLI usage analytics for developers and coding agents.
TokenTrace answers one practical question before the next expensive AI CLI run: is your local usage evidence ready to trust? It scans local Claude Code, Codex, structured usage logs, and usage-shaped local databases, then labels token and cost data as exact, estimated, unknown, cached, or non-cache. The dashboard opens on Today, with direct paths into Sessions, Evidence, and Fix Data.
TokenTrace is designed for local development machines first, with macOS-oriented defaults. It does not require a cloud account and does not send telemetry or logs anywhere.
What TokenTrace Helps You Do
- Check readiness before another coding-agent run with
tokentrace preflight --jsonor MCPget_preflight. - See today’s local cost, tokens, sessions, confidence, anomalies, and repair signals in one first screen.
- Trace every important number back to local files, parser state, sessions, model rates, and confidence labels.
- Fix missing cost data through a guided repair queue without uploading prompts or message bodies.
Start In Seconds
Run without installing:
Or install globally:
The command starts the local dashboard, chooses an available localhost port starting at 3030, opens your default browser, and keeps the server running until you press Ctrl+C.
CLI commands:
For Coding Agents
Agents should start with the read-only discovery manifest:
The alias below returns the same manifest:
The manifest describes TokenTrace's local-first privacy model, safe JSON commands,
common workflows, Claude Code status-line setup, Codex sidecar fallback, and
guardrails such as never running tokentrace reset without explicit human
approval. The discovery command does not scan files, initialize the database, or
start the dashboard.
Package-level agent references are included for agents that inspect repository or npm package contents before invoking commands:
MCP-capable clients can start the local stdio server after installing or using the npm package:
Registry name: io.github.abhiyoheswaran1/tokentrace.
First MCP call for agents: get_agent_guide.
Self-test the local MCP entrypoint without scanning files:
The MCP server exposes the same local-first surfaces as tools: capabilities,
preflight, status, Scan Health, evidence, repair queue, reports, and an
explicit scan tool. It does not scan files on startup, and its scan tool requires
confirmLocalScan=true before reading local usage files or writing the local
database.
Before starting another long coding-agent run, use preflight:
In MCP clients, call get_preflight for the same proceed, caution, or blocked
decision with local scan freshness, confidence, guardrail, anomaly, and repair
findings. Preflight does not scan files or inspect raw prompts.
When the local dashboard is already running, agents can fetch the same manifest over localhost:
The Local Sources & Trust release handoff is also machine-readable:
Run From Source
Open http://localhost:3000.
Useful source commands:
Daily Loop And Trust
TokenTrace now organizes the product around the daily loop:
- Preflight: decide whether local evidence is ready before another agent run.
- Today: review cost, token, session, confidence, anomaly, and repair signals.
- Evidence: trace numbers back to source files, parser confidence, sessions, and model-rate state.
- Fix Data: resolve unknown cost, parser review, and model-rate gaps.
- Advanced: inspect Scan Health, Discovery, Parsers, Raw Data, Query, and Model Rates when you need the full diagnostic surface.
Trust surfaces include:
- native structured usage log and Cursor-style chat export ingestion
- Source Coverage in Scan Health for native, profile-assisted, fallback, and unsupported files
- privacy-safe Evidence Packs as JSON or Markdown
- local scan scheduling: manual, on-open, hourly, or daily
- project/model/tool scoped guardrails with warning thresholds
- Import Profile preview before saving matchers
- saved report exports for weekly usage, source coverage, guardrails, unknown cost, high-cost sessions, and confidence trends
- operating metadata export without raw usage records
Accuracy And Evidence
TokenTrace labels the trust level behind imported numbers:
- exact provider token counts
- tokenizer estimates for recognized OpenAI/Codex and Claude-family model names
- simple estimates when only text-like content is available
- source-provided costs from local SQLite histories
- unknown cost repair groups when model, token, or rate evidence is missing
The dashboard surfaces a Data Confidence score on Today, Projects, Sessions, and Session Timeline pages. Scan Health also includes a supply-chain IOC check so package trust is visible in the product, not only in release scripts.
Public releases require maintainer approval. See docs/RELEASE_CHECKLIST.md before bumping versions, tagging, creating GitHub releases, or publishing npm.
In local development, the SQLite database defaults to .tokentrace/tokentrace.db. Override it with:
Data Location
When installed from npm, TokenTrace stores runtime data outside the package folder:
- macOS:
~/Library/Application Support/TokenTrace/ - Linux:
~/.local/share/tokentrace/ - Windows:
%APPDATA%/TokenTrace/
The CLI sets TOKENTRACE_DB and DATABASE_URL automatically. You can override the base directory with:
Where TokenTrace Looks
Default discovery checks these locations when present:
~/.claude/~/.config/claude/~/.codex/~/.config/codex/~/.openai/- Project-level hidden folders such as
.claude,.codex,.openai, and.aiin the directory wheretokentracewas invoked - TokenTrace wrapper logs in the local app-data directory
- Any custom folders configured in Settings
Use Settings to add custom folders, toggle raw message storage, and trigger scans. Use Scan Health, Discovery, Parsers, and Raw Data to inspect discovered files, parser decisions, warnings, failures, extracted metadata, and confidence levels.
Settings also supports optional local monthly usage guardrails. Set a cost limit, token limit, or both, and Today will show month-to-date progress from imported local CLI usage.
Sessions includes built-in and local saved views for recurring review paths: unknown cost, high-cost sessions, Claude/Codex this month, estimated tokens, guardrail review, and parser review. Open a session's Timeline link to see ordered interactions, model changes, token spikes, cache activity, tool calls, parser confidence, and unknown-cost events. Raw prompts and message bodies stay hidden by default.
Ingestion Architecture
TokenTrace's primary ingestion architecture is direct local filesystem ingestion:
- Discover local AI CLI artifacts.
- Parse supported formats through adapters.
- Normalize sessions, interactions, token usage, models, projects, and tool calls.
- Store normalized records locally in SQLite.
- Visualize analytics in the local dashboard.
TokenTrace does not use MITM proxies, packet sniffing, browser extensions, traffic interception, or cloud telemetry.
Each adapter detects compatibility, parses partial metadata where possible, and fails safely when a file format is unsupported. Imported interactions carry token confidence metadata:
exacthigh-confidence estimatelow-confidence estimateunknown
Exact and estimated token values are never mixed silently.
Optional Wrapper Mode
Filesystem ingestion is the primary product path. Wrapper mode is secondary and optional:
Wrapper mode launches the subprocess, measures duration, counts stdout/stderr bytes, detects structured JSON output when available, and writes a local JSONL diagnostic log under the app-data directory. It does not intercept network traffic.
Claude Code Status Line
Claude Code can run a local status-line command at the bottom of its terminal UI. TokenTrace supports that path directly:
Add the printed statusLine block to ~/.claude/settings.json. It points Claude Code at:
Claude Code sends session JSON to the command on stdin. TokenTrace reads the transcript path, model, context usage, and session cost, then prints one compact local line:
Do not set the Claude Code statusLine.command to plain tokentrace. Plain tokentrace starts the dashboard, while tokentrace statusline claude prints exactly one status-line response.
[TokenTrace Claude Code status line]
You can also inspect the same local status outside Claude Code:
Daily reporting commands stay deterministic and local:
Codex CLI status-line integration is intentionally deferred until its status-line and hook contracts are stable enough to support without fragile terminal output parsing. Use tokentrace watch --session --compact in a terminal split or tmux pane as the current fallback. See docs/CODEX_INTEGRATION_SPIKE.md for the current decision.
Screenshots
Dashboard views:
[TokenTrace unknown cost evidence trail]
[TokenTrace Scan Health parser review]
CLI startup and help:
Local scan output:
Optional wrapper diagnostics:
Privacy Model
- All processing runs locally on your machine.
- No external telemetry is included. Next.js telemetry is disabled by the CLI.
- No cloud account is required.
- Raw full prompts and responses are not stored by default.
- TokenTrace stores short text previews for debugging and analytics context.
- TokenTrace may download a public model-pricing manifest so cost estimates stay useful. It does not send usage logs, prompts, file paths, or analytics data with that request. Set
TOKENTRACE_DISABLE_PRICE_REFRESH=1to use only bundled prices. - Turn on Store raw message content in Settings only if you want full local message text preserved in SQLite.
Stop the server with Ctrl+C in the terminal where tokentrace is running.
Package Trust
- The TokenTrace npm package has no
preinstall,install, orpostinstallscripts. - The published package ships readable application source and the compiled CLI runtime, not generated
.next/serverroute bundles. tokentrace serveprepares the local dashboard build in the user's TokenTrace app-data directory the first time it is needed.npm run package:inspectfails if generated Next.js build output appears in the published tarball.npm run security:iocscans lockfiles, workflows, and local Claude/VS Code hook files for high-signal supply-chain compromise indicators.- Public npm publishing is configured through GitHub Actions Trusted Publishing and provenance from version tags.
- Socket GitHub checks and ProjScan are used as release guardrails, alongside
npm audit --audit-level=moderate. npm run release:checkfails when a gate command exits non-zero. The import graph is expected to remain free of circular dependencies;tests/import-boundaries.test.tsprotects shared type/helper modules from importing higher-level orchestration barrels.- Release notes are published directly in GitHub Releases from the relevant changelog section, not as a link-only summary.
See SECURITY.md for the full security and privacy model.
Model Rates
Model prices change. TokenTrace ships with bundled public list prices and can refresh them from a public TokenTrace model-rate manifest. Manual edits made in Model Rates are preserved by future refreshes.
The bundled catalog includes common OpenAI, Anthropic, Google Gemini, xAI, DeepSeek, Mistral, and Cohere models, checked on May 8, 2026.
Seed sources:
- OpenAI API pricing and OpenAI model docs
- Anthropic Claude pricing
- Gemini Developer API pricing
- xAI models and pricing
- DeepSeek models and pricing
- Mistral model docs
- Cohere pricing
Review and update rates in Model Rates before treating cost estimates as financial truth, especially if you use batch processing, priority/flex modes, data residency, long-context surcharges, subscriptions, or provider-specific discounts.
Refresh from the dashboard or from the CLI:
Cost is calculated per interaction:
Cache read and cache write prices fall back to input price when a model has no separate cache rate. Anthropic seed rows use the 5-minute prompt cache write price by default. Rows are marked exact, estimated, or unknown depending on token availability and pricing configuration.
Supported Inputs
Adapters live under src/ingestion/adapters/:
claude-code.tscodex-cli.tsstructured-usage-log.tscursor-chat.tssqlite-history.tsgeneric-jsonl.tsgeneric-json.tsgeneric-log.ts
Formats for Claude Code and Codex CLI can vary across versions, so these adapters are defensive and best-effort. Unknown files fail safely and show warnings in the Raw Data page.
Support Matrix
TokenTrace keeps a visible support contract so daily scans are easier to trust:
Extending Parsers
Example generic JSONL fixtures are in fixtures/generic-jsonl/.
The ingestion system is intentionally pluggable:
- Add an adapter implementing
IngestionAdapter. - Register it in
src/ingestion/adapters/index.ts. - Add parser tests under
tests/.
Contributing
Contributions are welcome. See CONTRIBUTING.md for local setup, parser guidelines, pricing update notes, and the release policy.
Troubleshooting
prebuild-install deprecation warning during install
This is a transitive dependency of better-sqlite3 (the native SQLite driver TokenTrace uses to store local data). The warning is harmless — the install completes normally and TokenTrace runs as expected. It will go away once better-sqlite3 upstream migrates to a different prebuilt binary loader; there is nothing to fix on the TokenTrace side.
Native build errors on better-sqlite3
If the prebuilt binary cannot be downloaded (offline machine, restrictive proxy, unsupported Node ABI), better-sqlite3 will try to compile from source and may fail. Workarounds:
- Ensure Node.js is a supported LTS (TokenTrace requires
>= 20.0.0; Node 20 or 22 LTS is recommended). - Install build tools: Xcode Command Line Tools on macOS,
build-essentialandpython3on Linux, or the "Desktop development with C++" workload on Windows. - Retry the install with network access to
github.comso the prebuilt binary can be fetched.
EBADENGINE warnings
These appear when your local Node version is older than the engines field of a transitive dependency. They are warnings, not errors. Upgrading to the latest Node LTS resolves them.
Known Limitations
- Claude Code and Codex CLI log formats are inferred defensively and may need refinement with real sample logs.
- Tokenizer-backed estimates are available for recognized OpenAI/Codex and Claude-family model names. Unrecognized text-only records still fall back to a conservative simple estimate.
- SQLite-history ingestion expects usage-shaped local tables and skips arbitrary databases that do not expose session, model, token, or cost-like fields.
- Seed prices are editable and should be verified manually for your account, region, and provider plan.
License
Open source by Abhi Yoheswaran. Released under the MIT License. See LICENSE.
Next Improvements
- Expand first-class native adapters for more local AI tools and editor histories.
- Add provider-specific tokenizer refinements where public tokenizer behavior is stable enough to label clearly.
- Make Import Profile preview more interactive for teams with custom wrapper logs.
- Stream scan progress into the UI for very large local folders.
來源:README.md,提交 39622df
工具
0版本歷史
1- v0.21.2最新Sep 16, 2026
評分
已滿足適用檢查項的 50%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通25 分
請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。
- 已宣告認證方式10 分
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分