vibestats 1.3.13 → 1.4.1

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 (159) hide show
  1. package/README.md +15 -3
  2. package/dist/index.js +1010 -199
  3. package/dist/web/404.html +1 -0
  4. package/dist/web/_next/static/chunks/231.de8a9ee791ed9eef.js +1 -0
  5. package/dist/web/_next/static/chunks/498-74a3a367cb8442f0.js +1 -0
  6. package/dist/web/_next/static/chunks/562.a5731acd5543100e.js +1 -0
  7. package/dist/web/_next/static/chunks/816-8960921093d57453.js +1 -0
  8. package/dist/web/_next/static/chunks/832-93b990b7ceeaa2c5.js +1 -0
  9. package/dist/web/_next/static/chunks/971-0ab6a23b2af361a6.js +1 -0
  10. package/dist/web/_next/static/chunks/app/_not-found/page-91f35a114767b957.js +1 -0
  11. package/dist/web/_next/static/chunks/app/activity/[slug]/page-bd4706aecd453508.js +1 -0
  12. package/dist/web/_next/static/chunks/app/activity/page-5d0587c1d5910e68.js +1 -0
  13. package/dist/web/_next/static/chunks/app/changelog/page-5d0587c1d5910e68.js +1 -0
  14. package/dist/web/_next/static/chunks/app/compare/[slug]/page-5d0587c1d5910e68.js +1 -0
  15. package/dist/web/_next/static/chunks/app/compare/page-5d0587c1d5910e68.js +1 -0
  16. package/dist/web/_next/static/chunks/app/dashboard/activity/page-e84049538e03061e.js +1 -0
  17. package/dist/web/_next/static/chunks/app/dashboard/layout-bd4706aecd453508.js +1 -0
  18. package/dist/web/_next/static/chunks/app/dashboard/page-4834f263664e8663.js +1 -0
  19. package/dist/web/_next/static/chunks/app/dashboard/usage/page-b42b457b8fd3865c.js +1 -0
  20. package/dist/web/_next/static/chunks/app/dashboard/wrapped/page-268dced4ee2726f7.js +1 -0
  21. package/dist/web/_next/static/chunks/app/docs/commands/page-5d0587c1d5910e68.js +1 -0
  22. package/dist/web/_next/static/chunks/app/docs/page-5d0587c1d5910e68.js +1 -0
  23. package/dist/web/_next/static/chunks/app/features/[slug]/page-5d0587c1d5910e68.js +1 -0
  24. package/dist/web/_next/static/chunks/app/features/page-5d0587c1d5910e68.js +1 -0
  25. package/dist/web/_next/static/chunks/app/guides/[slug]/page-5d0587c1d5910e68.js +1 -0
  26. package/dist/web/_next/static/chunks/app/guides/page-5d0587c1d5910e68.js +1 -0
  27. package/dist/web/_next/static/chunks/app/images/[...slug]/route-bd4706aecd453508.js +1 -0
  28. package/dist/web/_next/static/chunks/app/layout-6ebd9b17af55ec02.js +1 -0
  29. package/dist/web/_next/static/chunks/app/page-dfb7bbdb5999dc75.js +1 -0
  30. package/dist/web/_next/static/chunks/app/robots.txt/route-bd4706aecd453508.js +1 -0
  31. package/dist/web/_next/static/chunks/app/s/[slug]/route-bd4706aecd453508.js +1 -0
  32. package/dist/web/_next/static/chunks/app/sitemap.xml/route-bd4706aecd453508.js +1 -0
  33. package/dist/web/_next/static/chunks/app/usage/[slug]/page-bd4706aecd453508.js +1 -0
  34. package/dist/web/_next/static/chunks/app/use-cases/[slug]/page-5d0587c1d5910e68.js +1 -0
  35. package/dist/web/_next/static/chunks/app/use-cases/page-5d0587c1d5910e68.js +1 -0
  36. package/dist/web/_next/static/chunks/app/wrapped/[slug]/page-bd4706aecd453508.js +1 -0
  37. package/dist/web/_next/static/chunks/app/wrapped/page-66b00de7736097db.js +1 -0
  38. package/dist/web/_next/static/chunks/c476d598-9099ed8b975ae1d6.js +1 -0
  39. package/dist/web/_next/static/chunks/framework-1c6a486f6592f084.js +1 -0
  40. package/dist/web/_next/static/chunks/main-app-6619364ab1f13fb7.js +1 -0
  41. package/dist/web/_next/static/chunks/main-f6fa273a9100cc16.js +1 -0
  42. package/dist/web/_next/static/chunks/pages/_app-55552e79b4ca5b96.js +1 -0
  43. package/dist/web/_next/static/chunks/pages/_error-da3c1b00689f457b.js +1 -0
  44. package/dist/web/_next/static/chunks/polyfills-42372ed130431b0a.js +1 -0
  45. package/dist/web/_next/static/chunks/webpack-175b2f5685d7557b.js +1 -0
  46. package/dist/web/_next/static/css/335de1248158d380.css +3 -0
  47. package/dist/web/_next/static/gPirvBMhpRSdtR0tsMj2H/_buildManifest.js +1 -0
  48. package/dist/web/_next/static/gPirvBMhpRSdtR0tsMj2H/_ssgManifest.js +1 -0
  49. package/dist/web/activity.html +1 -0
  50. package/dist/web/activity.txt +19 -0
  51. package/dist/web/changelog.html +1 -0
  52. package/dist/web/changelog.txt +60 -0
  53. package/dist/web/compare/claude-code-vs-codex-cli-tracking.html +1 -0
  54. package/dist/web/compare/claude-code-vs-codex-cli-tracking.txt +25 -0
  55. package/dist/web/compare/daily-vs-monthly-ai-usage-reports.html +1 -0
  56. package/dist/web/compare/daily-vs-monthly-ai-usage-reports.txt +24 -0
  57. package/dist/web/compare/local-vs-cloud-ai-analytics.html +1 -0
  58. package/dist/web/compare/local-vs-cloud-ai-analytics.txt +25 -0
  59. package/dist/web/compare/manual-tracking-vs-vibestats.html +1 -0
  60. package/dist/web/compare/manual-tracking-vs-vibestats.txt +24 -0
  61. package/dist/web/compare/querystring-shares-vs-stored-share-pages.html +1 -0
  62. package/dist/web/compare/querystring-shares-vs-stored-share-pages.txt +25 -0
  63. package/dist/web/compare/session-breakdown-vs-model-breakdown.html +1 -0
  64. package/dist/web/compare/session-breakdown-vs-model-breakdown.txt +25 -0
  65. package/dist/web/compare/single-source-vs-combined-tracking.html +1 -0
  66. package/dist/web/compare/single-source-vs-combined-tracking.txt +25 -0
  67. package/dist/web/compare/terminal-table-vs-json-output.html +1 -0
  68. package/dist/web/compare/terminal-table-vs-json-output.txt +24 -0
  69. package/dist/web/compare/token-volume-vs-cost-estimation.html +1 -0
  70. package/dist/web/compare/token-volume-vs-cost-estimation.txt +24 -0
  71. package/dist/web/compare/wrapped-vs-activity-heatmap.html +1 -0
  72. package/dist/web/compare/wrapped-vs-activity-heatmap.txt +25 -0
  73. package/dist/web/compare.html +1 -0
  74. package/dist/web/compare.txt +32 -0
  75. package/dist/web/dashboard/activity.html +1 -0
  76. package/dist/web/dashboard/activity.txt +20 -0
  77. package/dist/web/dashboard/usage.html +1 -0
  78. package/dist/web/dashboard/usage.txt +20 -0
  79. package/dist/web/dashboard/wrapped.html +1 -0
  80. package/dist/web/dashboard/wrapped.txt +20 -0
  81. package/dist/web/dashboard.html +1 -0
  82. package/dist/web/dashboard.txt +20 -0
  83. package/dist/web/docs/commands.html +1 -0
  84. package/dist/web/docs/commands.txt +33 -0
  85. package/dist/web/docs.html +1 -0
  86. package/dist/web/docs.txt +25 -0
  87. package/dist/web/features/ai-coding-activity-heatmap.html +1 -0
  88. package/dist/web/features/ai-coding-activity-heatmap.txt +25 -0
  89. package/dist/web/features/ai-coding-wrapped.html +1 -0
  90. package/dist/web/features/ai-coding-wrapped.txt +24 -0
  91. package/dist/web/features/claude-code-stats.html +1 -0
  92. package/dist/web/features/claude-code-stats.txt +24 -0
  93. package/dist/web/features/claude-diagnostics.html +1 -0
  94. package/dist/web/features/claude-diagnostics.txt +24 -0
  95. package/dist/web/features/codex-cli-stats.html +1 -0
  96. package/dist/web/features/codex-cli-stats.txt +24 -0
  97. package/dist/web/features/combined-ai-coding-stats.html +1 -0
  98. package/dist/web/features/combined-ai-coding-stats.txt +25 -0
  99. package/dist/web/features/json-and-automation-exports.html +1 -0
  100. package/dist/web/features/json-and-automation-exports.txt +25 -0
  101. package/dist/web/features/model-breakdown.html +1 -0
  102. package/dist/web/features/model-breakdown.txt +24 -0
  103. package/dist/web/features/privacy-first-analytics.html +1 -0
  104. package/dist/web/features/privacy-first-analytics.txt +25 -0
  105. package/dist/web/features/session-breakdown.html +1 -0
  106. package/dist/web/features/session-breakdown.txt +24 -0
  107. package/dist/web/features/share-pages.html +1 -0
  108. package/dist/web/features/share-pages.txt +24 -0
  109. package/dist/web/features/token-and-cost-tracking.html +1 -0
  110. package/dist/web/features/token-and-cost-tracking.txt +24 -0
  111. package/dist/web/features.html +1 -0
  112. package/dist/web/features.txt +33 -0
  113. package/dist/web/guides/how-to-build-ai-activity-heatmap.html +1 -0
  114. package/dist/web/guides/how-to-build-ai-activity-heatmap.txt +24 -0
  115. package/dist/web/guides/how-to-compare-model-usage.html +1 -0
  116. package/dist/web/guides/how-to-compare-model-usage.txt +24 -0
  117. package/dist/web/guides/how-to-create-ai-coding-wrapped.html +1 -0
  118. package/dist/web/guides/how-to-create-ai-coding-wrapped.txt +24 -0
  119. package/dist/web/guides/how-to-measure-ai-token-costs.html +1 -0
  120. package/dist/web/guides/how-to-measure-ai-token-costs.txt +24 -0
  121. package/dist/web/guides/how-to-read-claude-diagnostics.html +1 -0
  122. package/dist/web/guides/how-to-read-claude-diagnostics.txt +24 -0
  123. package/dist/web/guides/how-to-share-ai-coding-stats.html +1 -0
  124. package/dist/web/guides/how-to-share-ai-coding-stats.txt +24 -0
  125. package/dist/web/guides/how-to-track-claude-code-usage.html +1 -0
  126. package/dist/web/guides/how-to-track-claude-code-usage.txt +24 -0
  127. package/dist/web/guides/how-to-track-codex-cli-usage.html +1 -0
  128. package/dist/web/guides/how-to-track-codex-cli-usage.txt +24 -0
  129. package/dist/web/guides.html +1 -0
  130. package/dist/web/guides.txt +27 -0
  131. package/dist/web/index.html +1 -0
  132. package/dist/web/index.txt +23 -0
  133. package/dist/web/robots.txt +7 -0
  134. package/dist/web/sitemap.xml +279 -0
  135. package/dist/web/use-cases/ai-agencies.html +1 -0
  136. package/dist/web/use-cases/ai-agencies.txt +23 -0
  137. package/dist/web/use-cases/consultants.html +1 -0
  138. package/dist/web/use-cases/consultants.txt +23 -0
  139. package/dist/web/use-cases/engineering-managers.html +1 -0
  140. package/dist/web/use-cases/engineering-managers.txt +24 -0
  141. package/dist/web/use-cases/freelancers.html +1 -0
  142. package/dist/web/use-cases/freelancers.txt +23 -0
  143. package/dist/web/use-cases/indie-hackers.html +1 -0
  144. package/dist/web/use-cases/indie-hackers.txt +23 -0
  145. package/dist/web/use-cases/monthly-reporting.html +1 -0
  146. package/dist/web/use-cases/monthly-reporting.txt +23 -0
  147. package/dist/web/use-cases/open-source-maintainers.html +1 -0
  148. package/dist/web/use-cases/open-source-maintainers.txt +24 -0
  149. package/dist/web/use-cases/personal-retrospectives.html +1 -0
  150. package/dist/web/use-cases/personal-retrospectives.txt +24 -0
  151. package/dist/web/use-cases/researchers.html +1 -0
  152. package/dist/web/use-cases/researchers.txt +23 -0
  153. package/dist/web/use-cases/weekly-reviews.html +1 -0
  154. package/dist/web/use-cases/weekly-reviews.txt +23 -0
  155. package/dist/web/use-cases.html +1 -0
  156. package/dist/web/use-cases.txt +31 -0
  157. package/dist/web/wrapped.html +1 -0
  158. package/dist/web/wrapped.txt +20 -0
  159. package/package.json +7 -8
