agenttelemetry-app 2.0.0.post1__tar.gz → 2.2.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.
Files changed (73) hide show
  1. {agenttelemetry_app-2.0.0.post1 → agenttelemetry_app-2.2.0}/MANIFEST.in +11 -11
  2. {agenttelemetry_app-2.0.0.post1/agenttelemetry_app.egg-info → agenttelemetry_app-2.2.0}/PKG-INFO +73 -53
  3. {agenttelemetry_app-2.0.0.post1 → agenttelemetry_app-2.2.0}/README.md +72 -52
  4. {agenttelemetry_app-2.0.0.post1 → agenttelemetry_app-2.2.0}/__init__.py +1 -1
  5. {agenttelemetry_app-2.0.0.post1 → agenttelemetry_app-2.2.0}/accounts.py +1 -1
  6. {agenttelemetry_app-2.0.0.post1 → agenttelemetry_app-2.2.0/agenttelemetry_app.egg-info}/PKG-INFO +73 -53
  7. {agenttelemetry_app-2.0.0.post1 → agenttelemetry_app-2.2.0}/agenttelemetry_app.egg-info/SOURCES.txt +17 -19
  8. agenttelemetry_app-2.2.0/antigravity.py +1291 -0
  9. agenttelemetry_app-2.2.0/cursor_data.py +966 -0
  10. {agenttelemetry_app-2.0.0.post1 → agenttelemetry_app-2.2.0}/dashboard.py +1050 -148
  11. agenttelemetry_app-2.2.0/docs/antigravity.md +79 -0
  12. agenttelemetry_app-2.2.0/docs/native-activity.md +68 -0
  13. {agenttelemetry_app-2.0.0.post1 → agenttelemetry_app-2.2.0}/docs/python-package.md +3 -4
  14. agenttelemetry_app-2.2.0/docs/release-notes.md +33 -0
  15. {agenttelemetry_app-2.0.0.post1 → agenttelemetry_app-2.2.0}/editor_snapshot.py +179 -5
  16. {agenttelemetry_app-2.0.0.post1 → agenttelemetry_app-2.2.0}/index.html +15 -14
  17. {agenttelemetry_app-2.0.0.post1 → agenttelemetry_app-2.2.0}/native.py +123 -0
  18. agenttelemetry_app-2.2.0/native_activity.py +351 -0
  19. {agenttelemetry_app-2.0.0.post1 → agenttelemetry_app-2.2.0}/parser.py +1664 -269
  20. {agenttelemetry_app-2.0.0.post1 → agenttelemetry_app-2.2.0}/pyproject.toml +4 -3
  21. agenttelemetry_app-2.2.0/release_notes.py +727 -0
  22. {agenttelemetry_app-2.0.0.post1 → agenttelemetry_app-2.2.0}/session_names.py +19 -2
  23. agenttelemetry_app-2.2.0/session_timeline.py +932 -0
  24. {agenttelemetry_app-2.0.0.post1 → agenttelemetry_app-2.2.0}/setup.py +4 -7
  25. {agenttelemetry_app-2.0.0.post1 → agenttelemetry_app-2.2.0}/static/app.css +72 -43
  26. {agenttelemetry_app-2.0.0.post1 → agenttelemetry_app-2.2.0}/static/core.js +103 -6
  27. {agenttelemetry_app-2.0.0.post1 → agenttelemetry_app-2.2.0}/static/maintenance.js +8 -1
  28. agenttelemetry_app-2.2.0/static/release-notes.js +354 -0
  29. agenttelemetry_app-2.2.0/static/timeline.js +176 -0
  30. agenttelemetry_app-2.2.0/static/tool-icons/LICENSE.antigravity.txt +17 -0
  31. {agenttelemetry_app-2.0.0.post1 → agenttelemetry_app-2.2.0}/static/tool-icons/README.md +3 -1
  32. agenttelemetry_app-2.2.0/static/tool-icons/antigravity.svg +3 -0
  33. {agenttelemetry_app-2.0.0.post1 → agenttelemetry_app-2.2.0}/static/views.js +342 -734
  34. agenttelemetry_app-2.0.0.post1/docs/mcp.md +0 -78
  35. agenttelemetry_app-2.0.0.post1/mcp_access.py +0 -338
  36. agenttelemetry_app-2.0.0.post1/mcp_backend.py +0 -549
  37. agenttelemetry_app-2.0.0.post1/mcp_protocol.py +0 -97
  38. agenttelemetry_app-2.0.0.post1/mcp_server.py +0 -678
  39. agenttelemetry_app-2.0.0.post1/mcp_tools.py +0 -234
  40. agenttelemetry_app-2.0.0.post1/session_timeline.py +0 -409
  41. agenttelemetry_app-2.0.0.post1/static/insights.js +0 -115
  42. agenttelemetry_app-2.0.0.post1/static/mcp.js +0 -281
  43. agenttelemetry_app-2.0.0.post1/static/timeline.js +0 -111
  44. agenttelemetry_app-2.0.0.post1/telemetry_insights.py +0 -1754
  45. agenttelemetry_app-2.0.0.post1/telemetry_query.py +0 -1359
  46. {agenttelemetry_app-2.0.0.post1 → agenttelemetry_app-2.2.0}/LICENSE +0 -0
  47. {agenttelemetry_app-2.0.0.post1 → agenttelemetry_app-2.2.0}/__main__.py +0 -0
  48. {agenttelemetry_app-2.0.0.post1 → agenttelemetry_app-2.2.0}/agenttelemetry_app.egg-info/dependency_links.txt +0 -0
  49. {agenttelemetry_app-2.0.0.post1 → agenttelemetry_app-2.2.0}/agenttelemetry_app.egg-info/entry_points.txt +0 -0
  50. {agenttelemetry_app-2.0.0.post1 → agenttelemetry_app-2.2.0}/agenttelemetry_app.egg-info/top_level.txt +0 -0
  51. {agenttelemetry_app-2.0.0.post1 → agenttelemetry_app-2.2.0}/chart.umd.min.js +0 -0
  52. {agenttelemetry_app-2.0.0.post1 → agenttelemetry_app-2.2.0}/cli.py +0 -0
  53. {agenttelemetry_app-2.0.0.post1 → agenttelemetry_app-2.2.0}/diagnostics.py +0 -0
  54. {agenttelemetry_app-2.0.0.post1 → agenttelemetry_app-2.2.0}/ledger_backups.py +0 -0
  55. {agenttelemetry_app-2.0.0.post1 → agenttelemetry_app-2.2.0}/local_servers.py +0 -0
  56. {agenttelemetry_app-2.0.0.post1 → agenttelemetry_app-2.2.0}/local_servers_windows.py +0 -0
  57. {agenttelemetry_app-2.0.0.post1 → agenttelemetry_app-2.2.0}/manifest.json +0 -0
  58. {agenttelemetry_app-2.0.0.post1 → agenttelemetry_app-2.2.0}/setup.cfg +0 -0
  59. {agenttelemetry_app-2.0.0.post1 → agenttelemetry_app-2.2.0}/static/apple-touch-icon.png +0 -0
  60. {agenttelemetry_app-2.0.0.post1 → agenttelemetry_app-2.2.0}/static/charts.js +0 -0
  61. {agenttelemetry_app-2.0.0.post1 → agenttelemetry_app-2.2.0}/static/icon-192.png +0 -0
  62. {agenttelemetry_app-2.0.0.post1 → agenttelemetry_app-2.2.0}/static/icon-512.png +0 -0
  63. {agenttelemetry_app-2.0.0.post1 → agenttelemetry_app-2.2.0}/static/tool-icons/LICENSE.hermes.txt +0 -0
  64. {agenttelemetry_app-2.0.0.post1 → agenttelemetry_app-2.2.0}/static/tool-icons/LICENSE.openclaw.txt +0 -0
  65. {agenttelemetry_app-2.0.0.post1 → agenttelemetry_app-2.2.0}/static/tool-icons/LICENSE.simple-icons.txt +0 -0
  66. {agenttelemetry_app-2.0.0.post1 → agenttelemetry_app-2.2.0}/static/tool-icons/claude.svg +0 -0
  67. {agenttelemetry_app-2.0.0.post1 → agenttelemetry_app-2.2.0}/static/tool-icons/copilot.svg +0 -0
  68. {agenttelemetry_app-2.0.0.post1 → agenttelemetry_app-2.2.0}/static/tool-icons/cursor.svg +0 -0
  69. {agenttelemetry_app-2.0.0.post1 → agenttelemetry_app-2.2.0}/static/tool-icons/hermes.svg +0 -0
  70. {agenttelemetry_app-2.0.0.post1 → agenttelemetry_app-2.2.0}/static/tool-icons/openai.svg +0 -0
  71. {agenttelemetry_app-2.0.0.post1 → agenttelemetry_app-2.2.0}/static/tool-icons/openclaw.svg +0 -0
  72. {agenttelemetry_app-2.0.0.post1 → agenttelemetry_app-2.2.0}/static/tool-icons/opencode.svg +0 -0
  73. {agenttelemetry_app-2.0.0.post1 → agenttelemetry_app-2.2.0}/sw.js +0 -0
