tokentracker-cli 1.3.8 → 1.3.10

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 (129) hide show
  1. package/README.de.md +7 -6
  2. package/README.ja.md +6 -5
  3. package/README.ko.md +6 -5
  4. package/README.md +7 -6
  5. package/README.zh-CN.md +6 -5
  6. package/dashboard/dist/assets/{AchievementBadge-BqLeP5y3.js → AchievementBadge-vU4Dwu_p.js} +1 -1
  7. package/dashboard/dist/assets/{AchievementsPage-BwVkM45R.js → AchievementsPage-C8LspyPK.js} +2 -2
  8. package/dashboard/dist/assets/{AchievementsSection-CglgOcQ1.js → AchievementsSection-CP8J07fV.js} +1 -1
  9. package/dashboard/dist/assets/{BadgeDetailModal-IurF0cmo.js → BadgeDetailModal-Ci1egHvR.js} +1 -1
  10. package/dashboard/dist/assets/{BotAnimated-C4_NxPuy.js → BotAnimated-CMXILM_h.js} +1 -1
  11. package/dashboard/dist/assets/{Card-C-UuIN42.js → Card-BHHCCnqR.js} +1 -1
  12. package/dashboard/dist/assets/{CloudCheckoutPage-CrMDquLi.js → CloudCheckoutPage-BY9Hsbix.js} +1 -1
  13. package/dashboard/dist/assets/{CloudPage-D6xTPnMs.js → CloudPage-Y6JgOXcJ.js} +2 -2
  14. package/dashboard/dist/assets/{CommandPalette-8LFLY-LQ.js → CommandPalette-BRWQFJwy.js} +1 -1
  15. package/dashboard/dist/assets/CommunityStatsModal-krT4ZZX9.js +1 -0
  16. package/dashboard/dist/assets/{ConfirmModal-St89kP59.js → ConfirmModal-ZvPOJ0he.js} +1 -1
  17. package/dashboard/dist/assets/Controls-CQlxw03i.js +1 -0
  18. package/dashboard/dist/assets/{DashboardPage-BvGqFvP7.js → DashboardPage-Dbi0d2JY.js} +1 -1
  19. package/dashboard/dist/assets/{DateRangePopover-Cbd1idiF.js → DateRangePopover-DJ8RpQfV.js} +1 -1
  20. package/dashboard/dist/assets/DevicePage-C4_cbw3M.js +1 -0
  21. package/dashboard/dist/assets/{DialogClose-Cb1-Hd8P.js → DialogClose-Dx5AqmUG.js} +1 -1
  22. package/dashboard/dist/assets/DialogDescription-LvhfT1Ox.js +1 -0
  23. package/dashboard/dist/assets/{DialogTitle-VXrHY7H0.js → DialogTitle-Cro2S8s8.js} +1 -1
  24. package/dashboard/dist/assets/{ElectricLogo-DmQqYnSD.js → ElectricLogo-gqnBCtSG.js} +1 -1
  25. package/dashboard/dist/assets/{FadeIn-BEieTXMD.js → FadeIn-B9oATcDZ.js} +1 -1
  26. package/dashboard/dist/assets/{HeaderGithubStar-BlYC_PSb.js → HeaderGithubStar-CYa94wna.js} +1 -1
  27. package/dashboard/dist/assets/{HoverTooltip-C5Pe7iBz.js → HoverTooltip-BJ4qLyuS.js} +1 -1
  28. package/dashboard/dist/assets/{IpCheckPage-Diln3EdG.js → IpCheckPage-Clpq3jdY.js} +1 -1
  29. package/dashboard/dist/assets/{LandingPage-BzGYuAO7.js → LandingPage-CuazuOAo.js} +2 -2
  30. package/dashboard/dist/assets/{LeaderboardPage-Bn-ehU5S.js → LeaderboardPage-BSF1Lbtq.js} +2 -2
  31. package/dashboard/dist/assets/{LeaderboardProBadge-SovdGwYs.js → LeaderboardProBadge-K32gY52s.js} +1 -1
  32. package/dashboard/dist/assets/{LeaderboardProfileModal-BhxmTcHh.js → LeaderboardProfileModal-D5gpn7pP.js} +3 -3
  33. package/dashboard/dist/assets/{LeaderboardProfilePage-3iAYvoTb.js → LeaderboardProfilePage-BmO9nIi-.js} +1 -1
  34. package/dashboard/dist/assets/{LimitsPage-DHxFAdqK.js → LimitsPage-D9ZJ1TeK.js} +1 -1
  35. package/dashboard/dist/assets/{LocalOnlyNotice-HlGfiiI3.js → LocalOnlyNotice-BkzysTS7.js} +1 -1
  36. package/dashboard/dist/assets/{LoginCard-CamUYmiF.js → LoginCard-Do3SNJFU.js} +1 -1
  37. package/dashboard/dist/assets/{LoginModal-CcmYUJ45.js → LoginModal-hph1i_YK.js} +1 -1
  38. package/dashboard/dist/assets/{LoginPage-DMNNmZwr.js → LoginPage-DXYAaFjJ.js} +1 -1
  39. package/dashboard/dist/assets/{PetPage-D6xFX8QA.js → PetPage-D1Pk4OKI.js} +2 -2
  40. package/dashboard/dist/assets/{PopoverPopup-CKKgItAT.js → PopoverPopup-CAIuP_a5.js} +1 -1
  41. package/dashboard/dist/assets/{ProviderIcon-B-uS3pJ3.js → ProviderIcon-R6Bsj81X.js} +1 -1
  42. package/dashboard/dist/assets/{ResetPasswordPage-DX4RJjX0.js → ResetPasswordPage-BR3GTF-3.js} +1 -1
  43. package/dashboard/dist/assets/{Select-Dcg7FYAt.js → Select-38Dh-OWv.js} +1 -1
  44. package/dashboard/dist/assets/{SelectItemText-4vuj6xMs.js → SelectItemText-90n7jKbI.js} +1 -1
  45. package/dashboard/dist/assets/{SelfHostPage-ButVBgE7.js → SelfHostPage-BKVYkHI6.js} +1 -1
  46. package/dashboard/dist/assets/{ServiceStatusPage-DJDDO6lV.js → ServiceStatusPage-PBmBn29J.js} +1 -1
  47. package/dashboard/dist/assets/{SessionsPage-CiUirFMD.js → SessionsPage-58MfDHhe.js} +3 -3
  48. package/dashboard/dist/assets/SettingsPage-BNLHbZUQ.js +5 -0
  49. package/dashboard/dist/assets/{SkillsPage-D2tfFFY8.js → SkillsPage-DMMTk4jD.js} +1 -1
  50. package/dashboard/dist/assets/{TokenGalaxy-TQ-eWK8P.js → TokenGalaxy-BdPETjru.js} +1 -1
  51. package/dashboard/dist/assets/{TooltipPopup-BhSCJqFR.js → TooltipPopup-BXl-vM4L.js} +1 -1
  52. package/dashboard/dist/assets/{TrendMonitor-CP6ZZ53c.js → TrendMonitor-wPfTlX-7.js} +1 -1
  53. package/dashboard/dist/assets/{WidgetsPage-BdeR7P8D.js → WidgetsPage-CuwRMWka.js} +1 -1
  54. package/dashboard/dist/assets/{WrappedPage-OqcqupRE.js → WrappedPage-DOpA9kkg.js} +1 -1
  55. package/dashboard/dist/assets/{__vite-browser-external-BXwSXUpN.js → __vite-browser-external-Go6WKt6Z.js} +3 -3
  56. package/dashboard/dist/assets/__vite-browser-external-kAUz3kFs.css +1 -0
  57. package/dashboard/dist/assets/{agent-logos-E6GfkcgD.js → agent-logos-D7eMvAlk.js} +1 -1
  58. package/dashboard/dist/assets/{arrow-left-D_ufthLH.js → arrow-left--eOVP_Dk.js} +1 -1
  59. package/dashboard/dist/assets/{arrow-right-CgV_OrFz.js → arrow-right-DJYhwBMz.js} +1 -1
  60. package/dashboard/dist/assets/{arrow-up-right-CzeEeXRz.js → arrow-up-right-DhDvpd-S.js} +1 -1
  61. package/dashboard/dist/assets/{calendar-days-BQdTF7ec.js → calendar-days-BuOFlNcJ.js} +1 -1
  62. package/dashboard/dist/assets/{check-C--D8Lze.js → check-UztXSVYi.js} +1 -1
  63. package/dashboard/dist/assets/{chevron-down-BzkceD4z.js → chevron-down-CbJ2QGDU.js} +1 -1
  64. package/dashboard/dist/assets/{cloud-checkout-m1Yllbij.js → cloud-checkout-CoRQjKEu.js} +1 -1
  65. package/dashboard/dist/assets/{composite-7DhFi6TA.js → composite-PlKvZfdM.js} +1 -1
  66. package/dashboard/dist/assets/{download-BSyGLtfW.js → download-McE9gFto.js} +1 -1
  67. package/dashboard/dist/assets/{external-link-KzFbueBT.js → external-link-DZWnR9gS.js} +1 -1
  68. package/dashboard/dist/assets/{flame-DlPM_oaj.js → flame-0xjueXt4.js} +1 -1
  69. package/dashboard/dist/assets/{format-tokens-BHBaWyA3.js → format-tokens-CZoG68uJ.js} +1 -1
  70. package/dashboard/dist/assets/{gift-BhWBQnun.js → gift-pKc80Nqb.js} +1 -1
  71. package/dashboard/dist/assets/{host-mode--iIPGrkN.js → host-mode-99_v1j5J.js} +1 -1
  72. package/dashboard/dist/assets/{icons-COEaSBYi.js → icons-BtfYKSGC.js} +1 -1
  73. package/dashboard/dist/assets/{index-Cf4HcmLp.js → index-Cgthm7BO.js} +1 -1
  74. package/dashboard/dist/assets/{index-Bo8CSxCq.js → index-CyZxN1O0.js} +1 -1
  75. package/dashboard/dist/assets/{index-CW6A_Ff_.js → index-DuaQmNZo.js} +1 -1
  76. package/dashboard/dist/assets/{info-D1gOdsM_.js → info-C8vkxwsO.js} +1 -1
  77. package/dashboard/dist/assets/{link-2-CXDnDOK4.js → link-2-CQzIW5b6.js} +1 -1
  78. package/dashboard/dist/assets/{loader-circle-DWeQPecG.js → loader-circle-B9GqzQyC.js} +1 -1
  79. package/dashboard/dist/assets/{modifiers.esm-BljqMT7V.js → modifiers.esm-ChkCUrZp.js} +1 -1
  80. package/dashboard/dist/assets/{monitor-smartphone-DpkdtOjk.js → monitor-smartphone-DQjBY1W3.js} +1 -1
  81. package/dashboard/dist/assets/{play-BlGNrekI.js → play-qC6xc6fe.js} +1 -1
  82. package/dashboard/dist/assets/{plus-CpYVQ_t-.js → plus-CoNHx5Og.js} +1 -1
  83. package/dashboard/dist/assets/{provider-display-D6Blvktj.js → provider-display-x2EG6zAY.js} +1 -1
  84. package/dashboard/dist/assets/{react-BMJ2wuz1.js → react-EctmAw3f.js} +1 -1
  85. package/dashboard/dist/assets/{safePolygon-BFHXICk1.js → safePolygon-DlSbLtZC.js} +1 -1
  86. package/dashboard/dist/assets/{search-0NxXkytY.js → search-CBcpAj9I.js} +1 -1
  87. package/dashboard/dist/assets/{server-GHkrUKSI.js → server-DtMUoEq0.js} +1 -1
  88. package/dashboard/dist/assets/{shield-check-C16cbx1z.js → shield-check-ByUPtUmu.js} +1 -1
  89. package/dashboard/dist/assets/{skills-api-DAm1fFB4.js → skills-api-BD9VNRej.js} +1 -1
  90. package/dashboard/dist/assets/{sortable.esm-CkOax8h0.js → sortable.esm-B6qEViGJ.js} +1 -1
  91. package/dashboard/dist/assets/{store-DR444-5P.js → store-BgW2uBRe.js} +1 -1
  92. package/dashboard/dist/assets/{terminal-BpvNaIz9.js → terminal-DWPNkr2L.js} +1 -1
  93. package/dashboard/dist/assets/{trash-DX8LwOmN.js → trash-DdbRpgD1.js} +1 -1
  94. package/dashboard/dist/assets/{use-community-stats-BFW4-DYG.js → use-community-stats-43ySv9uM.js} +1 -1
  95. package/dashboard/dist/assets/{use-latest-request-guard-Cpcl08EJ.js → use-latest-request-guard-BuezAv4k.js} +1 -1
  96. package/dashboard/dist/assets/{use-limits-display-prefs-BqixyeAa.js → use-limits-display-prefs-Yi0Hznar.js} +1 -1
  97. package/dashboard/dist/assets/{use-native-settings-BSx7lGEK.js → use-native-settings-BaSrhrM8.js} +1 -1
  98. package/dashboard/dist/assets/{use-ordered-list-UCjB0_zK.js → use-ordered-list-CBD-EIBf.js} +1 -1
  99. package/dashboard/dist/assets/use-reduced-motion-ObUuoXUE.js +1 -0
  100. package/dashboard/dist/assets/{use-session-efficiency-pref-BgOJaGEy.js → use-session-efficiency-pref-CwaFIkE5.js} +1 -1
  101. package/dashboard/dist/assets/{use-transform-Y98QifnQ.js → use-transform-Dea4uz8K.js} +1 -1
  102. package/dashboard/dist/assets/{use-usage-limits-DJGO-Kxv.js → use-usage-limits-DxkYcUIR.js} +1 -1
  103. package/dashboard/dist/assets/{useCurrency-DL458pqS.js → useCurrency-CcZktkbA.js} +1 -1
  104. package/dashboard/dist/assets/{usePositioner-DnCQwlVT.js → usePositioner-BLGIGihf.js} +1 -1
  105. package/dashboard/dist/assets/{useTokenFormat-CYLt9pgs.js → useTokenFormat--dhm3nNf.js} +1 -1
  106. package/dashboard/dist/assets/{zap-BW6E_Jv3.js → zap-CWTmP6Zw.js} +1 -1
  107. package/dashboard/dist/index.html +14 -12
  108. package/dashboard/dist/ip-check.html +2 -2
  109. package/dashboard/dist/leaderboard.html +2 -2
  110. package/dashboard/dist/llms.txt +3 -2
  111. package/dashboard/dist/share.html +2 -2
  112. package/package.json +2 -2
  113. package/src/commands/init.js +9 -0
  114. package/src/commands/status.js +11 -0
  115. package/src/commands/sync.js +197 -122
  116. package/src/lib/dumate.js +95 -0
  117. package/src/lib/pricing/seed-snapshot.json +1 -1
  118. package/src/lib/qoder-cn-cli-limits.js +117 -0
  119. package/src/lib/qoder-limits.js +24 -11
  120. package/src/lib/rollout.js +12 -9
  121. package/src/lib/session-analytics.js +210 -19
  122. package/src/lib/upload-queue.js +134 -0
  123. package/dashboard/dist/assets/CommunityStatsModal-DYTjxABN.js +0 -1
  124. package/dashboard/dist/assets/Controls-BJAwM2gB.js +0 -1
  125. package/dashboard/dist/assets/DevicePage-BcSU0xgf.js +0 -1
  126. package/dashboard/dist/assets/DialogDescription-DQvYzWMp.js +0 -1
  127. package/dashboard/dist/assets/SettingsPage-CB4CML8u.js +0 -5
  128. package/dashboard/dist/assets/__vite-browser-external-DvNSoTb8.css +0 -1
  129. package/dashboard/dist/assets/use-reduced-motion-C6zOHbfR.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 44 tools, with a desktop pet, four widgets, achievements, native macOS and Windows apps, accurate cross-provider deduplication, and no prompt collection."