@@ -0,0 +1 @@
1
+ <!DOCTYPE html><!--gPirvBMhpRSdtR0tsMj2H--><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/css/335de1248158d380.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-175b2f5685d7557b.js"/><script src="/_next/static/chunks/c476d598-9099ed8b975ae1d6.js" async=""></script><script src="/_next/static/chunks/498-74a3a367cb8442f0.js" async=""></script><script src="/_next/static/chunks/main-app-6619364ab1f13fb7.js" async=""></script><script src="/_next/static/chunks/app/layout-6ebd9b17af55ec02.js" async=""></script><script src="/_next/static/chunks/816-8960921093d57453.js" async=""></script><script src="/_next/static/chunks/app/guides/%5Bslug%5D/page-5d0587c1d5910e68.js" async=""></script><link rel="preload" href="https://analytics.wolfai.dev/wolf-analytics.min.js" as="script"/><title>How to track Codex CLI usage | vibestats</title><meta name="description" content="A practical guide to tracking OpenAI Codex CLI usage locally with vibestats."/><meta name="application-name" content="vibestats"/><meta name="keywords" content="vibestats,Claude Code stats,Codex CLI stats,AI coding stats,AI coding analytics,Claude Code wrapped,Codex usage tracker,developer analytics,how to track Codex CLI usage,Codex CLI usage guide,OpenAI Codex stats guide"/><link rel="canonical" href="https://vibestats.wolfai.dev/guides/how-to-track-codex-cli-usage"/><meta property="og:title" content="How to track Codex CLI usage | vibestats"/><meta property="og:description" content="A practical guide to tracking OpenAI Codex CLI usage locally with vibestats."/><meta property="og:url" content="https://vibestats.wolfai.dev/guides/how-to-track-codex-cli-usage"/><meta property="og:site_name" content="vibestats"/><meta property="og:locale" content="en_US"/><meta property="og:type" content="website"/><meta name="twitter:card" content="summary"/><meta name="twitter:title" content="How to track Codex CLI usage | vibestats"/><meta name="twitter:description" content="A practical guide to tracking OpenAI Codex CLI usage locally with vibestats."/><script>(self.__next_s=self.__next_s||[]).push([0,{"children":"window.WOLF_ANALYTICS_CONFIG = {\"apiUrl\":\"https://analapi.wolfai.dev\",\"projectApiKey\":\"wa_rMSm5mgj44W_9LzMsKCwwAipAtxPynp1tn4PbxN_Oa8\",\"mode\":\"intl\",\"sourceApp\":\"vibestats\"};","id":"wolf-analytics-config"}])</script><script>(self.__next_s=self.__next_s||[]).push(["https://analytics.wolfai.dev/wolf-analytics.min.js",{"id":"wolf-analytics-script"}])</script><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="antialiased min-h-screen bg-background text-foreground"><div hidden=""><!--$--><!--/$--></div><main class="min-h-screen bg-[radial-gradient(circle_at_top_left,_rgba(253,186,116,0.22),_transparent_35%),linear-gradient(180deg,#fff9f1_0%,#fff1de_100%)] px-4 py-8 text-slate-900 md:px-8 md:py-12"><script type="application/ld+json">[{"@context":"https://schema.org","@type":"WebPage","name":"How to track Codex CLI usage","description":"A practical guide to tracking OpenAI Codex CLI usage locally with vibestats.","url":"https://vibestats.wolfai.dev/guides/how-to-track-codex-cli-usage","isPartOf":{"@type":"WebSite","name":"vibestats","url":"https://vibestats.wolfai.dev/"}},{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"vibestats","item":"https://vibestats.wolfai.dev/"},{"@type":"ListItem","position":2,"name":"Guides","item":"https://vibestats.wolfai.dev/guides"},{"@type":"ListItem","position":3,"name":"How to track Codex CLI usage","item":"https://vibestats.wolfai.dev/guides/how-to-track-codex-cli-usage"}]},{"@context":"https://schema.org","@type":"FAQPage","mainEntity":[{"@type":"Question","name":"What is the fastest way to approach how to track codex cli usage?","acceptedAnswer":{"@type":"Answer","text":"Start with the relevant command, verify the output locally, then decide whether you need a share page, a wrapped summary, or a heatmap for communication."}},{"@type":"Question","name":"Do I need to upload raw conversations for these guides?","acceptedAnswer":{"@type":"Answer","text":"No. vibestats works from local usage artifacts and only turns aggregate results into hosted pages when you explicitly publish them."}}]}]</script><div class="mx-auto max-w-7xl"><header class="rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)] overflow-hidden"><div class="flex flex-wrap items-center gap-3 text-sm text-slate-500"><a class="transition hover:text-orange-700" href="/">vibestats</a><span>/</span><a class="transition hover:text-orange-700" href="/guides">Guides</a><span>/</span><span class="text-slate-700">How to track Codex CLI usage</span></div><p class="mt-5 text-[0.72rem] font-semibold uppercase tracking-[0.28em] text-slate-500">Guide</p><h1 class="mt-4 max-w-5xl font-[family-name:var(--font-display)] text-5xl leading-none text-slate-950 md:text-7xl">How to track Codex CLI usage</h1><p class="mt-5 max-w-3xl text-base leading-7 text-slate-600 md:text-lg">A practical guide to tracking OpenAI Codex CLI usage locally with vibestats.</p><div class="mt-6 grid gap-3 md:grid-cols-3"><div class="rounded-[1.3rem] border border-slate-200 bg-slate-50 px-4 py-4"><div class="text-[0.7rem] font-semibold uppercase tracking-[0.22em] text-slate-500">Intent</div><div class="mt-2 text-sm leading-6 text-slate-700">Guide</div></div><div class="rounded-[1.3rem] border border-slate-200 bg-slate-50 px-4 py-4"><div class="text-[0.7rem] font-semibold uppercase tracking-[0.22em] text-slate-500">Focus</div><div class="mt-2 text-sm leading-6 text-slate-700">How to track Codex CLI usage is a practical workflow page for turning local AI coding usage into something readable and repeatable.</div></div><div class="rounded-[1.3rem] border border-slate-200 bg-slate-50 px-4 py-4"><div class="text-[0.7rem] font-semibold uppercase tracking-[0.22em] text-slate-500">Next step</div><div class="mt-2 text-sm leading-6 text-slate-700"><a class="text-slate-900 transition hover:text-orange-700" href="/docs/commands">Open the command reference</a></div></div></div></header><section class="mt-6 grid gap-4 lg:grid-cols-[0.8fr_1.2fr]"><article class="rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]"><p class="text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500">Highlights</p><ul class="mt-4 space-y-3 text-sm leading-7 text-slate-600"><li>Codex works best as its own first view</li><li>Total and session views answer different questions</li><li>Combined reporting is a second step, not the first</li></ul></article><article class="rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]"><p class="text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500">Relevant commands</p><div class="mt-4 grid gap-3"><code class="rounded-[1.2rem] bg-slate-100 px-4 py-4 text-sm text-slate-700">npx vibestats codex</code><code class="rounded-[1.2rem] bg-slate-100 px-4 py-4 text-sm text-slate-700">npx vibestats usage codex --total</code><code class="rounded-[1.2rem] bg-slate-100 px-4 py-4 text-sm text-slate-700">npx vibestats codex --sessions</code></div></article></section><section class="mt-6"><div class="grid gap-4 md:grid-cols-3"><article class="rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]"><p class="text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500">Step <!-- -->1</p><h2 class="mt-3 text-2xl font-semibold text-slate-950">Switch to the Codex source</h2><p class="mt-4 text-sm leading-7 text-slate-600">Run `npx vibestats codex` so the report reflects Codex CLI usage only.</p></article><article class="rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]"><p class="text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500">Step <!-- -->2</p><h2 class="mt-3 text-2xl font-semibold text-slate-950">Choose the right grouping</h2><p class="mt-4 text-sm leading-7 text-slate-600">Use totals, models, or sessions depending on whether you care about spend, model mix, or session behavior.</p></article><article class="rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]"><p class="text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500">Step <!-- -->3</p><h2 class="mt-3 text-2xl font-semibold text-slate-950">Combine only when needed</h2><p class="mt-4 text-sm leading-7 text-slate-600">Move to combined reporting after you understand the Codex-only picture, not before.</p></article></div></section><section class="mt-6 grid gap-4 md:grid-cols-2"><article class="rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]"><h2 class="font-[family-name:var(--font-display)] text-3xl leading-none text-slate-950">Why this guide exists</h2><p class="mt-4 text-sm leading-7 text-slate-600">Most AI coding reporting problems are not about one missing command. They are about choosing the right surface: daily usage, wrapped summaries, activity heatmaps, cost views, or shareable aggregate pages.</p></article><article class="rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]"><h2 class="font-[family-name:var(--font-display)] text-3xl leading-none text-slate-950">What to expect</h2><p class="mt-4 text-sm leading-7 text-slate-600">This guide stays focused on vibestats workflows and the pages already documented in the public command reference, so you can move from local data to a readable result quickly.</p></article></section><section class="mt-6 rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]"><p class="text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500">FAQ</p><div class="mt-4 grid gap-4 md:grid-cols-2"><article class="rounded-[1.4rem] border border-slate-200 bg-slate-50 px-5 py-5"><h2 class="text-lg font-semibold text-slate-950">What is the fastest way to approach how to track codex cli usage?</h2><p class="mt-3 text-sm leading-7 text-slate-600">Start with the relevant command, verify the output locally, then decide whether you need a share page, a wrapped summary, or a heatmap for communication.</p></article><article class="rounded-[1.4rem] border border-slate-200 bg-slate-50 px-5 py-5"><h2 class="text-lg font-semibold text-slate-950">Do I need to upload raw conversations for these guides?</h2><p class="mt-3 text-sm leading-7 text-slate-600">No. vibestats works from local usage artifacts and only turns aggregate results into hosted pages when you explicitly publish them.</p></article></div></section><section class="mt-6 rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]"><div class="flex items-center justify-between gap-4"><div><p class="text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500">Related pages</p><h2 class="mt-3 font-[family-name:var(--font-display)] text-3xl leading-none text-slate-950">Continue by intent</h2></div><a class="text-sm font-medium text-slate-700 transition hover:text-orange-700" href="/guides">View all <!-- -->guides</a></div><div class="mt-5 grid gap-4 md:grid-cols-3"><a class="rounded-[1.4rem] border border-slate-200 bg-slate-50 px-5 py-5 text-sm leading-7 text-slate-600 transition hover:border-orange-300 hover:bg-white" href="/features/codex-cli-stats"><span class="block font-semibold text-slate-950">features codex-cli-stats</span><span class="mt-2 block">Open the related vibestats page and continue the workflow from there.</span></a><a class="rounded-[1.4rem] border border-slate-200 bg-slate-50 px-5 py-5 text-sm leading-7 text-slate-600 transition hover:border-orange-300 hover:bg-white" href="/features/combined-ai-coding-stats"><span class="block font-semibold text-slate-950">features combined-ai-coding-stats</span><span class="mt-2 block">Open the related vibestats page and continue the workflow from there.</span></a><a class="rounded-[1.4rem] border border-slate-200 bg-slate-50 px-5 py-5 text-sm leading-7 text-slate-600 transition hover:border-orange-300 hover:bg-white" href="/compare/claude-code-vs-codex-cli-tracking"><span class="block font-semibold text-slate-950">compare claude-code-vs-codex-cli-tracking</span><span class="mt-2 block">Open the related vibestats page and continue the workflow from there.</span></a></div></section></div></main><!--$--><!--/$--><script src="/_next/static/chunks/webpack-175b2f5685d7557b.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[7437,[\"177\",\"static/chunks/app/layout-6ebd9b17af55ec02.js\"],\"\"]\n3:I[5965,[],\"\"]\n4:I[3609,[],\"\"]\n6:I[496,[],\"OutletBoundary\"]\n8:I[3737,[],\"AsyncMetadataOutlet\"]\na:I[496,[],\"ViewportBoundary\"]\nc:I[496,[],\"MetadataBoundary\"]\nd:\"$Sreact.suspense\"\nf:I[2207,[],\"\"]\n:HL[\"/_next/static/css/335de1248158d380.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"gPirvBMhpRSdtR0tsMj2H\",\"p\":\"\",\"c\":[\"\",\"guides\",\"how-to-track-codex-cli-usage\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"guides\",{\"children\":[[\"slug\",\"how-to-track-codex-cli-usage\",\"d\"],{\"children\":[\"__PAGE__\",{}]}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/335de1248158d380.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"$L2\",null,{\"id\":\"wolf-analytics-config\",\"strategy\":\"beforeInteractive\",\"children\":\"window.WOLF_ANALYTICS_CONFIG = {\\\"apiUrl\\\":\\\"https://analapi.wolfai.dev\\\",\\\"projectApiKey\\\":\\\"wa_rMSm5mgj44W_9LzMsKCwwAipAtxPynp1tn4PbxN_Oa8\\\",\\\"mode\\\":\\\"intl\\\",\\\"sourceApp\\\":\\\"vibestats\\\"};\"}],[\"$\",\"$L2\",null,{\"id\":\"wolf-analytics-script\",\"src\":\"https://analytics.wolfai.dev/wolf-analytics.min.js\",\"strategy\":\"beforeInteractive\"}]]}],[\"$\",\"body\",null,{\"className\":\"antialiased min-h-screen bg-background text-foreground\",\"children\":[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]]}],{\"children\":[\"guides\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"slug\",\"how-to-track-codex-cli-usage\",\"d\"],[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[\"$L5\",null,[\"$\",\"$L6\",null,{\"children\":[\"$L7\",[\"$\",\"$L8\",null,{\"promise\":\"$@9\"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[[\"$\",\"$La\",null,{\"children\":\"$Lb\"}],null],[\"$\",\"$Lc\",null,{\"children\":[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$d\",null,{\"fallback\":null,\"children\":\"$Le\"}]}]}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$f\",[]],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"11:I[4816,[\"816\",\"static/chunks/816-8960921093d57453.js\",\"54\",\"static/chunks/app/guides/%5Bslug%5D/page-5d0587c1d5910e68.js\"],\"\"]\n10:T566,"])</script><script>self.__next_f.push([1,"[{\"@context\":\"https://schema.org\",\"@type\":\"WebPage\",\"name\":\"How to track Codex CLI usage\",\"description\":\"A practical guide to tracking OpenAI Codex CLI usage locally with vibestats.\",\"url\":\"https://vibestats.wolfai.dev/guides/how-to-track-codex-cli-usage\",\"isPartOf\":{\"@type\":\"WebSite\",\"name\":\"vibestats\",\"url\":\"https://vibestats.wolfai.dev/\"}},{\"@context\":\"https://schema.org\",\"@type\":\"BreadcrumbList\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"vibestats\",\"item\":\"https://vibestats.wolfai.dev/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Guides\",\"item\":\"https://vibestats.wolfai.dev/guides\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"How to track Codex CLI usage\",\"item\":\"https://vibestats.wolfai.dev/guides/how-to-track-codex-cli-usage\"}]},{\"@context\":\"https://schema.org\",\"@type\":\"FAQPage\",\"mainEntity\":[{\"@type\":\"Question\",\"name\":\"What is the fastest way to approach how to track codex cli usage?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Start with the relevant command, verify the output locally, then decide whether you need a share page, a wrapped summary, or a heatmap for communication.\"}},{\"@type\":\"Question\",\"name\":\"Do I need to upload raw conversations for these guides?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"No. vibestats works from local usage artifacts and only turns aggregate results into hosted pages when you explicitly publish them.\"}}]}]"])</script><script>self.__next_f.push([1,"5:[\"$\",\"main\",null,{\"className\":\"min-h-screen bg-[radial-gradient(circle_at_top_left,_rgba(253,186,116,0.22),_transparent_35%),linear-gradient(180deg,#fff9f1_0%,#fff1de_100%)] px-4 py-8 text-slate-900 md:px-8 md:py-12\",\"children\":[[\"$\",\"script\",null,{\"type\":\"application/ld+json\",\"dangerouslySetInnerHTML\":{\"__html\":\"$10\"}}],[\"$\",\"div\",null,{\"className\":\"mx-auto max-w-7xl\",\"children\":[[\"$\",\"header\",null,{\"className\":\"rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)] overflow-hidden\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex flex-wrap items-center gap-3 text-sm text-slate-500\",\"children\":[[\"$\",\"$L11\",null,{\"href\":\"/\",\"className\":\"transition hover:text-orange-700\",\"children\":\"vibestats\"}],[\"$\",\"span\",null,{\"children\":\"/\"}],[\"$\",\"$L11\",null,{\"href\":\"/guides\",\"className\":\"transition hover:text-orange-700\",\"children\":\"Guides\"}],[\"$\",\"span\",null,{\"children\":\"/\"}],[\"$\",\"span\",null,{\"className\":\"text-slate-700\",\"children\":\"How to track Codex CLI usage\"}]]}],[\"$\",\"p\",null,{\"className\":\"mt-5 text-[0.72rem] font-semibold uppercase tracking-[0.28em] text-slate-500\",\"children\":\"Guide\"}],[\"$\",\"h1\",null,{\"className\":\"mt-4 max-w-5xl font-[family-name:var(--font-display)] text-5xl leading-none text-slate-950 md:text-7xl\",\"children\":\"How to track Codex CLI usage\"}],[\"$\",\"p\",null,{\"className\":\"mt-5 max-w-3xl text-base leading-7 text-slate-600 md:text-lg\",\"children\":\"A practical guide to tracking OpenAI Codex CLI usage locally with vibestats.\"}],[\"$\",\"div\",null,{\"className\":\"mt-6 grid gap-3 md:grid-cols-3\",\"children\":[[\"$\",\"div\",null,{\"className\":\"rounded-[1.3rem] border border-slate-200 bg-slate-50 px-4 py-4\",\"children\":[[\"$\",\"div\",null,{\"className\":\"text-[0.7rem] font-semibold uppercase tracking-[0.22em] text-slate-500\",\"children\":\"Intent\"}],[\"$\",\"div\",null,{\"className\":\"mt-2 text-sm leading-6 text-slate-700\",\"children\":\"Guide\"}]]}],[\"$\",\"div\",null,{\"className\":\"rounded-[1.3rem] border border-slate-200 bg-slate-50 px-4 py-4\",\"children\":[[\"$\",\"div\",null,{\"className\":\"text-[0.7rem] font-semibold uppercase tracking-[0.22em] text-slate-500\",\"children\":\"Focus\"}],[\"$\",\"div\",null,{\"className\":\"mt-2 text-sm leading-6 text-slate-700\",\"children\":\"How to track Codex CLI usage is a practical workflow page for turning local AI coding usage into something readable and repeatable.\"}]]}],\"$L12\"]}]]}],\"$L13\",\"$L14\",null,\"$L15\",\"$L16\",\"$L17\"]}]]}]\n"])</script><script>self.__next_f.push([1,"12:[\"$\",\"div\",null,{\"className\":\"rounded-[1.3rem] border border-slate-200 bg-slate-50 px-4 py-4\",\"children\":[[\"$\",\"div\",null,{\"className\":\"text-[0.7rem] font-semibold uppercase tracking-[0.22em] text-slate-500\",\"children\":\"Next step\"}],[\"$\",\"div\",null,{\"className\":\"mt-2 text-sm leading-6 text-slate-700\",\"children\":[\"$\",\"$L11\",null,{\"href\":\"/docs/commands\",\"className\":\"text-slate-900 transition hover:text-orange-700\",\"children\":\"Open the command reference\"}]}]]}]\n"])</script><script>self.__next_f.push([1,"13:[\"$\",\"section\",null,{\"className\":\"mt-6 grid gap-4 lg:grid-cols-[0.8fr_1.2fr]\",\"children\":[[\"$\",\"article\",null,{\"className\":\"rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]\",\"children\":[[\"$\",\"p\",null,{\"className\":\"text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500\",\"children\":\"Highlights\"}],[\"$\",\"ul\",null,{\"className\":\"mt-4 space-y-3 text-sm leading-7 text-slate-600\",\"children\":[[\"$\",\"li\",\"Codex works best as its own first view\",{\"children\":\"Codex works best as its own first view\"}],[\"$\",\"li\",\"Total and session views answer different questions\",{\"children\":\"Total and session views answer different questions\"}],[\"$\",\"li\",\"Combined reporting is a second step, not the first\",{\"children\":\"Combined reporting is a second step, not the first\"}]]}]]}],[\"$\",\"article\",null,{\"className\":\"rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]\",\"children\":[[\"$\",\"p\",null,{\"className\":\"text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500\",\"children\":\"Relevant commands\"}],[\"$\",\"div\",null,{\"className\":\"mt-4 grid gap-3\",\"children\":[[\"$\",\"code\",\"npx vibestats codex\",{\"className\":\"rounded-[1.2rem] bg-slate-100 px-4 py-4 text-sm text-slate-700\",\"children\":\"npx vibestats codex\"}],[\"$\",\"code\",\"npx vibestats usage codex --total\",{\"className\":\"rounded-[1.2rem] bg-slate-100 px-4 py-4 text-sm text-slate-700\",\"children\":\"npx vibestats usage codex --total\"}],[\"$\",\"code\",\"npx vibestats codex --sessions\",{\"className\":\"rounded-[1.2rem] bg-slate-100 px-4 py-4 text-sm text-slate-700\",\"children\":\"npx vibestats codex --sessions\"}]]}]]}]]}]\n"])</script><script>self.__next_f.push([1,"14:[\"$\",\"section\",null,{\"className\":\"mt-6\",\"children\":[\"$\",\"div\",null,{\"className\":\"grid gap-4 md:grid-cols-3\",\"children\":[[\"$\",\"article\",\"Switch to the Codex source\",{\"className\":\"rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]\",\"children\":[[\"$\",\"p\",null,{\"className\":\"text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500\",\"children\":[\"Step \",1]}],[\"$\",\"h2\",null,{\"className\":\"mt-3 text-2xl font-semibold text-slate-950\",\"children\":\"Switch to the Codex source\"}],[\"$\",\"p\",null,{\"className\":\"mt-4 text-sm leading-7 text-slate-600\",\"children\":\"Run `npx vibestats codex` so the report reflects Codex CLI usage only.\"}]]}],[\"$\",\"article\",\"Choose the right grouping\",{\"className\":\"rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]\",\"children\":[[\"$\",\"p\",null,{\"className\":\"text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500\",\"children\":[\"Step \",2]}],[\"$\",\"h2\",null,{\"className\":\"mt-3 text-2xl font-semibold text-slate-950\",\"children\":\"Choose the right grouping\"}],[\"$\",\"p\",null,{\"className\":\"mt-4 text-sm leading-7 text-slate-600\",\"children\":\"Use totals, models, or sessions depending on whether you care about spend, model mix, or session behavior.\"}]]}],[\"$\",\"article\",\"Combine only when needed\",{\"className\":\"rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]\",\"children\":[[\"$\",\"p\",null,{\"className\":\"text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500\",\"children\":[\"Step \",3]}],[\"$\",\"h2\",null,{\"className\":\"mt-3 text-2xl font-semibold text-slate-950\",\"children\":\"Combine only when needed\"}],[\"$\",\"p\",null,{\"className\":\"mt-4 text-sm leading-7 text-slate-600\",\"children\":\"Move to combined reporting after you understand the Codex-only picture, not before.\"}]]}]]}]}]\n"])</script><script>self.__next_f.push([1,"15:[\"$\",\"section\",null,{\"className\":\"mt-6 grid gap-4 md:grid-cols-2\",\"children\":[[\"$\",\"article\",\"Why this guide exists\",{\"className\":\"rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"font-[family-name:var(--font-display)] text-3xl leading-none text-slate-950\",\"children\":\"Why this guide exists\"}],[\"$\",\"p\",null,{\"className\":\"mt-4 text-sm leading-7 text-slate-600\",\"children\":\"Most AI coding reporting problems are not about one missing command. They are about choosing the right surface: daily usage, wrapped summaries, activity heatmaps, cost views, or shareable aggregate pages.\"}]]}],[\"$\",\"article\",\"What to expect\",{\"className\":\"rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"font-[family-name:var(--font-display)] text-3xl leading-none text-slate-950\",\"children\":\"What to expect\"}],[\"$\",\"p\",null,{\"className\":\"mt-4 text-sm leading-7 text-slate-600\",\"children\":\"This guide stays focused on vibestats workflows and the pages already documented in the public command reference, so you can move from local data to a readable result quickly.\"}]]}]]}]\n"])</script><script>self.__next_f.push([1,"16:[\"$\",\"section\",null,{\"className\":\"mt-6 rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]\",\"children\":[[\"$\",\"p\",null,{\"className\":\"text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500\",\"children\":\"FAQ\"}],[\"$\",\"div\",null,{\"className\":\"mt-4 grid gap-4 md:grid-cols-2\",\"children\":[[\"$\",\"article\",\"What is the fastest way to approach how to track codex cli usage?\",{\"className\":\"rounded-[1.4rem] border border-slate-200 bg-slate-50 px-5 py-5\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"text-lg font-semibold text-slate-950\",\"children\":\"What is the fastest way to approach how to track codex cli usage?\"}],[\"$\",\"p\",null,{\"className\":\"mt-3 text-sm leading-7 text-slate-600\",\"children\":\"Start with the relevant command, verify the output locally, then decide whether you need a share page, a wrapped summary, or a heatmap for communication.\"}]]}],[\"$\",\"article\",\"Do I need to upload raw conversations for these guides?\",{\"className\":\"rounded-[1.4rem] border border-slate-200 bg-slate-50 px-5 py-5\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"text-lg font-semibold text-slate-950\",\"children\":\"Do I need to upload raw conversations for these guides?\"}],[\"$\",\"p\",null,{\"className\":\"mt-3 text-sm leading-7 text-slate-600\",\"children\":\"No. vibestats works from local usage artifacts and only turns aggregate results into hosted pages when you explicitly publish them.\"}]]}]]}]]}]\n"])</script><script>self.__next_f.push([1,"17:[\"$\",\"section\",null,{\"className\":\"mt-6 rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-center justify-between gap-4\",\"children\":[[\"$\",\"div\",null,{\"children\":[[\"$\",\"p\",null,{\"className\":\"text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500\",\"children\":\"Related pages\"}],[\"$\",\"h2\",null,{\"className\":\"mt-3 font-[family-name:var(--font-display)] text-3xl leading-none text-slate-950\",\"children\":\"Continue by intent\"}]]}],[\"$\",\"$L11\",null,{\"href\":\"/guides\",\"className\":\"text-sm font-medium text-slate-700 transition hover:text-orange-700\",\"children\":[\"View all \",\"guides\"]}]]}],[\"$\",\"div\",null,{\"className\":\"mt-5 grid gap-4 md:grid-cols-3\",\"children\":[[\"$\",\"$L11\",\"/features/codex-cli-stats\",{\"href\":\"/features/codex-cli-stats\",\"className\":\"rounded-[1.4rem] border border-slate-200 bg-slate-50 px-5 py-5 text-sm leading-7 text-slate-600 transition hover:border-orange-300 hover:bg-white\",\"children\":[[\"$\",\"span\",null,{\"className\":\"block font-semibold text-slate-950\",\"children\":\"features codex-cli-stats\"}],[\"$\",\"span\",null,{\"className\":\"mt-2 block\",\"children\":\"Open the related vibestats page and continue the workflow from there.\"}]]}],[\"$\",\"$L11\",\"/features/combined-ai-coding-stats\",{\"href\":\"/features/combined-ai-coding-stats\",\"className\":\"rounded-[1.4rem] border border-slate-200 bg-slate-50 px-5 py-5 text-sm leading-7 text-slate-600 transition hover:border-orange-300 hover:bg-white\",\"children\":[[\"$\",\"span\",null,{\"className\":\"block font-semibold text-slate-950\",\"children\":\"features combined-ai-coding-stats\"}],[\"$\",\"span\",null,{\"className\":\"mt-2 block\",\"children\":\"Open the related vibestats page and continue the workflow from there.\"}]]}],[\"$\",\"$L11\",\"/compare/claude-code-vs-codex-cli-tracking\",{\"href\":\"/compare/claude-code-vs-codex-cli-tracking\",\"className\":\"rounded-[1.4rem] border border-slate-200 bg-slate-50 px-5 py-5 text-sm leading-7 text-slate-600 transition hover:border-orange-300 hover:bg-white\",\"children\":[[\"$\",\"span\",null,{\"className\":\"block font-semibold text-slate-950\",\"children\":\"compare claude-code-vs-codex-cli-tracking\"}],[\"$\",\"span\",null,{\"className\":\"mt-2 block\",\"children\":\"Open the related vibestats page and continue the workflow from there.\"}]]}]]}]]}]\n"])</script><script>self.__next_f.push([1,"b:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n7:null\n"])</script><script>self.__next_f.push([1,"9:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"How to track Codex CLI usage | vibestats\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"A practical guide to tracking OpenAI Codex CLI usage locally with vibestats.\"}],[\"$\",\"meta\",\"2\",{\"name\":\"application-name\",\"content\":\"vibestats\"}],[\"$\",\"meta\",\"3\",{\"name\":\"keywords\",\"content\":\"vibestats,Claude Code stats,Codex CLI stats,AI coding stats,AI coding analytics,Claude Code wrapped,Codex usage tracker,developer analytics,how to track Codex CLI usage,Codex CLI usage guide,OpenAI Codex stats guide\"}],[\"$\",\"link\",\"4\",{\"rel\":\"canonical\",\"href\":\"https://vibestats.wolfai.dev/guides/how-to-track-codex-cli-usage\"}],[\"$\",\"meta\",\"5\",{\"property\":\"og:title\",\"content\":\"How to track Codex CLI usage | vibestats\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:description\",\"content\":\"A practical guide to tracking OpenAI Codex CLI usage locally with vibestats.\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:url\",\"content\":\"https://vibestats.wolfai.dev/guides/how-to-track-codex-cli-usage\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:site_name\",\"content\":\"vibestats\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:locale\",\"content\":\"en_US\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:type\",\"content\":\"website\"}],[\"$\",\"meta\",\"11\",{\"name\":\"twitter:card\",\"content\":\"summary\"}],[\"$\",\"meta\",\"12\",{\"name\":\"twitter:title\",\"content\":\"How to track Codex CLI usage | vibestats\"}],[\"$\",\"meta\",\"13\",{\"name\":\"twitter:description\",\"content\":\"A practical guide to tracking OpenAI Codex CLI usage locally with vibestats.\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"e:\"$9:metadata\"\n"])</script></body></html>
@@ -0,0 +1,24 @@
1
+ 1:"$Sreact.fragment"
2
+ 2:I[7437,["177","static/chunks/app/layout-6ebd9b17af55ec02.js"],""]
3
+ 3:I[5965,[],""]
4
+ 4:I[3609,[],""]
5
+ 6:I[496,[],"OutletBoundary"]
6
+ 8:I[3737,[],"AsyncMetadataOutlet"]
7
+ a:I[496,[],"ViewportBoundary"]
8
+ c:I[496,[],"MetadataBoundary"]
9
+ d:"$Sreact.suspense"
10
+ f:I[2207,[],""]
11
+ :HL["/_next/static/css/335de1248158d380.css","style"]
12
+ 0:{"P":null,"b":"gPirvBMhpRSdtR0tsMj2H","p":"","c":["","guides","how-to-track-codex-cli-usage"],"i":false,"f":[[["",{"children":["guides",{"children":[["slug","how-to-track-codex-cli-usage","d"],{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/335de1248158d380.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":[["$","head",null,{"children":[["$","$L2",null,{"id":"wolf-analytics-config","strategy":"beforeInteractive","children":"window.WOLF_ANALYTICS_CONFIG = {\"apiUrl\":\"https://analapi.wolfai.dev\",\"projectApiKey\":\"wa_rMSm5mgj44W_9LzMsKCwwAipAtxPynp1tn4PbxN_Oa8\",\"mode\":\"intl\",\"sourceApp\":\"vibestats\"};"}],["$","$L2",null,{"id":"wolf-analytics-script","src":"https://analytics.wolfai.dev/wolf-analytics.min.js","strategy":"beforeInteractive"}]]}],["$","body",null,{"className":"antialiased min-h-screen bg-background text-foreground","children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}],{"children":["guides",["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["slug","how-to-track-codex-cli-usage","d"],["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":["$L5",null,["$","$L6",null,{"children":["$L7",["$","$L8",null,{"promise":"$@9"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,[["$","$La",null,{"children":"$Lb"}],null],["$","$Lc",null,{"children":["$","div",null,{"hidden":true,"children":["$","$d",null,{"fallback":null,"children":"$Le"}]}]}]]}],false]],"m":"$undefined","G":["$f",[]],"s":false,"S":true}
13
+ 11:I[4816,["816","static/chunks/816-8960921093d57453.js","54","static/chunks/app/guides/%5Bslug%5D/page-5d0587c1d5910e68.js"],""]
14
+ 10:T566,[{"@context":"https://schema.org","@type":"WebPage","name":"How to track Codex CLI usage","description":"A practical guide to tracking OpenAI Codex CLI usage locally with vibestats.","url":"https://vibestats.wolfai.dev/guides/how-to-track-codex-cli-usage","isPartOf":{"@type":"WebSite","name":"vibestats","url":"https://vibestats.wolfai.dev/"}},{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"vibestats","item":"https://vibestats.wolfai.dev/"},{"@type":"ListItem","position":2,"name":"Guides","item":"https://vibestats.wolfai.dev/guides"},{"@type":"ListItem","position":3,"name":"How to track Codex CLI usage","item":"https://vibestats.wolfai.dev/guides/how-to-track-codex-cli-usage"}]},{"@context":"https://schema.org","@type":"FAQPage","mainEntity":[{"@type":"Question","name":"What is the fastest way to approach how to track codex cli usage?","acceptedAnswer":{"@type":"Answer","text":"Start with the relevant command, verify the output locally, then decide whether you need a share page, a wrapped summary, or a heatmap for communication."}},{"@type":"Question","name":"Do I need to upload raw conversations for these guides?","acceptedAnswer":{"@type":"Answer","text":"No. vibestats works from local usage artifacts and only turns aggregate results into hosted pages when you explicitly publish them."}}]}]5:["$","main",null,{"className":"min-h-screen bg-[radial-gradient(circle_at_top_left,_rgba(253,186,116,0.22),_transparent_35%),linear-gradient(180deg,#fff9f1_0%,#fff1de_100%)] px-4 py-8 text-slate-900 md:px-8 md:py-12","children":[["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"$10"}}],["$","div",null,{"className":"mx-auto max-w-7xl","children":[["$","header",null,{"className":"rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)] overflow-hidden","children":[["$","div",null,{"className":"flex flex-wrap items-center gap-3 text-sm text-slate-500","children":[["$","$L11",null,{"href":"/","className":"transition hover:text-orange-700","children":"vibestats"}],["$","span",null,{"children":"/"}],["$","$L11",null,{"href":"/guides","className":"transition hover:text-orange-700","children":"Guides"}],["$","span",null,{"children":"/"}],["$","span",null,{"className":"text-slate-700","children":"How to track Codex CLI usage"}]]}],["$","p",null,{"className":"mt-5 text-[0.72rem] font-semibold uppercase tracking-[0.28em] text-slate-500","children":"Guide"}],["$","h1",null,{"className":"mt-4 max-w-5xl font-[family-name:var(--font-display)] text-5xl leading-none text-slate-950 md:text-7xl","children":"How to track Codex CLI usage"}],["$","p",null,{"className":"mt-5 max-w-3xl text-base leading-7 text-slate-600 md:text-lg","children":"A practical guide to tracking OpenAI Codex CLI usage locally with vibestats."}],["$","div",null,{"className":"mt-6 grid gap-3 md:grid-cols-3","children":[["$","div",null,{"className":"rounded-[1.3rem] border border-slate-200 bg-slate-50 px-4 py-4","children":[["$","div",null,{"className":"text-[0.7rem] font-semibold uppercase tracking-[0.22em] text-slate-500","children":"Intent"}],["$","div",null,{"className":"mt-2 text-sm leading-6 text-slate-700","children":"Guide"}]]}],["$","div",null,{"className":"rounded-[1.3rem] border border-slate-200 bg-slate-50 px-4 py-4","children":[["$","div",null,{"className":"text-[0.7rem] font-semibold uppercase tracking-[0.22em] text-slate-500","children":"Focus"}],["$","div",null,{"className":"mt-2 text-sm leading-6 text-slate-700","children":"How to track Codex CLI usage is a practical workflow page for turning local AI coding usage into something readable and repeatable."}]]}],"$L12"]}]]}],"$L13","$L14",null,"$L15","$L16","$L17"]}]]}]
15
+ 12:["$","div",null,{"className":"rounded-[1.3rem] border border-slate-200 bg-slate-50 px-4 py-4","children":[["$","div",null,{"className":"text-[0.7rem] font-semibold uppercase tracking-[0.22em] text-slate-500","children":"Next step"}],["$","div",null,{"className":"mt-2 text-sm leading-6 text-slate-700","children":["$","$L11",null,{"href":"/docs/commands","className":"text-slate-900 transition hover:text-orange-700","children":"Open the command reference"}]}]]}]
16
+ 13:["$","section",null,{"className":"mt-6 grid gap-4 lg:grid-cols-[0.8fr_1.2fr]","children":[["$","article",null,{"className":"rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]","children":[["$","p",null,{"className":"text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500","children":"Highlights"}],["$","ul",null,{"className":"mt-4 space-y-3 text-sm leading-7 text-slate-600","children":[["$","li","Codex works best as its own first view",{"children":"Codex works best as its own first view"}],["$","li","Total and session views answer different questions",{"children":"Total and session views answer different questions"}],["$","li","Combined reporting is a second step, not the first",{"children":"Combined reporting is a second step, not the first"}]]}]]}],["$","article",null,{"className":"rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]","children":[["$","p",null,{"className":"text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500","children":"Relevant commands"}],["$","div",null,{"className":"mt-4 grid gap-3","children":[["$","code","npx vibestats codex",{"className":"rounded-[1.2rem] bg-slate-100 px-4 py-4 text-sm text-slate-700","children":"npx vibestats codex"}],["$","code","npx vibestats usage codex --total",{"className":"rounded-[1.2rem] bg-slate-100 px-4 py-4 text-sm text-slate-700","children":"npx vibestats usage codex --total"}],["$","code","npx vibestats codex --sessions",{"className":"rounded-[1.2rem] bg-slate-100 px-4 py-4 text-sm text-slate-700","children":"npx vibestats codex --sessions"}]]}]]}]]}]
17
+ 14:["$","section",null,{"className":"mt-6","children":["$","div",null,{"className":"grid gap-4 md:grid-cols-3","children":[["$","article","Switch to the Codex source",{"className":"rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]","children":[["$","p",null,{"className":"text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500","children":["Step ",1]}],["$","h2",null,{"className":"mt-3 text-2xl font-semibold text-slate-950","children":"Switch to the Codex source"}],["$","p",null,{"className":"mt-4 text-sm leading-7 text-slate-600","children":"Run `npx vibestats codex` so the report reflects Codex CLI usage only."}]]}],["$","article","Choose the right grouping",{"className":"rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]","children":[["$","p",null,{"className":"text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500","children":["Step ",2]}],["$","h2",null,{"className":"mt-3 text-2xl font-semibold text-slate-950","children":"Choose the right grouping"}],["$","p",null,{"className":"mt-4 text-sm leading-7 text-slate-600","children":"Use totals, models, or sessions depending on whether you care about spend, model mix, or session behavior."}]]}],["$","article","Combine only when needed",{"className":"rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]","children":[["$","p",null,{"className":"text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500","children":["Step ",3]}],["$","h2",null,{"className":"mt-3 text-2xl font-semibold text-slate-950","children":"Combine only when needed"}],["$","p",null,{"className":"mt-4 text-sm leading-7 text-slate-600","children":"Move to combined reporting after you understand the Codex-only picture, not before."}]]}]]}]}]
18
+ 15:["$","section",null,{"className":"mt-6 grid gap-4 md:grid-cols-2","children":[["$","article","Why this guide exists",{"className":"rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]","children":[["$","h2",null,{"className":"font-[family-name:var(--font-display)] text-3xl leading-none text-slate-950","children":"Why this guide exists"}],["$","p",null,{"className":"mt-4 text-sm leading-7 text-slate-600","children":"Most AI coding reporting problems are not about one missing command. They are about choosing the right surface: daily usage, wrapped summaries, activity heatmaps, cost views, or shareable aggregate pages."}]]}],["$","article","What to expect",{"className":"rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]","children":[["$","h2",null,{"className":"font-[family-name:var(--font-display)] text-3xl leading-none text-slate-950","children":"What to expect"}],["$","p",null,{"className":"mt-4 text-sm leading-7 text-slate-600","children":"This guide stays focused on vibestats workflows and the pages already documented in the public command reference, so you can move from local data to a readable result quickly."}]]}]]}]
19
+ 16:["$","section",null,{"className":"mt-6 rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]","children":[["$","p",null,{"className":"text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500","children":"FAQ"}],["$","div",null,{"className":"mt-4 grid gap-4 md:grid-cols-2","children":[["$","article","What is the fastest way to approach how to track codex cli usage?",{"className":"rounded-[1.4rem] border border-slate-200 bg-slate-50 px-5 py-5","children":[["$","h2",null,{"className":"text-lg font-semibold text-slate-950","children":"What is the fastest way to approach how to track codex cli usage?"}],["$","p",null,{"className":"mt-3 text-sm leading-7 text-slate-600","children":"Start with the relevant command, verify the output locally, then decide whether you need a share page, a wrapped summary, or a heatmap for communication."}]]}],["$","article","Do I need to upload raw conversations for these guides?",{"className":"rounded-[1.4rem] border border-slate-200 bg-slate-50 px-5 py-5","children":[["$","h2",null,{"className":"text-lg font-semibold text-slate-950","children":"Do I need to upload raw conversations for these guides?"}],["$","p",null,{"className":"mt-3 text-sm leading-7 text-slate-600","children":"No. vibestats works from local usage artifacts and only turns aggregate results into hosted pages when you explicitly publish them."}]]}]]}]]}]
20
+ 17:["$","section",null,{"className":"mt-6 rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]","children":[["$","div",null,{"className":"flex items-center justify-between gap-4","children":[["$","div",null,{"children":[["$","p",null,{"className":"text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500","children":"Related pages"}],["$","h2",null,{"className":"mt-3 font-[family-name:var(--font-display)] text-3xl leading-none text-slate-950","children":"Continue by intent"}]]}],["$","$L11",null,{"href":"/guides","className":"text-sm font-medium text-slate-700 transition hover:text-orange-700","children":["View all ","guides"]}]]}],["$","div",null,{"className":"mt-5 grid gap-4 md:grid-cols-3","children":[["$","$L11","/features/codex-cli-stats",{"href":"/features/codex-cli-stats","className":"rounded-[1.4rem] border border-slate-200 bg-slate-50 px-5 py-5 text-sm leading-7 text-slate-600 transition hover:border-orange-300 hover:bg-white","children":[["$","span",null,{"className":"block font-semibold text-slate-950","children":"features codex-cli-stats"}],["$","span",null,{"className":"mt-2 block","children":"Open the related vibestats page and continue the workflow from there."}]]}],["$","$L11","/features/combined-ai-coding-stats",{"href":"/features/combined-ai-coding-stats","className":"rounded-[1.4rem] border border-slate-200 bg-slate-50 px-5 py-5 text-sm leading-7 text-slate-600 transition hover:border-orange-300 hover:bg-white","children":[["$","span",null,{"className":"block font-semibold text-slate-950","children":"features combined-ai-coding-stats"}],["$","span",null,{"className":"mt-2 block","children":"Open the related vibestats page and continue the workflow from there."}]]}],["$","$L11","/compare/claude-code-vs-codex-cli-tracking",{"href":"/compare/claude-code-vs-codex-cli-tracking","className":"rounded-[1.4rem] border border-slate-200 bg-slate-50 px-5 py-5 text-sm leading-7 text-slate-600 transition hover:border-orange-300 hover:bg-white","children":[["$","span",null,{"className":"block font-semibold text-slate-950","children":"compare claude-code-vs-codex-cli-tracking"}],["$","span",null,{"className":"mt-2 block","children":"Open the related vibestats page and continue the workflow from there."}]]}]]}]]}]
21
+ b:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
22
+ 7:null
23
+ 9:{"metadata":[["$","title","0",{"children":"How to track Codex CLI usage | vibestats"}],["$","meta","1",{"name":"description","content":"A practical guide to tracking OpenAI Codex CLI usage locally with vibestats."}],["$","meta","2",{"name":"application-name","content":"vibestats"}],["$","meta","3",{"name":"keywords","content":"vibestats,Claude Code stats,Codex CLI stats,AI coding stats,AI coding analytics,Claude Code wrapped,Codex usage tracker,developer analytics,how to track Codex CLI usage,Codex CLI usage guide,OpenAI Codex stats guide"}],["$","link","4",{"rel":"canonical","href":"https://vibestats.wolfai.dev/guides/how-to-track-codex-cli-usage"}],["$","meta","5",{"property":"og:title","content":"How to track Codex CLI usage | vibestats"}],["$","meta","6",{"property":"og:description","content":"A practical guide to tracking OpenAI Codex CLI usage locally with vibestats."}],["$","meta","7",{"property":"og:url","content":"https://vibestats.wolfai.dev/guides/how-to-track-codex-cli-usage"}],["$","meta","8",{"property":"og:site_name","content":"vibestats"}],["$","meta","9",{"property":"og:locale","content":"en_US"}],["$","meta","10",{"property":"og:type","content":"website"}],["$","meta","11",{"name":"twitter:card","content":"summary"}],["$","meta","12",{"name":"twitter:title","content":"How to track Codex CLI usage | vibestats"}],["$","meta","13",{"name":"twitter:description","content":"A practical guide to tracking OpenAI Codex CLI usage locally with vibestats."}]],"error":null,"digest":"$undefined"}
24
+ e:"$9:metadata"
@@ -0,0 +1 @@
1
+ <!DOCTYPE html><!--gPirvBMhpRSdtR0tsMj2H--><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/css/335de1248158d380.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-175b2f5685d7557b.js"/><script src="/_next/static/chunks/c476d598-9099ed8b975ae1d6.js" async=""></script><script src="/_next/static/chunks/498-74a3a367cb8442f0.js" async=""></script><script src="/_next/static/chunks/main-app-6619364ab1f13fb7.js" async=""></script><script src="/_next/static/chunks/app/layout-6ebd9b17af55ec02.js" async=""></script><script src="/_next/static/chunks/816-8960921093d57453.js" async=""></script><script src="/_next/static/chunks/app/guides/page-5d0587c1d5910e68.js" async=""></script><link rel="preload" href="https://analytics.wolfai.dev/wolf-analytics.min.js" as="script"/><title>Guides | vibestats</title><meta name="description" content="Read practical guides for tracking Claude Code usage, tracking Codex CLI usage, creating wrapped reports, building activity heatmaps, and sharing aggregate stats."/><meta name="application-name" content="vibestats"/><meta name="keywords" content="vibestats,Claude Code stats,Codex CLI stats,AI coding stats,AI coding analytics,Claude Code wrapped,Codex usage tracker,developer analytics,Claude Code usage guide,Codex CLI usage guide,AI coding analytics guide"/><link rel="canonical" href="https://vibestats.wolfai.dev/guides"/><meta property="og:title" content="Guides | vibestats"/><meta property="og:description" content="Read practical guides for tracking Claude Code usage, tracking Codex CLI usage, creating wrapped reports, building activity heatmaps, and sharing aggregate stats."/><meta property="og:url" content="https://vibestats.wolfai.dev/guides"/><meta property="og:site_name" content="vibestats"/><meta property="og:locale" content="en_US"/><meta property="og:type" content="website"/><meta name="twitter:card" content="summary"/><meta name="twitter:title" content="Guides | vibestats"/><meta name="twitter:description" content="Read practical guides for tracking Claude Code usage, tracking Codex CLI usage, creating wrapped reports, building activity heatmaps, and sharing aggregate stats."/><script>(self.__next_s=self.__next_s||[]).push([0,{"children":"window.WOLF_ANALYTICS_CONFIG = {\"apiUrl\":\"https://analapi.wolfai.dev\",\"projectApiKey\":\"wa_rMSm5mgj44W_9LzMsKCwwAipAtxPynp1tn4PbxN_Oa8\",\"mode\":\"intl\",\"sourceApp\":\"vibestats\"};","id":"wolf-analytics-config"}])</script><script>(self.__next_s=self.__next_s||[]).push(["https://analytics.wolfai.dev/wolf-analytics.min.js",{"id":"wolf-analytics-script"}])</script><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="antialiased min-h-screen bg-background text-foreground"><div hidden=""><!--$--><!--/$--></div><main class="min-h-screen bg-[radial-gradient(circle_at_top_left,_rgba(253,186,116,0.22),_transparent_35%),linear-gradient(180deg,#fff9f1_0%,#fff1de_100%)] px-4 py-8 text-slate-900 md:px-8 md:py-12"><script type="application/ld+json">{"@context":"https://schema.org","@type":"CollectionPage","name":"AI coding analytics guides","description":"Read practical guides for tracking Claude Code usage, tracking Codex CLI usage, creating wrapped reports, building activity heatmaps, and sharing aggregate stats.","url":"https://vibestats.wolfai.dev/guides","mainEntity":{"@type":"ItemList","itemListElement":[{"@type":"ListItem","position":1,"name":"How to track Claude Code usage","url":"https://vibestats.wolfai.dev/guides/how-to-track-claude-code-usage"},{"@type":"ListItem","position":2,"name":"How to track Codex CLI usage","url":"https://vibestats.wolfai.dev/guides/how-to-track-codex-cli-usage"},{"@type":"ListItem","position":3,"name":"How to create an AI coding wrapped","url":"https://vibestats.wolfai.dev/guides/how-to-create-ai-coding-wrapped"},{"@type":"ListItem","position":4,"name":"How to build an AI activity heatmap","url":"https://vibestats.wolfai.dev/guides/how-to-build-ai-activity-heatmap"},{"@type":"ListItem","position":5,"name":"How to measure AI token costs","url":"https://vibestats.wolfai.dev/guides/how-to-measure-ai-token-costs"},{"@type":"ListItem","position":6,"name":"How to share AI coding stats","url":"https://vibestats.wolfai.dev/guides/how-to-share-ai-coding-stats"},{"@type":"ListItem","position":7,"name":"How to read Claude diagnostics","url":"https://vibestats.wolfai.dev/guides/how-to-read-claude-diagnostics"},{"@type":"ListItem","position":8,"name":"How to compare model usage","url":"https://vibestats.wolfai.dev/guides/how-to-compare-model-usage"}]}}</script><div class="mx-auto max-w-7xl"><header class="rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)] overflow-hidden"><p class="text-[0.72rem] font-semibold uppercase tracking-[0.28em] text-slate-500">Guide library</p><h1 class="mt-4 max-w-4xl font-[family-name:var(--font-display)] text-5xl leading-none text-slate-950 md:text-7xl">AI coding analytics guides</h1><p class="mt-5 max-w-3xl text-base leading-7 text-slate-600 md:text-lg">Read practical guides for tracking Claude Code usage, tracking Codex CLI usage, creating wrapped reports, building activity heatmaps, and sharing aggregate stats.</p><div class="mt-6 grid gap-3 text-sm text-slate-600 md:grid-cols-3"><div class="rounded-[1.3rem] border border-slate-200 bg-slate-50 px-4 py-4"><strong class="block text-slate-950">8<!-- --> pages</strong><span class="mt-2 block">Built around real vibestats workflows instead of generic SEO filler.</span></div><div class="rounded-[1.3rem] border border-slate-200 bg-slate-50 px-4 py-4"><strong class="block text-slate-950">Internal links</strong><span class="mt-2 block">Each page connects to related features, guides, and use cases.</span></div><div class="rounded-[1.3rem] border border-slate-200 bg-slate-50 px-4 py-4"><strong class="block text-slate-950">Search intent</strong><span class="mt-2 block">Every page is focused on one product or reporting question.</span></div></div></header><section class="mt-6 grid gap-4 md:grid-cols-2 xl:grid-cols-3"><a class="rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)] transition hover:-translate-y-0.5 hover:border-orange-300" href="/guides/how-to-track-claude-code-usage"><p class="text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500">Guide</p><h2 class="mt-3 font-[family-name:var(--font-display)] text-3xl leading-none text-slate-950">How to track Claude Code usage</h2><p class="mt-4 text-sm leading-7 text-slate-600">A practical guide to tracking Claude Code usage locally with vibestats.</p><ul class="mt-5 space-y-2 text-sm leading-6 text-slate-600"><li>Start with daily usage, then refine</li><li>Model and session views answer different follow-up questions</li><li>Diagnostics help when the totals look confusing</li></ul></a><a class="rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)] transition hover:-translate-y-0.5 hover:border-orange-300" href="/guides/how-to-track-codex-cli-usage"><p class="text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500">Guide</p><h2 class="mt-3 font-[family-name:var(--font-display)] text-3xl leading-none text-slate-950">How to track Codex CLI usage</h2><p class="mt-4 text-sm leading-7 text-slate-600">A practical guide to tracking OpenAI Codex CLI usage locally with vibestats.</p><ul class="mt-5 space-y-2 text-sm leading-6 text-slate-600"><li>Codex works best as its own first view</li><li>Total and session views answer different questions</li><li>Combined reporting is a second step, not the first</li></ul></a><a class="rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)] transition hover:-translate-y-0.5 hover:border-orange-300" href="/guides/how-to-create-ai-coding-wrapped"><p class="text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500">Guide</p><h2 class="mt-3 font-[family-name:var(--font-display)] text-3xl leading-none text-slate-950">How to create an AI coding wrapped</h2><p class="mt-4 text-sm leading-7 text-slate-600">A practical guide to generating a wrapped-style AI coding recap with vibestats.</p><ul class="mt-5 space-y-2 text-sm leading-6 text-slate-600"><li>Wrapped is the best narrative recap view</li><li>Quiet mode is useful for share-first workflows</li><li>Heatmaps complement wrapped, not replace it</li></ul></a><a class="rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)] transition hover:-translate-y-0.5 hover:border-orange-300" href="/guides/how-to-build-ai-activity-heatmap"><p class="text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500">Guide</p><h2 class="mt-3 font-[family-name:var(--font-display)] text-3xl leading-none text-slate-950">How to build an AI activity heatmap</h2><p class="mt-4 text-sm leading-7 text-slate-600">A practical guide to generating a GitHub-style AI coding activity heatmap with vibestats.</p><ul class="mt-5 space-y-2 text-sm leading-6 text-slate-600"><li>Heatmaps are best for rhythm and consistency</li><li>Metric choice changes the story</li><li>Hosted pages are easier to reuse in updates</li></ul></a><a class="rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)] transition hover:-translate-y-0.5 hover:border-orange-300" href="/guides/how-to-measure-ai-token-costs"><p class="text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500">Guide</p><h2 class="mt-3 font-[family-name:var(--font-display)] text-3xl leading-none text-slate-950">How to measure AI token costs</h2><p class="mt-4 text-sm leading-7 text-slate-600">A practical guide to measuring token volume and estimated cost in vibestats.</p><ul class="mt-5 space-y-2 text-sm leading-6 text-slate-600"><li>Totals are the cleanest starting point</li><li>Tokens and cost are related but not identical</li><li>Model views help explain cost shifts</li></ul></a><a class="rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)] transition hover:-translate-y-0.5 hover:border-orange-300" href="/guides/how-to-share-ai-coding-stats"><p class="text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500">Guide</p><h2 class="mt-3 font-[family-name:var(--font-display)] text-3xl leading-none text-slate-950">How to share AI coding stats</h2><p class="mt-4 text-sm leading-7 text-slate-600">A practical guide to turning local vibestats output into shareable aggregate pages.</p><ul class="mt-5 space-y-2 text-sm leading-6 text-slate-600"><li>Share the surface that fits the audience</li><li>Aggregate pages are better than screenshots</li><li>Stored share pages are better than legacy payload URLs</li></ul></a><a class="rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)] transition hover:-translate-y-0.5 hover:border-orange-300" href="/guides/how-to-read-claude-diagnostics"><p class="text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500">Guide</p><h2 class="mt-3 font-[family-name:var(--font-display)] text-3xl leading-none text-slate-950">How to read Claude diagnostics</h2><p class="mt-4 text-sm leading-7 text-slate-600">A practical guide to using vibestats Claude diagnostics commands for local state and limit clues.</p><ul class="mt-5 space-y-2 text-sm leading-6 text-slate-600"><li>Diagnostics complement usage reports</li><li>Best used when something looks off</li><li>Local file visibility beats guesswork</li></ul></a><a class="rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)] transition hover:-translate-y-0.5 hover:border-orange-300" href="/guides/how-to-compare-model-usage"><p class="text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500">Guide</p><h2 class="mt-3 font-[family-name:var(--font-display)] text-3xl leading-none text-slate-950">How to compare model usage</h2><p class="mt-4 text-sm leading-7 text-slate-600">A practical guide to comparing AI model usage in vibestats across reporting windows and source scopes.</p><ul class="mt-5 space-y-2 text-sm leading-6 text-slate-600"><li>Stable windows matter more than perfect totals</li><li>Model share is easier to read when grouped directly</li><li>Source context helps interpret model shifts</li></ul></a></section></div></main><!--$--><!--/$--><script src="/_next/static/chunks/webpack-175b2f5685d7557b.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[7437,[\"177\",\"static/chunks/app/layout-6ebd9b17af55ec02.js\"],\"\"]\n3:I[5965,[],\"\"]\n4:I[3609,[],\"\"]\n9:I[2207,[],\"\"]\n:HL[\"/_next/static/css/335de1248158d380.css\",\"style\"]\n5:T615,"])</script><script>self.__next_f.push([1,"{\"@context\":\"https://schema.org\",\"@type\":\"CollectionPage\",\"name\":\"AI coding analytics guides\",\"description\":\"Read practical guides for tracking Claude Code usage, tracking Codex CLI usage, creating wrapped reports, building activity heatmaps, and sharing aggregate stats.\",\"url\":\"https://vibestats.wolfai.dev/guides\",\"mainEntity\":{\"@type\":\"ItemList\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"How to track Claude Code usage\",\"url\":\"https://vibestats.wolfai.dev/guides/how-to-track-claude-code-usage\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to track Codex CLI usage\",\"url\":\"https://vibestats.wolfai.dev/guides/how-to-track-codex-cli-usage\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"How to create an AI coding wrapped\",\"url\":\"https://vibestats.wolfai.dev/guides/how-to-create-ai-coding-wrapped\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"How to build an AI activity heatmap\",\"url\":\"https://vibestats.wolfai.dev/guides/how-to-build-ai-activity-heatmap\"},{\"@type\":\"ListItem\",\"position\":5,\"name\":\"How to measure AI token costs\",\"url\":\"https://vibestats.wolfai.dev/guides/how-to-measure-ai-token-costs\"},{\"@type\":\"ListItem\",\"position\":6,\"name\":\"How to share AI coding stats\",\"url\":\"https://vibestats.wolfai.dev/guides/how-to-share-ai-coding-stats\"},{\"@type\":\"ListItem\",\"position\":7,\"name\":\"How to read Claude diagnostics\",\"url\":\"https://vibestats.wolfai.dev/guides/how-to-read-claude-diagnostics\"},{\"@type\":\"ListItem\",\"position\":8,\"name\":\"How to compare model usage\",\"url\":\"https://vibestats.wolfai.dev/guides/how-to-compare-model-usage\"}]}}"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"gPirvBMhpRSdtR0tsMj2H\",\"p\":\"\",\"c\":[\"\",\"guides\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"guides\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/335de1248158d380.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"$L2\",null,{\"id\":\"wolf-analytics-config\",\"strategy\":\"beforeInteractive\",\"children\":\"window.WOLF_ANALYTICS_CONFIG = {\\\"apiUrl\\\":\\\"https://analapi.wolfai.dev\\\",\\\"projectApiKey\\\":\\\"wa_rMSm5mgj44W_9LzMsKCwwAipAtxPynp1tn4PbxN_Oa8\\\",\\\"mode\\\":\\\"intl\\\",\\\"sourceApp\\\":\\\"vibestats\\\"};\"}],[\"$\",\"$L2\",null,{\"id\":\"wolf-analytics-script\",\"src\":\"https://analytics.wolfai.dev/wolf-analytics.min.js\",\"strategy\":\"beforeInteractive\"}]]}],[\"$\",\"body\",null,{\"className\":\"antialiased min-h-screen bg-background text-foreground\",\"children\":[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]]}],{\"children\":[\"guides\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"main\",null,{\"className\":\"min-h-screen bg-[radial-gradient(circle_at_top_left,_rgba(253,186,116,0.22),_transparent_35%),linear-gradient(180deg,#fff9f1_0%,#fff1de_100%)] px-4 py-8 text-slate-900 md:px-8 md:py-12\",\"children\":[[\"$\",\"script\",null,{\"type\":\"application/ld+json\",\"dangerouslySetInnerHTML\":{\"__html\":\"$5\"}}],\"$L6\"]}],null,\"$L7\"]}],{},null,false]},null,false]},null,false],\"$L8\",false]],\"m\":\"$undefined\",\"G\":[\"$9\",[]],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"a:I[4816,[\"816\",\"static/chunks/816-8960921093d57453.js\",\"6\",\"static/chunks/app/guides/page-5d0587c1d5910e68.js\"],\"\"]\n12:I[496,[],\"OutletBoundary\"]\n14:I[3737,[],\"AsyncMetadataOutlet\"]\n16:I[496,[],\"ViewportBoundary\"]\n18:I[496,[],\"MetadataBoundary\"]\n19:\"$Sreact.suspense\"\n"])</script><script>self.__next_f.push([1,"6:[\"$\",\"div\",null,{\"className\":\"mx-auto max-w-7xl\",\"children\":[[\"$\",\"header\",null,{\"className\":\"rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)] overflow-hidden\",\"children\":[[\"$\",\"p\",null,{\"className\":\"text-[0.72rem] font-semibold uppercase tracking-[0.28em] text-slate-500\",\"children\":\"Guide library\"}],[\"$\",\"h1\",null,{\"className\":\"mt-4 max-w-4xl font-[family-name:var(--font-display)] text-5xl leading-none text-slate-950 md:text-7xl\",\"children\":\"AI coding analytics guides\"}],[\"$\",\"p\",null,{\"className\":\"mt-5 max-w-3xl text-base leading-7 text-slate-600 md:text-lg\",\"children\":\"Read practical guides for tracking Claude Code usage, tracking Codex CLI usage, creating wrapped reports, building activity heatmaps, and sharing aggregate stats.\"}],[\"$\",\"div\",null,{\"className\":\"mt-6 grid gap-3 text-sm text-slate-600 md:grid-cols-3\",\"children\":[[\"$\",\"div\",null,{\"className\":\"rounded-[1.3rem] border border-slate-200 bg-slate-50 px-4 py-4\",\"children\":[[\"$\",\"strong\",null,{\"className\":\"block text-slate-950\",\"children\":[8,\" pages\"]}],[\"$\",\"span\",null,{\"className\":\"mt-2 block\",\"children\":\"Built around real vibestats workflows instead of generic SEO filler.\"}]]}],[\"$\",\"div\",null,{\"className\":\"rounded-[1.3rem] border border-slate-200 bg-slate-50 px-4 py-4\",\"children\":[[\"$\",\"strong\",null,{\"className\":\"block text-slate-950\",\"children\":\"Internal links\"}],[\"$\",\"span\",null,{\"className\":\"mt-2 block\",\"children\":\"Each page connects to related features, guides, and use cases.\"}]]}],[\"$\",\"div\",null,{\"className\":\"rounded-[1.3rem] border border-slate-200 bg-slate-50 px-4 py-4\",\"children\":[[\"$\",\"strong\",null,{\"className\":\"block text-slate-950\",\"children\":\"Search intent\"}],[\"$\",\"span\",null,{\"className\":\"mt-2 block\",\"children\":\"Every page is focused on one product or reporting question.\"}]]}]]}]]}],[\"$\",\"section\",null,{\"className\":\"mt-6 grid gap-4 md:grid-cols-2 xl:grid-cols-3\",\"children\":[[\"$\",\"$La\",\"how-to-track-claude-code-usage\",{\"href\":\"/guides/how-to-track-claude-code-usage\",\"className\":\"rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)] transition hover:-translate-y-0.5 hover:border-orange-300\",\"children\":[[\"$\",\"p\",null,{\"className\":\"text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500\",\"children\":\"Guide\"}],[\"$\",\"h2\",null,{\"className\":\"mt-3 font-[family-name:var(--font-display)] text-3xl leading-none text-slate-950\",\"children\":\"How to track Claude Code usage\"}],[\"$\",\"p\",null,{\"className\":\"mt-4 text-sm leading-7 text-slate-600\",\"children\":\"A practical guide to tracking Claude Code usage locally with vibestats.\"}],[\"$\",\"ul\",null,{\"className\":\"mt-5 space-y-2 text-sm leading-6 text-slate-600\",\"children\":[[\"$\",\"li\",\"Start with daily usage, then refine\",{\"children\":\"Start with daily usage, then refine\"}],[\"$\",\"li\",\"Model and session views answer different follow-up questions\",{\"children\":\"Model and session views answer different follow-up questions\"}],[\"$\",\"li\",\"Diagnostics help when the totals look confusing\",{\"children\":\"Diagnostics help when the totals look confusing\"}]]}]]}],[\"$\",\"$La\",\"how-to-track-codex-cli-usage\",{\"href\":\"/guides/how-to-track-codex-cli-usage\",\"className\":\"rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)] transition hover:-translate-y-0.5 hover:border-orange-300\",\"children\":[[\"$\",\"p\",null,{\"className\":\"text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500\",\"children\":\"Guide\"}],[\"$\",\"h2\",null,{\"className\":\"mt-3 font-[family-name:var(--font-display)] text-3xl leading-none text-slate-950\",\"children\":\"How to track Codex CLI usage\"}],[\"$\",\"p\",null,{\"className\":\"mt-4 text-sm leading-7 text-slate-600\",\"children\":\"A practical guide to tracking OpenAI Codex CLI usage locally with vibestats.\"}],\"$Lb\"]}],\"$Lc\",\"$Ld\",\"$Le\",\"$Lf\",\"$L10\",\"$L11\"]}]]}]\n"])</script><script>self.__next_f.push([1,"7:[\"$\",\"$L12\",null,{\"children\":[\"$L13\",[\"$\",\"$L14\",null,{\"promise\":\"$@15\"}]]}]\n8:[\"$\",\"$1\",\"h\",{\"children\":[null,[[\"$\",\"$L16\",null,{\"children\":\"$L17\"}],null],[\"$\",\"$L18\",null,{\"children\":[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$19\",null,{\"fallback\":null,\"children\":\"$L1a\"}]}]}]]}]\n"])</script><script>self.__next_f.push([1,"b:[\"$\",\"ul\",null,{\"className\":\"mt-5 space-y-2 text-sm leading-6 text-slate-600\",\"children\":[[\"$\",\"li\",\"Codex works best as its own first view\",{\"children\":\"Codex works best as its own first view\"}],[\"$\",\"li\",\"Total and session views answer different questions\",{\"children\":\"Total and session views answer different questions\"}],[\"$\",\"li\",\"Combined reporting is a second step, not the first\",{\"children\":\"Combined reporting is a second step, not the first\"}]]}]\n"])</script><script>self.__next_f.push([1,"c:[\"$\",\"$La\",\"how-to-create-ai-coding-wrapped\",{\"href\":\"/guides/how-to-create-ai-coding-wrapped\",\"className\":\"rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)] transition hover:-translate-y-0.5 hover:border-orange-300\",\"children\":[[\"$\",\"p\",null,{\"className\":\"text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500\",\"children\":\"Guide\"}],[\"$\",\"h2\",null,{\"className\":\"mt-3 font-[family-name:var(--font-display)] text-3xl leading-none text-slate-950\",\"children\":\"How to create an AI coding wrapped\"}],[\"$\",\"p\",null,{\"className\":\"mt-4 text-sm leading-7 text-slate-600\",\"children\":\"A practical guide to generating a wrapped-style AI coding recap with vibestats.\"}],[\"$\",\"ul\",null,{\"className\":\"mt-5 space-y-2 text-sm leading-6 text-slate-600\",\"children\":[[\"$\",\"li\",\"Wrapped is the best narrative recap view\",{\"children\":\"Wrapped is the best narrative recap view\"}],[\"$\",\"li\",\"Quiet mode is useful for share-first workflows\",{\"children\":\"Quiet mode is useful for share-first workflows\"}],[\"$\",\"li\",\"Heatmaps complement wrapped, not replace it\",{\"children\":\"Heatmaps complement wrapped, not replace it\"}]]}]]}]\n"])</script><script>self.__next_f.push([1,"d:[\"$\",\"$La\",\"how-to-build-ai-activity-heatmap\",{\"href\":\"/guides/how-to-build-ai-activity-heatmap\",\"className\":\"rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)] transition hover:-translate-y-0.5 hover:border-orange-300\",\"children\":[[\"$\",\"p\",null,{\"className\":\"text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500\",\"children\":\"Guide\"}],[\"$\",\"h2\",null,{\"className\":\"mt-3 font-[family-name:var(--font-display)] text-3xl leading-none text-slate-950\",\"children\":\"How to build an AI activity heatmap\"}],[\"$\",\"p\",null,{\"className\":\"mt-4 text-sm leading-7 text-slate-600\",\"children\":\"A practical guide to generating a GitHub-style AI coding activity heatmap with vibestats.\"}],[\"$\",\"ul\",null,{\"className\":\"mt-5 space-y-2 text-sm leading-6 text-slate-600\",\"children\":[[\"$\",\"li\",\"Heatmaps are best for rhythm and consistency\",{\"children\":\"Heatmaps are best for rhythm and consistency\"}],[\"$\",\"li\",\"Metric choice changes the story\",{\"children\":\"Metric choice changes the story\"}],[\"$\",\"li\",\"Hosted pages are easier to reuse in updates\",{\"children\":\"Hosted pages are easier to reuse in updates\"}]]}]]}]\n"])</script><script>self.__next_f.push([1,"e:[\"$\",\"$La\",\"how-to-measure-ai-token-costs\",{\"href\":\"/guides/how-to-measure-ai-token-costs\",\"className\":\"rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)] transition hover:-translate-y-0.5 hover:border-orange-300\",\"children\":[[\"$\",\"p\",null,{\"className\":\"text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500\",\"children\":\"Guide\"}],[\"$\",\"h2\",null,{\"className\":\"mt-3 font-[family-name:var(--font-display)] text-3xl leading-none text-slate-950\",\"children\":\"How to measure AI token costs\"}],[\"$\",\"p\",null,{\"className\":\"mt-4 text-sm leading-7 text-slate-600\",\"children\":\"A practical guide to measuring token volume and estimated cost in vibestats.\"}],[\"$\",\"ul\",null,{\"className\":\"mt-5 space-y-2 text-sm leading-6 text-slate-600\",\"children\":[[\"$\",\"li\",\"Totals are the cleanest starting point\",{\"children\":\"Totals are the cleanest starting point\"}],[\"$\",\"li\",\"Tokens and cost are related but not identical\",{\"children\":\"Tokens and cost are related but not identical\"}],[\"$\",\"li\",\"Model views help explain cost shifts\",{\"children\":\"Model views help explain cost shifts\"}]]}]]}]\n"])</script><script>self.__next_f.push([1,"f:[\"$\",\"$La\",\"how-to-share-ai-coding-stats\",{\"href\":\"/guides/how-to-share-ai-coding-stats\",\"className\":\"rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)] transition hover:-translate-y-0.5 hover:border-orange-300\",\"children\":[[\"$\",\"p\",null,{\"className\":\"text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500\",\"children\":\"Guide\"}],[\"$\",\"h2\",null,{\"className\":\"mt-3 font-[family-name:var(--font-display)] text-3xl leading-none text-slate-950\",\"children\":\"How to share AI coding stats\"}],[\"$\",\"p\",null,{\"className\":\"mt-4 text-sm leading-7 text-slate-600\",\"children\":\"A practical guide to turning local vibestats output into shareable aggregate pages.\"}],[\"$\",\"ul\",null,{\"className\":\"mt-5 space-y-2 text-sm leading-6 text-slate-600\",\"children\":[[\"$\",\"li\",\"Share the surface that fits the audience\",{\"children\":\"Share the surface that fits the audience\"}],[\"$\",\"li\",\"Aggregate pages are better than screenshots\",{\"children\":\"Aggregate pages are better than screenshots\"}],[\"$\",\"li\",\"Stored share pages are better than legacy payload URLs\",{\"children\":\"Stored share pages are better than legacy payload URLs\"}]]}]]}]\n"])</script><script>self.__next_f.push([1,"10:[\"$\",\"$La\",\"how-to-read-claude-diagnostics\",{\"href\":\"/guides/how-to-read-claude-diagnostics\",\"className\":\"rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)] transition hover:-translate-y-0.5 hover:border-orange-300\",\"children\":[[\"$\",\"p\",null,{\"className\":\"text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500\",\"children\":\"Guide\"}],[\"$\",\"h2\",null,{\"className\":\"mt-3 font-[family-name:var(--font-display)] text-3xl leading-none text-slate-950\",\"children\":\"How to read Claude diagnostics\"}],[\"$\",\"p\",null,{\"className\":\"mt-4 text-sm leading-7 text-slate-600\",\"children\":\"A practical guide to using vibestats Claude diagnostics commands for local state and limit clues.\"}],[\"$\",\"ul\",null,{\"className\":\"mt-5 space-y-2 text-sm leading-6 text-slate-600\",\"children\":[[\"$\",\"li\",\"Diagnostics complement usage reports\",{\"children\":\"Diagnostics complement usage reports\"}],[\"$\",\"li\",\"Best used when something looks off\",{\"children\":\"Best used when something looks off\"}],[\"$\",\"li\",\"Local file visibility beats guesswork\",{\"children\":\"Local file visibility beats guesswork\"}]]}]]}]\n"])</script><script>self.__next_f.push([1,"11:[\"$\",\"$La\",\"how-to-compare-model-usage\",{\"href\":\"/guides/how-to-compare-model-usage\",\"className\":\"rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)] transition hover:-translate-y-0.5 hover:border-orange-300\",\"children\":[[\"$\",\"p\",null,{\"className\":\"text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500\",\"children\":\"Guide\"}],[\"$\",\"h2\",null,{\"className\":\"mt-3 font-[family-name:var(--font-display)] text-3xl leading-none text-slate-950\",\"children\":\"How to compare model usage\"}],[\"$\",\"p\",null,{\"className\":\"mt-4 text-sm leading-7 text-slate-600\",\"children\":\"A practical guide to comparing AI model usage in vibestats across reporting windows and source scopes.\"}],[\"$\",\"ul\",null,{\"className\":\"mt-5 space-y-2 text-sm leading-6 text-slate-600\",\"children\":[[\"$\",\"li\",\"Stable windows matter more than perfect totals\",{\"children\":\"Stable windows matter more than perfect totals\"}],[\"$\",\"li\",\"Model share is easier to read when grouped directly\",{\"children\":\"Model share is easier to read when grouped directly\"}],[\"$\",\"li\",\"Source context helps interpret model shifts\",{\"children\":\"Source context helps interpret model shifts\"}]]}]]}]\n"])</script><script>self.__next_f.push([1,"17:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n13:null\n"])</script><script>self.__next_f.push([1,"15:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"Guides | vibestats\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Read practical guides for tracking Claude Code usage, tracking Codex CLI usage, creating wrapped reports, building activity heatmaps, and sharing aggregate stats.\"}],[\"$\",\"meta\",\"2\",{\"name\":\"application-name\",\"content\":\"vibestats\"}],[\"$\",\"meta\",\"3\",{\"name\":\"keywords\",\"content\":\"vibestats,Claude Code stats,Codex CLI stats,AI coding stats,AI coding analytics,Claude Code wrapped,Codex usage tracker,developer analytics,Claude Code usage guide,Codex CLI usage guide,AI coding analytics guide\"}],[\"$\",\"link\",\"4\",{\"rel\":\"canonical\",\"href\":\"https://vibestats.wolfai.dev/guides\"}],[\"$\",\"meta\",\"5\",{\"property\":\"og:title\",\"content\":\"Guides | vibestats\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:description\",\"content\":\"Read practical guides for tracking Claude Code usage, tracking Codex CLI usage, creating wrapped reports, building activity heatmaps, and sharing aggregate stats.\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:url\",\"content\":\"https://vibestats.wolfai.dev/guides\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:site_name\",\"content\":\"vibestats\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:locale\",\"content\":\"en_US\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:type\",\"content\":\"website\"}],[\"$\",\"meta\",\"11\",{\"name\":\"twitter:card\",\"content\":\"summary\"}],[\"$\",\"meta\",\"12\",{\"name\":\"twitter:title\",\"content\":\"Guides | vibestats\"}],[\"$\",\"meta\",\"13\",{\"name\":\"twitter:description\",\"content\":\"Read practical guides for tracking Claude Code usage, tracking Codex CLI usage, creating wrapped reports, building activity heatmaps, and sharing aggregate stats.\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"1a:\"$15:metadata\"\n"])</script></body></html>
@@ -0,0 +1,27 @@
1
+ 1:"$Sreact.fragment"
2
+ 2:I[7437,["177","static/chunks/app/layout-6ebd9b17af55ec02.js"],""]
3
+ 3:I[5965,[],""]
4
+ 4:I[3609,[],""]
5
+ 9:I[2207,[],""]
6
+ :HL["/_next/static/css/335de1248158d380.css","style"]
7
+ 5:T615,{"@context":"https://schema.org","@type":"CollectionPage","name":"AI coding analytics guides","description":"Read practical guides for tracking Claude Code usage, tracking Codex CLI usage, creating wrapped reports, building activity heatmaps, and sharing aggregate stats.","url":"https://vibestats.wolfai.dev/guides","mainEntity":{"@type":"ItemList","itemListElement":[{"@type":"ListItem","position":1,"name":"How to track Claude Code usage","url":"https://vibestats.wolfai.dev/guides/how-to-track-claude-code-usage"},{"@type":"ListItem","position":2,"name":"How to track Codex CLI usage","url":"https://vibestats.wolfai.dev/guides/how-to-track-codex-cli-usage"},{"@type":"ListItem","position":3,"name":"How to create an AI coding wrapped","url":"https://vibestats.wolfai.dev/guides/how-to-create-ai-coding-wrapped"},{"@type":"ListItem","position":4,"name":"How to build an AI activity heatmap","url":"https://vibestats.wolfai.dev/guides/how-to-build-ai-activity-heatmap"},{"@type":"ListItem","position":5,"name":"How to measure AI token costs","url":"https://vibestats.wolfai.dev/guides/how-to-measure-ai-token-costs"},{"@type":"ListItem","position":6,"name":"How to share AI coding stats","url":"https://vibestats.wolfai.dev/guides/how-to-share-ai-coding-stats"},{"@type":"ListItem","position":7,"name":"How to read Claude diagnostics","url":"https://vibestats.wolfai.dev/guides/how-to-read-claude-diagnostics"},{"@type":"ListItem","position":8,"name":"How to compare model usage","url":"https://vibestats.wolfai.dev/guides/how-to-compare-model-usage"}]}}0:{"P":null,"b":"gPirvBMhpRSdtR0tsMj2H","p":"","c":["","guides"],"i":false,"f":[[["",{"children":["guides",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/335de1248158d380.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":[["$","head",null,{"children":[["$","$L2",null,{"id":"wolf-analytics-config","strategy":"beforeInteractive","children":"window.WOLF_ANALYTICS_CONFIG = {\"apiUrl\":\"https://analapi.wolfai.dev\",\"projectApiKey\":\"wa_rMSm5mgj44W_9LzMsKCwwAipAtxPynp1tn4PbxN_Oa8\",\"mode\":\"intl\",\"sourceApp\":\"vibestats\"};"}],["$","$L2",null,{"id":"wolf-analytics-script","src":"https://analytics.wolfai.dev/wolf-analytics.min.js","strategy":"beforeInteractive"}]]}],["$","body",null,{"className":"antialiased min-h-screen bg-background text-foreground","children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}],{"children":["guides",["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","main",null,{"className":"min-h-screen bg-[radial-gradient(circle_at_top_left,_rgba(253,186,116,0.22),_transparent_35%),linear-gradient(180deg,#fff9f1_0%,#fff1de_100%)] px-4 py-8 text-slate-900 md:px-8 md:py-12","children":[["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"$5"}}],"$L6"]}],null,"$L7"]}],{},null,false]},null,false]},null,false],"$L8",false]],"m":"$undefined","G":["$9",[]],"s":false,"S":true}
8
+ a:I[4816,["816","static/chunks/816-8960921093d57453.js","6","static/chunks/app/guides/page-5d0587c1d5910e68.js"],""]
9
+ 12:I[496,[],"OutletBoundary"]
10
+ 14:I[3737,[],"AsyncMetadataOutlet"]
11
+ 16:I[496,[],"ViewportBoundary"]
12
+ 18:I[496,[],"MetadataBoundary"]
13
+ 19:"$Sreact.suspense"
14
+ 6:["$","div",null,{"className":"mx-auto max-w-7xl","children":[["$","header",null,{"className":"rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)] overflow-hidden","children":[["$","p",null,{"className":"text-[0.72rem] font-semibold uppercase tracking-[0.28em] text-slate-500","children":"Guide library"}],["$","h1",null,{"className":"mt-4 max-w-4xl font-[family-name:var(--font-display)] text-5xl leading-none text-slate-950 md:text-7xl","children":"AI coding analytics guides"}],["$","p",null,{"className":"mt-5 max-w-3xl text-base leading-7 text-slate-600 md:text-lg","children":"Read practical guides for tracking Claude Code usage, tracking Codex CLI usage, creating wrapped reports, building activity heatmaps, and sharing aggregate stats."}],["$","div",null,{"className":"mt-6 grid gap-3 text-sm text-slate-600 md:grid-cols-3","children":[["$","div",null,{"className":"rounded-[1.3rem] border border-slate-200 bg-slate-50 px-4 py-4","children":[["$","strong",null,{"className":"block text-slate-950","children":[8," pages"]}],["$","span",null,{"className":"mt-2 block","children":"Built around real vibestats workflows instead of generic SEO filler."}]]}],["$","div",null,{"className":"rounded-[1.3rem] border border-slate-200 bg-slate-50 px-4 py-4","children":[["$","strong",null,{"className":"block text-slate-950","children":"Internal links"}],["$","span",null,{"className":"mt-2 block","children":"Each page connects to related features, guides, and use cases."}]]}],["$","div",null,{"className":"rounded-[1.3rem] border border-slate-200 bg-slate-50 px-4 py-4","children":[["$","strong",null,{"className":"block text-slate-950","children":"Search intent"}],["$","span",null,{"className":"mt-2 block","children":"Every page is focused on one product or reporting question."}]]}]]}]]}],["$","section",null,{"className":"mt-6 grid gap-4 md:grid-cols-2 xl:grid-cols-3","children":[["$","$La","how-to-track-claude-code-usage",{"href":"/guides/how-to-track-claude-code-usage","className":"rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)] transition hover:-translate-y-0.5 hover:border-orange-300","children":[["$","p",null,{"className":"text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500","children":"Guide"}],["$","h2",null,{"className":"mt-3 font-[family-name:var(--font-display)] text-3xl leading-none text-slate-950","children":"How to track Claude Code usage"}],["$","p",null,{"className":"mt-4 text-sm leading-7 text-slate-600","children":"A practical guide to tracking Claude Code usage locally with vibestats."}],["$","ul",null,{"className":"mt-5 space-y-2 text-sm leading-6 text-slate-600","children":[["$","li","Start with daily usage, then refine",{"children":"Start with daily usage, then refine"}],["$","li","Model and session views answer different follow-up questions",{"children":"Model and session views answer different follow-up questions"}],["$","li","Diagnostics help when the totals look confusing",{"children":"Diagnostics help when the totals look confusing"}]]}]]}],["$","$La","how-to-track-codex-cli-usage",{"href":"/guides/how-to-track-codex-cli-usage","className":"rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)] transition hover:-translate-y-0.5 hover:border-orange-300","children":[["$","p",null,{"className":"text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500","children":"Guide"}],["$","h2",null,{"className":"mt-3 font-[family-name:var(--font-display)] text-3xl leading-none text-slate-950","children":"How to track Codex CLI usage"}],["$","p",null,{"className":"mt-4 text-sm leading-7 text-slate-600","children":"A practical guide to tracking OpenAI Codex CLI usage locally with vibestats."}],"$Lb"]}],"$Lc","$Ld","$Le","$Lf","$L10","$L11"]}]]}]
15
+ 7:["$","$L12",null,{"children":["$L13",["$","$L14",null,{"promise":"$@15"}]]}]
16
+ 8:["$","$1","h",{"children":[null,[["$","$L16",null,{"children":"$L17"}],null],["$","$L18",null,{"children":["$","div",null,{"hidden":true,"children":["$","$19",null,{"fallback":null,"children":"$L1a"}]}]}]]}]
17
+ b:["$","ul",null,{"className":"mt-5 space-y-2 text-sm leading-6 text-slate-600","children":[["$","li","Codex works best as its own first view",{"children":"Codex works best as its own first view"}],["$","li","Total and session views answer different questions",{"children":"Total and session views answer different questions"}],["$","li","Combined reporting is a second step, not the first",{"children":"Combined reporting is a second step, not the first"}]]}]
18
+ c:["$","$La","how-to-create-ai-coding-wrapped",{"href":"/guides/how-to-create-ai-coding-wrapped","className":"rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)] transition hover:-translate-y-0.5 hover:border-orange-300","children":[["$","p",null,{"className":"text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500","children":"Guide"}],["$","h2",null,{"className":"mt-3 font-[family-name:var(--font-display)] text-3xl leading-none text-slate-950","children":"How to create an AI coding wrapped"}],["$","p",null,{"className":"mt-4 text-sm leading-7 text-slate-600","children":"A practical guide to generating a wrapped-style AI coding recap with vibestats."}],["$","ul",null,{"className":"mt-5 space-y-2 text-sm leading-6 text-slate-600","children":[["$","li","Wrapped is the best narrative recap view",{"children":"Wrapped is the best narrative recap view"}],["$","li","Quiet mode is useful for share-first workflows",{"children":"Quiet mode is useful for share-first workflows"}],["$","li","Heatmaps complement wrapped, not replace it",{"children":"Heatmaps complement wrapped, not replace it"}]]}]]}]
19
+ d:["$","$La","how-to-build-ai-activity-heatmap",{"href":"/guides/how-to-build-ai-activity-heatmap","className":"rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)] transition hover:-translate-y-0.5 hover:border-orange-300","children":[["$","p",null,{"className":"text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500","children":"Guide"}],["$","h2",null,{"className":"mt-3 font-[family-name:var(--font-display)] text-3xl leading-none text-slate-950","children":"How to build an AI activity heatmap"}],["$","p",null,{"className":"mt-4 text-sm leading-7 text-slate-600","children":"A practical guide to generating a GitHub-style AI coding activity heatmap with vibestats."}],["$","ul",null,{"className":"mt-5 space-y-2 text-sm leading-6 text-slate-600","children":[["$","li","Heatmaps are best for rhythm and consistency",{"children":"Heatmaps are best for rhythm and consistency"}],["$","li","Metric choice changes the story",{"children":"Metric choice changes the story"}],["$","li","Hosted pages are easier to reuse in updates",{"children":"Hosted pages are easier to reuse in updates"}]]}]]}]
20
+ e:["$","$La","how-to-measure-ai-token-costs",{"href":"/guides/how-to-measure-ai-token-costs","className":"rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)] transition hover:-translate-y-0.5 hover:border-orange-300","children":[["$","p",null,{"className":"text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500","children":"Guide"}],["$","h2",null,{"className":"mt-3 font-[family-name:var(--font-display)] text-3xl leading-none text-slate-950","children":"How to measure AI token costs"}],["$","p",null,{"className":"mt-4 text-sm leading-7 text-slate-600","children":"A practical guide to measuring token volume and estimated cost in vibestats."}],["$","ul",null,{"className":"mt-5 space-y-2 text-sm leading-6 text-slate-600","children":[["$","li","Totals are the cleanest starting point",{"children":"Totals are the cleanest starting point"}],["$","li","Tokens and cost are related but not identical",{"children":"Tokens and cost are related but not identical"}],["$","li","Model views help explain cost shifts",{"children":"Model views help explain cost shifts"}]]}]]}]
21
+ f:["$","$La","how-to-share-ai-coding-stats",{"href":"/guides/how-to-share-ai-coding-stats","className":"rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)] transition hover:-translate-y-0.5 hover:border-orange-300","children":[["$","p",null,{"className":"text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500","children":"Guide"}],["$","h2",null,{"className":"mt-3 font-[family-name:var(--font-display)] text-3xl leading-none text-slate-950","children":"How to share AI coding stats"}],["$","p",null,{"className":"mt-4 text-sm leading-7 text-slate-600","children":"A practical guide to turning local vibestats output into shareable aggregate pages."}],["$","ul",null,{"className":"mt-5 space-y-2 text-sm leading-6 text-slate-600","children":[["$","li","Share the surface that fits the audience",{"children":"Share the surface that fits the audience"}],["$","li","Aggregate pages are better than screenshots",{"children":"Aggregate pages are better than screenshots"}],["$","li","Stored share pages are better than legacy payload URLs",{"children":"Stored share pages are better than legacy payload URLs"}]]}]]}]
22
+ 10:["$","$La","how-to-read-claude-diagnostics",{"href":"/guides/how-to-read-claude-diagnostics","className":"rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)] transition hover:-translate-y-0.5 hover:border-orange-300","children":[["$","p",null,{"className":"text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500","children":"Guide"}],["$","h2",null,{"className":"mt-3 font-[family-name:var(--font-display)] text-3xl leading-none text-slate-950","children":"How to read Claude diagnostics"}],["$","p",null,{"className":"mt-4 text-sm leading-7 text-slate-600","children":"A practical guide to using vibestats Claude diagnostics commands for local state and limit clues."}],["$","ul",null,{"className":"mt-5 space-y-2 text-sm leading-6 text-slate-600","children":[["$","li","Diagnostics complement usage reports",{"children":"Diagnostics complement usage reports"}],["$","li","Best used when something looks off",{"children":"Best used when something looks off"}],["$","li","Local file visibility beats guesswork",{"children":"Local file visibility beats guesswork"}]]}]]}]
23
+ 11:["$","$La","how-to-compare-model-usage",{"href":"/guides/how-to-compare-model-usage","className":"rounded-[1.8rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)] transition hover:-translate-y-0.5 hover:border-orange-300","children":[["$","p",null,{"className":"text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500","children":"Guide"}],["$","h2",null,{"className":"mt-3 font-[family-name:var(--font-display)] text-3xl leading-none text-slate-950","children":"How to compare model usage"}],["$","p",null,{"className":"mt-4 text-sm leading-7 text-slate-600","children":"A practical guide to comparing AI model usage in vibestats across reporting windows and source scopes."}],["$","ul",null,{"className":"mt-5 space-y-2 text-sm leading-6 text-slate-600","children":[["$","li","Stable windows matter more than perfect totals",{"children":"Stable windows matter more than perfect totals"}],["$","li","Model share is easier to read when grouped directly",{"children":"Model share is easier to read when grouped directly"}],["$","li","Source context helps interpret model shifts",{"children":"Source context helps interpret model shifts"}]]}]]}]
24
+ 17:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
25
+ 13:null
26
+ 15:{"metadata":[["$","title","0",{"children":"Guides | vibestats"}],["$","meta","1",{"name":"description","content":"Read practical guides for tracking Claude Code usage, tracking Codex CLI usage, creating wrapped reports, building activity heatmaps, and sharing aggregate stats."}],["$","meta","2",{"name":"application-name","content":"vibestats"}],["$","meta","3",{"name":"keywords","content":"vibestats,Claude Code stats,Codex CLI stats,AI coding stats,AI coding analytics,Claude Code wrapped,Codex usage tracker,developer analytics,Claude Code usage guide,Codex CLI usage guide,AI coding analytics guide"}],["$","link","4",{"rel":"canonical","href":"https://vibestats.wolfai.dev/guides"}],["$","meta","5",{"property":"og:title","content":"Guides | vibestats"}],["$","meta","6",{"property":"og:description","content":"Read practical guides for tracking Claude Code usage, tracking Codex CLI usage, creating wrapped reports, building activity heatmaps, and sharing aggregate stats."}],["$","meta","7",{"property":"og:url","content":"https://vibestats.wolfai.dev/guides"}],["$","meta","8",{"property":"og:site_name","content":"vibestats"}],["$","meta","9",{"property":"og:locale","content":"en_US"}],["$","meta","10",{"property":"og:type","content":"website"}],["$","meta","11",{"name":"twitter:card","content":"summary"}],["$","meta","12",{"name":"twitter:title","content":"Guides | vibestats"}],["$","meta","13",{"name":"twitter:description","content":"Read practical guides for tracking Claude Code usage, tracking Codex CLI usage, creating wrapped reports, building activity heatmaps, and sharing aggregate stats."}]],"error":null,"digest":"$undefined"}
27
+ 1a:"$15:metadata"
@@ -0,0 +1 @@
1
+ <!DOCTYPE html><!--gPirvBMhpRSdtR0tsMj2H--><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/css/335de1248158d380.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-175b2f5685d7557b.js"/><script src="/_next/static/chunks/c476d598-9099ed8b975ae1d6.js" async=""></script><script src="/_next/static/chunks/498-74a3a367cb8442f0.js" async=""></script><script src="/_next/static/chunks/main-app-6619364ab1f13fb7.js" async=""></script><script src="/_next/static/chunks/app/layout-6ebd9b17af55ec02.js" async=""></script><script src="/_next/static/chunks/816-8960921093d57453.js" async=""></script><script src="/_next/static/chunks/832-93b990b7ceeaa2c5.js" async=""></script><script src="/_next/static/chunks/app/page-dfb7bbdb5999dc75.js" async=""></script><link rel="preload" href="https://analytics.wolfai.dev/wolf-analytics.min.js" as="script"/><title>Claude Code &amp; Codex Usage Stats CLI</title><meta name="description" content="Track Claude Code and OpenAI Codex CLI usage locally. View token, cost, session, wrapped, and activity reports without sending prompts to a third party."/><meta name="application-name" content="vibestats"/><meta name="keywords" content="vibestats,Claude Code stats,Codex CLI stats,AI coding stats,AI coding analytics,Claude Code wrapped,Codex usage tracker,developer analytics,Claude Code usage tracker,Codex CLI usage tracker,local AI coding stats,AI coding wrapped"/><link rel="canonical" href="https://vibestats.wolfai.dev"/><meta property="og:title" content="Claude Code &amp; Codex Usage Stats CLI | vibestats"/><meta property="og:description" content="Track Claude Code and OpenAI Codex CLI usage locally. View token, cost, session, wrapped, and activity reports without sending prompts to a third party."/><meta property="og:url" content="https://vibestats.wolfai.dev"/><meta property="og:site_name" content="vibestats"/><meta property="og:locale" content="en_US"/><meta property="og:type" content="website"/><meta name="twitter:card" content="summary"/><meta name="twitter:title" content="Claude Code &amp; Codex Usage Stats CLI | vibestats"/><meta name="twitter:description" content="Track Claude Code and OpenAI Codex CLI usage locally. View token, cost, session, wrapped, and activity reports without sending prompts to a third party."/><script>(self.__next_s=self.__next_s||[]).push([0,{"children":"window.WOLF_ANALYTICS_CONFIG = {\"apiUrl\":\"https://analapi.wolfai.dev\",\"projectApiKey\":\"wa_rMSm5mgj44W_9LzMsKCwwAipAtxPynp1tn4PbxN_Oa8\",\"mode\":\"intl\",\"sourceApp\":\"vibestats\"};","id":"wolf-analytics-config"}])</script><script>(self.__next_s=self.__next_s||[]).push(["https://analytics.wolfai.dev/wolf-analytics.min.js",{"id":"wolf-analytics-script"}])</script><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="antialiased min-h-screen bg-background text-foreground"><div hidden=""><!--$--><!--/$--></div><script type="application/ld+json">[{"@context":"https://schema.org","@type":"SoftwareApplication","name":"vibestats","applicationCategory":"DeveloperApplication","operatingSystem":"macOS, Linux, Windows","description":"Local AI coding stats for Claude Code and OpenAI Codex CLI, including usage reports, wrapped summaries, and activity heatmaps.","url":"https://vibestats.wolfai.dev/","softwareHelp":"https://vibestats.wolfai.dev/docs","releaseNotes":"https://vibestats.wolfai.dev/changelog","featureList":["Claude Code usage tracking","Codex CLI usage tracking","token and cost reports","activity heatmaps","wrapped summaries"]},{"@context":"https://schema.org","@type":"FAQPage","mainEntity":[{"@type":"Question","name":"What does vibestats track?","acceptedAnswer":{"@type":"Answer","text":"vibestats turns local Claude Code, Codex CLI, and related session files into token, cost, session, wrapped, and activity reports."}},{"@type":"Question","name":"Does vibestats upload prompts or responses?","acceptedAnswer":{"@type":"Answer","text":"No. vibestats is local-first and only publishes aggregate stats when you explicitly create a share page."}},{"@type":"Question","name":"Which tools does vibestats support?","acceptedAnswer":{"@type":"Answer","text":"The current public docs cover Claude-compatible local sources, OpenAI Codex CLI usage, combined reports, wrapped summaries, diagnostics, and activity views."}}]}]</script><main class="min-h-screen bg-[radial-gradient(circle_at_top_left,_rgba(253,186,116,0.22),_transparent_35%),linear-gradient(180deg,#fff9f1_0%,#fff1de_100%)] text-slate-900 px-4 py-8 md:px-8 md:py-12"><div class="mx-auto max-w-7xl"><header class="border border-white/70 bg-white/80 shadow-[0_30px_80px_rgba(191,104,24,0.12)] backdrop-blur mb-10 rounded-[2rem] px-6 py-8 md:px-10"><p class="text-[0.72rem] font-semibold uppercase tracking-[0.28em] text-slate-500">vibestats</p><h1 class="max-w-4xl font-[family-name:var(--font-display)] leading-none text-slate-950 mt-4 text-5xl md:text-7xl">Local AI coding stats for Claude Code and Codex CLI.</h1><p class="mt-5 text-base leading-7 md:text-lg max-w-3xl text-slate-600">Track tokens, costs, sessions, wrapped summaries, and activity heatmaps from local usage data. Keep prompts local and only publish aggregate share pages when you choose to.</p></header><section class="grid gap-4 lg:grid-cols-3"><article class="rounded-[1.6rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]"><h2 class="font-[family-name:var(--font-display)] text-2xl text-slate-950">Usage reports</h2><p class="mt-3 text-sm leading-7 text-slate-600">Break down tokens, cache usage, costs, sessions, and date windows from local Claude-compatible sources and Codex CLI history.</p></article><article class="rounded-[1.6rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]"><h2 class="font-[family-name:var(--font-display)] text-2xl text-slate-950">Wrapped summaries</h2><p class="mt-3 text-sm leading-7 text-slate-600">Generate a year-in-review page with streaks, busiest day, model mix, total tokens, and top projects.</p></article><article class="rounded-[1.6rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]"><h2 class="font-[family-name:var(--font-display)] text-2xl text-slate-950">Activity heatmaps</h2><p class="mt-3 text-sm leading-7 text-slate-600">Publish GitHub-style activity cards and image-ready share pages for coding sessions over time.</p></article></section><section class="mt-6 grid gap-4 lg:grid-cols-[1.2fr_0.8fr]"><article class="rounded-[2rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]"><p class="text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500">Quick start</p><h2 class="mt-3 font-[family-name:var(--font-display)] text-4xl text-slate-950">Core commands</h2><div class="mt-5 grid gap-3 text-sm text-slate-700 md:grid-cols-2"><code class="rounded-2xl bg-slate-100 px-4 py-3">npx vibestats</code><code class="rounded-2xl bg-slate-100 px-4 py-3">npx vibestats codex</code><code class="rounded-2xl bg-slate-100 px-4 py-3">npx vibestats --wrapped</code><code class="rounded-2xl bg-slate-100 px-4 py-3">npx vibestats --activity --days 365</code></div><p class="mt-5 max-w-3xl text-sm leading-7 text-slate-600">vibestats supports Claude-compatible local sources, OpenAI Codex CLI usage, combined reports, diagnostics, public share pages, and activity views documented in the command reference.</p></article><article class="rounded-[2rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]"><p class="text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500">Privacy</p><h2 class="mt-3 font-[family-name:var(--font-display)] text-4xl text-slate-950">Local-first by design</h2><ul class="mt-5 space-y-3 text-sm leading-7 text-slate-600"><li>No prompts or responses are uploaded.</li><li>Share links contain aggregate stats, not raw conversations.</li><li>Diagnostics read local Claude files only when you request them.</li></ul></article></section><section class="mt-6 rounded-[2rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]"><p class="text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500">Explore</p><div class="mt-3 grid gap-4 md:grid-cols-3"><a class="rounded-[1.5rem] border border-slate-200 bg-slate-50 px-5 py-5 transition hover:border-orange-300 hover:bg-white" href="/docs"><strong class="block text-lg text-slate-950">Documentation</strong><span class="mt-2 block text-sm leading-6 text-slate-600">Commands, privacy model, sync plans, and self-hosting direction.</span></a><a class="rounded-[1.5rem] border border-slate-200 bg-slate-50 px-5 py-5 transition hover:border-orange-300 hover:bg-white" href="/wrapped"><strong class="block text-lg text-slate-950">Wrapped</strong><span class="mt-2 block text-sm leading-6 text-slate-600">Annual summary pages for local AI coding activity and model mix.</span></a><a class="rounded-[1.5rem] border border-slate-200 bg-slate-50 px-5 py-5 transition hover:border-orange-300 hover:bg-white" href="/changelog"><strong class="block text-lg text-slate-950">Changelog</strong><span class="mt-2 block text-sm leading-6 text-slate-600">Release notes for CLI commands, hosted pages, shares, and model support.</span></a></div></section><section class="mt-6 rounded-[2rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]"><p class="text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500">Topic clusters</p><div class="mt-3 grid gap-4 md:grid-cols-2 xl:grid-cols-4"><a class="rounded-[1.5rem] border border-slate-200 bg-slate-50 px-5 py-5 transition hover:border-orange-300 hover:bg-white" href="/features"><strong class="block text-lg text-slate-950">Features</strong><span class="mt-2 block text-sm leading-6 text-slate-600">Claude stats, Codex stats, wrapped, activity, sharing, privacy, diagnostics, and automation exports.</span></a><a class="rounded-[1.5rem] border border-slate-200 bg-slate-50 px-5 py-5 transition hover:border-orange-300 hover:bg-white" href="/compare"><strong class="block text-lg text-slate-950">Compare</strong><span class="mt-2 block text-sm leading-6 text-slate-600">Local vs cloud, wrapped vs heatmaps, daily vs monthly reports, and other reporting tradeoffs.</span></a><a class="rounded-[1.5rem] border border-slate-200 bg-slate-50 px-5 py-5 transition hover:border-orange-300 hover:bg-white" href="/use-cases"><strong class="block text-lg text-slate-950">Use cases</strong><span class="mt-2 block text-sm leading-6 text-slate-600">Pages for freelancers, agencies, managers, researchers, maintainers, and recurring review workflows.</span></a><a class="rounded-[1.5rem] border border-slate-200 bg-slate-50 px-5 py-5 transition hover:border-orange-300 hover:bg-white" href="/guides"><strong class="block text-lg text-slate-950">Guides</strong><span class="mt-2 block text-sm leading-6 text-slate-600">Practical walkthroughs for tracking, wrapping, sharing, heatmaps, costs, diagnostics, and model analysis.</span></a></div></section><section class="mt-6 rounded-[2rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]"><p class="text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500">FAQ</p><div class="mt-4 grid gap-4 lg:grid-cols-3"><article class="rounded-[1.4rem] border border-slate-200 bg-slate-50 px-5 py-5"><h2 class="text-lg font-semibold text-slate-950">What does vibestats track?</h2><p class="mt-2 text-sm leading-7 text-slate-600">vibestats turns local Claude Code, Codex CLI, and related session files into token, cost, session, wrapped, and activity reports.</p></article><article class="rounded-[1.4rem] border border-slate-200 bg-slate-50 px-5 py-5"><h2 class="text-lg font-semibold text-slate-950">Does vibestats upload prompts or responses?</h2><p class="mt-2 text-sm leading-7 text-slate-600">No. vibestats is local-first and only publishes aggregate stats when you explicitly create a share page.</p></article><article class="rounded-[1.4rem] border border-slate-200 bg-slate-50 px-5 py-5"><h2 class="text-lg font-semibold text-slate-950">Which tools does vibestats support?</h2><p class="mt-2 text-sm leading-7 text-slate-600">The current public docs cover Claude-compatible local sources, OpenAI Codex CLI usage, combined reports, wrapped summaries, diagnostics, and activity views.</p></article></div></section></div></main><!--$--><!--/$--><script src="/_next/static/chunks/webpack-175b2f5685d7557b.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[7437,[\"177\",\"static/chunks/app/layout-6ebd9b17af55ec02.js\"],\"\"]\n3:I[5965,[],\"\"]\n4:I[3609,[],\"\"]\n6:I[496,[],\"OutletBoundary\"]\n8:I[3737,[],\"AsyncMetadataOutlet\"]\na:I[496,[],\"ViewportBoundary\"]\nc:I[496,[],\"MetadataBoundary\"]\nd:\"$Sreact.suspense\"\nf:I[2207,[],\"\"]\n:HL[\"/_next/static/css/335de1248158d380.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"gPirvBMhpRSdtR0tsMj2H\",\"p\":\"\",\"c\":[\"\",\"\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"__PAGE__\",{}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/335de1248158d380.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"$L2\",null,{\"id\":\"wolf-analytics-config\",\"strategy\":\"beforeInteractive\",\"children\":\"window.WOLF_ANALYTICS_CONFIG = {\\\"apiUrl\\\":\\\"https://analapi.wolfai.dev\\\",\\\"projectApiKey\\\":\\\"wa_rMSm5mgj44W_9LzMsKCwwAipAtxPynp1tn4PbxN_Oa8\\\",\\\"mode\\\":\\\"intl\\\",\\\"sourceApp\\\":\\\"vibestats\\\"};\"}],[\"$\",\"$L2\",null,{\"id\":\"wolf-analytics-script\",\"src\":\"https://analytics.wolfai.dev/wolf-analytics.min.js\",\"strategy\":\"beforeInteractive\"}]]}],[\"$\",\"body\",null,{\"className\":\"antialiased min-h-screen bg-background text-foreground\",\"children\":[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[\"$L5\",null,[\"$\",\"$L6\",null,{\"children\":[\"$L7\",[\"$\",\"$L8\",null,{\"promise\":\"$@9\"}]]}]]}],{},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[[\"$\",\"$La\",null,{\"children\":\"$Lb\"}],null],[\"$\",\"$Lc\",null,{\"children\":[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$d\",null,{\"fallback\":null,\"children\":\"$Le\"}]}]}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$f\",[]],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"10:T56b,"])</script><script>self.__next_f.push([1,"[{\"@context\":\"https://schema.org\",\"@type\":\"SoftwareApplication\",\"name\":\"vibestats\",\"applicationCategory\":\"DeveloperApplication\",\"operatingSystem\":\"macOS, Linux, Windows\",\"description\":\"Local AI coding stats for Claude Code and OpenAI Codex CLI, including usage reports, wrapped summaries, and activity heatmaps.\",\"url\":\"https://vibestats.wolfai.dev/\",\"softwareHelp\":\"https://vibestats.wolfai.dev/docs\",\"releaseNotes\":\"https://vibestats.wolfai.dev/changelog\",\"featureList\":[\"Claude Code usage tracking\",\"Codex CLI usage tracking\",\"token and cost reports\",\"activity heatmaps\",\"wrapped summaries\"]},{\"@context\":\"https://schema.org\",\"@type\":\"FAQPage\",\"mainEntity\":[{\"@type\":\"Question\",\"name\":\"What does vibestats track?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"vibestats turns local Claude Code, Codex CLI, and related session files into token, cost, session, wrapped, and activity reports.\"}},{\"@type\":\"Question\",\"name\":\"Does vibestats upload prompts or responses?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"No. vibestats is local-first and only publishes aggregate stats when you explicitly create a share page.\"}},{\"@type\":\"Question\",\"name\":\"Which tools does vibestats support?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"The current public docs cover Claude-compatible local sources, OpenAI Codex CLI usage, combined reports, wrapped summaries, diagnostics, and activity views.\"}}]}]"])</script><script>self.__next_f.push([1,"5:[[\"$\",\"script\",null,{\"type\":\"application/ld+json\",\"dangerouslySetInnerHTML\":{\"__html\":\"$10\"}}],[\"$\",\"main\",null,{\"className\":\"min-h-screen bg-[radial-gradient(circle_at_top_left,_rgba(253,186,116,0.22),_transparent_35%),linear-gradient(180deg,#fff9f1_0%,#fff1de_100%)] text-slate-900 px-4 py-8 md:px-8 md:py-12\",\"children\":[\"$\",\"div\",null,{\"className\":\"mx-auto max-w-7xl\",\"children\":[[\"$\",\"header\",null,{\"className\":\"border border-white/70 bg-white/80 shadow-[0_30px_80px_rgba(191,104,24,0.12)] backdrop-blur mb-10 rounded-[2rem] px-6 py-8 md:px-10\",\"children\":[[\"$\",\"p\",null,{\"className\":\"text-[0.72rem] font-semibold uppercase tracking-[0.28em] text-slate-500\",\"children\":\"vibestats\"}],[\"$\",\"h1\",null,{\"className\":\"max-w-4xl font-[family-name:var(--font-display)] leading-none text-slate-950 mt-4 text-5xl md:text-7xl\",\"children\":\"Local AI coding stats for Claude Code and Codex CLI.\"}],[\"$\",\"p\",null,{\"className\":\"mt-5 text-base leading-7 md:text-lg max-w-3xl text-slate-600\",\"children\":\"Track tokens, costs, sessions, wrapped summaries, and activity heatmaps from local usage data. Keep prompts local and only publish aggregate share pages when you choose to.\"}]]}],[[\"$\",\"section\",null,{\"className\":\"grid gap-4 lg:grid-cols-3\",\"children\":[[\"$\",\"article\",\"Usage reports\",{\"className\":\"rounded-[1.6rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"font-[family-name:var(--font-display)] text-2xl text-slate-950\",\"children\":\"Usage reports\"}],[\"$\",\"p\",null,{\"className\":\"mt-3 text-sm leading-7 text-slate-600\",\"children\":\"Break down tokens, cache usage, costs, sessions, and date windows from local Claude-compatible sources and Codex CLI history.\"}]]}],[\"$\",\"article\",\"Wrapped summaries\",{\"className\":\"rounded-[1.6rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"font-[family-name:var(--font-display)] text-2xl text-slate-950\",\"children\":\"Wrapped summaries\"}],[\"$\",\"p\",null,{\"className\":\"mt-3 text-sm leading-7 text-slate-600\",\"children\":\"Generate a year-in-review page with streaks, busiest day, model mix, total tokens, and top projects.\"}]]}],\"$L11\"]}],\"$L12\",\"$L13\",\"$L14\",\"$L15\"]]}]}]]\n"])</script><script>self.__next_f.push([1,"16:I[4816,[\"816\",\"static/chunks/816-8960921093d57453.js\",\"832\",\"static/chunks/832-93b990b7ceeaa2c5.js\",\"974\",\"static/chunks/app/page-dfb7bbdb5999dc75.js\"],\"\"]\n11:[\"$\",\"article\",\"Activity heatmaps\",{\"className\":\"rounded-[1.6rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"font-[family-name:var(--font-display)] text-2xl text-slate-950\",\"children\":\"Activity heatmaps\"}],[\"$\",\"p\",null,{\"className\":\"mt-3 text-sm leading-7 text-slate-600\",\"children\":\"Publish GitHub-style activity cards and image-ready share pages for coding sessions over time.\"}]]}]\n"])</script><script>self.__next_f.push([1,"12:[\"$\",\"section\",null,{\"className\":\"mt-6 grid gap-4 lg:grid-cols-[1.2fr_0.8fr]\",\"children\":[[\"$\",\"article\",null,{\"className\":\"rounded-[2rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]\",\"children\":[[\"$\",\"p\",null,{\"className\":\"text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500\",\"children\":\"Quick start\"}],[\"$\",\"h2\",null,{\"className\":\"mt-3 font-[family-name:var(--font-display)] text-4xl text-slate-950\",\"children\":\"Core commands\"}],[\"$\",\"div\",null,{\"className\":\"mt-5 grid gap-3 text-sm text-slate-700 md:grid-cols-2\",\"children\":[[\"$\",\"code\",null,{\"className\":\"rounded-2xl bg-slate-100 px-4 py-3\",\"children\":\"npx vibestats\"}],[\"$\",\"code\",null,{\"className\":\"rounded-2xl bg-slate-100 px-4 py-3\",\"children\":\"npx vibestats codex\"}],[\"$\",\"code\",null,{\"className\":\"rounded-2xl bg-slate-100 px-4 py-3\",\"children\":\"npx vibestats --wrapped\"}],[\"$\",\"code\",null,{\"className\":\"rounded-2xl bg-slate-100 px-4 py-3\",\"children\":\"npx vibestats --activity --days 365\"}]]}],[\"$\",\"p\",null,{\"className\":\"mt-5 max-w-3xl text-sm leading-7 text-slate-600\",\"children\":\"vibestats supports Claude-compatible local sources, OpenAI Codex CLI usage, combined reports, diagnostics, public share pages, and activity views documented in the command reference.\"}]]}],[\"$\",\"article\",null,{\"className\":\"rounded-[2rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]\",\"children\":[[\"$\",\"p\",null,{\"className\":\"text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500\",\"children\":\"Privacy\"}],[\"$\",\"h2\",null,{\"className\":\"mt-3 font-[family-name:var(--font-display)] text-4xl text-slate-950\",\"children\":\"Local-first by design\"}],[\"$\",\"ul\",null,{\"className\":\"mt-5 space-y-3 text-sm leading-7 text-slate-600\",\"children\":[[\"$\",\"li\",null,{\"children\":\"No prompts or responses are uploaded.\"}],[\"$\",\"li\",null,{\"children\":\"Share links contain aggregate stats, not raw conversations.\"}],[\"$\",\"li\",null,{\"children\":\"Diagnostics read local Claude files only when you request them.\"}]]}]]}]]}]\n"])</script><script>self.__next_f.push([1,"13:[\"$\",\"section\",null,{\"className\":\"mt-6 rounded-[2rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]\",\"children\":[[\"$\",\"p\",null,{\"className\":\"text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500\",\"children\":\"Explore\"}],[\"$\",\"div\",null,{\"className\":\"mt-3 grid gap-4 md:grid-cols-3\",\"children\":[[\"$\",\"$L16\",null,{\"className\":\"rounded-[1.5rem] border border-slate-200 bg-slate-50 px-5 py-5 transition hover:border-orange-300 hover:bg-white\",\"href\":\"/docs\",\"children\":[[\"$\",\"strong\",null,{\"className\":\"block text-lg text-slate-950\",\"children\":\"Documentation\"}],[\"$\",\"span\",null,{\"className\":\"mt-2 block text-sm leading-6 text-slate-600\",\"children\":\"Commands, privacy model, sync plans, and self-hosting direction.\"}]]}],[\"$\",\"$L16\",null,{\"className\":\"rounded-[1.5rem] border border-slate-200 bg-slate-50 px-5 py-5 transition hover:border-orange-300 hover:bg-white\",\"href\":\"/wrapped\",\"children\":[[\"$\",\"strong\",null,{\"className\":\"block text-lg text-slate-950\",\"children\":\"Wrapped\"}],[\"$\",\"span\",null,{\"className\":\"mt-2 block text-sm leading-6 text-slate-600\",\"children\":\"Annual summary pages for local AI coding activity and model mix.\"}]]}],[\"$\",\"$L16\",null,{\"className\":\"rounded-[1.5rem] border border-slate-200 bg-slate-50 px-5 py-5 transition hover:border-orange-300 hover:bg-white\",\"href\":\"/changelog\",\"children\":[[\"$\",\"strong\",null,{\"className\":\"block text-lg text-slate-950\",\"children\":\"Changelog\"}],[\"$\",\"span\",null,{\"className\":\"mt-2 block text-sm leading-6 text-slate-600\",\"children\":\"Release notes for CLI commands, hosted pages, shares, and model support.\"}]]}]]}]]}]\n"])</script><script>self.__next_f.push([1,"14:[\"$\",\"section\",null,{\"className\":\"mt-6 rounded-[2rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]\",\"children\":[[\"$\",\"p\",null,{\"className\":\"text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500\",\"children\":\"Topic clusters\"}],[\"$\",\"div\",null,{\"className\":\"mt-3 grid gap-4 md:grid-cols-2 xl:grid-cols-4\",\"children\":[[\"$\",\"$L16\",null,{\"className\":\"rounded-[1.5rem] border border-slate-200 bg-slate-50 px-5 py-5 transition hover:border-orange-300 hover:bg-white\",\"href\":\"/features\",\"children\":[[\"$\",\"strong\",null,{\"className\":\"block text-lg text-slate-950\",\"children\":\"Features\"}],[\"$\",\"span\",null,{\"className\":\"mt-2 block text-sm leading-6 text-slate-600\",\"children\":\"Claude stats, Codex stats, wrapped, activity, sharing, privacy, diagnostics, and automation exports.\"}]]}],[\"$\",\"$L16\",null,{\"className\":\"rounded-[1.5rem] border border-slate-200 bg-slate-50 px-5 py-5 transition hover:border-orange-300 hover:bg-white\",\"href\":\"/compare\",\"children\":[[\"$\",\"strong\",null,{\"className\":\"block text-lg text-slate-950\",\"children\":\"Compare\"}],[\"$\",\"span\",null,{\"className\":\"mt-2 block text-sm leading-6 text-slate-600\",\"children\":\"Local vs cloud, wrapped vs heatmaps, daily vs monthly reports, and other reporting tradeoffs.\"}]]}],[\"$\",\"$L16\",null,{\"className\":\"rounded-[1.5rem] border border-slate-200 bg-slate-50 px-5 py-5 transition hover:border-orange-300 hover:bg-white\",\"href\":\"/use-cases\",\"children\":[[\"$\",\"strong\",null,{\"className\":\"block text-lg text-slate-950\",\"children\":\"Use cases\"}],[\"$\",\"span\",null,{\"className\":\"mt-2 block text-sm leading-6 text-slate-600\",\"children\":\"Pages for freelancers, agencies, managers, researchers, maintainers, and recurring review workflows.\"}]]}],[\"$\",\"$L16\",null,{\"className\":\"rounded-[1.5rem] border border-slate-200 bg-slate-50 px-5 py-5 transition hover:border-orange-300 hover:bg-white\",\"href\":\"/guides\",\"children\":[[\"$\",\"strong\",null,{\"className\":\"block text-lg text-slate-950\",\"children\":\"Guides\"}],[\"$\",\"span\",null,{\"className\":\"mt-2 block text-sm leading-6 text-slate-600\",\"children\":\"Practical walkthroughs for tracking, wrapping, sharing, heatmaps, costs, diagnostics, and model analysis.\"}]]}]]}]]}]\n"])</script><script>self.__next_f.push([1,"15:[\"$\",\"section\",null,{\"className\":\"mt-6 rounded-[2rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]\",\"children\":[[\"$\",\"p\",null,{\"className\":\"text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500\",\"children\":\"FAQ\"}],[\"$\",\"div\",null,{\"className\":\"mt-4 grid gap-4 lg:grid-cols-3\",\"children\":[[\"$\",\"article\",\"What does vibestats track?\",{\"className\":\"rounded-[1.4rem] border border-slate-200 bg-slate-50 px-5 py-5\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"text-lg font-semibold text-slate-950\",\"children\":\"What does vibestats track?\"}],[\"$\",\"p\",null,{\"className\":\"mt-2 text-sm leading-7 text-slate-600\",\"children\":\"vibestats turns local Claude Code, Codex CLI, and related session files into token, cost, session, wrapped, and activity reports.\"}]]}],[\"$\",\"article\",\"Does vibestats upload prompts or responses?\",{\"className\":\"rounded-[1.4rem] border border-slate-200 bg-slate-50 px-5 py-5\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"text-lg font-semibold text-slate-950\",\"children\":\"Does vibestats upload prompts or responses?\"}],[\"$\",\"p\",null,{\"className\":\"mt-2 text-sm leading-7 text-slate-600\",\"children\":\"No. vibestats is local-first and only publishes aggregate stats when you explicitly create a share page.\"}]]}],[\"$\",\"article\",\"Which tools does vibestats support?\",{\"className\":\"rounded-[1.4rem] border border-slate-200 bg-slate-50 px-5 py-5\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"text-lg font-semibold text-slate-950\",\"children\":\"Which tools does vibestats support?\"}],[\"$\",\"p\",null,{\"className\":\"mt-2 text-sm leading-7 text-slate-600\",\"children\":\"The current public docs cover Claude-compatible local sources, OpenAI Codex CLI usage, combined reports, wrapped summaries, diagnostics, and activity views.\"}]]}]]}]]}]\n"])</script><script>self.__next_f.push([1,"b:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n7:null\n"])</script><script>self.__next_f.push([1,"9:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"Claude Code \u0026 Codex Usage Stats CLI\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Track Claude Code and OpenAI Codex CLI usage locally. View token, cost, session, wrapped, and activity reports without sending prompts to a third party.\"}],[\"$\",\"meta\",\"2\",{\"name\":\"application-name\",\"content\":\"vibestats\"}],[\"$\",\"meta\",\"3\",{\"name\":\"keywords\",\"content\":\"vibestats,Claude Code stats,Codex CLI stats,AI coding stats,AI coding analytics,Claude Code wrapped,Codex usage tracker,developer analytics,Claude Code usage tracker,Codex CLI usage tracker,local AI coding stats,AI coding wrapped\"}],[\"$\",\"link\",\"4\",{\"rel\":\"canonical\",\"href\":\"https://vibestats.wolfai.dev\"}],[\"$\",\"meta\",\"5\",{\"property\":\"og:title\",\"content\":\"Claude Code \u0026 Codex Usage Stats CLI | vibestats\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:description\",\"content\":\"Track Claude Code and OpenAI Codex CLI usage locally. View token, cost, session, wrapped, and activity reports without sending prompts to a third party.\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:url\",\"content\":\"https://vibestats.wolfai.dev\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:site_name\",\"content\":\"vibestats\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:locale\",\"content\":\"en_US\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:type\",\"content\":\"website\"}],[\"$\",\"meta\",\"11\",{\"name\":\"twitter:card\",\"content\":\"summary\"}],[\"$\",\"meta\",\"12\",{\"name\":\"twitter:title\",\"content\":\"Claude Code \u0026 Codex Usage Stats CLI | vibestats\"}],[\"$\",\"meta\",\"13\",{\"name\":\"twitter:description\",\"content\":\"Track Claude Code and OpenAI Codex CLI usage locally. View token, cost, session, wrapped, and activity reports without sending prompts to a third party.\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"e:\"$9:metadata\"\n"])</script></body></html>
@@ -0,0 +1,23 @@
1
+ 1:"$Sreact.fragment"
2
+ 2:I[7437,["177","static/chunks/app/layout-6ebd9b17af55ec02.js"],""]
3
+ 3:I[5965,[],""]
4
+ 4:I[3609,[],""]
5
+ 6:I[496,[],"OutletBoundary"]
6
+ 8:I[3737,[],"AsyncMetadataOutlet"]
7
+ a:I[496,[],"ViewportBoundary"]
8
+ c:I[496,[],"MetadataBoundary"]
9
+ d:"$Sreact.suspense"
10
+ f:I[2207,[],""]
11
+ :HL["/_next/static/css/335de1248158d380.css","style"]
12
+ 0:{"P":null,"b":"gPirvBMhpRSdtR0tsMj2H","p":"","c":["",""],"i":false,"f":[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/335de1248158d380.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":[["$","head",null,{"children":[["$","$L2",null,{"id":"wolf-analytics-config","strategy":"beforeInteractive","children":"window.WOLF_ANALYTICS_CONFIG = {\"apiUrl\":\"https://analapi.wolfai.dev\",\"projectApiKey\":\"wa_rMSm5mgj44W_9LzMsKCwwAipAtxPynp1tn4PbxN_Oa8\",\"mode\":\"intl\",\"sourceApp\":\"vibestats\"};"}],["$","$L2",null,{"id":"wolf-analytics-script","src":"https://analytics.wolfai.dev/wolf-analytics.min.js","strategy":"beforeInteractive"}]]}],["$","body",null,{"className":"antialiased min-h-screen bg-background text-foreground","children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}],{"children":["__PAGE__",["$","$1","c",{"children":["$L5",null,["$","$L6",null,{"children":["$L7",["$","$L8",null,{"promise":"$@9"}]]}]]}],{},null,false]},null,false],["$","$1","h",{"children":[null,[["$","$La",null,{"children":"$Lb"}],null],["$","$Lc",null,{"children":["$","div",null,{"hidden":true,"children":["$","$d",null,{"fallback":null,"children":"$Le"}]}]}]]}],false]],"m":"$undefined","G":["$f",[]],"s":false,"S":true}
13
+ 10:T56b,[{"@context":"https://schema.org","@type":"SoftwareApplication","name":"vibestats","applicationCategory":"DeveloperApplication","operatingSystem":"macOS, Linux, Windows","description":"Local AI coding stats for Claude Code and OpenAI Codex CLI, including usage reports, wrapped summaries, and activity heatmaps.","url":"https://vibestats.wolfai.dev/","softwareHelp":"https://vibestats.wolfai.dev/docs","releaseNotes":"https://vibestats.wolfai.dev/changelog","featureList":["Claude Code usage tracking","Codex CLI usage tracking","token and cost reports","activity heatmaps","wrapped summaries"]},{"@context":"https://schema.org","@type":"FAQPage","mainEntity":[{"@type":"Question","name":"What does vibestats track?","acceptedAnswer":{"@type":"Answer","text":"vibestats turns local Claude Code, Codex CLI, and related session files into token, cost, session, wrapped, and activity reports."}},{"@type":"Question","name":"Does vibestats upload prompts or responses?","acceptedAnswer":{"@type":"Answer","text":"No. vibestats is local-first and only publishes aggregate stats when you explicitly create a share page."}},{"@type":"Question","name":"Which tools does vibestats support?","acceptedAnswer":{"@type":"Answer","text":"The current public docs cover Claude-compatible local sources, OpenAI Codex CLI usage, combined reports, wrapped summaries, diagnostics, and activity views."}}]}]5:[["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"$10"}}],["$","main",null,{"className":"min-h-screen bg-[radial-gradient(circle_at_top_left,_rgba(253,186,116,0.22),_transparent_35%),linear-gradient(180deg,#fff9f1_0%,#fff1de_100%)] text-slate-900 px-4 py-8 md:px-8 md:py-12","children":["$","div",null,{"className":"mx-auto max-w-7xl","children":[["$","header",null,{"className":"border border-white/70 bg-white/80 shadow-[0_30px_80px_rgba(191,104,24,0.12)] backdrop-blur mb-10 rounded-[2rem] px-6 py-8 md:px-10","children":[["$","p",null,{"className":"text-[0.72rem] font-semibold uppercase tracking-[0.28em] text-slate-500","children":"vibestats"}],["$","h1",null,{"className":"max-w-4xl font-[family-name:var(--font-display)] leading-none text-slate-950 mt-4 text-5xl md:text-7xl","children":"Local AI coding stats for Claude Code and Codex CLI."}],["$","p",null,{"className":"mt-5 text-base leading-7 md:text-lg max-w-3xl text-slate-600","children":"Track tokens, costs, sessions, wrapped summaries, and activity heatmaps from local usage data. Keep prompts local and only publish aggregate share pages when you choose to."}]]}],[["$","section",null,{"className":"grid gap-4 lg:grid-cols-3","children":[["$","article","Usage reports",{"className":"rounded-[1.6rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]","children":[["$","h2",null,{"className":"font-[family-name:var(--font-display)] text-2xl text-slate-950","children":"Usage reports"}],["$","p",null,{"className":"mt-3 text-sm leading-7 text-slate-600","children":"Break down tokens, cache usage, costs, sessions, and date windows from local Claude-compatible sources and Codex CLI history."}]]}],["$","article","Wrapped summaries",{"className":"rounded-[1.6rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]","children":[["$","h2",null,{"className":"font-[family-name:var(--font-display)] text-2xl text-slate-950","children":"Wrapped summaries"}],["$","p",null,{"className":"mt-3 text-sm leading-7 text-slate-600","children":"Generate a year-in-review page with streaks, busiest day, model mix, total tokens, and top projects."}]]}],"$L11"]}],"$L12","$L13","$L14","$L15"]]}]}]]
14
+ 16:I[4816,["816","static/chunks/816-8960921093d57453.js","832","static/chunks/832-93b990b7ceeaa2c5.js","974","static/chunks/app/page-dfb7bbdb5999dc75.js"],""]
15
+ 11:["$","article","Activity heatmaps",{"className":"rounded-[1.6rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]","children":[["$","h2",null,{"className":"font-[family-name:var(--font-display)] text-2xl text-slate-950","children":"Activity heatmaps"}],["$","p",null,{"className":"mt-3 text-sm leading-7 text-slate-600","children":"Publish GitHub-style activity cards and image-ready share pages for coding sessions over time."}]]}]
16
+ 12:["$","section",null,{"className":"mt-6 grid gap-4 lg:grid-cols-[1.2fr_0.8fr]","children":[["$","article",null,{"className":"rounded-[2rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]","children":[["$","p",null,{"className":"text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500","children":"Quick start"}],["$","h2",null,{"className":"mt-3 font-[family-name:var(--font-display)] text-4xl text-slate-950","children":"Core commands"}],["$","div",null,{"className":"mt-5 grid gap-3 text-sm text-slate-700 md:grid-cols-2","children":[["$","code",null,{"className":"rounded-2xl bg-slate-100 px-4 py-3","children":"npx vibestats"}],["$","code",null,{"className":"rounded-2xl bg-slate-100 px-4 py-3","children":"npx vibestats codex"}],["$","code",null,{"className":"rounded-2xl bg-slate-100 px-4 py-3","children":"npx vibestats --wrapped"}],["$","code",null,{"className":"rounded-2xl bg-slate-100 px-4 py-3","children":"npx vibestats --activity --days 365"}]]}],["$","p",null,{"className":"mt-5 max-w-3xl text-sm leading-7 text-slate-600","children":"vibestats supports Claude-compatible local sources, OpenAI Codex CLI usage, combined reports, diagnostics, public share pages, and activity views documented in the command reference."}]]}],["$","article",null,{"className":"rounded-[2rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]","children":[["$","p",null,{"className":"text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500","children":"Privacy"}],["$","h2",null,{"className":"mt-3 font-[family-name:var(--font-display)] text-4xl text-slate-950","children":"Local-first by design"}],["$","ul",null,{"className":"mt-5 space-y-3 text-sm leading-7 text-slate-600","children":[["$","li",null,{"children":"No prompts or responses are uploaded."}],["$","li",null,{"children":"Share links contain aggregate stats, not raw conversations."}],["$","li",null,{"children":"Diagnostics read local Claude files only when you request them."}]]}]]}]]}]
17
+ 13:["$","section",null,{"className":"mt-6 rounded-[2rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]","children":[["$","p",null,{"className":"text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500","children":"Explore"}],["$","div",null,{"className":"mt-3 grid gap-4 md:grid-cols-3","children":[["$","$L16",null,{"className":"rounded-[1.5rem] border border-slate-200 bg-slate-50 px-5 py-5 transition hover:border-orange-300 hover:bg-white","href":"/docs","children":[["$","strong",null,{"className":"block text-lg text-slate-950","children":"Documentation"}],["$","span",null,{"className":"mt-2 block text-sm leading-6 text-slate-600","children":"Commands, privacy model, sync plans, and self-hosting direction."}]]}],["$","$L16",null,{"className":"rounded-[1.5rem] border border-slate-200 bg-slate-50 px-5 py-5 transition hover:border-orange-300 hover:bg-white","href":"/wrapped","children":[["$","strong",null,{"className":"block text-lg text-slate-950","children":"Wrapped"}],["$","span",null,{"className":"mt-2 block text-sm leading-6 text-slate-600","children":"Annual summary pages for local AI coding activity and model mix."}]]}],["$","$L16",null,{"className":"rounded-[1.5rem] border border-slate-200 bg-slate-50 px-5 py-5 transition hover:border-orange-300 hover:bg-white","href":"/changelog","children":[["$","strong",null,{"className":"block text-lg text-slate-950","children":"Changelog"}],["$","span",null,{"className":"mt-2 block text-sm leading-6 text-slate-600","children":"Release notes for CLI commands, hosted pages, shares, and model support."}]]}]]}]]}]
18
+ 14:["$","section",null,{"className":"mt-6 rounded-[2rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]","children":[["$","p",null,{"className":"text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500","children":"Topic clusters"}],["$","div",null,{"className":"mt-3 grid gap-4 md:grid-cols-2 xl:grid-cols-4","children":[["$","$L16",null,{"className":"rounded-[1.5rem] border border-slate-200 bg-slate-50 px-5 py-5 transition hover:border-orange-300 hover:bg-white","href":"/features","children":[["$","strong",null,{"className":"block text-lg text-slate-950","children":"Features"}],["$","span",null,{"className":"mt-2 block text-sm leading-6 text-slate-600","children":"Claude stats, Codex stats, wrapped, activity, sharing, privacy, diagnostics, and automation exports."}]]}],["$","$L16",null,{"className":"rounded-[1.5rem] border border-slate-200 bg-slate-50 px-5 py-5 transition hover:border-orange-300 hover:bg-white","href":"/compare","children":[["$","strong",null,{"className":"block text-lg text-slate-950","children":"Compare"}],["$","span",null,{"className":"mt-2 block text-sm leading-6 text-slate-600","children":"Local vs cloud, wrapped vs heatmaps, daily vs monthly reports, and other reporting tradeoffs."}]]}],["$","$L16",null,{"className":"rounded-[1.5rem] border border-slate-200 bg-slate-50 px-5 py-5 transition hover:border-orange-300 hover:bg-white","href":"/use-cases","children":[["$","strong",null,{"className":"block text-lg text-slate-950","children":"Use cases"}],["$","span",null,{"className":"mt-2 block text-sm leading-6 text-slate-600","children":"Pages for freelancers, agencies, managers, researchers, maintainers, and recurring review workflows."}]]}],["$","$L16",null,{"className":"rounded-[1.5rem] border border-slate-200 bg-slate-50 px-5 py-5 transition hover:border-orange-300 hover:bg-white","href":"/guides","children":[["$","strong",null,{"className":"block text-lg text-slate-950","children":"Guides"}],["$","span",null,{"className":"mt-2 block text-sm leading-6 text-slate-600","children":"Practical walkthroughs for tracking, wrapping, sharing, heatmaps, costs, diagnostics, and model analysis."}]]}]]}]]}]
19
+ 15:["$","section",null,{"className":"mt-6 rounded-[2rem] border border-slate-200 bg-white/95 p-6 shadow-[0_20px_40px_rgba(15,23,42,0.06)]","children":[["$","p",null,{"className":"text-[0.72rem] font-semibold uppercase tracking-[0.22em] text-slate-500","children":"FAQ"}],["$","div",null,{"className":"mt-4 grid gap-4 lg:grid-cols-3","children":[["$","article","What does vibestats track?",{"className":"rounded-[1.4rem] border border-slate-200 bg-slate-50 px-5 py-5","children":[["$","h2",null,{"className":"text-lg font-semibold text-slate-950","children":"What does vibestats track?"}],["$","p",null,{"className":"mt-2 text-sm leading-7 text-slate-600","children":"vibestats turns local Claude Code, Codex CLI, and related session files into token, cost, session, wrapped, and activity reports."}]]}],["$","article","Does vibestats upload prompts or responses?",{"className":"rounded-[1.4rem] border border-slate-200 bg-slate-50 px-5 py-5","children":[["$","h2",null,{"className":"text-lg font-semibold text-slate-950","children":"Does vibestats upload prompts or responses?"}],["$","p",null,{"className":"mt-2 text-sm leading-7 text-slate-600","children":"No. vibestats is local-first and only publishes aggregate stats when you explicitly create a share page."}]]}],["$","article","Which tools does vibestats support?",{"className":"rounded-[1.4rem] border border-slate-200 bg-slate-50 px-5 py-5","children":[["$","h2",null,{"className":"text-lg font-semibold text-slate-950","children":"Which tools does vibestats support?"}],["$","p",null,{"className":"mt-2 text-sm leading-7 text-slate-600","children":"The current public docs cover Claude-compatible local sources, OpenAI Codex CLI usage, combined reports, wrapped summaries, diagnostics, and activity views."}]]}]]}]]}]
20
+ b:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
21
+ 7:null
22
+ 9:{"metadata":[["$","title","0",{"children":"Claude Code & Codex Usage Stats CLI"}],["$","meta","1",{"name":"description","content":"Track Claude Code and OpenAI Codex CLI usage locally. View token, cost, session, wrapped, and activity reports without sending prompts to a third party."}],["$","meta","2",{"name":"application-name","content":"vibestats"}],["$","meta","3",{"name":"keywords","content":"vibestats,Claude Code stats,Codex CLI stats,AI coding stats,AI coding analytics,Claude Code wrapped,Codex usage tracker,developer analytics,Claude Code usage tracker,Codex CLI usage tracker,local AI coding stats,AI coding wrapped"}],["$","link","4",{"rel":"canonical","href":"https://vibestats.wolfai.dev"}],["$","meta","5",{"property":"og:title","content":"Claude Code & Codex Usage Stats CLI | vibestats"}],["$","meta","6",{"property":"og:description","content":"Track Claude Code and OpenAI Codex CLI usage locally. View token, cost, session, wrapped, and activity reports without sending prompts to a third party."}],["$","meta","7",{"property":"og:url","content":"https://vibestats.wolfai.dev"}],["$","meta","8",{"property":"og:site_name","content":"vibestats"}],["$","meta","9",{"property":"og:locale","content":"en_US"}],["$","meta","10",{"property":"og:type","content":"website"}],["$","meta","11",{"name":"twitter:card","content":"summary"}],["$","meta","12",{"name":"twitter:title","content":"Claude Code & Codex Usage Stats CLI | vibestats"}],["$","meta","13",{"name":"twitter:description","content":"Track Claude Code and OpenAI Codex CLI usage locally. View token, cost, session, wrapped, and activity reports without sending prompts to a third party."}]],"error":null,"digest":"$undefined"}
23
+ e:"$9:metadata"
@@ -0,0 +1,7 @@
1
+ User-Agent: *
2
+ Allow: /
3
+ Disallow: /usage/
4
+ Disallow: /s/
5
+
6
+ Host: https://vibestats.wolfai.dev
7
+ Sitemap: https://vibestats.wolfai.dev/sitemap.xml