@@ -10,40 +10,40 @@ include editor_snapshot.py
10
10
  include ledger_backups.py
11
11
  include diagnostics.py
12
12
  include session_timeline.py
13
+ include native_activity.py
13
14
  include local_servers.py
14
15
  include local_servers_windows.py
15
16
  include parser.py
17
+ include antigravity.py
18
+ include cursor_data.py
19
+ include release_notes.py
16
20
  include native.py
17
21
  include accounts.py
18
22
  include session_names.py
19
- include mcp_access.py
20
- include mcp_backend.py
21
- include mcp_protocol.py
22
- include mcp_server.py
23
- include mcp_tools.py
24
- include telemetry_query.py
25
- include telemetry_insights.py
26
23
  include index.html
27
24
  include chart.umd.min.js
28
25
  include manifest.json
29
26
  include sw.js
30
27
  include docs/python-package.md
31
- include docs/mcp.md
28
+ include docs/release-notes.md
29
+ include docs/native-activity.md
30
+ include docs/antigravity.md
32
31
  include static/app.css
33
32
  include static/apple-touch-icon.png
34
33
  include static/charts.js
35
34
  include static/core.js
36
35
  include static/icon-192.png
37
36
  include static/icon-512.png
38
- include static/insights.js
39
37
  include static/maintenance.js
40
- include static/mcp.js
38
+ include static/release-notes.js
41
39
  include static/timeline.js
42
40
  include static/tool-icons/LICENSE.hermes.txt
41
+ include static/tool-icons/LICENSE.antigravity.txt
43
42
  include static/tool-icons/LICENSE.openclaw.txt
44
43
  include static/tool-icons/LICENSE.simple-icons.txt
45
44
  include static/tool-icons/README.md
46
45
  include static/tool-icons/claude.svg
46
+ include static/tool-icons/antigravity.svg
47
47
  include static/tool-icons/copilot.svg
48
48
  include static/tool-icons/cursor.svg
49
49
  include static/tool-icons/hermes.svg
@@ -62,4 +62,4 @@ prune dist
62
62
  prune .usage_cache.json
