agenttelemetry-app 2.0.0__tar.gz → 2.1.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/MANIFEST.in +70 -0
- {agenttelemetry_app-2.0.0/agenttelemetry_app.egg-info → agenttelemetry_app-2.1.0}/PKG-INFO +126 -20
- {agenttelemetry_app-2.0.0 → agenttelemetry_app-2.1.0}/README.md +125 -19
- {agenttelemetry_app-2.0.0 → agenttelemetry_app-2.1.0}/__init__.py +1 -1
- {agenttelemetry_app-2.0.0 → agenttelemetry_app-2.1.0}/accounts.py +1 -1
- {agenttelemetry_app-2.0.0 → agenttelemetry_app-2.1.0/agenttelemetry_app.egg-info}/PKG-INFO +126 -20
- {agenttelemetry_app-2.0.0 → agenttelemetry_app-2.1.0}/agenttelemetry_app.egg-info/SOURCES.txt +43 -0
- {agenttelemetry_app-2.0.0 → agenttelemetry_app-2.1.0}/cli.py +2 -4
- {agenttelemetry_app-2.0.0 → agenttelemetry_app-2.1.0}/dashboard.py +883 -70
- agenttelemetry_app-2.1.0/diagnostics.py +186 -0
- agenttelemetry_app-2.1.0/docs/mcp.md +83 -0
- agenttelemetry_app-2.1.0/docs/native-activity.md +68 -0
- {agenttelemetry_app-2.0.0 → agenttelemetry_app-2.1.0}/docs/python-package.md +20 -9
- agenttelemetry_app-2.1.0/docs/release-notes.md +33 -0
- agenttelemetry_app-2.1.0/editor_snapshot.py +385 -0
- {agenttelemetry_app-2.0.0 → agenttelemetry_app-2.1.0}/index.html +58 -3
- agenttelemetry_app-2.1.0/ledger_backups.py +365 -0
- agenttelemetry_app-2.1.0/local_servers.py +1045 -0
- agenttelemetry_app-2.1.0/local_servers_windows.py +378 -0
- agenttelemetry_app-2.1.0/mcp_access.py +338 -0
- agenttelemetry_app-2.1.0/mcp_backend.py +549 -0
- agenttelemetry_app-2.1.0/mcp_protocol.py +97 -0
- agenttelemetry_app-2.1.0/mcp_server.py +678 -0
- agenttelemetry_app-2.1.0/mcp_tools.py +234 -0
- {agenttelemetry_app-2.0.0 → agenttelemetry_app-2.1.0}/native.py +123 -0
- agenttelemetry_app-2.1.0/native_activity.py +296 -0
- {agenttelemetry_app-2.0.0 → agenttelemetry_app-2.1.0}/parser.py +352 -33
- {agenttelemetry_app-2.0.0 → agenttelemetry_app-2.1.0}/pyproject.toml +25 -8
- agenttelemetry_app-2.1.0/release_notes.py +727 -0
- {agenttelemetry_app-2.0.0 → agenttelemetry_app-2.1.0}/session_names.py +171 -6
- agenttelemetry_app-2.1.0/session_timeline.py +577 -0
- {agenttelemetry_app-2.0.0 → agenttelemetry_app-2.1.0}/setup.py +15 -0
- {agenttelemetry_app-2.0.0 → agenttelemetry_app-2.1.0}/static/app.css +210 -1
- {agenttelemetry_app-2.0.0 → agenttelemetry_app-2.1.0}/static/core.js +88 -2
- agenttelemetry_app-2.1.0/static/insights.js +115 -0
- agenttelemetry_app-2.1.0/static/maintenance.js +175 -0
- agenttelemetry_app-2.1.0/static/mcp.js +281 -0
- agenttelemetry_app-2.1.0/static/release-notes.js +354 -0
- agenttelemetry_app-2.1.0/static/timeline.js +133 -0
- {agenttelemetry_app-2.0.0 → agenttelemetry_app-2.1.0}/static/views.js +625 -74
- agenttelemetry_app-2.1.0/telemetry_insights.py +1754 -0
- agenttelemetry_app-2.1.0/telemetry_query.py +1359 -0
- agenttelemetry_app-2.0.0/MANIFEST.in +0 -28
- {agenttelemetry_app-2.0.0 → agenttelemetry_app-2.1.0}/LICENSE +0 -0
- {agenttelemetry_app-2.0.0 → agenttelemetry_app-2.1.0}/__main__.py +0 -0
- {agenttelemetry_app-2.0.0 → agenttelemetry_app-2.1.0}/agenttelemetry_app.egg-info/dependency_links.txt +0 -0
- {agenttelemetry_app-2.0.0 → agenttelemetry_app-2.1.0}/agenttelemetry_app.egg-info/entry_points.txt +0 -0
- {agenttelemetry_app-2.0.0 → agenttelemetry_app-2.1.0}/agenttelemetry_app.egg-info/top_level.txt +0 -0
- {agenttelemetry_app-2.0.0 → agenttelemetry_app-2.1.0}/chart.umd.min.js +0 -0
- {agenttelemetry_app-2.0.0 → agenttelemetry_app-2.1.0}/manifest.json +0 -0
- {agenttelemetry_app-2.0.0 → agenttelemetry_app-2.1.0}/setup.cfg +0 -0
- {agenttelemetry_app-2.0.0 → agenttelemetry_app-2.1.0}/static/apple-touch-icon.png +0 -0
- {agenttelemetry_app-2.0.0 → agenttelemetry_app-2.1.0}/static/charts.js +0 -0
- {agenttelemetry_app-2.0.0 → agenttelemetry_app-2.1.0}/static/icon-192.png +0 -0
- {agenttelemetry_app-2.0.0 → agenttelemetry_app-2.1.0}/static/icon-512.png +0 -0
- {agenttelemetry_app-2.0.0 → agenttelemetry_app-2.1.0}/static/tool-icons/LICENSE.hermes.txt +0 -0
- {agenttelemetry_app-2.0.0 → agenttelemetry_app-2.1.0}/static/tool-icons/LICENSE.openclaw.txt +0 -0
- {agenttelemetry_app-2.0.0 → agenttelemetry_app-2.1.0}/static/tool-icons/LICENSE.simple-icons.txt +0 -0
- {agenttelemetry_app-2.0.0 → agenttelemetry_app-2.1.0}/static/tool-icons/README.md +0 -0
- {agenttelemetry_app-2.0.0 → agenttelemetry_app-2.1.0}/static/tool-icons/claude.svg +0 -0
- {agenttelemetry_app-2.0.0 → agenttelemetry_app-2.1.0}/static/tool-icons/copilot.svg +0 -0
- {agenttelemetry_app-2.0.0 → agenttelemetry_app-2.1.0}/static/tool-icons/cursor.svg +0 -0
- {agenttelemetry_app-2.0.0 → agenttelemetry_app-2.1.0}/static/tool-icons/hermes.svg +0 -0
- {agenttelemetry_app-2.0.0 → agenttelemetry_app-2.1.0}/static/tool-icons/openai.svg +0 -0
- {agenttelemetry_app-2.0.0 → agenttelemetry_app-2.1.0}/static/tool-icons/openclaw.svg +0 -0
- {agenttelemetry_app-2.0.0 → agenttelemetry_app-2.1.0}/static/tool-icons/opencode.svg +0 -0
- {agenttelemetry_app-2.0.0 → agenttelemetry_app-2.1.0}/sw.js +0 -0
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
include pyproject.toml
|
|
2
|
+
include setup.py
|
|
3
|
+
include README.md
|
|
4
|
+
include LICENSE
|
|
5
|
+
include __init__.py
|
|
6
|
+
include __main__.py
|
|
7
|
+
include cli.py
|
|
8
|
+
include dashboard.py
|
|
9
|
+
include editor_snapshot.py
|
|
10
|
+
include ledger_backups.py
|
|
11
|
+
include diagnostics.py
|
|
12
|
+
include session_timeline.py
|
|
13
|
+
include native_activity.py
|
|
14
|
+
include local_servers.py
|
|
15
|
+
include local_servers_windows.py
|
|
16
|
+
include parser.py
|
|
17
|
+
include release_notes.py
|
|
18
|
+
include native.py
|
|
19
|
+
include accounts.py
|
|
20
|
+
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
|
+
include index.html
|
|
29
|
+
include chart.umd.min.js
|
|
30
|
+
include manifest.json
|
|
31
|
+
include sw.js
|
|
32
|
+
include docs/python-package.md
|
|
33
|
+
include docs/mcp.md
|
|
34
|
+
include docs/release-notes.md
|
|
35
|
+
include docs/native-activity.md
|
|
36
|
+
include static/app.css
|
|
37
|
+
include static/apple-touch-icon.png
|
|
38
|
+
include static/charts.js
|
|
39
|
+
include static/core.js
|
|
40
|
+
include static/icon-192.png
|
|
41
|
+
include static/icon-512.png
|
|
42
|
+
include static/insights.js
|
|
43
|
+
include static/maintenance.js
|
|
44
|
+
include static/release-notes.js
|
|
45
|
+
include static/mcp.js
|
|
46
|
+
include static/timeline.js
|
|
47
|
+
include static/tool-icons/LICENSE.hermes.txt
|
|
48
|
+
include static/tool-icons/LICENSE.openclaw.txt
|
|
49
|
+
include static/tool-icons/LICENSE.simple-icons.txt
|
|
50
|
+
include static/tool-icons/README.md
|
|
51
|
+
include static/tool-icons/claude.svg
|
|
52
|
+
include static/tool-icons/copilot.svg
|
|
53
|
+
include static/tool-icons/cursor.svg
|
|
54
|
+
include static/tool-icons/hermes.svg
|
|
55
|
+
include static/tool-icons/openai.svg
|
|
56
|
+
include static/tool-icons/openclaw.svg
|
|
57
|
+
include static/tool-icons/opencode.svg
|
|
58
|
+
include static/views.js
|
|
59
|
+
prune tests
|
|
60
|
+
prune website
|
|
61
|
+
prune macos
|
|
62
|
+
prune windows
|
|
63
|
+
prune vscode
|
|
64
|
+
prune .github
|
|
65
|
+
prune build
|
|
66
|
+
prune dist
|
|
67
|
+
prune .usage_cache.json
|
|
68
|
+
prune .usage-backups
|
|
69
|
+
prune .peers
|
|
70
|
+
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.
|
|
3
|
+
Version: 2.1.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
|
|
@@ -31,11 +31,14 @@ vs Google** provider comparison, an activity calendar, and breakdowns by **model
|
|
|
31
31
|
day, hour, weekday, tool, IDE, project and session** — plus how much **disk** all these logs
|
|
32
32
|
eat, and suggestions for spending less, drawn from your own numbers.
|
|
33
33
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
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 GitHub update and release-note metadata after you click **Check for updates** or
|
|
39
|
+
**Load notes**. Cached release notes can be shown offline after an upgrade. No account or API key is needed
|
|
40
|
+
for the dashboard; it has no runtime dependencies beyond Python's standard library and a
|
|
41
|
+
vendored copy of Chart.js.
|
|
39
42
|
|
|
40
43
|
Covers **Claude Code · Claude Desktop · Codex · GitHub Copilot · Cursor · OpenCode · Hermes Agent · OpenClaw**.
|
|
41
44
|
|
|
@@ -43,9 +46,9 @@ Covers **Claude Code · Claude Desktop · Codex · GitHub Copilot · Cursor · O
|
|
|
43
46
|
|
|
44
47
|
| Platform | Download |
|
|
45
48
|
| --- | --- |
|
|
46
|
-
| macOS 13+ · Apple Silicon | **[Download DMG](https://github.com/uttamdeb/agent-telemetry/releases/download/v2.
|
|
47
|
-
| macOS 13+ · Intel | **[Download DMG](https://github.com/uttamdeb/agent-telemetry/releases/download/v2.
|
|
48
|
-
| Windows 10/11 · x64 | **[Download EXE installer](https://github.com/uttamdeb/agent-telemetry/releases/download/v2.
|
|
49
|
+
| macOS 13+ · Apple Silicon | **[Download DMG](https://github.com/uttamdeb/agent-telemetry/releases/download/v2.1.0/AgentTelemetry-2.1.0-macos-arm64.dmg)** |
|
|
50
|
+
| macOS 13+ · Intel | **[Download DMG](https://github.com/uttamdeb/agent-telemetry/releases/download/v2.1.0/AgentTelemetry-2.1.0-macos-x86_64.dmg)** |
|
|
51
|
+
| Windows 10/11 · x64 | **[Download EXE installer](https://github.com/uttamdeb/agent-telemetry/releases/download/v2.1.0/AgentTelemetry-2.1.0-windows-x64-setup.exe)** |
|
|
49
52
|
|
|
50
53
|
**Python is bundled — no terminal setup needed.** macOS: open the DMG, drag the app to
|
|
51
54
|
Applications and open it. Windows: run the installer and open AgentTelemetry from Start.
|
|
@@ -59,7 +62,9 @@ starting monitoring. On macOS, opening the app manually also lets you import fir
|
|
|
59
62
|
These builds are unsigned/unnotarized. macOS may require **System Settings → Privacy &
|
|
60
63
|
Security → Open Anyway**; Windows SmartScreen may require **More info → Run anyway**.
|
|
61
64
|
[All releases](https://github.com/uttamdeb/agent-telemetry/releases) ·
|
|
62
|
-
[
|
|
65
|
+
[What's new in 2.1.0](docs/releases/v2.1.0.md) ·
|
|
66
|
+
[SHA-256 checksums](https://github.com/uttamdeb/agent-telemetry/releases/download/v2.1.0/SHA256SUMS.txt) ·
|
|
67
|
+
[PyPI package 2.1.0](https://pypi.org/project/agenttelemetry-app/2.1.0/)
|
|
63
68
|
|
|
64
69
|
---
|
|
65
70
|
|
|
@@ -78,17 +83,17 @@ Security → Open Anyway**; Windows SmartScreen may require **More info → Run
|
|
|
78
83
|
|
|
79
84
|
## Quick start
|
|
80
85
|
|
|
81
|
-
|
|
86
|
+
Install with Python 3.9+:
|
|
82
87
|
|
|
83
88
|
```bash
|
|
84
|
-
|
|
89
|
+
python -m pip install agenttelemetry-app
|
|
90
|
+
agenttelemetry
|
|
85
91
|
```
|
|
86
92
|
|
|
87
|
-
Or
|
|
93
|
+
Or, with [uv](https://docs.astral.sh/uv/getting-started/installation/) installed:
|
|
88
94
|
|
|
89
95
|
```bash
|
|
90
|
-
|
|
91
|
-
agenttelemetry
|
|
96
|
+
uvx agenttelemetry-app
|
|
92
97
|
```
|
|
93
98
|
|
|
94
99
|
Then open **http://127.0.0.1:7878**. The Python package starts the local browser dashboard;
|
|
@@ -114,6 +119,39 @@ Options: `python3 dashboard.py --port 9000` · `--rebuild` (ignore cache, full r
|
|
|
114
119
|
cache and optional device-sharing files outside the checkout). Without `--data-dir`, current
|
|
115
120
|
checkout behavior is unchanged. Or `./run.sh [flags]`.
|
|
116
121
|
|
|
122
|
+
## Editor extension
|
|
123
|
+
|
|
124
|
+
The [AgentTelemetry editor extension](vscode/README.md) brings local usage into
|
|
125
|
+
VS Code compatible desktop editors, including Cursor and Antigravity IDE. Its
|
|
126
|
+
Agent desk uses the app's icon and light/dark theme, with workspace totals,
|
|
127
|
+
recorded main-agent/subagent relationships, and an in-memory usage baseline.
|
|
128
|
+
Install from the [Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=agenttelemetry-team.agenttelemetry)
|
|
129
|
+
in VS Code, from [Open VSX](https://open-vsx.org/extension/agenttelemetry-team/agenttelemetry)
|
|
130
|
+
in Cursor and compatible editors, or use the universal VSIX following the
|
|
131
|
+
[extension guide](vscode/README.md#install-a-vsix).
|
|
132
|
+
|
|
133
|
+
## Recognizing subagent sessions
|
|
134
|
+
|
|
135
|
+
Sessions shows a full **Subagent** label, a branching icon, and a searchable session
|
|
136
|
+
identifier for transcripts that the source identifies as delegated work. Use
|
|
137
|
+
**All sessions / Main agents / Subagents** to focus the list; the choice survives
|
|
138
|
+
reloads and shared links without changing the other dashboard totals. Session titles
|
|
139
|
+
also open details from the keyboard.
|
|
140
|
+
|
|
141
|
+
Recorded delegation counts and Claude sidechain usage are explained in the drawer.
|
|
142
|
+
Main agents shows sessions not marked as subagents; some tools and older logs
|
|
143
|
+
do not record this marker. Parent links are not inferred. See
|
|
144
|
+
[behavior and limitations](docs/subagent-sessions.md).
|
|
145
|
+
|
|
146
|
+
## Recorded reasoning effort
|
|
147
|
+
|
|
148
|
+
Sessions shows **Recorded effort** below the model for Claude and Codex. Open a
|
|
149
|
+
session for the recorded levels and their date/model scope. Changing the date,
|
|
150
|
+
model or provider filter changes this label alongside the session figures.
|
|
151
|
+
Missing metadata says **Not recorded**; mixed settings and partial coverage are
|
|
152
|
+
explicit. These are recorded controls, not a measurement of reasoning quality or
|
|
153
|
+
thinking tokens. See [sources and limitations](docs/recorded-effort.md).
|
|
154
|
+
|
|
117
155
|
## Subscription limits and account details
|
|
118
156
|
|
|
119
157
|
The bottom of Cost shows subscription limits for Codex and Claude Code when they
|
|
@@ -128,6 +166,15 @@ estimated from tokens or combined across devices. Session details show recorded
|
|
|
128
166
|
creator/account IDs with their attribution limits. Account metadata is private to the
|
|
129
167
|
source device. See [setup, research and limitations](docs/account-limits.md).
|
|
130
168
|
|
|
169
|
+
## Local servers (macOS)
|
|
170
|
+
|
|
171
|
+
The **Local servers** tab and menu bar can list local project listeners, pin them,
|
|
172
|
+
and save an explicit launch command for Start and Restart. Process actions ask for
|
|
173
|
+
confirmation. They require a ready macOS backend; Windows and Linux show the support
|
|
174
|
+
limitation. Commands stay on this machine and are never included in device sharing.
|
|
175
|
+
Running a saved command gives it your account's file and network access.
|
|
176
|
+
See [behavior, privacy and limitations](docs/local-servers.md).
|
|
177
|
+
|
|
131
178
|
## Install the menu bar / system tray app
|
|
132
179
|
|
|
133
180
|
Use the [app downloads](#download-the-app) above for a ready-to-run installation.
|
|
@@ -178,8 +225,8 @@ the sync API retain independent polling until upgraded and restarted.
|
|
|
178
225
|
Read the [macOS guide](macos/AgentTelemetryMac/README.md) and
|
|
179
226
|
[Windows guide](windows/README.md) for paths, controls and development checks. macOS
|
|
180
227
|
downloads and source builds are ad-hoc signed; a Developer ID signed/notarized installer
|
|
181
|
-
is not supplied. The backend remains stdlib-only and
|
|
182
|
-
|
|
228
|
+
is not supplied. The backend remains stdlib-only and does not check for updates
|
|
229
|
+
automatically. The macOS packaging step downloads a hash-pinned Python runtime explicitly.
|
|
183
230
|
|
|
184
231
|
Local app integrations can use `GET /api/health` for a small readiness response that contains
|
|
185
232
|
no usage data, and `GET /api/summary` for today's token total and API-equivalent estimated
|
|
@@ -191,6 +238,21 @@ retain one serialized snapshot per display tick, in memory only; the ledger is u
|
|
|
191
238
|
as all writes. `POST /api/shutdown` additionally requires the owning Windows client's
|
|
192
239
|
per-process control token; a normal standalone dashboard cannot be stopped by that route.
|
|
193
240
|
|
|
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
|
+
|
|
194
256
|
> `--rebuild` deletes the cache, and with it every session whose log has since been deleted
|
|
195
257
|
> from disk (see [Storage](#storage--what-these-logs-cost-you-in-disk)). Copy
|
|
196
258
|
> `.usage_cache.json` somewhere safe first if you've cleaned up old logs.
|
|
@@ -315,6 +377,12 @@ Previous title metadata is backed up privately in
|
|
|
315
377
|
This supports local Claude Code transcripts, Codex through its installed CLI’s
|
|
316
378
|
[official name API](https://learn.chatgpt.com/docs/app-server), and OpenCode’s SQLite
|
|
317
379
|
session stores. Other formats, remote sessions and deleted logs cannot be edited.
|
|
380
|
+
Recognized local Claude subagent transcripts instead offer **Name in AgentTelemetry**.
|
|
381
|
+
This saves a private display name on this device without editing Claude's transcript,
|
|
382
|
+
native subagent name, or parent session. The preview states this scope explicitly.
|
|
383
|
+
These names live in `AgentTelemetryNative/session-display-names.json`, outside the
|
|
384
|
+
usage ledger, summaries, and device sharing. Enter the source title again to remove
|
|
385
|
+
a display-name override. See [subagent name behavior](docs/subagent-sessions.md).
|
|
318
386
|
Tool/provider icons are bundled locally, including the OpenAI mark for Codex; no remote
|
|
319
387
|
logo requests occur. Their sources and licenses are in `static/tool-icons/README.md`.
|
|
320
388
|
|
|
@@ -340,10 +408,48 @@ search box, and `#cost`, `#sessions`… for the tab. For example
|
|
|
340
408
|
`/?range=7d&metric=cost&tools=claude&projects=sims#cost`. Only what differs from the default
|
|
341
409
|
is written, and changing a filter never adds a browser-history entry.
|
|
342
410
|
|
|
411
|
+
**What changed?** — Overview and Cost compare the selected range with the preceding
|
|
412
|
+
equal-length range. Switch between projects, models, tools and (for tokens/cost)
|
|
413
|
+
token types to see signed contributions, including decreases and categories that
|
|
414
|
+
disappeared. Each breakdown reconciles independently to the total change. Click a
|
|
415
|
+
category for current-period sessions or its previous value for earlier sessions.
|
|
416
|
+
All usage filters apply; All time has no comparison. Missing prior observations and
|
|
417
|
+
an unfinished current period are labeled. Contributions identify where usage changed,
|
|
418
|
+
not a causal explanation. Cost remains an API-equivalent estimate.
|
|
419
|
+
|
|
420
|
+
**Session timeline** — the session drawer combines daily retained usage with recorded
|
|
421
|
+
compaction markers and local Claude/Codex source events: model requests, tool calls,
|
|
422
|
+
user turns and recorded subagent starts. No prompts or tool arguments are returned.
|
|
423
|
+
The read is bounded to the first 64 MiB and 400 events in the selected date range;
|
|
424
|
+
truncation is explicit. Date filters use local dates; model filters apply to events
|
|
425
|
+
with model attribution. Archived/remote sessions and unsupported formats retain
|
|
426
|
+
daily detail where available; missing timestamps or history are not reconstructed.
|
|
427
|
+
|
|
428
|
+
**Backups and troubleshooting** — Settings shows detected-source scan results,
|
|
429
|
+
actionable parsing errors, ledger failures and models missing prices. An inactive
|
|
430
|
+
tool is not reported as stale merely because it has no recent activity. Backups are
|
|
431
|
+
private copies of the ledger in `.usage-backups/` beside it (including with
|
|
432
|
+
`--data-dir`), excluded from device sharing and installation payloads. A saved-ledger
|
|
433
|
+
snapshot is kept on the first save each UTC day; updates and cache resets require a
|
|
434
|
+
safety copy first. Retention keeps 7 daily snapshots and up to 5 each of manual,
|
|
435
|
+
pre-restore and corrupt-file recovery copies. A failed daily backup does not stop
|
|
436
|
+
normal ledger saving and is reported in Settings.
|
|
437
|
+
|
|
438
|
+
Restore shows stored-session counts and requires a one-use, five-minute confirmation
|
|
439
|
+
ticket. Changed backups, disk contents or newly parsed usage invalidate the preview.
|
|
440
|
+
The current ledger is preserved before replacement, including unreadable bytes as
|
|
441
|
+
a non-restorable recovery copy. Backups cover aggregates, not original transcripts,
|
|
442
|
+
device pairing settings or native preferences; local backups do not protect against
|
|
443
|
+
loss of the drive. Use `python tests/preview_features.py --port 8896` for an isolated
|
|
444
|
+
preview with invented data.
|
|
445
|
+
|
|
343
446
|
**Version and updates** — the sidebar footer shows the running version. *Check for updates*
|
|
344
|
-
asks GitHub
|
|
345
|
-
|
|
346
|
-
|
|
447
|
+
asks GitHub for the latest stable release and its tagged notes only when you click; notes
|
|
448
|
+
already cached on this machine can be shown offline. A first open records the current version
|
|
449
|
+
as the baseline. Later upgrades can show their notes once, after which the display is
|
|
450
|
+
acknowledged. *Update* fast-forwards a source checkout and restarts the server; it refuses
|
|
451
|
+
local edits and commits that aren't upstream. Packaged apps link to the official release for
|
|
452
|
+
manual installation. See [release notes behavior](docs/release-notes.md).
|
|
347
453
|
|
|
348
454
|
---
|
|
349
455
|
|
|
@@ -7,11 +7,14 @@ vs Google** provider comparison, an activity calendar, and breakdowns by **model
|
|
|
7
7
|
day, hour, weekday, tool, IDE, project and session** — plus how much **disk** all these logs
|
|
8
8
|
eat, and suggestions for spending less, drawn from your own numbers.
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
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 GitHub update and release-note metadata after you click **Check for updates** or
|
|
15
|
+
**Load notes**. Cached release notes can be shown offline after an upgrade. No account or API key is needed
|
|
16
|
+
for the dashboard; it has no runtime dependencies beyond Python's standard library and a
|
|
17
|
+
vendored copy of Chart.js.
|
|
15
18
|
|
|
16
19
|
Covers **Claude Code · Claude Desktop · Codex · GitHub Copilot · Cursor · OpenCode · Hermes Agent · OpenClaw**.
|
|
17
20
|
|
|
@@ -19,9 +22,9 @@ Covers **Claude Code · Claude Desktop · Codex · GitHub Copilot · Cursor · O
|
|
|
19
22
|
|
|
20
23
|
| Platform | Download |
|
|
21
24
|
| --- | --- |
|
|
22
|
-
| macOS 13+ · Apple Silicon | **[Download DMG](https://github.com/uttamdeb/agent-telemetry/releases/download/v2.
|
|
23
|
-
| macOS 13+ · Intel | **[Download DMG](https://github.com/uttamdeb/agent-telemetry/releases/download/v2.
|
|
24
|
-
| Windows 10/11 · x64 | **[Download EXE installer](https://github.com/uttamdeb/agent-telemetry/releases/download/v2.
|
|
25
|
+
| macOS 13+ · Apple Silicon | **[Download DMG](https://github.com/uttamdeb/agent-telemetry/releases/download/v2.1.0/AgentTelemetry-2.1.0-macos-arm64.dmg)** |
|
|
26
|
+
| macOS 13+ · Intel | **[Download DMG](https://github.com/uttamdeb/agent-telemetry/releases/download/v2.1.0/AgentTelemetry-2.1.0-macos-x86_64.dmg)** |
|
|
27
|
+
| Windows 10/11 · x64 | **[Download EXE installer](https://github.com/uttamdeb/agent-telemetry/releases/download/v2.1.0/AgentTelemetry-2.1.0-windows-x64-setup.exe)** |
|
|
25
28
|
|
|
26
29
|
**Python is bundled — no terminal setup needed.** macOS: open the DMG, drag the app to
|
|
27
30
|
Applications and open it. Windows: run the installer and open AgentTelemetry from Start.
|
|
@@ -35,7 +38,9 @@ starting monitoring. On macOS, opening the app manually also lets you import fir
|
|
|
35
38
|
These builds are unsigned/unnotarized. macOS may require **System Settings → Privacy &
|
|
36
39
|
Security → Open Anyway**; Windows SmartScreen may require **More info → Run anyway**.
|
|
37
40
|
[All releases](https://github.com/uttamdeb/agent-telemetry/releases) ·
|
|
38
|
-
[
|
|
41
|
+
[What's new in 2.1.0](docs/releases/v2.1.0.md) ·
|
|
42
|
+
[SHA-256 checksums](https://github.com/uttamdeb/agent-telemetry/releases/download/v2.1.0/SHA256SUMS.txt) ·
|
|
43
|
+
[PyPI package 2.1.0](https://pypi.org/project/agenttelemetry-app/2.1.0/)
|
|
39
44
|
|
|
40
45
|
---
|
|
41
46
|
|
|
@@ -54,17 +59,17 @@ Security → Open Anyway**; Windows SmartScreen may require **More info → Run
|
|
|
54
59
|
|
|
55
60
|
## Quick start
|
|
56
61
|
|
|
57
|
-
|
|
62
|
+
Install with Python 3.9+:
|
|
58
63
|
|
|
59
64
|
```bash
|
|
60
|
-
|
|
65
|
+
python -m pip install agenttelemetry-app
|
|
66
|
+
agenttelemetry
|
|
61
67
|
```
|
|
62
68
|
|
|
63
|
-
Or
|
|
69
|
+
Or, with [uv](https://docs.astral.sh/uv/getting-started/installation/) installed:
|
|
64
70
|
|
|
65
71
|
```bash
|
|
66
|
-
|
|
67
|
-
agenttelemetry
|
|
72
|
+
uvx agenttelemetry-app
|
|
68
73
|
```
|
|
69
74
|
|
|
70
75
|
Then open **http://127.0.0.1:7878**. The Python package starts the local browser dashboard;
|
|
@@ -90,6 +95,39 @@ Options: `python3 dashboard.py --port 9000` · `--rebuild` (ignore cache, full r
|
|
|
90
95
|
cache and optional device-sharing files outside the checkout). Without `--data-dir`, current
|
|
91
96
|
checkout behavior is unchanged. Or `./run.sh [flags]`.
|
|
92
97
|
|
|
98
|
+
## Editor extension
|
|
99
|
+
|
|
100
|
+
The [AgentTelemetry editor extension](vscode/README.md) brings local usage into
|
|
101
|
+
VS Code compatible desktop editors, including Cursor and Antigravity IDE. Its
|
|
102
|
+
Agent desk uses the app's icon and light/dark theme, with workspace totals,
|
|
103
|
+
recorded main-agent/subagent relationships, and an in-memory usage baseline.
|
|
104
|
+
Install from the [Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=agenttelemetry-team.agenttelemetry)
|
|
105
|
+
in VS Code, from [Open VSX](https://open-vsx.org/extension/agenttelemetry-team/agenttelemetry)
|
|
106
|
+
in Cursor and compatible editors, or use the universal VSIX following the
|
|
107
|
+
[extension guide](vscode/README.md#install-a-vsix).
|
|
108
|
+
|
|
109
|
+
## Recognizing subagent sessions
|
|
110
|
+
|
|
111
|
+
Sessions shows a full **Subagent** label, a branching icon, and a searchable session
|
|
112
|
+
identifier for transcripts that the source identifies as delegated work. Use
|
|
113
|
+
**All sessions / Main agents / Subagents** to focus the list; the choice survives
|
|
114
|
+
reloads and shared links without changing the other dashboard totals. Session titles
|
|
115
|
+
also open details from the keyboard.
|
|
116
|
+
|
|
117
|
+
Recorded delegation counts and Claude sidechain usage are explained in the drawer.
|
|
118
|
+
Main agents shows sessions not marked as subagents; some tools and older logs
|
|
119
|
+
do not record this marker. Parent links are not inferred. See
|
|
120
|
+
[behavior and limitations](docs/subagent-sessions.md).
|
|
121
|
+
|
|
122
|
+
## Recorded reasoning effort
|
|
123
|
+
|
|
124
|
+
Sessions shows **Recorded effort** below the model for Claude and Codex. Open a
|
|
125
|
+
session for the recorded levels and their date/model scope. Changing the date,
|
|
126
|
+
model or provider filter changes this label alongside the session figures.
|
|
127
|
+
Missing metadata says **Not recorded**; mixed settings and partial coverage are
|
|
128
|
+
explicit. These are recorded controls, not a measurement of reasoning quality or
|
|
129
|
+
thinking tokens. See [sources and limitations](docs/recorded-effort.md).
|
|
130
|
+
|
|
93
131
|
## Subscription limits and account details
|
|
94
132
|
|
|
95
133
|
The bottom of Cost shows subscription limits for Codex and Claude Code when they
|
|
@@ -104,6 +142,15 @@ estimated from tokens or combined across devices. Session details show recorded
|
|
|
104
142
|
creator/account IDs with their attribution limits. Account metadata is private to the
|
|
105
143
|
source device. See [setup, research and limitations](docs/account-limits.md).
|
|
106
144
|
|
|
145
|
+
## Local servers (macOS)
|
|
146
|
+
|
|
147
|
+
The **Local servers** tab and menu bar can list local project listeners, pin them,
|
|
148
|
+
and save an explicit launch command for Start and Restart. Process actions ask for
|
|
149
|
+
confirmation. They require a ready macOS backend; Windows and Linux show the support
|
|
150
|
+
limitation. Commands stay on this machine and are never included in device sharing.
|
|
151
|
+
Running a saved command gives it your account's file and network access.
|
|
152
|
+
See [behavior, privacy and limitations](docs/local-servers.md).
|
|
153
|
+
|
|
107
154
|
## Install the menu bar / system tray app
|
|
108
155
|
|
|
109
156
|
Use the [app downloads](#download-the-app) above for a ready-to-run installation.
|
|
@@ -154,8 +201,8 @@ the sync API retain independent polling until upgraded and restarted.
|
|
|
154
201
|
Read the [macOS guide](macos/AgentTelemetryMac/README.md) and
|
|
155
202
|
[Windows guide](windows/README.md) for paths, controls and development checks. macOS
|
|
156
203
|
downloads and source builds are ad-hoc signed; a Developer ID signed/notarized installer
|
|
157
|
-
is not supplied. The backend remains stdlib-only and
|
|
158
|
-
|
|
204
|
+
is not supplied. The backend remains stdlib-only and does not check for updates
|
|
205
|
+
automatically. The macOS packaging step downloads a hash-pinned Python runtime explicitly.
|
|
159
206
|
|
|
160
207
|
Local app integrations can use `GET /api/health` for a small readiness response that contains
|
|
161
208
|
no usage data, and `GET /api/summary` for today's token total and API-equivalent estimated
|
|
@@ -167,6 +214,21 @@ retain one serialized snapshot per display tick, in memory only; the ledger is u
|
|
|
167
214
|
as all writes. `POST /api/shutdown` additionally requires the owning Windows client's
|
|
168
215
|
per-process control token; a normal standalone dashboard cannot be stopped by that route.
|
|
169
216
|
|
|
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
|
+
|
|
170
232
|
> `--rebuild` deletes the cache, and with it every session whose log has since been deleted
|
|
171
233
|
> from disk (see [Storage](#storage--what-these-logs-cost-you-in-disk)). Copy
|
|
172
234
|
> `.usage_cache.json` somewhere safe first if you've cleaned up old logs.
|
|
@@ -291,6 +353,12 @@ Previous title metadata is backed up privately in
|
|
|
291
353
|
This supports local Claude Code transcripts, Codex through its installed CLI’s
|
|
292
354
|
[official name API](https://learn.chatgpt.com/docs/app-server), and OpenCode’s SQLite
|
|
293
355
|
session stores. Other formats, remote sessions and deleted logs cannot be edited.
|
|
356
|
+
Recognized local Claude subagent transcripts instead offer **Name in AgentTelemetry**.
|
|
357
|
+
This saves a private display name on this device without editing Claude's transcript,
|
|
358
|
+
native subagent name, or parent session. The preview states this scope explicitly.
|
|
359
|
+
These names live in `AgentTelemetryNative/session-display-names.json`, outside the
|
|
360
|
+
usage ledger, summaries, and device sharing. Enter the source title again to remove
|
|
361
|
+
a display-name override. See [subagent name behavior](docs/subagent-sessions.md).
|
|
294
362
|
Tool/provider icons are bundled locally, including the OpenAI mark for Codex; no remote
|
|
295
363
|
logo requests occur. Their sources and licenses are in `static/tool-icons/README.md`.
|
|
296
364
|
|
|
@@ -316,10 +384,48 @@ search box, and `#cost`, `#sessions`… for the tab. For example
|
|
|
316
384
|
`/?range=7d&metric=cost&tools=claude&projects=sims#cost`. Only what differs from the default
|
|
317
385
|
is written, and changing a filter never adds a browser-history entry.
|
|
318
386
|
|
|
387
|
+
**What changed?** — Overview and Cost compare the selected range with the preceding
|
|
388
|
+
equal-length range. Switch between projects, models, tools and (for tokens/cost)
|
|
389
|
+
token types to see signed contributions, including decreases and categories that
|
|
390
|
+
disappeared. Each breakdown reconciles independently to the total change. Click a
|
|
391
|
+
category for current-period sessions or its previous value for earlier sessions.
|
|
392
|
+
All usage filters apply; All time has no comparison. Missing prior observations and
|
|
393
|
+
an unfinished current period are labeled. Contributions identify where usage changed,
|
|
394
|
+
not a causal explanation. Cost remains an API-equivalent estimate.
|
|
395
|
+
|
|
396
|
+
**Session timeline** — the session drawer combines daily retained usage with recorded
|
|
397
|
+
compaction markers and local Claude/Codex source events: model requests, tool calls,
|
|
398
|
+
user turns and recorded subagent starts. No prompts or tool arguments are returned.
|
|
399
|
+
The read is bounded to the first 64 MiB and 400 events in the selected date range;
|
|
400
|
+
truncation is explicit. Date filters use local dates; model filters apply to events
|
|
401
|
+
with model attribution. Archived/remote sessions and unsupported formats retain
|
|
402
|
+
daily detail where available; missing timestamps or history are not reconstructed.
|
|
403
|
+
|
|
404
|
+
**Backups and troubleshooting** — Settings shows detected-source scan results,
|
|
405
|
+
actionable parsing errors, ledger failures and models missing prices. An inactive
|
|
406
|
+
tool is not reported as stale merely because it has no recent activity. Backups are
|
|
407
|
+
private copies of the ledger in `.usage-backups/` beside it (including with
|
|
408
|
+
`--data-dir`), excluded from device sharing and installation payloads. A saved-ledger
|
|
409
|
+
snapshot is kept on the first save each UTC day; updates and cache resets require a
|
|
410
|
+
safety copy first. Retention keeps 7 daily snapshots and up to 5 each of manual,
|
|
411
|
+
pre-restore and corrupt-file recovery copies. A failed daily backup does not stop
|
|
412
|
+
normal ledger saving and is reported in Settings.
|
|
413
|
+
|
|
414
|
+
Restore shows stored-session counts and requires a one-use, five-minute confirmation
|
|
415
|
+
ticket. Changed backups, disk contents or newly parsed usage invalidate the preview.
|
|
416
|
+
The current ledger is preserved before replacement, including unreadable bytes as
|
|
417
|
+
a non-restorable recovery copy. Backups cover aggregates, not original transcripts,
|
|
418
|
+
device pairing settings or native preferences; local backups do not protect against
|
|
419
|
+
loss of the drive. Use `python tests/preview_features.py --port 8896` for an isolated
|
|
420
|
+
preview with invented data.
|
|
421
|
+
|
|
319
422
|
**Version and updates** — the sidebar footer shows the running version. *Check for updates*
|
|
320
|
-
asks GitHub
|
|
321
|
-
|
|
322
|
-
|
|
423
|
+
asks GitHub for the latest stable release and its tagged notes only when you click; notes
|
|
424
|
+
already cached on this machine can be shown offline. A first open records the current version
|
|
425
|
+
as the baseline. Later upgrades can show their notes once, after which the display is
|
|
426
|
+
acknowledged. *Update* fast-forwards a source checkout and restarts the server; it refuses
|
|
427
|
+
local edits and commits that aren't upstream. Packaged apps link to the official release for
|
|
428
|
+
manual installation. See [release notes behavior](docs/release-notes.md).
|
|
323
429
|
|
|
324
430
|
---
|
|
325
431
|
|
|
@@ -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.
|
|
186
|
+
request(1, "initialize", {"clientInfo": {"name": "agent_telemetry", "title": "AgentTelemetry", "version": "2.1.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 {}
|