125
+ "description": "Local-first AI coding usage tracker for 45 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",
@@ -206,7 +206,8 @@
206
206
  { "@type": "ListItem", "position": 41, "name": "MiniMax Code" },
207
207
  { "@type": "ListItem", "position": 42, "name": "Command Code" },
208
208
  { "@type": "ListItem", "position": 43, "name": "TRAE" },
209
- { "@type": "ListItem", "position": 44, "name": "WorkBuddy AI" }
209
+ { "@type": "ListItem", "position": 44, "name": "WorkBuddy AI" },
210
+ { "@type": "ListItem", "position": 45, "name": "DuMate" }
210
211
  ]
211
212
  },
212
213
  {
@@ -225,7 +226,7 @@
225
226
  "name": "Which AI coding CLIs does Token Tracker support?",
226
227
  "acceptedAnswer": {
227
228
  "@type": "Answer",
228
- "text": "Token Tracker supports 44 AI coding tools, including Claude Code, Codex CLI, AStudio, Cursor, Gemini CLI, Antigravity, Kiro, OpenCode, 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, Kilo CLI, Kilo Code, Roo Code, Zed Agent, Goose, Droid, Mimo Code, ZCode, Qoder, AnythingLLM Desktop, Claude Science, DeepSeek Harness, TRAE Work CN, LM Studio, Unsloth Studio, Devin CLI, Cline, MiniMax Code, Command Code, and TRAE."
229
+ "text": "Token Tracker supports 45 AI coding tools, including Claude Code, Codex CLI, AStudio, Cursor, Gemini CLI, Antigravity, Kiro, OpenCode, 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, 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."
229
230
  }
230
231
  },