63
63
  prune .usage-backups
64
64
  prune .peers
65
- global-exclude .usage_cache.json .usage_cache.json.tmp .peers.json server.log *.py[cod]
65
+ global-exclude .usage_cache.json .usage_cache.json.tmp .peers.json server.log project-names.json release-notes.json release-notes.lock .release-notes-*.tmp *.py[cod]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agenttelemetry-app
3
- Version: 2.0.0.post1
3
+ Version: 2.2.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,25 +29,33 @@ 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, and suggestions for spending less, drawn from your own numbers.
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), return requested
36
- analytics to an enabled [local MCP client](docs/mcp.md) (which may forward tool results to
37
- its model provider), contact a provider after a confirmed **Read once** account lookup, or
38
- fetch update metadata after you click **Check for updates**. No account or API key is needed
35
+ share selected exports with [paired devices](#your-devices-optional), contact a provider
36
+ after a confirmed **Read once** account lookup, or
37
+ fetch GitHub update and release-note metadata after you click **Check for updates** or
38
+ **Load notes**. Cached release notes can be shown offline after an upgrade. No account or API key is needed
39
39
  for the dashboard; it has no runtime dependencies beyond Python's standard library and a
40
40
  vendored copy of Chart.js.
41
41
 
42
- 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/)
43
49
 
44
50
  ## Download the app
45
51
 
46
- | Platform | Download |
52
+ Choose the installer for your platform from the release's **Assets** section.
53
+
54
+ | Platform | Release downloads |
47
55
  | --- | --- |
