agenttelemetry-app 2.1.0__tar.gz → 2.3.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {agenttelemetry_app-2.1.0 → agenttelemetry_app-2.3.0}/MANIFEST.in +5 -10
- {agenttelemetry_app-2.1.0/agenttelemetry_app.egg-info → agenttelemetry_app-2.3.0}/PKG-INFO +91 -68
- {agenttelemetry_app-2.1.0 → agenttelemetry_app-2.3.0}/README.md +90 -67
- {agenttelemetry_app-2.1.0 → agenttelemetry_app-2.3.0}/__init__.py +1 -1
- {agenttelemetry_app-2.1.0 → agenttelemetry_app-2.3.0}/accounts.py +3 -3
- {agenttelemetry_app-2.1.0 → agenttelemetry_app-2.3.0/agenttelemetry_app.egg-info}/PKG-INFO +91 -68
- {agenttelemetry_app-2.1.0 → agenttelemetry_app-2.3.0}/agenttelemetry_app.egg-info/SOURCES.txt +9 -19
- agenttelemetry_app-2.3.0/antigravity.py +1291 -0
- agenttelemetry_app-2.3.0/cursor_data.py +966 -0
- {agenttelemetry_app-2.1.0 → agenttelemetry_app-2.3.0}/dashboard.py +823 -153
- agenttelemetry_app-2.3.0/docs/antigravity.md +79 -0
- {agenttelemetry_app-2.1.0 → agenttelemetry_app-2.3.0}/docs/python-package.md +2 -4
- {agenttelemetry_app-2.1.0 → agenttelemetry_app-2.3.0}/editor_snapshot.py +135 -5
- {agenttelemetry_app-2.1.0 → agenttelemetry_app-2.3.0}/index.html +4 -16
- {agenttelemetry_app-2.1.0 → agenttelemetry_app-2.3.0}/native.py +99 -0
- {agenttelemetry_app-2.1.0 → agenttelemetry_app-2.3.0}/native_activity.py +63 -4
- {agenttelemetry_app-2.1.0 → agenttelemetry_app-2.3.0}/parser.py +1507 -253
- {agenttelemetry_app-2.1.0 → agenttelemetry_app-2.3.0}/pyproject.toml +3 -3
- {agenttelemetry_app-2.1.0 → agenttelemetry_app-2.3.0}/release_notes.py +3 -1
- {agenttelemetry_app-2.1.0 → agenttelemetry_app-2.3.0}/session_names.py +46 -13
- {agenttelemetry_app-2.1.0 → agenttelemetry_app-2.3.0}/session_timeline.py +358 -3
- {agenttelemetry_app-2.1.0 → agenttelemetry_app-2.3.0}/setup.py +2 -7
- {agenttelemetry_app-2.1.0 → agenttelemetry_app-2.3.0}/static/app.css +5 -43
- {agenttelemetry_app-2.1.0 → agenttelemetry_app-2.3.0}/static/core.js +93 -7
- {agenttelemetry_app-2.1.0 → agenttelemetry_app-2.3.0}/static/maintenance.js +8 -1
- {agenttelemetry_app-2.1.0 → agenttelemetry_app-2.3.0}/static/timeline.js +52 -9
- agenttelemetry_app-2.3.0/static/tool-icons/LICENSE.antigravity.txt +17 -0
- {agenttelemetry_app-2.1.0 → agenttelemetry_app-2.3.0}/static/tool-icons/README.md +3 -1
- agenttelemetry_app-2.3.0/static/tool-icons/antigravity.svg +3 -0
- {agenttelemetry_app-2.1.0 → agenttelemetry_app-2.3.0}/static/views.js +310 -718
- agenttelemetry_app-2.1.0/docs/mcp.md +0 -83
- agenttelemetry_app-2.1.0/mcp_access.py +0 -338
- agenttelemetry_app-2.1.0/mcp_backend.py +0 -549
- agenttelemetry_app-2.1.0/mcp_protocol.py +0 -97
- agenttelemetry_app-2.1.0/mcp_server.py +0 -678
- agenttelemetry_app-2.1.0/mcp_tools.py +0 -234
- agenttelemetry_app-2.1.0/static/insights.js +0 -115
- agenttelemetry_app-2.1.0/static/mcp.js +0 -281
- agenttelemetry_app-2.1.0/telemetry_insights.py +0 -1754
- agenttelemetry_app-2.1.0/telemetry_query.py +0 -1359
- {agenttelemetry_app-2.1.0 → agenttelemetry_app-2.3.0}/LICENSE +0 -0
- {agenttelemetry_app-2.1.0 → agenttelemetry_app-2.3.0}/__main__.py +0 -0
- {agenttelemetry_app-2.1.0 → agenttelemetry_app-2.3.0}/agenttelemetry_app.egg-info/dependency_links.txt +0 -0
- {agenttelemetry_app-2.1.0 → agenttelemetry_app-2.3.0}/agenttelemetry_app.egg-info/entry_points.txt +0 -0
- {agenttelemetry_app-2.1.0 → agenttelemetry_app-2.3.0}/agenttelemetry_app.egg-info/top_level.txt +0 -0
- {agenttelemetry_app-2.1.0 → agenttelemetry_app-2.3.0}/chart.umd.min.js +0 -0
- {agenttelemetry_app-2.1.0 → agenttelemetry_app-2.3.0}/cli.py +0 -0
- {agenttelemetry_app-2.1.0 → agenttelemetry_app-2.3.0}/diagnostics.py +0 -0
- {agenttelemetry_app-2.1.0 → agenttelemetry_app-2.3.0}/docs/native-activity.md +0 -0
- {agenttelemetry_app-2.1.0 → agenttelemetry_app-2.3.0}/docs/release-notes.md +0 -0
- {agenttelemetry_app-2.1.0 → agenttelemetry_app-2.3.0}/ledger_backups.py +0 -0
- {agenttelemetry_app-2.1.0 → agenttelemetry_app-2.3.0}/local_servers.py +0 -0
- {agenttelemetry_app-2.1.0 → agenttelemetry_app-2.3.0}/local_servers_windows.py +0 -0
- {agenttelemetry_app-2.1.0 → agenttelemetry_app-2.3.0}/manifest.json +0 -0
- {agenttelemetry_app-2.1.0 → agenttelemetry_app-2.3.0}/setup.cfg +0 -0
- {agenttelemetry_app-2.1.0 → agenttelemetry_app-2.3.0}/static/apple-touch-icon.png +0 -0
- {agenttelemetry_app-2.1.0 → agenttelemetry_app-2.3.0}/static/charts.js +0 -0
- {agenttelemetry_app-2.1.0 → agenttelemetry_app-2.3.0}/static/icon-192.png +0 -0
- {agenttelemetry_app-2.1.0 → agenttelemetry_app-2.3.0}/static/icon-512.png +0 -0
- {agenttelemetry_app-2.1.0 → agenttelemetry_app-2.3.0}/static/release-notes.js +0 -0
- {agenttelemetry_app-2.1.0 → agenttelemetry_app-2.3.0}/static/tool-icons/LICENSE.hermes.txt +0 -0
- {agenttelemetry_app-2.1.0 → agenttelemetry_app-2.3.0}/static/tool-icons/LICENSE.openclaw.txt +0 -0
- {agenttelemetry_app-2.1.0 → agenttelemetry_app-2.3.0}/static/tool-icons/LICENSE.simple-icons.txt +0 -0
- {agenttelemetry_app-2.1.0 → agenttelemetry_app-2.3.0}/static/tool-icons/claude.svg +0 -0
- {agenttelemetry_app-2.1.0 → agenttelemetry_app-2.3.0}/static/tool-icons/copilot.svg +0 -0
- {agenttelemetry_app-2.1.0 → agenttelemetry_app-2.3.0}/static/tool-icons/cursor.svg +0 -0
- {agenttelemetry_app-2.1.0 → agenttelemetry_app-2.3.0}/static/tool-icons/hermes.svg +0 -0
- {agenttelemetry_app-2.1.0 → agenttelemetry_app-2.3.0}/static/tool-icons/openai.svg +0 -0
- {agenttelemetry_app-2.1.0 → agenttelemetry_app-2.3.0}/static/tool-icons/openclaw.svg +0 -0
- {agenttelemetry_app-2.1.0 → agenttelemetry_app-2.3.0}/static/tool-icons/opencode.svg +0 -0
- {agenttelemetry_app-2.1.0 → agenttelemetry_app-2.3.0}/sw.js +0 -0
|
@@ -14,41 +14,36 @@ include native_activity.py
|
|
|
14
14
|
include local_servers.py
|
|
15
15
|
include local_servers_windows.py
|
|
16
16
|
include parser.py
|
|
17
|
+
include antigravity.py
|
|
18
|
+
include cursor_data.py
|
|
17
19
|
include release_notes.py
|
|
18
20
|
include native.py
|
|
19
21
|
include accounts.py
|
|
20
22
|
include session_names.py
|
|
21
|
-
include mcp_access.py
|
|
22
|
-
include mcp_backend.py
|
|
23
|
-
include mcp_protocol.py
|
|
24
|
-
include mcp_server.py
|
|
25
|
-
include mcp_tools.py
|
|
26
|
-
include telemetry_query.py
|
|
27
|
-
include telemetry_insights.py
|
|
28
23
|
include index.html
|
|
29
24
|
include chart.umd.min.js
|
|
30
25
|
include manifest.json
|
|
31
26
|
include sw.js
|
|
32
27
|
include docs/python-package.md
|
|
33
|
-
include docs/mcp.md
|
|
34
28
|
include docs/release-notes.md
|
|
35
29
|
include docs/native-activity.md
|
|
30
|
+
include docs/antigravity.md
|
|
36
31
|
include static/app.css
|
|
37
32
|
include static/apple-touch-icon.png
|
|
38
33
|
include static/charts.js
|
|
39
34
|
include static/core.js
|
|
40
35
|
include static/icon-192.png
|
|
41
36
|
include static/icon-512.png
|
|
42
|
-
include static/insights.js
|
|
43
37
|
include static/maintenance.js
|
|
44
38
|
include static/release-notes.js
|
|
45
|
-
include static/mcp.js
|
|
46
39
|
include static/timeline.js
|
|
47
40
|
include static/tool-icons/LICENSE.hermes.txt
|
|
41
|
+
include static/tool-icons/LICENSE.antigravity.txt
|
|
48
42
|
include static/tool-icons/LICENSE.openclaw.txt
|
|
49
43
|
include static/tool-icons/LICENSE.simple-icons.txt
|
|
50
44
|
include static/tool-icons/README.md
|
|
51
45
|
include static/tool-icons/claude.svg
|
|
46
|
+
include static/tool-icons/antigravity.svg
|
|
52
47
|
include static/tool-icons/copilot.svg
|
|
53
48
|
include static/tool-icons/cursor.svg
|
|
54
49
|
include static/tool-icons/hermes.svg
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agenttelemetry-app
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.3.0
|
|
4
4
|
Summary: A private, local dashboard for AI coding agent usage
|
|
5
5
|
License-Expression: MIT
|
|
6
6
|
Project-URL: Homepage, https://github.com/uttamdeb/agent-telemetry
|
|
@@ -29,26 +29,39 @@ logs your tools already write to your own machine and serves a clean, interactiv
|
|
|
29
29
|
dashboard — estimated spend, tokens, active time, cache efficiency, an **Anthropic vs OpenAI
|
|
30
30
|
vs Google** provider comparison, an activity calendar, and breakdowns by **model, provider,
|
|
31
31
|
day, hour, weekday, tool, IDE, project and session** — plus how much **disk** all these logs
|
|
32
|
-
eat
|
|
32
|
+
eat.
|
|
33
33
|
|
|
34
34
|
By default, log inventory, usage and the cache stay on this machine. Separate actions can
|
|
35
|
-
share selected exports with [paired devices](#your-devices-optional),
|
|
36
|
-
|
|
37
|
-
its model provider), contact a provider after a confirmed **Read once** account lookup, or
|
|
35
|
+
share selected exports with [paired devices](#your-devices-optional), contact a provider
|
|
36
|
+
after a confirmed **Read once** account lookup, or
|
|
38
37
|
fetch GitHub update and release-note metadata after you click **Check for updates** or
|
|
39
38
|
**Load notes**. Cached release notes can be shown offline after an upgrade. No account or API key is needed
|
|
40
39
|
for the dashboard; it has no runtime dependencies beyond Python's standard library and a
|
|
41
40
|
vendored copy of Chart.js.
|
|
42
41
|
|
|
43
|
-
Covers **Claude Code · Claude Desktop · Codex · GitHub Copilot · Cursor · OpenCode · Hermes Agent · OpenClaw**.
|
|
42
|
+
Covers **Claude Code · Claude Desktop · Codex · GitHub Copilot · Cursor · Antigravity · OpenCode · Hermes Agent · OpenClaw**.
|
|
43
|
+
|
|
44
|
+
**Get AgentTelemetry:** [Desktop apps for macOS and Windows](#download-the-app) ·
|
|
45
|
+
[VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=agenttelemetry-team.agenttelemetry) ·
|
|
46
|
+
[Open VSX](https://open-vsx.org/extension/agenttelemetry-team/agenttelemetry) (Cursor and compatible editors) ·
|
|
47
|
+
[Browser dashboard (Python or source)](#quick-start) ·
|
|
48
|
+
[Product page](https://agenttelemetry-app.vercel.app/)
|
|
49
|
+
|
|
50
|
+
**AgentTelemetry Pro (optional).** Everything above stays free, open source and local. [AgentTelemetry
|
|
51
|
+
Pro](https://agenttelemetry-app.vercel.app/#pro) is a separate add-on with a sign-in: your dashboard in any browser or
|
|
52
|
+
on your phone; chat with your running Claude Code and Codex sessions from the web, your phone or the Pro app on Mac
|
|
53
|
+
and Windows; answering Claude Code's permission prompts from your phone; sessions that message each other across
|
|
54
|
+
your devices; Optimize; and the local MCP bridge. See [Free vs Pro](https://agenttelemetry-app.vercel.app/#pro).
|
|
44
55
|
|
|
45
56
|
## Download the app
|
|
46
57
|
|
|
47
|
-
|
|
58
|
+
Choose the installer for your platform from the release's **Assets** section.
|
|
59
|
+
|
|
60
|
+
| Platform | Release downloads |
|
|
48
61
|
| --- | --- |
|
|
49
|
-
| macOS 13+ · Apple Silicon | **[
|
|
50
|
-
| macOS 13+ · Intel | **[
|
|
51
|
-
| Windows 10/11 · x64 | **[
|
|
62
|
+
| macOS 13+ · Apple Silicon | **[Find the Apple Silicon DMG](https://github.com/uttamdeb/agent-telemetry/releases/latest)** |
|
|
63
|
+
| macOS 13+ · Intel | **[Find the Intel DMG](https://github.com/uttamdeb/agent-telemetry/releases/latest)** |
|
|
64
|
+
| Windows 10/11 · x64 | **[Find the Windows EXE installer](https://github.com/uttamdeb/agent-telemetry/releases/latest)** |
|
|
52
65
|
|
|
53
66
|
**Python is bundled — no terminal setup needed.** macOS: open the DMG, drag the app to
|
|
54
67
|
Applications and open it. Windows: run the installer and open AgentTelemetry from Start.
|
|
@@ -61,10 +74,11 @@ starting monitoring. On macOS, opening the app manually also lets you import fir
|
|
|
61
74
|
|
|
62
75
|
These builds are unsigned/unnotarized. macOS may require **System Settings → Privacy &
|
|
63
76
|
Security → Open Anyway**; Windows SmartScreen may require **More info → Run anyway**.
|
|
77
|
+
[Product and install page](https://agenttelemetry-app.vercel.app/) ·
|
|
64
78
|
[All releases](https://github.com/uttamdeb/agent-telemetry/releases) ·
|
|
65
|
-
[What's new in 2.
|
|
66
|
-
[SHA-256 checksums](https://github.com/uttamdeb/agent-telemetry/releases/
|
|
67
|
-
[PyPI package 2.
|
|
79
|
+
[What's new in 2.3.0](docs/releases/v2.3.0.md) ·
|
|
80
|
+
[SHA-256 checksums in release assets](https://github.com/uttamdeb/agent-telemetry/releases/latest) ·
|
|
81
|
+
[PyPI package 2.3.0](https://pypi.org/project/agenttelemetry-app/2.3.0/)
|
|
68
82
|
|
|
69
83
|
---
|
|
70
84
|
|
|
@@ -166,12 +180,14 @@ estimated from tokens or combined across devices. Session details show recorded
|
|
|
166
180
|
creator/account IDs with their attribution limits. Account metadata is private to the
|
|
167
181
|
source device. See [setup, research and limitations](docs/account-limits.md).
|
|
168
182
|
|
|
169
|
-
## Local servers (macOS)
|
|
183
|
+
## Local servers (macOS and Windows)
|
|
170
184
|
|
|
171
|
-
The **Local servers** tab
|
|
172
|
-
and save an explicit launch command for Start and Restart.
|
|
173
|
-
|
|
174
|
-
|
|
185
|
+
The **Local servers** dashboard tab can list local project listeners, pin them,
|
|
186
|
+
and save an explicit launch command for Start and Restart. macOS can also show pinned
|
|
187
|
+
controls in the menu bar; the Windows tray opens the dashboard controls. Process actions
|
|
188
|
+
ask for confirmation. Lifecycle controls are supported on macOS and Windows; Linux does
|
|
189
|
+
not yet support this feature. Windows asks for a working folder and uses ownership-checked
|
|
190
|
+
process controls. Commands stay on this machine and are never included in device sharing.
|
|
175
191
|
Running a saved command gives it your account's file and network access.
|
|
176
192
|
See [behavior, privacy and limitations](docs/local-servers.md).
|
|
177
193
|
|
|
@@ -238,25 +254,15 @@ retain one serialized snapshot per display tick, in memory only; the ledger is u
|
|
|
238
254
|
as all writes. `POST /api/shutdown` additionally requires the owning Windows client's
|
|
239
255
|
per-process control token; a normal standalone dashboard cannot be stopped by that route.
|
|
240
256
|
|
|
241
|
-
## Local MCP access (optional)
|
|
242
|
-
|
|
243
|
-
AgentTelemetry provides eight read-only MCP tools for usage, comparisons, supported insights,
|
|
244
|
-
session summaries and timelines, data health, the telemetry catalog and saved subscription
|
|
245
|
-
limits. MCP access is off by default. Enable it in Settings and confirm each scope. The local
|
|
246
|
-
bridge requires an already-running dashboard and returns data only when the configured MCP
|
|
247
|
-
client requests it. A cloud-backed client may send tool results to its provider; review that
|
|
248
|
-
client's data-handling settings before enabling access. Project/device names and usage from
|
|
249
|
-
connected devices require their own opt-in scopes. The MCP bridge never refreshes accounts,
|
|
250
|
-
returns prompt text, or edits client configuration. See [MCP tools, setup and privacy
|
|
251
|
-
limits](docs/mcp.md).
|
|
252
|
-
|
|
253
|
-
The MCP bridge ships with the **2.1.0** application and Python package. It is not a separate
|
|
254
|
-
marketplace listing; install/update AgentTelemetry, then use the [MCP setup guide](docs/mcp.md).
|
|
255
|
-
|
|
256
257
|
> `--rebuild` deletes the cache, and with it every session whose log has since been deleted
|
|
257
258
|
> from disk (see [Storage](#storage--what-these-logs-cost-you-in-disk)). Copy
|
|
258
259
|
> `.usage_cache.json` somewhere safe first if you've cleaned up old logs.
|
|
259
260
|
|
|
261
|
+
Deleting a session inside a tool doesn't remove it from your totals either. If OpenCode,
|
|
262
|
+
Hermes or OpenClaw delete a session from their database, the dashboard keeps the usage it
|
|
263
|
+
already counted and marks that session as deleted. The same applies to turns you undo in
|
|
264
|
+
OpenCode and to a Claude or Copilot log that gets shorter.
|
|
265
|
+
|
|
260
266
|
**Requirements:** Python 3.8+ on **macOS, Linux or Windows**. On Windows run
|
|
261
267
|
`python dashboard.py` (or `run.cmd`); on macOS/Linux `python3 dashboard.py` (or `./run.sh`).
|
|
262
268
|
|
|
@@ -280,21 +286,33 @@ instead of cloning, delete `.usage_cache.json` first — that file is your perso
|
|
|
280
286
|
|
|
281
287
|
## Data sources
|
|
282
288
|
|
|
289
|
+
**AgentTelemetry Pulsar** is the engine that reads these sources. It finds each tool's
|
|
290
|
+
local logs, picks the usage signal out of them and turns every tool's format into the one
|
|
291
|
+
shared usage shape the dashboard shows. It runs on your machine, and its code lives in
|
|
292
|
+
`parser.py`.
|
|
293
|
+
|
|
283
294
|
| Tool | Where it reads | Tokens |
|
|
284
295
|
|---|---|---|
|
|
285
296
|
| **Claude Code** | `~/.claude/projects/**/*.jsonl` | exact (in/out/cache read+write, 5m/1h tiers) |
|
|
286
297
|
| **Claude Desktop** (agent mode) | `Claude/local-agent-mode-sessions/**` under App Support / `%APPDATA%` / `~/.config` | exact |
|
|
287
|
-
| **Codex** | `~/.codex/sessions/**`, `~/.codex/archived_sessions/**` | exact (in/cached/out/reasoning); subagents are identified and labelled |
|
|
298
|
+
| **Codex** | `~/.codex/sessions/**`, `~/.codex/archived_sessions/**` (plain `*.jsonl` and the zstd-compressed `*.jsonl.zst` Codex swaps in for idle threads) | exact (in/cached/out/reasoning); subagents are identified and labelled. Compressed rollouts are read with Python 3.14+ or the `zstd` command; without either they are counted as unread (never dropped) and the sidebar says how many |
|
|
288
299
|
| **GitHub Copilot** | VS Code-family `chatSessions/*.{json,jsonl}`; SDK/CLI `~/.copilot/session-state/*/events.jsonl`, enriched from VS Code `agentSessionData/*/session.db` | recorded request/turn tokens where available; SDK shutdown totals where safely dated. SDK gaps show a warning tooltip and unavailable/partial usage; older non-SDK chats retain text estimates. Premium multipliers are separate from estimated dollars. |
|
|
289
|
-
| **Cursor** (native AI) | `Cursor/User/globalStorage/state.vscdb` under App Support / `%APPDATA%` / `~/.config` | partial
|
|
300
|
+
| **Cursor** (native AI) | `Cursor/User/globalStorage/state.vscdb` under App Support / `%APPDATA%` / `~/.config` | recorded, partial or unavailable per session/model: explicit message input/output tokens, models, tools and AI-line stats where the local records expose them |
|
|
301
|
+
| **Google Antigravity** | `~/.gemini/antigravity/conversations/*.db`, `~/.gemini/antigravity-ide/conversations/*.db`, `~/.gemini/antigravity-cli/conversations/*.db` | recorded SQLite usage with per-field availability; standalone legacy `.pb` files are unsupported |
|
|
290
302
|
| **OpenCode** | `~/.local/share/opencode/opencode.db`, `%LOCALAPPDATA%\opencode\opencode.db`, `~/.opencode/opencode.db` (or `$OPENCODE_DATA_DIR`) | V1/V2 SQLite; exact (in/out/reasoning/cache), prompts and tools; cost is read from OpenCode's own per-message value |
|
|
291
303
|
| **Hermes Agent** | `~/.hermes/state.db` (or `$HERMES_HOME`, `%LOCALAPPDATA%\hermes`) | exact (in/out/cache/reasoning, per model) |
|
|
292
304
|
| **OpenClaw** | `~/.openclaw/agents/<agent>/agent/openclaw-agent.sqlite` (or `$OPENCLAW_STATE_DIR`; also the older `~/.clawdbot`, `~/.moltbot`) and the older per-session `sessions/*.jsonl` | exact (in/out/cache read/cache write/reasoning, per response); its own logged cost is used only for a model with no verified price. Large events are stored zstd-compressed: read with the `zstd` command or Python 3.14+ |
|
|
293
305
|
|
|
294
306
|
A tool you don't use simply contributes nothing. **Attribution is by tool, not by model** —
|
|
295
|
-
a Claude or GPT model used *inside* Copilot/Cursor/OpenCode/Hermes/OpenClaw counts under that tool, and the
|
|
307
|
+
a Claude, Gemini, or GPT model used *inside* Copilot/Cursor/Antigravity/OpenCode/Hermes/OpenClaw counts under that tool, and the
|
|
296
308
|
Models table lists each `model × tool` row separately.
|
|
297
309
|
|
|
310
|
+
Antigravity's supported SQLite schema, duplicate-row handling, recorded checkpoint detail,
|
|
311
|
+
and format limits are documented in [Google Antigravity support](docs/antigravity.md).
|
|
312
|
+
|
|
313
|
+
Cursor's local conversation metadata is documented in [Cursor support](docs/cursor.md),
|
|
314
|
+
including its model/token coverage states, workspace associations, subagents, and limits.
|
|
315
|
+
|
|
298
316
|
Copilot's newer SDK-based agent sessions use a different store from older Copilot Chat.
|
|
299
317
|
AgentTelemetry joins their event history to VS Code's saved per-turn usage using native
|
|
300
318
|
session and event IDs. Custom endpoint models, including Cloudflare GLM 5.3, still count
|
|
@@ -374,26 +392,22 @@ anything is saved. Close the session in its original tool before confirming, and
|
|
|
374
392
|
that tool if needed. Token, cost, prompt, tool-call and compaction records stay intact.
|
|
375
393
|
Previous title metadata is backed up privately in
|
|
376
394
|
`AgentTelemetryNative/session-title-backups/`, separately from the usage ledger.
|
|
377
|
-
This supports local Claude Code transcripts, Codex through its
|
|
395
|
+
This supports local Claude Code transcripts, Codex through its
|
|
378
396
|
[official name API](https://learn.chatgpt.com/docs/app-server), and OpenCode’s SQLite
|
|
379
|
-
session stores.
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
397
|
+
session stores. Codex's program is found wherever its apps install it (the ChatGPT app,
|
|
398
|
+
the Codex editor extension, the Codex desktop app on Windows, or a Codex CLI), with no
|
|
399
|
+
need for it on your PATH. Remote sessions and deleted logs cannot be renamed.
|
|
400
|
+
Recognized local Claude subagent transcripts, and sessions from tools whose own title
|
|
401
|
+
can't be edited safely (Copilot, Cursor, Claude Desktop, Antigravity, Hermes, OpenClaw),
|
|
402
|
+
instead offer **Name in AgentTelemetry**. This saves a private display name on this
|
|
403
|
+
device without editing the tool's files, Claude's transcript, native subagent name, or
|
|
404
|
+
parent session. The preview states this scope explicitly.
|
|
383
405
|
These names live in `AgentTelemetryNative/session-display-names.json`, outside the
|
|
384
406
|
usage ledger, summaries, and device sharing. Enter the source title again to remove
|
|
385
407
|
a display-name override. See [subagent name behavior](docs/subagent-sessions.md).
|
|
386
408
|
Tool/provider icons are bundled locally, including the OpenAI mark for Codex; no remote
|
|
387
409
|
logo requests occur. Their sources and licenses are in `static/tool-icons/README.md`.
|
|
388
410
|
|
|
389
|
-
**Optimize** — suggestions derived from your own logs, ranked by what they'd save: sessions
|
|
390
|
-
re-reading a very large context, thinking share, tool-heavy sessions that never delegated,
|
|
391
|
-
cache written but never read, a costly model doing light work, what each **Skill** costs,
|
|
392
|
-
edits that needed a retry, oversized **CLAUDE.md / AGENTS.md**, sessions that open heavier
|
|
393
|
-
than your leanest ones, wasted file reads, installed skills and agents you never use, and
|
|
394
|
-
MCP servers you never call, barely use, or load everywhere but use in one project. Nothing is shown unless
|
|
395
|
-
your data supports it, and because the estimates overlap they are never summed.
|
|
396
|
-
|
|
397
411
|
**Storage** — see below.
|
|
398
412
|
|
|
399
413
|
**Keyboard** — `1`/`7`/`3`/`9`/`a` ranges, `m` month-to-date, `,` / `.` previous / next
|
|
@@ -475,26 +489,32 @@ dollars**, so cost is always derived. Rates live in `parser.py → PRICING` as
|
|
|
475
489
|
`(input, output, cache_write_5m, cache_write_1h, cache_read)` per 1M tokens; edit freely
|
|
476
490
|
(recomputed on each request, no re-parse needed).
|
|
477
491
|
|
|
478
|
-
- **Anthropic** rates are current list prices (
|
|
479
|
-
|
|
480
|
-
read 0.1× — 0.05× on Opus 5.5
|
|
492
|
+
- **Anthropic** rates are current list prices (Fable & Mythos 5.2 $8/$40, Fable & Mythos 5/5.1
|
|
493
|
+
$10/$50, Opus 5.5 $4/$20, Opus 5 & 4.x $5/$25, Sonnet 5 & 5.5 $2/$10, Sonnet 4.x $3/$15, Haiku
|
|
494
|
+
4.5 $1/$5; cache write 1.25×/2× input for 5-min/1-hour, cache read 0.1× — 0.05× on Opus 5.5 and
|
|
495
|
+
Sonnet 5.5, 0.025× on Fable & Mythos 5.1/5.2). **OpenAI** GPT-5.4/5.5/5.6/6 are verified from OpenAI docs;
|
|
481
496
|
older/other models are estimates.
|
|
482
497
|
- **Haiku 5.5** uses [Anthropic's published rates](https://platform.claude.com/docs/en/about-claude/pricing):
|
|
483
498
|
$0.10/$0.50 per million input/output tokens up to 100K prompt tokens, $0.50/$2.50
|
|
484
499
|
above 100K. The threshold includes cached input and applies to each request.
|
|
485
500
|
Available Claude logs backfill this pricing detail on a normal restart; token and
|
|
486
501
|
message counts stay unchanged. Older archives/peers and other tools without that
|
|
487
|
-
detail use the short-prompt rate.
|
|
488
|
-
the higher tier when the target request size is unknown.
|
|
502
|
+
detail use the short-prompt rate.
|
|
489
503
|
- **Price changes are date-aware.** When a vendor cuts a price (OpenAI's GPT-5.6 cuts of
|
|
490
|
-
2026-07-30 and 2026-08-21
|
|
504
|
+
2026-07-30 and 2026-08-21, Anthropic's Sonnet 5.5 cache-read cut of 2026-10-07), usage
|
|
505
|
+
from before the change keeps the rate it had then —
|
|
491
506
|
see `parser.py → PRICE_HISTORY`.
|
|
492
507
|
- **These are API-equivalent values.** If you're on a subscription (Claude Max/Pro, Codex,
|
|
493
508
|
Copilot), you don't pay per token — the $ is "what this would cost at API rates."
|
|
494
|
-
- **Cursor**
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
509
|
+
- **Cursor** exposes explicit input/output token receipts for some messages; missing and
|
|
510
|
+
placeholder values are unavailable, and usage coverage can be partial. Cache and reasoning
|
|
511
|
+
values remain unavailable unless recorded. Overview shows observed Cursor prompts, replies,
|
|
512
|
+
and tool calls separately when they have no token/cost coverage. It does not estimate tokens
|
|
513
|
+
from text or context meters, infer subscription charges, or count metadata as tokens. The
|
|
514
|
+
**Exact tokens only** filter omits Cursor because local token coverage is incomplete. See
|
|
515
|
+
[Cursor support](docs/cursor.md). **Older Copilot chats** may have no token data; current
|
|
516
|
+
Copilot builds log real per-request tokens. Copilot's honest metric is **request count** and
|
|
517
|
+
its **premium-request** total (both shown); Cursor also exposes **AI lines kept**.
|
|
498
518
|
- **Billing details that change the price are applied**: prompt-cache writes at their own
|
|
499
519
|
rate (Claude and GPT-5.6/GPT-6), Claude fast mode, US-only inference (1.1x) and web
|
|
500
520
|
searches ($10/1K). A forked or subagent Codex thread's replay of its parent is skipped,
|
|
@@ -504,12 +524,15 @@ dollars**, so cost is always derived. Rates live in `parser.py → PRICING` as
|
|
|
504
524
|
when it runs through supported tools, at the Standard rate for prompts up to 200K
|
|
505
525
|
tokens. Live, TTS, image and embedding models are not priced, and nor are the higher Pro rate
|
|
506
526
|
for longer prompts or audio input. The Gemini CLI itself writes no token counts to read.
|
|
507
|
-
- **Gemini 4 Argon
|
|
508
|
-
[
|
|
509
|
-
$2 input, $10 output and $0.10 cached input per 1M tokens
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
527
|
+
- **Gemini 4 Argon and Gemini 4 Carbon** (`gemini-4-argon`, `gemini-4-carbon`) are recognized
|
|
528
|
+
across the supported tools and use Google's [published rates](https://aistudio.google.com/docs/pricing):
|
|
529
|
+
$2 input, $10 output and $0.10 cached input per 1M tokens through November 30, 2026. Google
|
|
530
|
+
doubles them to $4, $20 and $0.20 on December 1, 2026. The higher rate is not applied ahead
|
|
531
|
+
of time: it goes in once it takes effect, and earlier usage keeps the rate it had then.
|
|
532
|
+
Cache storage charges are not modeled.
|
|
533
|
+
- **Gemini 4 Hydrogen** (`gemini-4-hydrogen`) uses Google's paid rate: $1.50 input, $7.50 output
|
|
534
|
+
and $0.075 cached input per 1M tokens. Its free tier can't be told apart in logs, so usage
|
|
535
|
+
is shown at the paid rate.
|
|
513
536
|
|
|
514
537
|
## Note on log retention
|
|
515
538
|
|
|
@@ -539,7 +562,7 @@ and extend this from that file).
|
|
|
539
562
|
|
|
540
563
|
## Files
|
|
541
564
|
|
|
542
|
-
`dashboard.py` (server + cache + cost + `/api/storage`) · `parser.py` (log parsers + pricing) ·
|
|
565
|
+
`dashboard.py` (server + cache + cost + `/api/storage`) · `parser.py` (AgentTelemetry Pulsar: log parsers + pricing) ·
|
|
543
566
|
`index.html` (shell) · `static/app.css` · `static/core.js` · `static/charts.js` ·
|
|
544
567
|
`static/views.js` · `chart.umd.min.js` (vendored Chart.js) · `AGENTS.md` · `run.sh`.
|
|
545
568
|
|
|
@@ -571,8 +594,8 @@ What sharing sends: session titles (often the start of a prompt), project and br
|
|
|
571
594
|
log file paths, models, token counts, costs and times. Full prompts, replies and file
|
|
572
595
|
contents are never sent. Sharing opens one read-only port (7879) that answers only to the
|
|
573
596
|
pairing code. The dashboard itself stays on `127.0.0.1`. The connection is **not
|
|
574
|
-
encrypted**, so share only on a network you trust. The
|
|
575
|
-
(instruction files, installed skills, MCP servers)
|
|
597
|
+
encrypted**, so share only on a network you trust. The Storage tab and setup inventories
|
|
598
|
+
(instruction files, installed skills, MCP servers) still describe only
|
|
576
599
|
the computer you're looking at. `.peers.json` and `.peers/` are gitignored.
|
|
577
600
|
|
|
578
601
|
**If it can't connect**, the error says which of these it is:
|
|
@@ -5,26 +5,39 @@ logs your tools already write to your own machine and serves a clean, interactiv
|
|
|
5
5
|
dashboard — estimated spend, tokens, active time, cache efficiency, an **Anthropic vs OpenAI
|
|
6
6
|
vs Google** provider comparison, an activity calendar, and breakdowns by **model, provider,
|
|
7
7
|
day, hour, weekday, tool, IDE, project and session** — plus how much **disk** all these logs
|
|
8
|
-
eat
|
|
8
|
+
eat.
|
|
9
9
|
|
|
10
10
|
By default, log inventory, usage and the cache stay on this machine. Separate actions can
|
|
11
|
-
share selected exports with [paired devices](#your-devices-optional),
|
|
12
|
-
|
|
13
|
-
its model provider), contact a provider after a confirmed **Read once** account lookup, or
|
|
11
|
+
share selected exports with [paired devices](#your-devices-optional), contact a provider
|
|
12
|
+
after a confirmed **Read once** account lookup, or
|
|
14
13
|
fetch GitHub update and release-note metadata after you click **Check for updates** or
|
|
15
14
|
**Load notes**. Cached release notes can be shown offline after an upgrade. No account or API key is needed
|
|
16
15
|
for the dashboard; it has no runtime dependencies beyond Python's standard library and a
|
|
17
16
|
vendored copy of Chart.js.
|
|
18
17
|
|
|
19
|
-
Covers **Claude Code · Claude Desktop · Codex · GitHub Copilot · Cursor · OpenCode · Hermes Agent · OpenClaw**.
|
|
18
|
+
Covers **Claude Code · Claude Desktop · Codex · GitHub Copilot · Cursor · Antigravity · OpenCode · Hermes Agent · OpenClaw**.
|
|
19
|
+
|
|
20
|
+
**Get AgentTelemetry:** [Desktop apps for macOS and Windows](#download-the-app) ·
|
|
21
|
+
[VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=agenttelemetry-team.agenttelemetry) ·
|
|
22
|
+
[Open VSX](https://open-vsx.org/extension/agenttelemetry-team/agenttelemetry) (Cursor and compatible editors) ·
|
|
23
|
+
[Browser dashboard (Python or source)](#quick-start) ·
|
|
24
|
+
[Product page](https://agenttelemetry-app.vercel.app/)
|
|
25
|
+
|
|
26
|
+
**AgentTelemetry Pro (optional).** Everything above stays free, open source and local. [AgentTelemetry
|
|
27
|
+
Pro](https://agenttelemetry-app.vercel.app/#pro) is a separate add-on with a sign-in: your dashboard in any browser or
|
|
28
|
+
on your phone; chat with your running Claude Code and Codex sessions from the web, your phone or the Pro app on Mac
|
|
29
|
+
and Windows; answering Claude Code's permission prompts from your phone; sessions that message each other across
|
|
30
|
+
your devices; Optimize; and the local MCP bridge. See [Free vs Pro](https://agenttelemetry-app.vercel.app/#pro).
|
|
20
31
|
|
|
21
32
|
## Download the app
|
|
22
33
|
|
|
23
|
-
|
|
34
|
+
Choose the installer for your platform from the release's **Assets** section.
|
|
35
|
+
|
|
36
|
+
| Platform | Release downloads |
|
|
24
37
|
| --- | --- |
|
|
25
|
-
| macOS 13+ · Apple Silicon | **[
|
|
26
|
-
| macOS 13+ · Intel | **[
|
|
27
|
-
| Windows 10/11 · x64 | **[
|
|
38
|
+
| macOS 13+ · Apple Silicon | **[Find the Apple Silicon DMG](https://github.com/uttamdeb/agent-telemetry/releases/latest)** |
|
|
39
|
+
| macOS 13+ · Intel | **[Find the Intel DMG](https://github.com/uttamdeb/agent-telemetry/releases/latest)** |
|
|
40
|
+
| Windows 10/11 · x64 | **[Find the Windows EXE installer](https://github.com/uttamdeb/agent-telemetry/releases/latest)** |
|
|
28
41
|
|
|
29
42
|
**Python is bundled — no terminal setup needed.** macOS: open the DMG, drag the app to
|
|
30
43
|
Applications and open it. Windows: run the installer and open AgentTelemetry from Start.
|
|
@@ -37,10 +50,11 @@ starting monitoring. On macOS, opening the app manually also lets you import fir
|
|
|
37
50
|
|
|
38
51
|
These builds are unsigned/unnotarized. macOS may require **System Settings → Privacy &
|
|
39
52
|
Security → Open Anyway**; Windows SmartScreen may require **More info → Run anyway**.
|
|
53
|
+
[Product and install page](https://agenttelemetry-app.vercel.app/) ·
|
|
40
54
|
[All releases](https://github.com/uttamdeb/agent-telemetry/releases) ·
|
|
41
|
-
[What's new in 2.
|
|
42
|
-
[SHA-256 checksums](https://github.com/uttamdeb/agent-telemetry/releases/
|
|
43
|
-
[PyPI package 2.
|
|
55
|
+
[What's new in 2.3.0](docs/releases/v2.3.0.md) ·
|
|
56
|
+
[SHA-256 checksums in release assets](https://github.com/uttamdeb/agent-telemetry/releases/latest) ·
|
|
57
|
+
[PyPI package 2.3.0](https://pypi.org/project/agenttelemetry-app/2.3.0/)
|
|
44
58
|
|
|
45
59
|
---
|
|
46
60
|
|
|
@@ -142,12 +156,14 @@ estimated from tokens or combined across devices. Session details show recorded
|
|
|
142
156
|
creator/account IDs with their attribution limits. Account metadata is private to the
|
|
143
157
|
source device. See [setup, research and limitations](docs/account-limits.md).
|
|
144
158
|
|
|
145
|
-
## Local servers (macOS)
|
|
159
|
+
## Local servers (macOS and Windows)
|
|
146
160
|
|
|
147
|
-
The **Local servers** tab
|
|
148
|
-
and save an explicit launch command for Start and Restart.
|
|
149
|
-
|
|
150
|
-
|
|
161
|
+
The **Local servers** dashboard tab can list local project listeners, pin them,
|
|
162
|
+
and save an explicit launch command for Start and Restart. macOS can also show pinned
|
|
163
|
+
controls in the menu bar; the Windows tray opens the dashboard controls. Process actions
|
|
164
|
+
ask for confirmation. Lifecycle controls are supported on macOS and Windows; Linux does
|
|
165
|
+
not yet support this feature. Windows asks for a working folder and uses ownership-checked
|
|
166
|
+
process controls. Commands stay on this machine and are never included in device sharing.
|
|
151
167
|
Running a saved command gives it your account's file and network access.
|
|
152
168
|
See [behavior, privacy and limitations](docs/local-servers.md).
|
|
153
169
|
|
|
@@ -214,25 +230,15 @@ retain one serialized snapshot per display tick, in memory only; the ledger is u
|
|
|
214
230
|
as all writes. `POST /api/shutdown` additionally requires the owning Windows client's
|
|
215
231
|
per-process control token; a normal standalone dashboard cannot be stopped by that route.
|
|
216
232
|
|
|
217
|
-
## Local MCP access (optional)
|
|
218
|
-
|
|
219
|
-
AgentTelemetry provides eight read-only MCP tools for usage, comparisons, supported insights,
|
|
220
|
-
session summaries and timelines, data health, the telemetry catalog and saved subscription
|
|
221
|
-
limits. MCP access is off by default. Enable it in Settings and confirm each scope. The local
|
|
222
|
-
bridge requires an already-running dashboard and returns data only when the configured MCP
|
|
223
|
-
client requests it. A cloud-backed client may send tool results to its provider; review that
|
|
224
|
-
client's data-handling settings before enabling access. Project/device names and usage from
|
|
225
|
-
connected devices require their own opt-in scopes. The MCP bridge never refreshes accounts,
|
|
226
|
-
returns prompt text, or edits client configuration. See [MCP tools, setup and privacy
|
|
227
|
-
limits](docs/mcp.md).
|
|
228
|
-
|
|
229
|
-
The MCP bridge ships with the **2.1.0** application and Python package. It is not a separate
|
|
230
|
-
marketplace listing; install/update AgentTelemetry, then use the [MCP setup guide](docs/mcp.md).
|
|
231
|
-
|
|
232
233
|
> `--rebuild` deletes the cache, and with it every session whose log has since been deleted
|
|
233
234
|
> from disk (see [Storage](#storage--what-these-logs-cost-you-in-disk)). Copy
|
|
234
235
|
> `.usage_cache.json` somewhere safe first if you've cleaned up old logs.
|
|
235
236
|
|
|
237
|
+
Deleting a session inside a tool doesn't remove it from your totals either. If OpenCode,
|
|
238
|
+
Hermes or OpenClaw delete a session from their database, the dashboard keeps the usage it
|
|
239
|
+
already counted and marks that session as deleted. The same applies to turns you undo in
|
|
240
|
+
OpenCode and to a Claude or Copilot log that gets shorter.
|
|
241
|
+
|
|
236
242
|
**Requirements:** Python 3.8+ on **macOS, Linux or Windows**. On Windows run
|
|
237
243
|
`python dashboard.py` (or `run.cmd`); on macOS/Linux `python3 dashboard.py` (or `./run.sh`).
|
|
238
244
|
|
|
@@ -256,21 +262,33 @@ instead of cloning, delete `.usage_cache.json` first — that file is your perso
|
|
|
256
262
|
|
|
257
263
|
## Data sources
|
|
258
264
|
|
|
265
|
+
**AgentTelemetry Pulsar** is the engine that reads these sources. It finds each tool's
|
|
266
|
+
local logs, picks the usage signal out of them and turns every tool's format into the one
|
|
267
|
+
shared usage shape the dashboard shows. It runs on your machine, and its code lives in
|
|
268
|
+
`parser.py`.
|
|
269
|
+
|
|
259
270
|
| Tool | Where it reads | Tokens |
|
|
260
271
|
|---|---|---|
|
|
261
272
|
| **Claude Code** | `~/.claude/projects/**/*.jsonl` | exact (in/out/cache read+write, 5m/1h tiers) |
|
|
262
273
|
| **Claude Desktop** (agent mode) | `Claude/local-agent-mode-sessions/**` under App Support / `%APPDATA%` / `~/.config` | exact |
|
|
263
|
-
| **Codex** | `~/.codex/sessions/**`, `~/.codex/archived_sessions/**` | exact (in/cached/out/reasoning); subagents are identified and labelled |
|
|
274
|
+
| **Codex** | `~/.codex/sessions/**`, `~/.codex/archived_sessions/**` (plain `*.jsonl` and the zstd-compressed `*.jsonl.zst` Codex swaps in for idle threads) | exact (in/cached/out/reasoning); subagents are identified and labelled. Compressed rollouts are read with Python 3.14+ or the `zstd` command; without either they are counted as unread (never dropped) and the sidebar says how many |
|
|
264
275
|
| **GitHub Copilot** | VS Code-family `chatSessions/*.{json,jsonl}`; SDK/CLI `~/.copilot/session-state/*/events.jsonl`, enriched from VS Code `agentSessionData/*/session.db` | recorded request/turn tokens where available; SDK shutdown totals where safely dated. SDK gaps show a warning tooltip and unavailable/partial usage; older non-SDK chats retain text estimates. Premium multipliers are separate from estimated dollars. |
|
|
265
|
-
| **Cursor** (native AI) | `Cursor/User/globalStorage/state.vscdb` under App Support / `%APPDATA%` / `~/.config` | partial
|
|
276
|
+
| **Cursor** (native AI) | `Cursor/User/globalStorage/state.vscdb` under App Support / `%APPDATA%` / `~/.config` | recorded, partial or unavailable per session/model: explicit message input/output tokens, models, tools and AI-line stats where the local records expose them |
|
|
277
|
+
| **Google Antigravity** | `~/.gemini/antigravity/conversations/*.db`, `~/.gemini/antigravity-ide/conversations/*.db`, `~/.gemini/antigravity-cli/conversations/*.db` | recorded SQLite usage with per-field availability; standalone legacy `.pb` files are unsupported |
|
|
266
278
|
| **OpenCode** | `~/.local/share/opencode/opencode.db`, `%LOCALAPPDATA%\opencode\opencode.db`, `~/.opencode/opencode.db` (or `$OPENCODE_DATA_DIR`) | V1/V2 SQLite; exact (in/out/reasoning/cache), prompts and tools; cost is read from OpenCode's own per-message value |
|
|
267
279
|
| **Hermes Agent** | `~/.hermes/state.db` (or `$HERMES_HOME`, `%LOCALAPPDATA%\hermes`) | exact (in/out/cache/reasoning, per model) |
|
|
268
280
|
| **OpenClaw** | `~/.openclaw/agents/<agent>/agent/openclaw-agent.sqlite` (or `$OPENCLAW_STATE_DIR`; also the older `~/.clawdbot`, `~/.moltbot`) and the older per-session `sessions/*.jsonl` | exact (in/out/cache read/cache write/reasoning, per response); its own logged cost is used only for a model with no verified price. Large events are stored zstd-compressed: read with the `zstd` command or Python 3.14+ |
|
|
269
281
|
|
|
270
282
|
A tool you don't use simply contributes nothing. **Attribution is by tool, not by model** —
|
|
271
|
-
a Claude or GPT model used *inside* Copilot/Cursor/OpenCode/Hermes/OpenClaw counts under that tool, and the
|
|
283
|
+
a Claude, Gemini, or GPT model used *inside* Copilot/Cursor/Antigravity/OpenCode/Hermes/OpenClaw counts under that tool, and the
|
|
272
284
|
Models table lists each `model × tool` row separately.
|
|
273
285
|
|
|
286
|
+
Antigravity's supported SQLite schema, duplicate-row handling, recorded checkpoint detail,
|
|
287
|
+
and format limits are documented in [Google Antigravity support](docs/antigravity.md).
|
|
288
|
+
|
|
289
|
+
Cursor's local conversation metadata is documented in [Cursor support](docs/cursor.md),
|
|
290
|
+
including its model/token coverage states, workspace associations, subagents, and limits.
|
|
291
|
+
|
|
274
292
|
Copilot's newer SDK-based agent sessions use a different store from older Copilot Chat.
|
|
275
293
|
AgentTelemetry joins their event history to VS Code's saved per-turn usage using native
|
|
276
294
|
session and event IDs. Custom endpoint models, including Cloudflare GLM 5.3, still count
|
|
@@ -350,26 +368,22 @@ anything is saved. Close the session in its original tool before confirming, and
|
|
|
350
368
|
that tool if needed. Token, cost, prompt, tool-call and compaction records stay intact.
|
|
351
369
|
Previous title metadata is backed up privately in
|
|
352
370
|
`AgentTelemetryNative/session-title-backups/`, separately from the usage ledger.
|
|
353
|
-
This supports local Claude Code transcripts, Codex through its
|
|
371
|
+
This supports local Claude Code transcripts, Codex through its
|
|
354
372
|
[official name API](https://learn.chatgpt.com/docs/app-server), and OpenCode’s SQLite
|
|
355
|
-
session stores.
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
373
|
+
session stores. Codex's program is found wherever its apps install it (the ChatGPT app,
|
|
374
|
+
the Codex editor extension, the Codex desktop app on Windows, or a Codex CLI), with no
|
|
375
|
+
need for it on your PATH. Remote sessions and deleted logs cannot be renamed.
|
|
376
|
+
Recognized local Claude subagent transcripts, and sessions from tools whose own title
|
|
377
|
+
can't be edited safely (Copilot, Cursor, Claude Desktop, Antigravity, Hermes, OpenClaw),
|
|
378
|
+
instead offer **Name in AgentTelemetry**. This saves a private display name on this
|
|
379
|
+
device without editing the tool's files, Claude's transcript, native subagent name, or
|
|
380
|
+
parent session. The preview states this scope explicitly.
|
|
359
381
|
These names live in `AgentTelemetryNative/session-display-names.json`, outside the
|
|
360
382
|
usage ledger, summaries, and device sharing. Enter the source title again to remove
|
|
361
383
|
a display-name override. See [subagent name behavior](docs/subagent-sessions.md).
|
|
362
384
|
Tool/provider icons are bundled locally, including the OpenAI mark for Codex; no remote
|
|
363
385
|
logo requests occur. Their sources and licenses are in `static/tool-icons/README.md`.
|
|
364
386
|
|
|
365
|
-
**Optimize** — suggestions derived from your own logs, ranked by what they'd save: sessions
|
|
366
|
-
re-reading a very large context, thinking share, tool-heavy sessions that never delegated,
|
|
367
|
-
cache written but never read, a costly model doing light work, what each **Skill** costs,
|
|
368
|
-
edits that needed a retry, oversized **CLAUDE.md / AGENTS.md**, sessions that open heavier
|
|
369
|
-
than your leanest ones, wasted file reads, installed skills and agents you never use, and
|
|
370
|
-
MCP servers you never call, barely use, or load everywhere but use in one project. Nothing is shown unless
|
|
371
|
-
your data supports it, and because the estimates overlap they are never summed.
|
|
372
|
-
|
|
373
387
|
**Storage** — see below.
|
|
374
388
|
|
|
375
389
|
**Keyboard** — `1`/`7`/`3`/`9`/`a` ranges, `m` month-to-date, `,` / `.` previous / next
|
|
@@ -451,26 +465,32 @@ dollars**, so cost is always derived. Rates live in `parser.py → PRICING` as
|
|
|
451
465
|
`(input, output, cache_write_5m, cache_write_1h, cache_read)` per 1M tokens; edit freely
|
|
452
466
|
(recomputed on each request, no re-parse needed).
|
|
453
467
|
|
|
454
|
-
- **Anthropic** rates are current list prices (
|
|
455
|
-
|
|
456
|
-
read 0.1× — 0.05× on Opus 5.5
|
|
468
|
+
- **Anthropic** rates are current list prices (Fable & Mythos 5.2 $8/$40, Fable & Mythos 5/5.1
|
|
469
|
+
$10/$50, Opus 5.5 $4/$20, Opus 5 & 4.x $5/$25, Sonnet 5 & 5.5 $2/$10, Sonnet 4.x $3/$15, Haiku
|
|
470
|
+
4.5 $1/$5; cache write 1.25×/2× input for 5-min/1-hour, cache read 0.1× — 0.05× on Opus 5.5 and
|
|
471
|
+
Sonnet 5.5, 0.025× on Fable & Mythos 5.1/5.2). **OpenAI** GPT-5.4/5.5/5.6/6 are verified from OpenAI docs;
|
|
457
472
|
older/other models are estimates.
|
|
458
473
|
- **Haiku 5.5** uses [Anthropic's published rates](https://platform.claude.com/docs/en/about-claude/pricing):
|
|
459
474
|
$0.10/$0.50 per million input/output tokens up to 100K prompt tokens, $0.50/$2.50
|
|
460
475
|
above 100K. The threshold includes cached input and applies to each request.
|
|
461
476
|
Available Claude logs backfill this pricing detail on a normal restart; token and
|
|
462
477
|
message counts stay unchanged. Older archives/peers and other tools without that
|
|
463
|
-
detail use the short-prompt rate.
|
|
464
|
-
the higher tier when the target request size is unknown.
|
|
478
|
+
detail use the short-prompt rate.
|
|
465
479
|
- **Price changes are date-aware.** When a vendor cuts a price (OpenAI's GPT-5.6 cuts of
|
|
466
|
-
2026-07-30 and 2026-08-21
|
|
480
|
+
2026-07-30 and 2026-08-21, Anthropic's Sonnet 5.5 cache-read cut of 2026-10-07), usage
|
|
481
|
+
from before the change keeps the rate it had then —
|
|
467
482
|
see `parser.py → PRICE_HISTORY`.
|
|
468
483
|
- **These are API-equivalent values.** If you're on a subscription (Claude Max/Pro, Codex,
|
|
469
484
|
Copilot), you don't pay per token — the $ is "what this would cost at API rates."
|
|
470
|
-
- **Cursor**
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
485
|
+
- **Cursor** exposes explicit input/output token receipts for some messages; missing and
|
|
486
|
+
placeholder values are unavailable, and usage coverage can be partial. Cache and reasoning
|
|
487
|
+
values remain unavailable unless recorded. Overview shows observed Cursor prompts, replies,
|
|
488
|
+
and tool calls separately when they have no token/cost coverage. It does not estimate tokens
|
|
489
|
+
from text or context meters, infer subscription charges, or count metadata as tokens. The
|
|
490
|
+
**Exact tokens only** filter omits Cursor because local token coverage is incomplete. See
|
|
491
|
+
[Cursor support](docs/cursor.md). **Older Copilot chats** may have no token data; current
|
|
492
|
+
Copilot builds log real per-request tokens. Copilot's honest metric is **request count** and
|
|
493
|
+
its **premium-request** total (both shown); Cursor also exposes **AI lines kept**.
|
|
474
494
|
- **Billing details that change the price are applied**: prompt-cache writes at their own
|
|
475
495
|
rate (Claude and GPT-5.6/GPT-6), Claude fast mode, US-only inference (1.1x) and web
|
|
476
496
|
searches ($10/1K). A forked or subagent Codex thread's replay of its parent is skipped,
|
|
@@ -480,12 +500,15 @@ dollars**, so cost is always derived. Rates live in `parser.py → PRICING` as
|
|
|
480
500
|
when it runs through supported tools, at the Standard rate for prompts up to 200K
|
|
481
501
|
tokens. Live, TTS, image and embedding models are not priced, and nor are the higher Pro rate
|
|
482
502
|
for longer prompts or audio input. The Gemini CLI itself writes no token counts to read.
|
|
483
|
-
- **Gemini 4 Argon
|
|
484
|
-
[
|
|
485
|
-
$2 input, $10 output and $0.10 cached input per 1M tokens
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
503
|
+
- **Gemini 4 Argon and Gemini 4 Carbon** (`gemini-4-argon`, `gemini-4-carbon`) are recognized
|
|
504
|
+
across the supported tools and use Google's [published rates](https://aistudio.google.com/docs/pricing):
|
|
505
|
+
$2 input, $10 output and $0.10 cached input per 1M tokens through November 30, 2026. Google
|
|
506
|
+
doubles them to $4, $20 and $0.20 on December 1, 2026. The higher rate is not applied ahead
|
|
507
|
+
of time: it goes in once it takes effect, and earlier usage keeps the rate it had then.
|
|
508
|
+
Cache storage charges are not modeled.
|
|
509
|
+
- **Gemini 4 Hydrogen** (`gemini-4-hydrogen`) uses Google's paid rate: $1.50 input, $7.50 output
|
|
510
|
+
and $0.075 cached input per 1M tokens. Its free tier can't be told apart in logs, so usage
|
|
511
|
+
is shown at the paid rate.
|
|
489
512
|
|
|
490
513
|
## Note on log retention
|
|
491
514
|
|
|
@@ -515,7 +538,7 @@ and extend this from that file).
|
|
|
515
538
|
|
|
516
539
|
## Files
|
|
517
540
|
|
|
518
|
-
`dashboard.py` (server + cache + cost + `/api/storage`) · `parser.py` (log parsers + pricing) ·
|
|
541
|
+
`dashboard.py` (server + cache + cost + `/api/storage`) · `parser.py` (AgentTelemetry Pulsar: log parsers + pricing) ·
|
|
519
542
|
`index.html` (shell) · `static/app.css` · `static/core.js` · `static/charts.js` ·
|
|
520
543
|
`static/views.js` · `chart.umd.min.js` (vendored Chart.js) · `AGENTS.md` · `run.sh`.
|
|
521
544
|
|
|
@@ -547,8 +570,8 @@ What sharing sends: session titles (often the start of a prompt), project and br
|
|
|
547
570
|
log file paths, models, token counts, costs and times. Full prompts, replies and file
|
|
548
571
|
contents are never sent. Sharing opens one read-only port (7879) that answers only to the
|
|
549
572
|
pairing code. The dashboard itself stays on `127.0.0.1`. The connection is **not
|
|
550
|
-
encrypted**, so share only on a network you trust. The
|
|
551
|
-
(instruction files, installed skills, MCP servers)
|
|
573
|
+
encrypted**, so share only on a network you trust. The Storage tab and setup inventories
|
|
574
|
+
(instruction files, installed skills, MCP servers) still describe only
|
|
552
575
|
the computer you're looking at. `.peers.json` and `.peers/` are gitignored.
|
|
553
576
|
|
|
554
577
|
**If it can't connect**, the error says which of these it is:
|