231
232
  {
@@ -257,7 +258,7 @@
257
258
  "name": "How do I monitor AI token usage and cost across tools?",
258
259
  "acceptedAnswer": {
259
260
  "@type": "Answer",
260
- "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 44 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."
261
+ "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 45 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."
261
262
  }
262
263
  },
263
264
  {
@@ -273,15 +274,15 @@
273
274
  ]
274
275
  }
275
276
  </script>
276
- <script type="module" crossorigin src="/assets/__vite-browser-external-BXwSXUpN.js"></script>
277
- <link rel="stylesheet" crossorigin href="/assets/__vite-browser-external-DvNSoTb8.css">
277
+ <script type="module" crossorigin src="/assets/__vite-browser-external-Go6WKt6Z.js"></script>
278
+ <link rel="stylesheet" crossorigin href="/assets/__vite-browser-external-kAUz3kFs.css">
278
279
  </head>
279
280
  <body>
280
281
  <main class="aeo-seed-content" aria-label="Token Tracker AI-readable summary">
281
282
  <h1>Token Tracker: monitor AI token usage and cost with a local dashboard and desktop companion</h1>
282
283
  <p>
283
284
  Token Tracker is a free, open-source, local-first dashboard that automatically tracks and monitors token usage
284
- and cost across 44 AI coding tools — including Claude Code, OpenAI Codex, AStudio, Cursor, Gemini CLI, LM Studio, and Unsloth Studio. A desktop pet
285
+ and cost across 45 AI coding tools — including Claude Code, OpenAI Codex, AStudio, Cursor, Gemini CLI, LM Studio, and Unsloth Studio. A desktop pet
285
286
  reacts to real token activity, four desktop widgets