48
- | macOS 13+ · Apple Silicon | **[Download DMG](https://github.com/uttamdeb/agent-telemetry/releases/download/v2.0.0/AgentTelemetry-2.0.0-macos-arm64.dmg)** |
49
- | macOS 13+ · Intel | **[Download DMG](https://github.com/uttamdeb/agent-telemetry/releases/download/v2.0.0/AgentTelemetry-2.0.0-macos-x86_64.dmg)** |
50
- | Windows 10/11 · x64 | **[Download EXE installer](https://github.com/uttamdeb/agent-telemetry/releases/download/v2.0.0/AgentTelemetry-2.0.0-windows-x64-setup.exe)** |
56
+ | macOS 13+ · Apple Silicon | **[Find the Apple Silicon DMG](https://github.com/uttamdeb/agent-telemetry/releases/latest)** |
57
+ | macOS 13+ · Intel | **[Find the Intel DMG](https://github.com/uttamdeb/agent-telemetry/releases/latest)** |
58
+ | Windows 10/11 · x64 | **[Find the Windows EXE installer](https://github.com/uttamdeb/agent-telemetry/releases/latest)** |
51
59
 
52
60
  **Python is bundled — no terminal setup needed.** macOS: open the DMG, drag the app to
53
61
  Applications and open it. Windows: run the installer and open AgentTelemetry from Start.
@@ -60,8 +68,11 @@ starting monitoring. On macOS, opening the app manually also lets you import fir
60
68
 
61
69
  These builds are unsigned/unnotarized. macOS may require **System Settings → Privacy &
62
70
  Security → Open Anyway**; Windows SmartScreen may require **More info → Run anyway**.
71
+ [Product and install page](https://agenttelemetry-app.vercel.app/) ·
63
72
  [All releases](https://github.com/uttamdeb/agent-telemetry/releases) ·
64
- [SHA-256 checksums](https://github.com/uttamdeb/agent-telemetry/releases/download/v2.0.0/SHA256SUMS.txt)
73
+ [What's new in 2.2.0](docs/releases/v2.2.0.md) ·
74
+ [SHA-256 checksums in release assets](https://github.com/uttamdeb/agent-telemetry/releases/latest) ·
75
+ [PyPI package 2.2.0](https://pypi.org/project/agenttelemetry-app/2.2.0/)
65
76
 
66
77
  ---
67
78
 
@@ -122,7 +133,10 @@ The [AgentTelemetry editor extension](vscode/README.md) brings local usage into
122
133
  VS Code compatible desktop editors, including Cursor and Antigravity IDE. Its
123
134
  Agent desk uses the app's icon and light/dark theme, with workspace totals,
124
135
  recorded main-agent/subagent relationships, and an in-memory usage baseline.
125
- Install the universal VSIX following the [extension guide](vscode/README.md#install-a-vsix).
136
+ Install from the [Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=agenttelemetry-team.agenttelemetry)
137
+ in VS Code, from [Open VSX](https://open-vsx.org/extension/agenttelemetry-team/agenttelemetry)
138
+ in Cursor and compatible editors, or use the universal VSIX following the
139
+ [extension guide](vscode/README.md#install-a-vsix).
126
140
 
127
141
  ## Recognizing subagent sessions
128
142
 
@@ -160,12 +174,14 @@ estimated from tokens or combined across devices. Session details show recorded
160
174
  creator/account IDs with their attribution limits. Account metadata is private to the
161
175
  source device. See [setup, research and limitations](docs/account-limits.md).
162
176
 
163
- ## Local servers (macOS)
177
+ ## Local servers (macOS and Windows)
164
178
 
165
- The **Local servers** tab and menu bar can list local project listeners, pin them,
166
- and save an explicit launch command for Start and Restart. Process actions ask for
167
- confirmation. They require a ready macOS backend; Windows and Linux show the support
168
- limitation. Commands stay on this machine and are never included in device sharing.
179
+ The **Local servers** dashboard tab can list local project listeners, pin them,
180
+ and save an explicit launch command for Start and Restart. macOS can also show pinned
181
+ controls in the menu bar; the Windows tray opens the dashboard controls. Process actions
182
+ ask for confirmation. Lifecycle controls are supported on macOS and Windows; Linux does
183
+ not yet support this feature. Windows asks for a working folder and uses ownership-checked
184
+ process controls. Commands stay on this machine and are never included in device sharing.
169
185
  Running a saved command gives it your account's file and network access.
170
186
  See [behavior, privacy and limitations](docs/local-servers.md).
171
187
 
@@ -232,22 +248,15 @@ retain one serialized snapshot per display tick, in memory only; the ledger is u
232
248
  as all writes. `POST /api/shutdown` additionally requires the owning Windows client's
233
249
  per-process control token; a normal standalone dashboard cannot be stopped by that route.
234
250
 
235
- ## Local MCP access (optional)
236
-
237
- AgentTelemetry provides eight read-only MCP tools for usage, comparisons, supported insights,
238
- session summaries and timelines, data health, the telemetry catalog and saved subscription
239
- limits. MCP access is off by default. Enable it in Settings and confirm each scope. The local
240
- bridge requires an already-running dashboard and returns data only when the configured MCP
241
- client requests it. A cloud-backed client may send tool results to its provider; review that
242
- client's data-handling settings before enabling access. Project/device names and usage from
243
- connected devices require their own opt-in scopes. The MCP bridge never refreshes accounts,
244
- returns prompt text, or edits client configuration. See [MCP tools, setup and privacy
245
- limits](docs/mcp.md).
246
-
247
251
  > `--rebuild` deletes the cache, and with it every session whose log has since been deleted
248
252
  > from disk (see [Storage](#storage--what-these-logs-cost-you-in-disk)). Copy
249
253
  > `.usage_cache.json` somewhere safe first if you've cleaned up old logs.
250
254
 
255
+ Deleting a session inside a tool doesn't remove it from your totals either. If OpenCode,
256
+ Hermes or OpenClaw delete a session from their database, the dashboard keeps the usage it
257
+ already counted and marks that session as deleted. The same applies to turns you undo in
258
+ OpenCode and to a Claude or Copilot log that gets shorter.
259
+
251
260
  **Requirements:** Python 3.8+ on **macOS, Linux or Windows**. On Windows run
252
261
  `python dashboard.py` (or `run.cmd`); on macOS/Linux `python3 dashboard.py` (or `./run.sh`).
253
262
 
@@ -271,21 +280,33 @@ instead of cloning, delete `.usage_cache.json` first — that file is your perso
271
280
 
272
281
  ## Data sources
273
282
 
283
+ **AgentTelemetry Pulsar** is the engine that reads these sources. It finds each tool's
284
+ local logs, picks the usage signal out of them and turns every tool's format into the one
285
+ shared usage shape the dashboard shows. It runs on your machine, and its code lives in
286
+ `parser.py`.
287
+
274
288
  | Tool | Where it reads | Tokens |
275
289
  |---|---|---|
276
290
  | **Claude Code** | `~/.claude/projects/**/*.jsonl` | exact (in/out/cache read+write, 5m/1h tiers) |
277
291
  | **Claude Desktop** (agent mode) | `Claude/local-agent-mode-sessions/**` under App Support / `%APPDATA%` / `~/.config` | exact |
278
- | **Codex** | `~/.codex/sessions/**`, `~/.codex/archived_sessions/**` | exact (in/cached/out/reasoning); subagents are identified and labelled |
292
+ | **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 |
279
293
  | **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. |
280
- | **Cursor** (native AI) | `Cursor/User/globalStorage/state.vscdb` under App Support / `%APPDATA%` / `~/.config` | partial — model, mode, timestamps, tool calls and AI-line stats are exact; tokens are on only ~2% of messages |
294
+ | **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 |
295
+ | **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 |
281
296
  | **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 |
282
297
  | **Hermes Agent** | `~/.hermes/state.db` (or `$HERMES_HOME`, `%LOCALAPPDATA%\hermes`) | exact (in/out/cache/reasoning, per model) |
283
298
  | **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+ |
284
299
 
285
300
  A tool you don't use simply contributes nothing. **Attribution is by tool, not by model** —
286
- a Claude or GPT model used *inside* Copilot/Cursor/OpenCode/Hermes/OpenClaw counts under that tool, and the
301
+ a Claude, Gemini, or GPT model used *inside* Copilot/Cursor/Antigravity/OpenCode/Hermes/OpenClaw counts under that tool, and the
287
302
  Models table lists each `model × tool` row separately.
288
303
 
304
+ Antigravity's supported SQLite schema, duplicate-row handling, recorded checkpoint detail,
305
+ and format limits are documented in [Google Antigravity support](docs/antigravity.md).
306
+
307
+ Cursor's local conversation metadata is documented in [Cursor support](docs/cursor.md),
308
+ including its model/token coverage states, workspace associations, subagents, and limits.
309
+
289
310
  Copilot's newer SDK-based agent sessions use a different store from older Copilot Chat.
290
311
  AgentTelemetry joins their event history to VS Code's saved per-turn usage using native
291
312
  session and event IDs. Custom endpoint models, including Cloudflare GLM 5.3, still count
@@ -377,14 +398,6 @@ a display-name override. See [subagent name behavior](docs/subagent-sessions.md)
377
398
  Tool/provider icons are bundled locally, including the OpenAI mark for Codex; no remote
378
399
  logo requests occur. Their sources and licenses are in `static/tool-icons/README.md`.
379
400
 
380
- **Optimize** — suggestions derived from your own logs, ranked by what they'd save: sessions
381
- re-reading a very large context, thinking share, tool-heavy sessions that never delegated,
382
- cache written but never read, a costly model doing light work, what each **Skill** costs,
383
- edits that needed a retry, oversized **CLAUDE.md / AGENTS.md**, sessions that open heavier
384
- than your leanest ones, wasted file reads, installed skills and agents you never use, and
385
- MCP servers you never call, barely use, or load everywhere but use in one project. Nothing is shown unless
386
- your data supports it, and because the estimates overlap they are never summed.
387
-
388
401
  **Storage** — see below.
389
402
 
390
403
  **Keyboard** — `1`/`7`/`3`/`9`/`a` ranges, `m` month-to-date, `,` / `.` previous / next
@@ -435,9 +448,12 @@ loss of the drive. Use `python tests/preview_features.py --port 8896` for an iso
435
448
  preview with invented data.
436
449
 
437
450
  **Version and updates** — the sidebar footer shows the running version. *Check for updates*
438
- asks GitHub (the only time the dashboard goes online, and only when you click); *Update*
439
- fast-forwards your checkout and restarts the server. It refuses if you have local edits or
440
- commits that aren't on GitHub. A copy that isn't a git clone has no update button.
451
+ asks GitHub for the latest stable release and its tagged notes only when you click; notes
452
+ already cached on this machine can be shown offline. A first open records the current version
453
+ as the baseline. Later upgrades can show their notes once, after which the display is
454
+ acknowledged. *Update* fast-forwards a source checkout and restarts the server; it refuses
455
+ local edits and commits that aren't upstream. Packaged apps link to the official release for
456
+ manual installation. See [release notes behavior](docs/release-notes.md).
441
457
 
442
458
  ---
443
459
 
@@ -472,17 +488,21 @@ dollars**, so cost is always derived. Rates live in `parser.py → PRICING` as
472
488
  above 100K. The threshold includes cached input and applies to each request.
473
489
  Available Claude logs backfill this pricing detail on a normal restart; token and
474
490
  message counts stay unchanged. Older archives/peers and other tools without that
475
- detail use the short-prompt rate. Optimize model substitutions conservatively use
476
- the higher tier when the target request size is unknown.
491
+ detail use the short-prompt rate.
477
492
  - **Price changes are date-aware.** When a vendor cuts a price (OpenAI's GPT-5.6 cuts of
478
493
  2026-07-30 and 2026-08-21), usage from before the change keeps the rate it had then —
479
494
  see `parser.py → PRICE_HISTORY`.
480
495
  - **These are API-equivalent values.** If you're on a subscription (Claude Max/Pro, Codex,
481
496
  Copilot), you don't pay per token — the $ is "what this would cost at API rates."
482
- - **Cursor** rarely logs token counts, and **older Copilot chats** have none, so their tokens
483
- (and thus $) are rough. Current Copilot builds log real per-request tokens, which are used.
484
- Copilot's honest metric is **request count** and its **premium-request** total (both shown);
485
- Cursor's is **messages, tool calls and AI lines kept** (also shown).
497
+ - **Cursor** exposes explicit input/output token receipts for some messages; missing and
498
+ placeholder values are unavailable, and usage coverage can be partial. Cache and reasoning
499
+ values remain unavailable unless recorded. Overview shows observed Cursor prompts, replies,
500
+ and tool calls separately when they have no token/cost coverage. It does not estimate tokens
501
+ from text or context meters, infer subscription charges, or count metadata as tokens. The
502
+ **Exact tokens only** filter omits Cursor because local token coverage is incomplete. See
503
+ [Cursor support](docs/cursor.md). **Older Copilot chats** may have no token data; current
504
+ Copilot builds log real per-request tokens. Copilot's honest metric is **request count** and
505
+ its **premium-request** total (both shown); Cursor also exposes **AI lines kept**.
486
506
  - **Billing details that change the price are applied**: prompt-cache writes at their own
487
507
  rate (Claude and GPT-5.6/GPT-6), Claude fast mode, US-only inference (1.1x) and web
488
508
  searches ($10/1K). A forked or subagent Codex thread's replay of its parent is skipped,
@@ -527,7 +547,7 @@ and extend this from that file).
527
547
 
528
548
  ## Files
529
549
 
530
- `dashboard.py` (server + cache + cost + `/api/storage`) · `parser.py` (log parsers + pricing) ·
550
+ `dashboard.py` (server + cache + cost + `/api/storage`) · `parser.py` (AgentTelemetry Pulsar: log parsers + pricing) ·
531
551
  `index.html` (shell) · `static/app.css` · `static/core.js` · `static/charts.js` ·
532
552
  `static/views.js` · `chart.umd.min.js` (vendored Chart.js) · `AGENTS.md` · `run.sh`.
533
553
 
@@ -559,8 +579,8 @@ What sharing sends: session titles (often the start of a prompt), project and br
559
579
  log file paths, models, token counts, costs and times. Full prompts, replies and file
560
580
  contents are never sent. Sharing opens one read-only port (7879) that answers only to the
561
581
  pairing code. The dashboard itself stays on `127.0.0.1`. The connection is **not
562
- encrypted**, so share only on a network you trust. The setup checks on the Optimize tab
563
- (instruction files, installed skills, MCP servers) and the Storage tab still describe only
582
+ encrypted**, so share only on a network you trust. The Storage tab and setup inventories
583
+ (instruction files, installed skills, MCP servers) still describe only
564
584
  the computer you're looking at. `.peers.json` and `.peers/` are gitignored.
565
585
 
566
586
  **If it can't connect**, the error says which of these it is:
@@ -5,25 +5,33 @@ 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, and suggestions for spending less, drawn from your own numbers.
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), return requested
12
- analytics to an enabled [local MCP client](docs/mcp.md) (which may forward tool results to
13
- its model provider), contact a provider after a confirmed **Read once** account lookup, or
14
- fetch update metadata after you click **Check for updates**. No account or API key is needed
11
+ share selected exports with [paired devices](#your-devices-optional), contact a provider
12
+ after a confirmed **Read once** account lookup, or
13
+ fetch GitHub update and release-note metadata after you click **Check for updates** or
14
+ **Load notes**. Cached release notes can be shown offline after an upgrade. No account or API key is needed
15
15
  for the dashboard; it has no runtime dependencies beyond Python's standard library and a
16
16
  vendored copy of Chart.js.
17
17
 
18
- 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/)
19
25
 
20
26
  ## Download the app
21
27
 
22
- | Platform | Download |
28
+ Choose the installer for your platform from the release's **Assets** section.
29
+
30
+ | Platform | Release downloads |
23
31
  | --- | --- |
24
- | macOS 13+ · Apple Silicon | **[Download DMG](https://github.com/uttamdeb/agent-telemetry/releases/download/v2.0.0/AgentTelemetry-2.0.0-macos-arm64.dmg)** |
25
- | macOS 13+ · Intel | **[Download DMG](https://github.com/uttamdeb/agent-telemetry/releases/download/v2.0.0/AgentTelemetry-2.0.0-macos-x86_64.dmg)** |
26
- | Windows 10/11 · x64 | **[Download EXE installer](https://github.com/uttamdeb/agent-telemetry/releases/download/v2.0.0/AgentTelemetry-2.0.0-windows-x64-setup.exe)** |
32
+ | macOS 13+ · Apple Silicon | **[Find the Apple Silicon DMG](https://github.com/uttamdeb/agent-telemetry/releases/latest)** |
33
+ | macOS 13+ · Intel | **[Find the Intel DMG](https://github.com/uttamdeb/agent-telemetry/releases/latest)** |
34
+ | Windows 10/11 · x64 | **[Find the Windows EXE installer](https://github.com/uttamdeb/agent-telemetry/releases/latest)** |
27
35
 
28
36
  **Python is bundled — no terminal setup needed.** macOS: open the DMG, drag the app to
29
37
  Applications and open it. Windows: run the installer and open AgentTelemetry from Start.
@@ -36,8 +44,11 @@ starting monitoring. On macOS, opening the app manually also lets you import fir
36
44
 
37
45
  These builds are unsigned/unnotarized. macOS may require **System Settings → Privacy &
38
46
  Security → Open Anyway**; Windows SmartScreen may require **More info → Run anyway**.
47
+ [Product and install page](https://agenttelemetry-app.vercel.app/) ·
39
48
  [All releases](https://github.com/uttamdeb/agent-telemetry/releases) ·
40
- [SHA-256 checksums](https://github.com/uttamdeb/agent-telemetry/releases/download/v2.0.0/SHA256SUMS.txt)
49
+ [What's new in 2.2.0](docs/releases/v2.2.0.md) ·
50
+ [SHA-256 checksums in release assets](https://github.com/uttamdeb/agent-telemetry/releases/latest) ·
51
+ [PyPI package 2.2.0](https://pypi.org/project/agenttelemetry-app/2.2.0/)
41
52
 
42
53
  ---
43
54
 
@@ -98,7 +109,10 @@ The [AgentTelemetry editor extension](vscode/README.md) brings local usage into
98
109
  VS Code compatible desktop editors, including Cursor and Antigravity IDE. Its
99
110
  Agent desk uses the app's icon and light/dark theme, with workspace totals,
100
111
  recorded main-agent/subagent relationships, and an in-memory usage baseline.
101
- Install the universal VSIX following the [extension guide](vscode/README.md#install-a-vsix).
112
+ Install from the [Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=agenttelemetry-team.agenttelemetry)
113
+ in VS Code, from [Open VSX](https://open-vsx.org/extension/agenttelemetry-team/agenttelemetry)
114
+ in Cursor and compatible editors, or use the universal VSIX following the
115
+ [extension guide](vscode/README.md#install-a-vsix).
102
116
 
103
117
  ## Recognizing subagent sessions
104
118
 
@@ -136,12 +150,14 @@ estimated from tokens or combined across devices. Session details show recorded
136
150
  creator/account IDs with their attribution limits. Account metadata is private to the
137
151
  source device. See [setup, research and limitations](docs/account-limits.md).
138
152
 
139
- ## Local servers (macOS)
153
+ ## Local servers (macOS and Windows)
140
154
 
141
- The **Local servers** tab and menu bar can list local project listeners, pin them,
142
- and save an explicit launch command for Start and Restart. Process actions ask for
143
- confirmation. They require a ready macOS backend; Windows and Linux show the support
144
- limitation. Commands stay on this machine and are never included in device sharing.
155
+ The **Local servers** dashboard tab can list local project listeners, pin them,
156
+ and save an explicit launch command for Start and Restart. macOS can also show pinned
157
+ controls in the menu bar; the Windows tray opens the dashboard controls. Process actions
158
+ ask for confirmation. Lifecycle controls are supported on macOS and Windows; Linux does
159
+ not yet support this feature. Windows asks for a working folder and uses ownership-checked
160
+ process controls. Commands stay on this machine and are never included in device sharing.
145
161
  Running a saved command gives it your account's file and network access.
146
162
  See [behavior, privacy and limitations](docs/local-servers.md).
147
163
 
@@ -208,22 +224,15 @@ retain one serialized snapshot per display tick, in memory only; the ledger is u
208
224
  as all writes. `POST /api/shutdown` additionally requires the owning Windows client's
209
225
  per-process control token; a normal standalone dashboard cannot be stopped by that route.
210
226
 
211
- ## Local MCP access (optional)
212
-
213
- AgentTelemetry provides eight read-only MCP tools for usage, comparisons, supported insights,
214
- session summaries and timelines, data health, the telemetry catalog and saved subscription
215
- limits. MCP access is off by default. Enable it in Settings and confirm each scope. The local
216
- bridge requires an already-running dashboard and returns data only when the configured MCP
217
- client requests it. A cloud-backed client may send tool results to its provider; review that
218
- client's data-handling settings before enabling access. Project/device names and usage from
219
- connected devices require their own opt-in scopes. The MCP bridge never refreshes accounts,
220
- returns prompt text, or edits client configuration. See [MCP tools, setup and privacy
221
- limits](docs/mcp.md).
222
-
223
227
  > `--rebuild` deletes the cache, and with it every session whose log has since been deleted
224
228
  > from disk (see [Storage](#storage--what-these-logs-cost-you-in-disk)). Copy
225
229
  > `.usage_cache.json` somewhere safe first if you've cleaned up old logs.
226
230
 
231
+ Deleting a session inside a tool doesn't remove it from your totals either. If OpenCode,
232
+ Hermes or OpenClaw delete a session from their database, the dashboard keeps the usage it
233
+ already counted and marks that session as deleted. The same applies to turns you undo in
234
+ OpenCode and to a Claude or Copilot log that gets shorter.
235
+
227
236
  **Requirements:** Python 3.8+ on **macOS, Linux or Windows**. On Windows run
228
237
  `python dashboard.py` (or `run.cmd`); on macOS/Linux `python3 dashboard.py` (or `./run.sh`).
229
238
 
@@ -247,21 +256,33 @@ instead of cloning, delete `.usage_cache.json` first — that file is your perso
247
256
 
248
257
  ## Data sources
249
258
 
259
+ **AgentTelemetry Pulsar** is the engine that reads these sources. It finds each tool's
260
+ local logs, picks the usage signal out of them and turns every tool's format into the one
261
+ shared usage shape the dashboard shows. It runs on your machine, and its code lives in
262
+ `parser.py`.
263
+
250
264
  | Tool | Where it reads | Tokens |
251
265
  |---|---|---|
252
266
  | **Claude Code** | `~/.claude/projects/**/*.jsonl` | exact (in/out/cache read+write, 5m/1h tiers) |
253
267
  | **Claude Desktop** (agent mode) | `Claude/local-agent-mode-sessions/**` under App Support / `%APPDATA%` / `~/.config` | exact |
254
- | **Codex** | `~/.codex/sessions/**`, `~/.codex/archived_sessions/**` | exact (in/cached/out/reasoning); subagents are identified and labelled |
268
+ | **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 |
255
269
  | **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. |
256
- | **Cursor** (native AI) | `Cursor/User/globalStorage/state.vscdb` under App Support / `%APPDATA%` / `~/.config` | partial — model, mode, timestamps, tool calls and AI-line stats are exact; tokens are on only ~2% of messages |
270
+ | **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 |
271
+ | **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 |
257
272
  | **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 |
258
273
  | **Hermes Agent** | `~/.hermes/state.db` (or `$HERMES_HOME`, `%LOCALAPPDATA%\hermes`) | exact (in/out/cache/reasoning, per model) |
259
274
  | **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+ |
260
275
 
261
276
  A tool you don't use simply contributes nothing. **Attribution is by tool, not by model** —
262
- a Claude or GPT model used *inside* Copilot/Cursor/OpenCode/Hermes/OpenClaw counts under that tool, and the
277
+ a Claude, Gemini, or GPT model used *inside* Copilot/Cursor/Antigravity/OpenCode/Hermes/OpenClaw counts under that tool, and the
263
278
  Models table lists each `model × tool` row separately.
264
279
 
280
+ Antigravity's supported SQLite schema, duplicate-row handling, recorded checkpoint detail,
281
+ and format limits are documented in [Google Antigravity support](docs/antigravity.md).
282
+
283
+ Cursor's local conversation metadata is documented in [Cursor support](docs/cursor.md),
284
+ including its model/token coverage states, workspace associations, subagents, and limits.
285
+
265
286
  Copilot's newer SDK-based agent sessions use a different store from older Copilot Chat.
266
287
  AgentTelemetry joins their event history to VS Code's saved per-turn usage using native
267
288
  session and event IDs. Custom endpoint models, including Cloudflare GLM 5.3, still count
@@ -353,14 +374,6 @@ a display-name override. See [subagent name behavior](docs/subagent-sessions.md)
353
374
  Tool/provider icons are bundled locally, including the OpenAI mark for Codex; no remote
354
375
  logo requests occur. Their sources and licenses are in `static/tool-icons/README.md`.
355
376
 
356
- **Optimize** — suggestions derived from your own logs, ranked by what they'd save: sessions
357
- re-reading a very large context, thinking share, tool-heavy sessions that never delegated,
358
- cache written but never read, a costly model doing light work, what each **Skill** costs,
359
- edits that needed a retry, oversized **CLAUDE.md / AGENTS.md**, sessions that open heavier
360
- than your leanest ones, wasted file reads, installed skills and agents you never use, and
361
- MCP servers you never call, barely use, or load everywhere but use in one project. Nothing is shown unless
362
- your data supports it, and because the estimates overlap they are never summed.
363
-
364
377
  **Storage** — see below.
365
378
 
366
379
  **Keyboard** — `1`/`7`/`3`/`9`/`a` ranges, `m` month-to-date, `,` / `.` previous / next
@@ -411,9 +424,12 @@ loss of the drive. Use `python tests/preview_features.py --port 8896` for an iso
411
424
  preview with invented data.
412
425
 
413
426
  **Version and updates** — the sidebar footer shows the running version. *Check for updates*
414
- asks GitHub (the only time the dashboard goes online, and only when you click); *Update*
415
- fast-forwards your checkout and restarts the server. It refuses if you have local edits or
416
- commits that aren't on GitHub. A copy that isn't a git clone has no update button.
427
+ asks GitHub for the latest stable release and its tagged notes only when you click; notes
428
+ already cached on this machine can be shown offline. A first open records the current version
429
+ as the baseline. Later upgrades can show their notes once, after which the display is
430
+ acknowledged. *Update* fast-forwards a source checkout and restarts the server; it refuses
431
+ local edits and commits that aren't upstream. Packaged apps link to the official release for
432
+ manual installation. See [release notes behavior](docs/release-notes.md).
417
433
 
418
434
  ---
419
435
 
@@ -448,17 +464,21 @@ dollars**, so cost is always derived. Rates live in `parser.py → PRICING` as
448
464
  above 100K. The threshold includes cached input and applies to each request.
449
465
  Available Claude logs backfill this pricing detail on a normal restart; token and
450
466
  message counts stay unchanged. Older archives/peers and other tools without that
451
- detail use the short-prompt rate. Optimize model substitutions conservatively use
452
- the higher tier when the target request size is unknown.
467
+ detail use the short-prompt rate.
453
468
  - **Price changes are date-aware.** When a vendor cuts a price (OpenAI's GPT-5.6 cuts of
454
469
  2026-07-30 and 2026-08-21), usage from before the change keeps the rate it had then —
455
470
  see `parser.py → PRICE_HISTORY`.
456
471
  - **These are API-equivalent values.** If you're on a subscription (Claude Max/Pro, Codex,
457
472
  Copilot), you don't pay per token — the $ is "what this would cost at API rates."
458
- - **Cursor** rarely logs token counts, and **older Copilot chats** have none, so their tokens
459
- (and thus $) are rough. Current Copilot builds log real per-request tokens, which are used.
460
- Copilot's honest metric is **request count** and its **premium-request** total (both shown);
461
- Cursor's is **messages, tool calls and AI lines kept** (also shown).
473
+ - **Cursor** exposes explicit input/output token receipts for some messages; missing and
474
+ placeholder values are unavailable, and usage coverage can be partial. Cache and reasoning
475
+ values remain unavailable unless recorded. Overview shows observed Cursor prompts, replies,
476
+ and tool calls separately when they have no token/cost coverage. It does not estimate tokens
477
+ from text or context meters, infer subscription charges, or count metadata as tokens. The
478
+ **Exact tokens only** filter omits Cursor because local token coverage is incomplete. See
479
+ [Cursor support](docs/cursor.md). **Older Copilot chats** may have no token data; current
480
+ Copilot builds log real per-request tokens. Copilot's honest metric is **request count** and
481
+ its **premium-request** total (both shown); Cursor also exposes **AI lines kept**.
462
482
  - **Billing details that change the price are applied**: prompt-cache writes at their own
463
483
  rate (Claude and GPT-5.6/GPT-6), Claude fast mode, US-only inference (1.1x) and web
464
484
  searches ($10/1K). A forked or subagent Codex thread's replay of its parent is skipped,
@@ -503,7 +523,7 @@ and extend this from that file).
503
523
 
504
524
  ## Files
505
525
 
506
- `dashboard.py` (server + cache + cost + `/api/storage`) · `parser.py` (log parsers + pricing) ·
526
+ `dashboard.py` (server + cache + cost + `/api/storage`) · `parser.py` (AgentTelemetry Pulsar: log parsers + pricing) ·
507
527
  `index.html` (shell) · `static/app.css` · `static/core.js` · `static/charts.js` ·
508
528
  `static/views.js` · `chart.umd.min.js` (vendored Chart.js) · `AGENTS.md` · `run.sh`.
509
529
 
@@ -535,8 +555,8 @@ What sharing sends: session titles (often the start of a prompt), project and br
535
555
  log file paths, models, token counts, costs and times. Full prompts, replies and file
536
556
  contents are never sent. Sharing opens one read-only port (7879) that answers only to the
537
557
  pairing code. The dashboard itself stays on `127.0.0.1`. The connection is **not
538
- encrypted**, so share only on a network you trust. The setup checks on the Optimize tab
539
- (instruction files, installed skills, MCP servers) and the Storage tab still describe only
558
+ encrypted**, so share only on a network you trust. The Storage tab and setup inventories
559
+ (instruction files, installed skills, MCP servers) still describe only
540
560
  the computer you're looking at. `.peers.json` and `.peers/` are gitignored.
541
561
 
542
562
  **If it can't connect**, the error says which of these it is:
@@ -1,3 +1,3 @@
1
1
  """AgentTelemetry's local dashboard package."""
2
2
 
3
- __version__ = "2.0.0"
3
+ __version__ = "2.2.0"
@@ -183,7 +183,7 @@ def _codex_read():
183
183
  if not isinstance(result, dict): raise ValueError("Codex returned an unsupported account response.")
184
184
  return result
185
185
  try:
186
- request(1, "initialize", {"clientInfo": {"name": "agent_telemetry", "title": "AgentTelemetry", "version": "2.0.0"}})
186
+ request(1, "initialize", {"clientInfo": {"name": "agent_telemetry", "title": "AgentTelemetry", "version": "2.2.0"}})
187
187
  process.stdin.write('{"method":"initialized","params":{}}\n'); process.stdin.flush()
188
188
  before = request(2, "account/read", {"refreshToken": False}).get("account")
189
189
  limits = request(3, "account/rateLimits/read", {}) if isinstance(before, dict) and before.get("type") == "chatgpt" else {}