tokentracker-cli 1.4.11 → 1.4.12
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.
- package/README.de.md +5 -4
- package/README.ja.md +5 -4
- package/README.ko.md +5 -4
- package/README.md +6 -4
- package/README.zh-CN.md +5 -4
- package/dashboard/dist/assets/{AchievementBadge-DALWiLQQ.js → AchievementBadge-BwrL59nq.js} +1 -1
- package/dashboard/dist/assets/{AchievementsPage-CjWobmn1.js → AchievementsPage-DG0dvG3d.js} +2 -2
- package/dashboard/dist/assets/{AchievementsSection-CTryGWII.js → AchievementsSection-NrjlZjZK.js} +1 -1
- package/dashboard/dist/assets/{BadgeDetailModal-D4lMxewA.js → BadgeDetailModal-BjgBAb-0.js} +1 -1
- package/dashboard/dist/assets/{BotAnimated-CsLNf9WH.js → BotAnimated-D7gMmkaM.js} +1 -1
- package/dashboard/dist/assets/{Card-BOnNTrmF.js → Card-CgvwIS5W.js} +1 -1
- package/dashboard/dist/assets/{CloudCheckoutPage-CrY15xqT.js → CloudCheckoutPage-DKDpT0HI.js} +1 -1
- package/dashboard/dist/assets/{CloudPage-hNSCMzVG.js → CloudPage-BOfqPAAH.js} +2 -2
- package/dashboard/dist/assets/{CommandPalette-CE4UfPXk.js → CommandPalette-BfRKy_dn.js} +1 -1
- package/dashboard/dist/assets/{CommunityStatsModal-CLUegC6z.js → CommunityStatsModal-BcVSszit.js} +1 -1
- package/dashboard/dist/assets/{ConfirmModal-D3wwfiYB.js → ConfirmModal-Be4EVpPT.js} +1 -1
- package/dashboard/dist/assets/{Controls-B_ta_8zw.js → Controls-vrG8LLBe.js} +1 -1
- package/dashboard/dist/assets/{DashboardPage-RevVPZFt.js → DashboardPage-DvhF72XX.js} +1 -1
- package/dashboard/dist/assets/{DateRangePopover-CYud1FKu.js → DateRangePopover-CZVMdPEq.js} +1 -1
- package/dashboard/dist/assets/{DevicePage-D_eSLfM3.js → DevicePage-BeNIjTqa.js} +1 -1
- package/dashboard/dist/assets/{DialogClose-Bu1ct4DA.js → DialogClose-BaNPZ3Bu.js} +1 -1
- package/dashboard/dist/assets/DialogDescription-LHQ-SC4e.js +1 -0
- package/dashboard/dist/assets/{DialogTitle-BJxM52J1.js → DialogTitle-B3IwNXro.js} +1 -1
- package/dashboard/dist/assets/{ElectricLogo-DYVZebgD.js → ElectricLogo-DC-03HL_.js} +1 -1
- package/dashboard/dist/assets/{FadeIn-CVaq5ALh.js → FadeIn-DhUnSf2V.js} +1 -1
- package/dashboard/dist/assets/{HeaderGithubStar-BCwYSguq.js → HeaderGithubStar-BiWRLl7V.js} +1 -1
- package/dashboard/dist/assets/{HoverTooltip-YsG-TdOX.js → HoverTooltip-DLPiBqDu.js} +1 -1
- package/dashboard/dist/assets/{IpCheckPage-C0qiyZXr.js → IpCheckPage-DKjg0V9L.js} +1 -1
- package/dashboard/dist/assets/{LandingPage-BlRJWwvx.js → LandingPage-XQuTnBMQ.js} +2 -2
- package/dashboard/dist/assets/{LeaderboardPage-DcCCKL2q.js → LeaderboardPage-xAbo5mzo.js} +2 -2
- package/dashboard/dist/assets/{LeaderboardProBadge-I_oW0KCc.js → LeaderboardProBadge-mMiEeaYS.js} +1 -1
- package/dashboard/dist/assets/{LeaderboardProfileModal-DM5Vc7MB.js → LeaderboardProfileModal-B7q0Kk6B.js} +3 -3
- package/dashboard/dist/assets/{LeaderboardProfilePage-DnYBBGNe.js → LeaderboardProfilePage-Bru_6wgX.js} +1 -1
- package/dashboard/dist/assets/{LimitsPage-Cyy3PI8p.js → LimitsPage-DQH6ziz4.js} +1 -1
- package/dashboard/dist/assets/{LocalOnlyNotice-083BoEX9.js → LocalOnlyNotice-B-lxih4W.js} +1 -1
- package/dashboard/dist/assets/{LoginCard-CN1db2Rj.js → LoginCard-ChNsRYE2.js} +1 -1
- package/dashboard/dist/assets/{LoginModal-Dfi7_ory.js → LoginModal-CRw3PgMi.js} +1 -1
- package/dashboard/dist/assets/{LoginPage-BzMdiYlx.js → LoginPage-CVsbYn-h.js} +1 -1
- package/dashboard/dist/assets/{PetPage-CsE95lfJ.js → PetPage-BwEnQLLY.js} +2 -2
- package/dashboard/dist/assets/{PopoverPopup-U7DTTTE0.js → PopoverPopup-CDOtxSL8.js} +1 -1
- package/dashboard/dist/assets/{ProviderIcon-CnLfT5d9.js → ProviderIcon-Dsu1p6gG.js} +1 -1
- package/dashboard/dist/assets/{ResetPasswordPage-De2RzCj-.js → ResetPasswordPage-BzpaSORs.js} +1 -1
- package/dashboard/dist/assets/{Select-BS5MWHdB.js → Select-62UH-yLs.js} +1 -1
- package/dashboard/dist/assets/{SelectItemText-D3i379K-.js → SelectItemText-aTexKmQ0.js} +1 -1
- package/dashboard/dist/assets/{SelfHostPage-CTL0dnp5.js → SelfHostPage-CmhV0dms.js} +1 -1
- package/dashboard/dist/assets/{ServiceStatusPage-BmEvOk3B.js → ServiceStatusPage-CLWO33w1.js} +1 -1
- package/dashboard/dist/assets/{SessionsPage-DIog3JA_.js → SessionsPage-BNCDKb58.js} +1 -1
- package/dashboard/dist/assets/{SettingsPage-Cgpiwh-C.js → SettingsPage-DybHncPO.js} +3 -3
- package/dashboard/dist/assets/{SkillsPage-DpagshiB.js → SkillsPage-BV5R3VhT.js} +1 -1
- package/dashboard/dist/assets/{TokenGalaxy-Do1U_-E3.js → TokenGalaxy-mNNAo6Ai.js} +1 -1
- package/dashboard/dist/assets/{TooltipPopup-MOAnEqf3.js → TooltipPopup-D00SVpLP.js} +1 -1
- package/dashboard/dist/assets/{TrendMonitor-B55RUbQm.js → TrendMonitor-aNIpzAO-.js} +1 -1
- package/dashboard/dist/assets/{WidgetsPage-CehbGk-6.js → WidgetsPage-COjZIMo8.js} +1 -1
- package/dashboard/dist/assets/{WrappedPage-Cqt-U0Zx.js → WrappedPage-af-bDIfB.js} +1 -1
- package/dashboard/dist/assets/{__vite-browser-external-CR0vo15z.js → __vite-browser-external-KHpR2q-A.js} +2 -2
- package/dashboard/dist/assets/{agent-logos-DuW-DWAl.js → agent-logos-D9Uq5b6y.js} +1 -1
- package/dashboard/dist/assets/{arrow-left-DIvQjuji.js → arrow-left-Pt53BsA4.js} +1 -1
- package/dashboard/dist/assets/{arrow-right-BURLycHb.js → arrow-right-stBCZPot.js} +1 -1
- package/dashboard/dist/assets/{arrow-up-right-Bl1QMMkY.js → arrow-up-right-ltUBOD-o.js} +1 -1
- package/dashboard/dist/assets/{calendar-days-CmIWJC3A.js → calendar-days-BMEtkPFp.js} +1 -1
- package/dashboard/dist/assets/{check-DB2ZTWor.js → check-ax5wQf5Q.js} +1 -1
- package/dashboard/dist/assets/{chevron-down-BflN3NJt.js → chevron-down-gS62rNQt.js} +1 -1
- package/dashboard/dist/assets/{cloud-checkout-BugQolSC.js → cloud-checkout-DDtdbz7C.js} +1 -1
- package/dashboard/dist/assets/{composite-DJsqXsjA.js → composite-DVm8byy8.js} +1 -1
- package/dashboard/dist/assets/{copy-CtB-GPN2.js → copy-VbASSQO1.js} +1 -1
- package/dashboard/dist/assets/{download-x5Botpqc.js → download-D1g6OCRI.js} +1 -1
- package/dashboard/dist/assets/{external-link-DH9sRkJW.js → external-link-CGUQrKDL.js} +1 -1
- package/dashboard/dist/assets/{flame-DEcsokoL.js → flame-Dlvc-qIH.js} +1 -1
- package/dashboard/dist/assets/{format-tokens-BH0jc1MG.js → format-tokens-CB1QfZsj.js} +1 -1
- package/dashboard/dist/assets/{gift-BZk9muk9.js → gift-DydflDeL.js} +1 -1
- package/dashboard/dist/assets/{icons-BMf9-bfS.js → icons-B_xYF8_-.js} +1 -1
- package/dashboard/dist/assets/{index-axJYocSc.js → index-BRNltZbP.js} +1 -1
- package/dashboard/dist/assets/{index-BEtrik3j.js → index-ByXXZlPn.js} +1 -1
- package/dashboard/dist/assets/{index-Cm-9apOR.js → index-CuLrp2D2.js} +1 -1
- package/dashboard/dist/assets/{index-TErx-xPb.js → index-cidqWI7C.js} +1 -1
- package/dashboard/dist/assets/{info-DWdPAxu8.js → info-D6-LIywq.js} +1 -1
- package/dashboard/dist/assets/{link-2-c3ZZd-w-.js → link-2-BbuXAF5y.js} +1 -1
- package/dashboard/dist/assets/{loader-circle-BKdtxfky.js → loader-circle-DAeCHAyj.js} +1 -1
- package/dashboard/dist/assets/{local-usage-transfer-BFTJyQl3.js → local-usage-transfer-BejRwzi4.js} +1 -1
- package/dashboard/dist/assets/{modifiers.esm-C3yIfOiP.js → modifiers.esm-CV2S03sv.js} +1 -1
- package/dashboard/dist/assets/{monitor-smartphone-DbdL7Mei.js → monitor-smartphone-Dj_u5s6h.js} +1 -1
- package/dashboard/dist/assets/{play-qtWt2ArI.js → play-DrcSicai.js} +1 -1
- package/dashboard/dist/assets/{plus-C_-__5vi.js → plus-BwYQW7nf.js} +1 -1
- package/dashboard/dist/assets/{provider-display-IKHnhvaj.js → provider-display-Bgfy-2rn.js} +2 -2
- package/dashboard/dist/assets/{react-H6DfeMUm.js → react-BXby2gfP.js} +1 -1
- package/dashboard/dist/assets/{safePolygon-OEQJQTVa.js → safePolygon-B8DY85mD.js} +1 -1
- package/dashboard/dist/assets/{search-MZE76qNU.js → search-SCMosATz.js} +1 -1
- package/dashboard/dist/assets/{server-CUWYLMjG.js → server-DoD96f86.js} +1 -1
- package/dashboard/dist/assets/{shield-check-lA0Ja0RB.js → shield-check-CESJcEp7.js} +1 -1
- package/dashboard/dist/assets/{skills-api-CJJIPvSe.js → skills-api-DE71Ylhd.js} +1 -1
- package/dashboard/dist/assets/{sortable.esm-DTnvt1IN.js → sortable.esm-EgVv2jPt.js} +1 -1
- package/dashboard/dist/assets/{store-CC0YKrxA.js → store-mMQPBMoh.js} +1 -1
- package/dashboard/dist/assets/{terminal-yc2l_-3m.js → terminal-DxNM-IG2.js} +1 -1
- package/dashboard/dist/assets/{trash-Dl9f-o2h.js → trash-rywOpT2_.js} +1 -1
- package/dashboard/dist/assets/{use-community-stats-CZCKWCO7.js → use-community-stats-BQw06Twe.js} +1 -1
- package/dashboard/dist/assets/{use-latest-request-guard-DTrOu0gD.js → use-latest-request-guard-BvouGm-c.js} +1 -1
- package/dashboard/dist/assets/{use-limits-display-prefs-DGqP231e.js → use-limits-display-prefs-C5_9TDSy.js} +1 -1
- package/dashboard/dist/assets/{use-native-settings-BEATnxB6.js → use-native-settings-BxuddjkP.js} +1 -1
- package/dashboard/dist/assets/{use-ordered-list-C_HTFP5C.js → use-ordered-list-Cwqc5XA8.js} +1 -1
- package/dashboard/dist/assets/use-reduced-motion-DU3FvZwM.js +1 -0
- package/dashboard/dist/assets/{use-transform-DM0QGq_O.js → use-transform-Dl-SvALB.js} +1 -1
- package/dashboard/dist/assets/{use-usage-limits-BnjBG2fM.js → use-usage-limits-BqmHYYc3.js} +1 -1
- package/dashboard/dist/assets/{useCurrency-xQrRFokb.js → useCurrency-B1XK_Z0N.js} +1 -1
- package/dashboard/dist/assets/{usePositioner-DkVdsypM.js → usePositioner-BvqDMGZo.js} +1 -1
- package/dashboard/dist/assets/{useTokenFormat-CvA_kIPe.js → useTokenFormat-pPWJeWRe.js} +1 -1
- package/dashboard/dist/assets/{zap-BJNS4i_u.js → zap-DKYjQi1B.js} +1 -1
- package/dashboard/dist/index.html +13 -11
- package/dashboard/dist/ip-check.html +1 -1
- package/dashboard/dist/leaderboard.html +1 -1
- package/dashboard/dist/llms.txt +3 -2
- package/dashboard/dist/share.html +1 -1
- package/package.json +2 -2
- package/src/commands/init.js +1 -0
- package/src/commands/status.js +10 -0
- package/src/commands/sync.js +24 -0
- package/src/lib/pricing/curated-overrides.json +66 -0
- package/src/lib/pricing/seed-snapshot.json +1 -1
- package/src/lib/rollout.js +277 -0
- package/src/lib/trae-cn-config.js +36 -20
- package/dashboard/dist/assets/DialogDescription-GUHQVNGf.js +0 -1
- package/dashboard/dist/assets/use-reduced-motion-CfCWjE-a.js +0 -1
|
@@ -122,7 +122,7 @@
|
|
|
122
122
|
"price": "0",
|
|
123
123
|
"priceCurrency": "USD"
|
|
124
124
|
},
|
|
125
|
-
"description": "Local-first AI coding usage tracker for
|
|
125
|
+
"description": "Local-first AI coding usage tracker for 47 tools, with a desktop pet, four widgets, achievements, native macOS and Windows apps, accurate cross-provider deduplication, and no prompt collection."
|
|
126
126
|
},
|
|
127
127
|
{
|
|
128
128
|
"@type": "WebSite",
|
|
@@ -208,7 +208,8 @@
|
|
|
208
208
|
{ "@type": "ListItem", "position": 43, "name": "TRAE" },
|
|
209
209
|
{ "@type": "ListItem", "position": 44, "name": "WorkBuddy AI" },
|
|
210
210
|
{ "@type": "ListItem", "position": 45, "name": "DuMate" },
|
|
211
|
-
{ "@type": "ListItem", "position": 46, "name": "Muse Code" }
|
|
211
|
+
{ "@type": "ListItem", "position": 46, "name": "Muse Code" },
|
|
212
|
+
{ "@type": "ListItem", "position": 47, "name": "OpenSquilla" }
|
|
212
213
|
]
|
|
213
214
|
},
|
|
214
215
|
{
|
|
@@ -227,7 +228,7 @@
|
|
|
227
228
|
"name": "Which AI coding CLIs does Token Tracker support?",
|
|
228
229
|
"acceptedAnswer": {
|
|
229
230
|
"@type": "Answer",
|
|
230
|
-
"text": "Token Tracker supports
|
|
231
|
+
"text": "Token Tracker supports 47 AI coding tools, including Claude Code, Codex CLI, AStudio, Cursor, Gemini CLI, Antigravity, Kiro, OpenCode, OpenSquilla, OpenClaw, Every Code, Hermes Agent, GitHub Copilot, Kimi Code, CodeBuddy, WorkBuddy, WorkBuddy AI, Grok Build, oh-my-pi, OmO, pi, Dots, Prime Agent, Craft Agents, Reasonix, Muse Code, Kilo CLI, Kilo Code, Roo Code, Zed Agent, Goose, Droid, Mimo Code, DuMate, ZCode, Qoder, AnythingLLM Desktop, Claude Science, DeepSeek Harness, TRAE Work CN, LM Studio, Unsloth Studio, Devin CLI, Cline, MiniMax Code, Command Code, and TRAE."
|
|
231
232
|
}
|
|
232
233
|
},
|
|
233
234
|
{
|
|
@@ -259,7 +260,7 @@
|
|
|
259
260
|
"name": "How do I monitor AI token usage and cost across tools?",
|
|
260
261
|
"acceptedAnswer": {
|
|
261
262
|
"@type": "Answer",
|
|
262
|
-
"text": "Install Token Tracker with npx tokentracker-cli. It is an AI token usage and cost tracker that monitors token consumption and spend across all
|
|
263
|
+
"text": "Install Token Tracker with npx tokentracker-cli. It is an AI token usage and cost tracker that monitors token consumption and spend across all 47 supported tools in one dashboard, with per-model pricing across 2,200+ models so you can see cost by model, project, and time window without manual tracking."
|
|
263
264
|
}
|
|
264
265
|
},
|
|
265
266
|
{
|
|
@@ -275,7 +276,7 @@
|
|
|
275
276
|
]
|
|
276
277
|
}
|
|
277
278
|
</script>
|
|
278
|
-
<script type="module" crossorigin src="/assets/__vite-browser-external-
|
|
279
|
+
<script type="module" crossorigin src="/assets/__vite-browser-external-KHpR2q-A.js"></script>
|
|
279
280
|
<link rel="stylesheet" crossorigin href="/assets/__vite-browser-external-C9a2vCBN.css">
|
|
280
281
|
</head>
|
|
281
282
|
<body>
|
|
@@ -283,7 +284,7 @@
|
|
|
283
284
|
<h1>Token Tracker: monitor AI token usage and cost with a local dashboard and desktop companion</h1>
|
|
284
285
|
<p>
|
|
285
286
|
Token Tracker is a free, open-source, local-first dashboard that automatically tracks and monitors token usage
|
|
286
|
-
and cost across
|
|
287
|
+
and cost across 47 AI coding tools — including Claude Code, OpenAI Codex, AStudio, Cursor, Gemini CLI, LM Studio, and Unsloth Studio. A desktop pet
|
|
287
288
|
reacts to real token activity, four desktop widgets
|
|
288
289
|
keep usage visible, and achievements turn coding history into progress. Native macOS and Windows apps
|
|
289
290
|
sit on top of accurate cross-provider deduplication. Token counts only — never prompts or conversations.
|
|
@@ -308,7 +309,7 @@
|
|
|
308
309
|
<li><strong>Desktop pet</strong> — a pixel companion that reacts to real token burn, streaks, and rest.</li>
|
|
309
310
|
<li><strong>Four desktop widgets</strong> — usage, activity heatmap, top models, and limits at a glance.</li>
|
|
310
311
|
<li><strong>Achievements</strong> — unlock milestones from local and optional account-wide activity.</li>
|
|
311
|
-
<li><strong>Unified usage dashboard</strong> — input, output, cached, and cache-creation tokens across
|
|
312
|
+
<li><strong>Unified usage dashboard</strong> — input, output, cached, and cache-creation tokens across 47 AI coding tools.</li>
|
|
312
313
|
<li><strong>Cost analysis</strong> — per-model pricing across 2,200+ models with an offline snapshot.</li>
|
|
313
314
|
<li><strong>Usage limits view</strong> — live quota and subscription status for 18 providers, with last-good caching for local providers such as Antigravity and Qoder.</li>
|
|
314
315
|
<li><strong>Service Status page</strong> — live operational and incident status from eight official provider status pages.</li>
|
|
@@ -319,11 +320,11 @@
|
|
|
319
320
|
</ul>
|
|
320
321
|
<p><em>Privacy by design</em>: token counts only, never prompts or conversation content. Local-first; cloud sync is optional and powers only the public leaderboard.</p>
|
|
321
322
|
|
|
322
|
-
<h2>Supported AI coding tools (
|
|
323
|
+
<h2>Supported AI coding tools (47)</h2>
|
|
323
324
|
<p>
|
|
324
325
|
Use Token Tracker as a Claude Code token tracker, Codex token tracker, Cursor token tracker,
|
|
325
326
|
Gemini token tracker, OpenCode token tracker, GitHub Copilot token tracker, or DeepSeek Harness token tracker — one dashboard
|
|
326
|
-
covers all
|
|
327
|
+
covers all 47 tools below.
|
|
327
328
|
</p>
|
|
328
329
|
<ul>
|
|
329
330
|
<li><strong>Claude Code</strong> — Anthropic's official coding agent CLI; integrated via SessionEnd hook.</li>
|
|
@@ -334,6 +335,7 @@
|
|
|
334
335
|
<li><strong>Antigravity</strong> — passive transcript reader.</li>
|
|
335
336
|
<li><strong>Kiro</strong> — SQLite and JSONL readers.</li>
|
|
336
337
|
<li><strong>OpenCode</strong> — open-source coding agent; plugin + SQLite audit.</li>
|
|
338
|
+
<li><strong>OpenSquilla</strong> — passive SQLite usage reader for finalized model rows; never reads transcript content.</li>
|
|
337
339
|
<li><strong>OpenClaw</strong> — session plugin integration.</li>
|
|
338
340
|
<li><strong>Every Code</strong> — Codex-compatible TOML notify hook.</li>
|
|
339
341
|
<li><strong>Hermes Agent</strong> — SQLite sessions table at <code>~/.hermes/state.db</code>.</li>
|
|
@@ -402,7 +404,7 @@
|
|
|
402
404
|
<p>Run <code>npx tokentracker-cli</code>. The CLI auto-detects your AI coding tools, installs hooks, and opens the dashboard.</p>
|
|
403
405
|
|
|
404
406
|
<h3>Which AI coding tools does Token Tracker support?</h3>
|
|
405
|
-
<p>Token Tracker supports
|
|
407
|
+
<p>Token Tracker supports 47 tools: Claude Code, Codex CLI, AStudio, Cursor, Gemini CLI, Antigravity, Kiro, OpenCode, OpenSquilla, OpenClaw, Every Code, Hermes Agent, GitHub Copilot, Kimi Code, CodeBuddy, WorkBuddy, WorkBuddy AI, Grok Build, oh-my-pi, OmO, pi, Dots, Prime Agent, Craft Agents, Reasonix, Muse Code, Kilo CLI, Kilo Code, Roo Code, Zed Agent, Goose, Droid, Mimo Code, DuMate, ZCode, Qoder, AnythingLLM Desktop, Claude Science, DeepSeek Harness, TRAE Work CN, LM Studio, Unsloth Studio, Devin CLI, Cline, MiniMax Code, Command Code, and TRAE.</p>
|
|
406
408
|
|
|
407
409
|
<h3>Is Token Tracker free and open source?</h3>
|
|
408
410
|
<p>Yes. Source on GitHub at <a href="https://github.com/xiufengsun/TokenTracker">github.com/xiufengsun/TokenTracker</a>; npm package <code>tokentracker-cli</code>.</p>
|
|
@@ -414,7 +416,7 @@
|
|
|
414
416
|
<p>Input, output, cached, and cache-creation tokens per model, project, and time window. It also surfaces usage limits for 18 providers, including Claude, Codex, Cursor, Gemini, Antigravity, Qoder, Qoder CN, Command Code, Devin, and WorkBuddy.</p>
|
|
415
417
|
|
|
416
418
|
<h3>How do I monitor AI token usage and cost across tools?</h3>
|
|
417
|
-
<p>Token Tracker is an AI token usage and cost tracker: install it with <code>npx tokentracker-cli</code>, and it monitors token consumption and spend across all
|
|
419
|
+
<p>Token Tracker is an AI token usage and cost tracker: install it with <code>npx tokentracker-cli</code>, and it monitors token consumption and spend across all 47 tools in one dashboard, with per-model pricing across 2,200+ models so you can see cost by model, project, and time window without manual tracking.</p>
|
|
418
420
|
|
|
419
421
|
<h3>Does Token Tracker work offline?</h3>
|
|
420
422
|
<p>Yes. Token Tracker is local-first. All parsing, aggregation, and dashboard rendering happen on your machine. Cloud sync is optional and powers only the public leaderboard.</p>
|
|
@@ -164,7 +164,7 @@
|
|
|
164
164
|
]
|
|
165
165
|
}
|
|
166
166
|
</script>
|
|
167
|
-
<script type="module" crossorigin src="/assets/__vite-browser-external-
|
|
167
|
+
<script type="module" crossorigin src="/assets/__vite-browser-external-KHpR2q-A.js"></script>
|
|
168
168
|
<link rel="stylesheet" crossorigin href="/assets/__vite-browser-external-C9a2vCBN.css">
|
|
169
169
|
</head>
|
|
170
170
|
<body>
|
|
@@ -135,7 +135,7 @@
|
|
|
135
135
|
]
|
|
136
136
|
}
|
|
137
137
|
</script>
|
|
138
|
-
<script type="module" crossorigin src="/assets/__vite-browser-external-
|
|
138
|
+
<script type="module" crossorigin src="/assets/__vite-browser-external-KHpR2q-A.js"></script>
|
|
139
139
|
<link rel="stylesheet" crossorigin href="/assets/__vite-browser-external-C9a2vCBN.css">
|
|
140
140
|
</head>
|
|
141
141
|
<body>
|
package/dashboard/dist/llms.txt
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Token Tracker LLMs Index
|
|
2
2
|
|
|
3
3
|
Token Tracker is a free, open-source, local-first AI coding usage and cost
|
|
4
|
-
tracker for
|
|
4
|
+
tracker for 47 tools. Its distinctive desktop experience includes a pixel pet
|
|
5
5
|
powered by real token activity, four desktop widgets, and achievements. The
|
|
6
6
|
same data powers a cross-platform CLI, a native macOS menu bar app, a native
|
|
7
7
|
Windows system tray app, and a dashboard. It records token counts and
|
|
@@ -23,7 +23,7 @@ timestamps, never prompts, responses, or source code.
|
|
|
23
23
|
- [npm package](https://www.npmjs.com/package/tokentracker-cli)
|
|
24
24
|
- [Latest release](https://github.com/xiufengsun/TokenTracker/releases/latest)
|
|
25
25
|
|
|
26
|
-
## Supported AI coding tools (
|
|
26
|
+
## Supported AI coding tools (47)
|
|
27
27
|
- Claude Code
|
|
28
28
|
- Codex CLI
|
|
29
29
|
- AStudio
|
|
@@ -32,6 +32,7 @@ timestamps, never prompts, responses, or source code.
|
|
|
32
32
|
- Antigravity
|
|
33
33
|
- Kiro
|
|
34
34
|
- OpenCode
|
|
35
|
+
- OpenSquilla
|
|
35
36
|
- OpenClaw
|
|
36
37
|
- Every Code
|
|
37
38
|
- Hermes Agent
|
|
@@ -75,7 +75,7 @@
|
|
|
75
75
|
"description": "Shareable Token Tracker dashboard snapshot."
|
|
76
76
|
}
|
|
77
77
|
</script>
|
|
78
|
-
<script type="module" crossorigin src="/assets/__vite-browser-external-
|
|
78
|
+
<script type="module" crossorigin src="/assets/__vite-browser-external-KHpR2q-A.js"></script>
|
|
79
79
|
<link rel="stylesheet" crossorigin href="/assets/__vite-browser-external-C9a2vCBN.css">
|
|
80
80
|
</head>
|
|
81
81
|
<body>
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tokentracker-cli",
|
|
3
|
-
"version": "1.4.
|
|
4
|
-
"description": "Local-first AI coding token usage and cost tracker for
|
|
3
|
+
"version": "1.4.12",
|
|
4
|
+
"description": "Local-first AI coding token usage and cost tracker for 47 tools, with a dashboard, desktop pet, widgets, achievements, and native macOS/Windows apps.",
|
|
5
5
|
"main": "src/cli.js",
|
|
6
6
|
"bin": {
|
|
7
7
|
"tokentracker-cli": "bin/tracker.js",
|
package/src/commands/init.js
CHANGED
package/src/commands/status.js
CHANGED
|
@@ -83,6 +83,7 @@ const {
|
|
|
83
83
|
resolveZedDbPath,
|
|
84
84
|
resolveLmstudioHome,
|
|
85
85
|
resolveLmstudioLogFiles,
|
|
86
|
+
resolveOpenSquillaDbPaths,
|
|
86
87
|
resolveUnslothDbPath,
|
|
87
88
|
resolveQoderDbPaths,
|
|
88
89
|
resolveQoderCnDbPaths,
|
|
@@ -828,6 +829,9 @@ async function cmdStatus(argv = []) {
|
|
|
828
829
|
const lmstudioHome = resolveLmstudioHome(process.env);
|
|
829
830
|
const lmstudioLogFiles = await resolveLmstudioLogFiles(process.env);
|
|
830
831
|
const lmstudioInstalled = lmstudioLogFiles.length > 0;
|
|
832
|
+
const opensquillaDbPaths = resolveOpenSquillaDbPaths(process.env)
|
|
833
|
+
.filter((dbPath) => fssync.existsSync(dbPath));
|
|
834
|
+
const opensquillaInstalled = opensquillaDbPaths.length > 0;
|
|
831
835
|
const unslothDbPath = resolveUnslothDbPath(process.env);
|
|
832
836
|
const unslothInstalled = Boolean(unslothDbPath && fssync.existsSync(unslothDbPath));
|
|
833
837
|
|
|
@@ -1219,6 +1223,9 @@ async function cmdStatus(argv = []) {
|
|
|
1219
1223
|
unsloth: unslothInstalled
|
|
1220
1224
|
? { installed: true, detail: unslothDbPath }
|
|
1221
1225
|
: { installed: false },
|
|
1226
|
+
opensquilla: opensquillaInstalled
|
|
1227
|
+
? { installed: true, detail: opensquillaDbPaths.join(" | ") }
|
|
1228
|
+
: { installed: false },
|
|
1222
1229
|
devin: devinInstalled
|
|
1223
1230
|
? { installed: true, detail: devinDbPath }
|
|
1224
1231
|
: { installed: false },
|
|
@@ -1437,6 +1444,9 @@ async function cmdStatus(argv = []) {
|
|
|
1437
1444
|
unslothInstalled
|
|
1438
1445
|
? `- Unsloth Studio: passive reader (${unslothDbPath})`
|
|
1439
1446
|
: null,
|
|
1447
|
+
opensquillaInstalled
|
|
1448
|
+
? "- OpenSquilla: passive reader (" + opensquillaDbPaths.join(" | ") + ")"
|
|
1449
|
+
: null,
|
|
1440
1450
|
devinInstalled
|
|
1441
1451
|
? `- Devin CLI: passive reader (${devinDbPath})`
|
|
1442
1452
|
: null,
|
package/src/commands/sync.js
CHANGED
|
@@ -129,6 +129,8 @@ const {
|
|
|
129
129
|
parseZedIncremental,
|
|
130
130
|
resolveLmstudioLogFiles,
|
|
131
131
|
parseLmstudioIncremental,
|
|
132
|
+
resolveOpenSquillaDbPaths,
|
|
133
|
+
parseOpenSquillaIncremental,
|
|
132
134
|
resolveUnslothDbPath,
|
|
133
135
|
parseUnslothIncremental,
|
|
134
136
|
resolveAnythingllmDbPath,
|
|
@@ -378,6 +380,7 @@ const AUTO_SYNC_SOURCES = new Set([
|
|
|
378
380
|
"omp",
|
|
379
381
|
"opencode",
|
|
380
382
|
"openclaw",
|
|
383
|
+
"opensquilla",
|
|
381
384
|
"pi",
|
|
382
385
|
"qoder",
|
|
383
386
|
"qoder-cn",
|
|
@@ -1950,6 +1953,25 @@ async function cmdSync(argv, context = {}) {
|
|
|
1950
1953
|
}
|
|
1951
1954
|
}
|
|
1952
1955
|
|
|
1956
|
+
let opensquillaResult = { recordsProcessed: 0, eventsAggregated: 0, bucketsQueued: 0 };
|
|
1957
|
+
if (sourceAllowed("opensquilla")) {
|
|
1958
|
+
const opensquillaDbPaths = resolveOpenSquillaDbPaths(process.env)
|
|
1959
|
+
.filter((dbPath) => fssync.existsSync(dbPath));
|
|
1960
|
+
if (opensquillaDbPaths.length > 0) {
|
|
1961
|
+
if (progress?.enabled) progress.start("Parsing OpenSquilla " + renderBar(0) + " | buckets 0");
|
|
1962
|
+
try {
|
|
1963
|
+
opensquillaResult = await parseOpenSquillaIncremental({
|
|
1964
|
+
dbPaths: opensquillaDbPaths,
|
|
1965
|
+
cursors,
|
|
1966
|
+
queuePath,
|
|
1967
|
+
onProgress: makeProviderProgress("OpenSquilla"),
|
|
1968
|
+
});
|
|
1969
|
+
} catch (err) {
|
|
1970
|
+
warnProviderParseFailure("OpenSquilla", err, opts);
|
|
1971
|
+
}
|
|
1972
|
+
}
|
|
1973
|
+
}
|
|
1974
|
+
|
|
1953
1975
|
// ── AnythingLLM Desktop (workspace_chats.response.metrics) ──
|
|
1954
1976
|
let anythingllmResult = { recordsProcessed: 0, eventsAggregated: 0, bucketsQueued: 0 };
|
|
1955
1977
|
if (sourceAllowed("anythingllm")) {
|
|
@@ -3435,6 +3457,7 @@ async function cmdSync(argv, context = {}) {
|
|
|
3435
3457
|
copilotResult.recordsProcessed +
|
|
3436
3458
|
lmstudioResult.recordsProcessed +
|
|
3437
3459
|
unslothResult.recordsProcessed +
|
|
3460
|
+
opensquillaResult.recordsProcessed +
|
|
3438
3461
|
anythingllmResult.recordsProcessed +
|
|
3439
3462
|
devinResult.recordsProcessed +
|
|
3440
3463
|
kiloResult.recordsProcessed +
|
|
@@ -3482,6 +3505,7 @@ async function cmdSync(argv, context = {}) {
|
|
|
3482
3505
|
copilotResult.bucketsQueued +
|
|
3483
3506
|
lmstudioResult.bucketsQueued +
|
|
3484
3507
|
unslothResult.bucketsQueued +
|
|
3508
|
+
opensquillaResult.bucketsQueued +
|
|
3485
3509
|
anythingllmResult.bucketsQueued +
|
|
3486
3510
|
devinResult.bucketsQueued +
|
|
3487
3511
|
kiloResult.bucketsQueued +
|
|
@@ -427,6 +427,48 @@
|
|
|
427
427
|
"output": 4,
|
|
428
428
|
"cache_read": 0.19
|
|
429
429
|
},
|
|
430
|
+
"kimi-k3.1-pro": {
|
|
431
|
+
"input": 2,
|
|
432
|
+
"output": 10,
|
|
433
|
+
"cache_read": 0.2,
|
|
434
|
+
"cache_write": 2,
|
|
435
|
+
"note": "Kimi K3.1 Pro (API id kimi-k3.1-pro). Official USD list from https://platform.kimi.ai/ : $2/M input, $10/M output, $2/M cache write (default 5m TTL), $0.20/M cache hit. Flat 1M context; no context-length tiers. Verified 2026-10-25. Distinct from kimi-k3 ($3/$15)."
|
|
436
|
+
},
|
|
437
|
+
"kimi-k3.1-pro-highspeed": {
|
|
438
|
+
"input": 4,
|
|
439
|
+
"output": 20,
|
|
440
|
+
"cache_read": 0.2,
|
|
441
|
+
"cache_write": 4,
|
|
442
|
+
"note": "Kimi K3.1 Pro Highspeed (API id kimi-k3.1-pro-highspeed). Official USD list from https://platform.kimi.ai/ : $4/M input, $20/M output, $4/M cache write (default 5m TTL), $0.20/M cache hit. Same intelligence as K3.1 Pro at higher speed. Verified 2026-10-25."
|
|
443
|
+
},
|
|
444
|
+
"k3.1-pro": {
|
|
445
|
+
"input": 2,
|
|
446
|
+
"output": 10,
|
|
447
|
+
"cache_read": 0.2,
|
|
448
|
+
"cache_write": 2,
|
|
449
|
+
"note": "Bare/compact alias for kimi-k3.1-pro. Same official rates."
|
|
450
|
+
},
|
|
451
|
+
"k3.1pro": {
|
|
452
|
+
"input": 2,
|
|
453
|
+
"output": 10,
|
|
454
|
+
"cache_read": 0.2,
|
|
455
|
+
"cache_write": 2,
|
|
456
|
+
"note": "Compact alias (no hyphen) for kimi-k3.1-pro. Same official rates."
|
|
457
|
+
},
|
|
458
|
+
"k3.1-pro-highspeed": {
|
|
459
|
+
"input": 4,
|
|
460
|
+
"output": 20,
|
|
461
|
+
"cache_read": 0.2,
|
|
462
|
+
"cache_write": 4,
|
|
463
|
+
"note": "Bare alias for kimi-k3.1-pro-highspeed. Same official rates."
|
|
464
|
+
},
|
|
465
|
+
"k3.1pro-highspeed": {
|
|
466
|
+
"input": 4,
|
|
467
|
+
"output": 20,
|
|
468
|
+
"cache_read": 0.2,
|
|
469
|
+
"cache_write": 4,
|
|
470
|
+
"note": "Compact alias for kimi-k3.1-pro-highspeed. Same official rates."
|
|
471
|
+
},
|
|
430
472
|
"kimi-k3": {
|
|
431
473
|
"input": 3,
|
|
432
474
|
"output": 15,
|
|
@@ -785,6 +827,30 @@
|
|
|
785
827
|
"match": "kimi-k2.7-code",
|
|
786
828
|
"ref": "kimi-k2.7-code"
|
|
787
829
|
},
|
|
830
|
+
{
|
|
831
|
+
"match": "kimi-k3.1-pro-highspeed",
|
|
832
|
+
"ref": "kimi-k3.1-pro-highspeed"
|
|
833
|
+
},
|
|
834
|
+
{
|
|
835
|
+
"match": "k3.1-pro-highspeed",
|
|
836
|
+
"ref": "kimi-k3.1-pro-highspeed"
|
|
837
|
+
},
|
|
838
|
+
{
|
|
839
|
+
"match": "k3.1pro-highspeed",
|
|
840
|
+
"ref": "kimi-k3.1-pro-highspeed"
|
|
841
|
+
},
|
|
842
|
+
{
|
|
843
|
+
"match": "kimi-k3.1-pro",
|
|
844
|
+
"ref": "kimi-k3.1-pro"
|
|
845
|
+
},
|
|
846
|
+
{
|
|
847
|
+
"match": "k3.1-pro",
|
|
848
|
+
"ref": "kimi-k3.1-pro"
|
|
849
|
+
},
|
|
850
|
+
{
|
|
851
|
+
"match": "k3.1pro",
|
|
852
|
+
"ref": "kimi-k3.1-pro"
|
|
853
|
+
},
|
|
788
854
|
{
|
|
789
855
|
"match": "kimi-k3",
|
|
790
856
|
"ref": "kimi-k3"
|