286
287
  keep usage visible, and achievements turn coding history into progress. Native macOS and Windows apps
287
288
  sit on top of accurate cross-provider deduplication. Token counts only — never prompts or conversations.
@@ -306,7 +307,7 @@
306
307
  <li><strong>Desktop pet</strong> — a pixel companion that reacts to real token burn, streaks, and rest.</li>
307
308
  <li><strong>Four desktop widgets</strong> — usage, activity heatmap, top models, and limits at a glance.</li>
308
309
  <li><strong>Achievements</strong> — unlock milestones from local and optional account-wide activity.</li>
309
- <li><strong>Unified usage dashboard</strong> — input, output, cached, and cache-creation tokens across 44 AI coding tools.</li>
310
+ <li><strong>Unified usage dashboard</strong> — input, output, cached, and cache-creation tokens across 45 AI coding tools.</li>
310
311
  <li><strong>Cost analysis</strong> — per-model pricing across 2,200+ models with an offline snapshot.</li>
311
312
  <li><strong>Usage limits view</strong> — live quota and subscription status for 17 providers, with last-good caching for local providers such as Antigravity and Qoder.</li>
312
313
  <li><strong>Service Status page</strong> — live operational and incident status from eight official provider status pages.</li>
@@ -317,11 +318,11 @@
317
318
  </ul>
