{"_id":"tokenmaxxer","_rev":"7-19f64448706da4bcb36785110b1a435b","name":"tokenmaxxer","dist-tags":{"latest":"0.5.1"},"versions":{"0.1.0":{"name":"tokenmaxxer","version":"0.1.0","license":"MIT","_id":"tokenmaxxer@0.1.0","maintainers":[{"name":"santiagoyeomans","email":"santiagoyeomansmolina@gmail.com"}],"homepage":"https://tokenmaxxer.xyz","bin":{"tokenmaxxer":"bin/tokenmaxxer.mjs"},"dist":{"shasum":"b44a61b0e04578cba13c7e7119fadac94a80c799","tarball":"https://registry.npmjs.org/tokenmaxxer/-/tokenmaxxer-0.1.0.tgz","fileCount":4,"integrity":"sha512-o999Y2fkOZAgyjK56uKPJRXwTwARRRMX9AiwFo7ccsut1hjZE7BWM632t5D7XR3WzUlmFS6b2xVdePPK8sTpZg==","signatures":[{"sig":"MEQCIAymyIOAuWEGH1kmeRS7uDZGCC6j6hf+1JayoDocWllMAiBJHHhtHXJ8clSxcjZD0AyTJBn2pA38eLqJjuATIx0SEw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":184730},"type":"module","engines":{"node":">=20"},"gitHead":"1df63cacbd635d9bc436fee28b4e4dbb7606910f","scripts":{"dev":"tsx src/index.ts","build":"tsup","check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"santiagoyeomans","email":"santiagoyeomansmolina@gmail.com"},"_npmVersion":"10.8.2","description":"Sync your local AI coding usage to TokenMaxxer — cross-platform CLI + background daemon.","directories":{},"_nodeVersion":"20.19.6","dependencies":{"better-sqlite3":"^12.11.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsup":"^8.3.5","commander":"^12.1.0","typescript":"^5","@types/node":"^20","@tokenmaxer/core":"*","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/tokenmaxxer_0.1.0_1783472078088_0.1833557302926121","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"tokenmaxxer","version":"0.2.0","license":"MIT","_id":"tokenmaxxer@0.2.0","maintainers":[{"name":"santiagoyeomans","email":"santiagoyeomansmolina@gmail.com"}],"homepage":"https://tokenmaxxer.xyz","bin":{"tokenmaxxer":"bin/tokenmaxxer.mjs"},"dist":{"shasum":"dba682efd19169133a45be7a193086929fe56f10","tarball":"https://registry.npmjs.org/tokenmaxxer/-/tokenmaxxer-0.2.0.tgz","fileCount":4,"integrity":"sha512-GOg9IMxMBL8iKqE8ONig9TqGa8qa8W4O+ltMBKiiBHydoh6TC/rk+qZ5G2o5le7IusbifD/1cwacuSSOe222kA==","signatures":[{"sig":"MEQCICJZdSX5xQT3f3CWThU4rnC6QLyAIIzqfkaUfTlZdFFEAiBDoJ31/3Ls7Tb1jy1gr0AMTX0uuSFPeF49j5MbtCrK1A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":220345},"type":"module","engines":{"node":">=22"},"gitHead":"580983004000443ecd2ae88de82e84cb297882f5","scripts":{"dev":"tsx src/index.ts","test":"node --import tsx --test test/*.test.ts","build":"tsup","check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"santiagoyeomans","email":"santiagoyeomansmolina@gmail.com"},"_npmVersion":"10.8.2","description":"Sync your local AI coding usage to TokenMaxxer — cross-platform CLI + background daemon.","directories":{},"_nodeVersion":"20.19.6","dependencies":{"better-sqlite3":"^12.11.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsup":"^8.3.5","commander":"^12.1.0","typescript":"^5","@types/node":"^20","@tokenmaxer/core":"*","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/tokenmaxxer_0.2.0_1784594468902_0.620644834782472","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"tokenmaxxer","version":"0.3.0","license":"MIT","_id":"tokenmaxxer@0.3.0","maintainers":[{"name":"santiagoyeomans","email":"santiagoyeomansmolina@gmail.com"}],"homepage":"https://tokenmaxxer.xyz","bin":{"tokenmaxxer":"bin/tokenmaxxer.mjs"},"dist":{"shasum":"fc904304da9941c06d0cc95b2ba2a7978c1f6735","tarball":"https://registry.npmjs.org/tokenmaxxer/-/tokenmaxxer-0.3.0.tgz","fileCount":4,"integrity":"sha512-sOK1P+M0RaIwmawusnyHZxpjmU1U8w1je9mqCj+IxsEN1rQrta/XehsPV4OeVjGDSgRUXJT0Unurz2uWjSFX6w==","signatures":[{"sig":"MEQCIGEyqzgo/ceLP1tzENzvCEp4HWmJEtOGrMIp1l2RxdhsAiBy41txlRjBHWW82BhcTbtR9GdVUCVwetbQg7buPnvtGA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":228926},"type":"module","engines":{"node":">=22"},"gitHead":"a415aed80ed78d251bbdab1e407bd61856b9e6a4","scripts":{"dev":"tsx src/index.ts","test":"node --import tsx --test test/*.test.ts","build":"tsup","check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"santiagoyeomans","email":"santiagoyeomansmolina@gmail.com"},"_npmVersion":"10.8.2","description":"Sync your local AI coding usage to TokenMaxxer — cross-platform CLI + background daemon.","directories":{},"_nodeVersion":"20.19.6","dependencies":{"better-sqlite3":"^12.11.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsup":"^8.3.5","commander":"^12.1.0","typescript":"^5","@types/node":"^20","@tokenmaxer/core":"*","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/tokenmaxxer_0.3.0_1784691845597_0.2515769994462389","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"tokenmaxxer","version":"0.4.0","license":"MIT","_id":"tokenmaxxer@0.4.0","maintainers":[{"name":"santiagoyeomans","email":"santiagoyeomansmolina@gmail.com"}],"homepage":"https://tokenmaxxer.xyz","bin":{"tokenmaxxer":"bin/tokenmaxxer.mjs"},"dist":{"shasum":"5a7e7789ce9934f50de75ce71d2faa4ff88a463e","tarball":"https://registry.npmjs.org/tokenmaxxer/-/tokenmaxxer-0.4.0.tgz","fileCount":4,"integrity":"sha512-r0869hjAOsMUUHf12AYhP1E4f4KT9ZD/q+AneD/Duwa0JFGT6XwK3t0pqPeEolHLVHTDPoV769tIdLfE3PdG9A==","signatures":[{"sig":"MEUCIQDJiORSST0Q49iHVexq+4FbdGUJEh4id549ZAA0KzdfngIgQtHK2nNJbrf+zdMcjx7T9JUgwUJMs9raYMOW3xz3HXo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":235640},"type":"module","engines":{"node":">=22"},"gitHead":"462e2b36c79c9a26b324610107670b970ed5f3b7","scripts":{"dev":"tsx src/index.ts","test":"node --import tsx --test test/*.test.ts","build":"tsup","check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"santiagoyeomans","email":"santiagoyeomansmolina@gmail.com"},"_npmVersion":"10.8.2","description":"Sync your local AI coding usage to TokenMaxxer — cross-platform CLI + background daemon.","directories":{},"_nodeVersion":"20.19.6","dependencies":{"better-sqlite3":"^12.11.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsup":"^8.3.5","commander":"^12.1.0","typescript":"^5","@types/node":"^20","@tokenmaxer/core":"*","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/tokenmaxxer_0.4.0_1784947807814_0.8501938931587678","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"tokenmaxxer","version":"0.4.1","license":"MIT","_id":"tokenmaxxer@0.4.1","maintainers":[{"name":"santiagoyeomans","email":"santiagoyeomansmolina@gmail.com"}],"homepage":"https://tokenmaxxer.xyz","bin":{"tokenmaxxer":"bin/tokenmaxxer.mjs"},"dist":{"shasum":"bffc1606b2c6078315e04ccfde3e27427a10d614","tarball":"https://registry.npmjs.org/tokenmaxxer/-/tokenmaxxer-0.4.1.tgz","fileCount":4,"integrity":"sha512-JquCJjXpd2nlC8gy1XQtCkS+LnTr3LXO+4bFkTqr+4i4F0xrfxhlVa3twOx9oXNt/ajEe2EhbwPK5RvhTgoR7Q==","signatures":[{"sig":"MEUCIQCmAHyRfBMGpEsQ7gTdAsxVdj3JJd2MC/vlBWeBH6dYcgIgN5uk502+/bI6INZOWZUsrWQ5WYqIXet9faTVtrD9nu0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":236077},"type":"module","engines":{"node":">=22"},"gitHead":"60bebf137e1147cce898639dbbdfcc0597517ebd","scripts":{"dev":"tsx src/index.ts","test":"node --import tsx --test test/*.test.ts","build":"tsup","check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"santiagoyeomans","email":"santiagoyeomansmolina@gmail.com"},"_npmVersion":"11.17.0","description":"Sync your local AI coding usage to TokenMaxxer — cross-platform CLI + background daemon.","directories":{},"_nodeVersion":"26.5.0","dependencies":{"better-sqlite3":"^12.11.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsup":"^8.3.5","commander":"^12.1.0","typescript":"^5","@types/node":"^20","@tokenmaxer/core":"*","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/tokenmaxxer_0.4.1_1785525862049_0.9537523504185716","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"tokenmaxxer","version":"0.5.0","license":"MIT","_id":"tokenmaxxer@0.5.0","maintainers":[{"name":"santiagoyeomans","email":"santiagoyeomansmolina@gmail.com"}],"homepage":"https://tokenmaxxer.xyz","bin":{"tokenmaxxer":"bin/tokenmaxxer.mjs"},"dist":{"shasum":"47d705a206bb4a7194e33a5a358090fd8e3604f0","tarball":"https://registry.npmjs.org/tokenmaxxer/-/tokenmaxxer-0.5.0.tgz","fileCount":4,"integrity":"sha512-ofxiWTHeObaQu88WFEsIQOONLcxGOhbNDt6SERdH/+c4wGU0JdAvDImwRzYJkoK1MAxZimmCGBE0E61kQdS9Kg==","signatures":[{"sig":"MEYCIQDJM/reS2PwXkjAmaNe6z1hoJjevhAbW8p3DIXWynCKkgIhAPXq0ra8i3is5930VLy21XocXxogu7oebeRSFXis19tK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":244236},"type":"module","engines":{"node":">=22"},"gitHead":"186d3576de890b84058e4791d0ab5858e8ca5074","scripts":{"dev":"tsx src/index.ts","test":"node --import tsx --test test/*.test.ts","build":"tsup","check":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"santiagoyeomans","email":"santiagoyeomansmolina@gmail.com"},"_npmVersion":"11.17.0","description":"Sync your local AI coding usage to TokenMaxxer — cross-platform CLI + background daemon.","directories":{},"_nodeVersion":"26.5.0","dependencies":{"better-sqlite3":"^12.11.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsup":"^8.3.5","commander":"^12.1.0","typescript":"^5","@types/node":"^20","@tokenmaxer/core":"*","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/tokenmaxxer_0.5.0_1785559847270_0.42046570677231876","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"tokenmaxxer","version":"0.5.1","description":"Sync your local AI coding usage to TokenMaxxer — cross-platform CLI + background daemon.","license":"MIT","homepage":"https://tokenmaxxer.xyz","type":"module","bin":{"tokenmaxxer":"bin/tokenmaxxer.mjs"},"engines":{"node":">=22"},"scripts":{"dev":"tsx src/index.ts","build":"tsup","check":"tsc --noEmit","test":"node --import tsx --test test/*.test.ts","prepublishOnly":"npm run build"},"dependencies":{"better-sqlite3":"^12.11.1"},"devDependencies":{"@tokenmaxer/core":"*","@types/better-sqlite3":"^7.6.13","@types/node":"^20","commander":"^12.1.0","tsup":"^8.3.5","tsx":"^4.22.4","typescript":"^5"},"gitHead":"646c92753e25c2395adb4e2646d44c3940d22fb1","_id":"tokenmaxxer@0.5.1","_nodeVersion":"26.5.0","_npmVersion":"11.17.0","dist":{"integrity":"sha512-x0TpMbq1hfXkpYye+5SceOMEFjK+oMyiRYHq93xj0UrzL8Cy+UqxFoO1WUTmvppHwkygFCbHfL0Pv5iqVg8mAw==","shasum":"59edf98870275995734b74587dcd6e1acd6a277e","tarball":"https://registry.npmjs.org/tokenmaxxer/-/tokenmaxxer-0.5.1.tgz","fileCount":4,"unpackedSize":247435,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIDs69eG+MKFO158CdoleDx0rQUWIsQDg8U3bmRjFeX63AiEA7NH+sMwjjsNrmE/HgTjNEw2VKAZMG/4+droiorlBUXs="}]},"_npmUser":{"name":"santiagoyeomans","email":"santiagoyeomansmolina@gmail.com"},"directories":{},"maintainers":[{"name":"santiagoyeomans","email":"santiagoyeomansmolina@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/tokenmaxxer_0.5.1_1786748932116_0.9590093358730196"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-08T00:54:38.029Z","modified":"2026-08-14T23:08:52.408Z","0.1.0":"2026-07-08T00:54:38.247Z","0.2.0":"2026-07-21T00:41:09.046Z","0.3.0":"2026-07-22T03:44:05.781Z","0.4.0":"2026-07-25T02:50:07.963Z","0.4.1":"2026-07-31T19:24:22.192Z","0.5.0":"2026-08-01T04:50:47.413Z","0.5.1":"2026-08-14T23:08:52.267Z"},"license":"MIT","homepage":"https://tokenmaxxer.xyz","description":"Sync your local AI coding usage to TokenMaxxer — cross-platform CLI + background daemon.","maintainers":[{"name":"santiagoyeomans","email":"santiagoyeomansmolina@gmail.com"}],"readme":"# tokenmaxxer\n\nSync your local AI coding usage to [TokenMaxxer](https://tokenmaxxer.xyz) — one\ncross-platform CLI + background daemon for macOS, Windows, and Linux.\n\nIt reads the transcripts your AI tools already keep on disk (Claude Code,\nCodex CLI, Cursor, OpenCode, Copilot, Gemini/Qwen CLI, Cline, Roo, Kilo,\nDroid, Amp, …), derives **tokens-only** usage events, and pushes them to your\ntokenmaxxer account.\n\n```\nnpm install -g tokenmaxxer\n\ntokenmaxxer login              # browser pairing (or --token <tmx_…> for headless boxes)\ntokenmaxxer sync               # push usage once\ntokenmaxxer service install    # keep it synced in the background (launchd / systemd / Task Scheduler)\ntokenmaxxer doctor             # per-tool diagnostics: what was found where\n```\n\n## Privacy & security\n\n- **Tokens only.** Message text, prompts, file contents and absolute paths\n  never leave your machine — events carry a short project label at most.\n- **No database access.** The CLI talks to the tokenmaxxer API with a\n  per-user bearer token (`tmx_…`) and nothing else. The token is stored in\n  `~/.config/tokenmaxxer/auth.json` (`0600`; `%APPDATA%\\tokenmaxxer` on\n  Windows) and is revocable anytime — `tokenmaxxer logout` or Settings → CLI\n  tokens.\n- Costs are computed server-side; the leaderboard never trusts client math.\n\n## Commands\n\n| Command                                                | What it does                                                                |\n| ------------------------------------------------------ | --------------------------------------------------------------------------- |\n| `login [--token <t>] [--server <url>] [--no-browser]`  | pair this machine (browser flow like `gh auth login`)                       |\n| `logout`                                               | revoke the token server-side + remove local credentials                     |\n| `sync [--json]`                                        | one-shot incremental sync                                                   |\n| `start [--interval <min>]`                             | foreground daemon loop (what the service runs)                              |\n| `service install/uninstall/status`                     | manage the per-user background service                                      |\n| `status [--json]`                                      | login, last sync, service state                                             |\n| `doctor`                                               | config dir, auth check, server reachability, per-parser table               |\n\nConfig lives in `~/.config/tokenmaxxer` (`$XDG_CONFIG_HOME` honored;\n`%APPDATA%\\tokenmaxxer` on Windows): `auth.json`, `config.json`\n(`{ \"serverUrl\", \"intervalMinutes\" }`), `state.json`, `sync-cursor.json`,\n`cache/`, and `logs/`. State and parser caches are owner-only on POSIX and are\nsafe to delete; the next sync rebuilds them. Keep `sync-cursor.json` during\nnormal operation—removing it causes one complete history resync.\n`TOKENMAXXER_SERVER` / `--server` override the target server;\n`TOKENMAXXER_CONFIG_DIR` relocates everything.\n\nRequires Node ≥ 22. The only native dependency is `better-sqlite3`\n(prebuilt binaries for all major platforms).\n\n## Incremental sync\n\nThe first sync uploads the local history. Later scans fingerprint events and\nsend only new or changed rows; an unchanged daemon tick performs no network\nrequest. A metadata-only heartbeat runs at most once every 24 hours so token\nrevocation and device freshness still surface without retransmitting history.\nEach acknowledged batch is checkpointed, so an interrupted large backfill\nresumes without resending already accepted data.\n\nClaude Code transcripts also use a private per-file parse cache keyed by file\nmetadata. Unchanged files skip disk reads and JSON parsing, while changed files\nare parsed and merged with cached contributions in deterministic order.\n","readmeFilename":"README.md"}