318
319
  <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>
319
320
 
320
- <h2>Supported AI coding tools (44)</h2>
321
+ <h2>Supported AI coding tools (45)</h2>
321
322
  <p>
322
323
  Use Token Tracker as a Claude Code token tracker, Codex token tracker, Cursor token tracker,
323
324
  Gemini token tracker, OpenCode token tracker, GitHub Copilot token tracker, or DeepSeek Harness token tracker — one dashboard
324
- covers all 44 tools below.
325
+ covers all 45 tools below.
325
326
  </p>
326
327
  <ul>
327
328
  <li><strong>Claude Code</strong> — Anthropic's official coding agent CLI; integrated via SessionEnd hook.</li>
@@ -354,6 +355,7 @@
354
355
  <li><strong>Zed Agent</strong> — passive SQLite reader.</li>
355
356
  <li><strong>Goose</strong> — passive SQLite reader.</li>
356
357
  <li><strong>Droid (Factory)</strong> — passive cumulative session reader.</li>
358
+ <li><strong>DuMate</strong> — passive OpenCode SQLite reader with an independent source and reinstall-copy deduplication.</li>
357
359
  <li><strong>Mimo Code</strong> — passive SQLite reader that excludes mirrored Claude history.</li>
358
360
  <li><strong>ZCode</strong> — passive SQLite reader for Z.ai-native turns.</li>
359
361
  <li><strong>Qoder</strong> — passive SQLite reader with exact prompt, cached-input, and completion token counters.</li>
@@ -398,7 +400,7 @@
398
400
  <p>Run <code>npx tokentracker-cli</code>. The CLI auto-detects your AI coding tools, installs hooks, and opens the dashboard.</p>
399
401
 
400
402
  <h3>Which AI coding tools does Token Tracker support?</h3>
401
- <p>Token Tracker supports 44 tools: Claude Code, Codex CLI, AStudio, Cursor, Gemini CLI, Antigravity, Kiro, OpenCode, 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, Kilo CLI, Kilo Code, Roo Code, Zed Agent, Goose, Droid, Mimo Code, 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>
403
+ <p>Token Tracker supports 45 tools: Claude Code, Codex CLI, AStudio, Cursor, Gemini CLI, Antigravity, Kiro, OpenCode, 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, 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>
402
404
 
403
405
  <h3>Is Token Tracker free and open source?</h3>
404
406
  <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>
@@ -410,7 +412,7 @@
410
412
  <p>Input, output, cached, and cache-creation tokens per model, project, and time window. It also surfaces usage limits for 17 providers, including Claude, Codex, Cursor, Gemini, Antigravity, Qoder, Qoder CN, Command Code, and Devin.</p>
411
413
 
412
414
  <h3>How do I monitor AI token usage and cost across tools?</h3>
413
- <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 44 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>
415
+ <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 45 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>
414
416
 
415
417
  <h3>Does Token Tracker work offline?</h3>
416
418
  <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,8 +164,8 @@
164
164
  ]
165
165
  }
166
166
  </script>
167
- <script type="module" crossorigin src="/assets/__vite-browser-external-BXwSXUpN.js"></script>
168
- <link rel="stylesheet" crossorigin href="/assets/__vite-browser-external-DvNSoTb8.css">
167
+ <script type="module" crossorigin src="/assets/__vite-browser-external-Go6WKt6Z.js"></script>
168
+ <link rel="stylesheet" crossorigin href="/assets/__vite-browser-external-kAUz3kFs.css">
169
169
  </head>
170
170
  <body>
171
171
  <main class="aeo-seed-content" aria-label="Claude IP Check AI-readable summary">
@@ -135,8 +135,8 @@
135
135
  ]
136
136
  }
137
137
  </script>
138
- <script type="module" crossorigin src="/assets/__vite-browser-external-BXwSXUpN.js"></script>
139
- <link rel="stylesheet" crossorigin href="/assets/__vite-browser-external-DvNSoTb8.css">
138
+ <script type="module" crossorigin src="/assets/__vite-browser-external-Go6WKt6Z.js"></script>
139
+ <link rel="stylesheet" crossorigin href="/assets/__vite-browser-external-kAUz3kFs.css">
140
140
  </head>
141
141
  <body>
142
142
  <main class="aeo-seed-content" aria-label="AI Coding Token Usage Leaderboard AI-readable summary">
@@ -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 44 tools. Its distinctive desktop experience includes a pixel pet
4
+ tracker for 45 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 (44)
26
+ ## Supported AI coding tools (45)
27
27
  - Claude Code
28
28
  - Codex CLI
29
29
  - AStudio
@@ -54,6 +54,7 @@ timestamps, never prompts, responses, or source code.
54
54
  - Goose
55
55
  - Droid (Factory)
56
56
  - Mimo Code
57
+ - DuMate
57
58
  - ZCode
58
59
  - Qoder
59
60
  - AnythingLLM Desktop
@@ -75,8 +75,8 @@
75
75
  "description": "Shareable Token Tracker dashboard snapshot."
76
76
  }
77
77
  </script>
78
- <script type="module" crossorigin src="/assets/__vite-browser-external-BXwSXUpN.js"></script>
79
- <link rel="stylesheet" crossorigin href="/assets/__vite-browser-external-DvNSoTb8.css">
78
+ <script type="module" crossorigin src="/assets/__vite-browser-external-Go6WKt6Z.js"></script>
79
+ <link rel="stylesheet" crossorigin href="/assets/__vite-browser-external-kAUz3kFs.css">
80
80
  </head>
81
81
  <body>
82
82
  <main class="aeo-seed-content" aria-label="Token Tracker share page summary">
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "tokentracker-cli",
3
- "version": "1.3.8",
4
- "description": "Local-first AI coding token usage and cost tracker for 44 tools, with a dashboard, desktop pet, widgets, achievements, and native macOS/Windows apps.",
3
+ "version": "1.3.10",
4
+ "description": "Local-first AI coding token usage and cost tracker for 45 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",
@@ -13,6 +13,7 @@ const {
13
13
  chmod600IfPossible,
14
14
  } = require("../lib/fs");
15
15
  const { resolveMimoNativeDbPath } = require("../lib/install-resolver");
16
+ const { resolveDumateDbPaths } = require("../lib/dumate");
16
17
  const { expandHome } = require("../lib/scan-roots");
17
18
  const { prompt, promptHidden } = require("../lib/prompt");
18
19
  const {
@@ -147,6 +148,7 @@ const SUPPORTED_PROVIDERS = [
147
148
  "Goose",
148
149
  "Droid",
149
150
  "Mimo",
151
+ "DuMate",
150
152
  "ZCode",
151
153
  "Qoder",
152
154
  "AnythingLLM Desktop",
@@ -925,6 +927,13 @@ async function applyIntegrationSetup({
925
927
  }
926
928
  }
927
929
 
930
+ {
931
+ const dumateDbPaths = resolveDumateDbPaths({ home });
932
+ if (dumateDbPaths.length > 0) {
933
+ summary.push({ label: "DuMate", status: "detected", detail: "Passive reader (no hook needed)" });
934
+ }
935
+ }
936
+
928
937
  // Mimo (mimocode): passive reader — no hook installation needed. Reuses the
929
938
  // OpenCode-fork SQLite schema at ~/.local/share/mimocode/mimocode.db
930
939
  // (override via MIMO_HOME).
@@ -3,6 +3,7 @@ const path = require("node:path");
3
3
  const fs = require("node:fs/promises");
4
4
  const fssync = require("node:fs");
5
5
  const pkg = require("../../package.json");
6
+ const { resolveDumateDbPaths } = require("../lib/dumate");
6
7
 
7
8
  const { readJson } = require("../lib/fs");
8
9
  const { readCursorStateSummary } = require("../lib/cursor-store");
@@ -564,6 +565,10 @@ async function cmdStatus(argv = []) {
564
565
  const kiloInstalled = kiloActive.length > 0;
565
566
  const kiloDbPath = kiloActive.join(" | ");
566
567
 
568
+ const dumateDbPaths = resolveDumateDbPaths({ home });
569
+ const dumateInstalled = dumateDbPaths.length > 0;
570
+ const dumateDbPath = dumateDbPaths.join(" | ");
571
+
567
572
  // Mimo (mimocode — OpenCode-fork SQLite) — passive scan of mimocode.db.
568
573
  const mimoNativeValue = resolveMimoNativeDbPath({ home });
569
574
  const wslMimoDir = process.platform === "win32" && wsl.shouldProbeWsl(process.env)
@@ -1133,6 +1138,9 @@ async function cmdStatus(argv = []) {
1133
1138
  kilo_cli: kiloInstalled
1134
1139
  ? { installed: true, detail: kiloDbPath }
1135
1140
  : { installed: false },
1141
+ dumate: dumateInstalled
1142
+ ? { installed: true, detail: dumateDbPath }
1143
+ : { installed: false },
1136
1144
  mimo: mimoInstalled
1137
1145
  ? { installed: true, detail: mimoDbPath }
1138
1146
  : { installed: false },
@@ -1329,6 +1337,9 @@ async function cmdStatus(argv = []) {
1329
1337
  kiloInstalled
1330
1338
  ? `- Kilo CLI: passive reader (${kiloDbPath})`
1331
1339
  : null,
1340
+ dumateInstalled
1341
+ ? `- DuMate: passive reader (${dumateDbPath})`
1342
+ : null,
1332
1343
  mimoInstalled
1333
1344
  ? `- Mimo: passive reader (${mimoDbPath})`
1334
1345
  : null,