Busabase
Busabase is an open-source (MIT) database and workspace for AI agents — data, docs, skills, and apps in one place. Run it locally, self-host it inside your network, or use Busabase Cloud, and turn age
翻訳待ち
Track, visualize, and compete on your AI coding-assistant token usage — CLI + web leaderboard. A fork of junhoyeo/tokscale.
翻訳待ち
Loading the full README.
Read the full README ↗You already burn tokens all day. tokens.ci turns that into a public standing: how much you ran through today, how it splits across clients and models, and where you rank against everyone else doing the same thing.
bunx tokens-cli@latest login
Your rank and usage on your phone, without opening a browser — share cards rendered on device, plus Home screen and Lock screen widgets for the day's tokens, your running total and your rank.
There is no sign-in. You enter a GitHub username and the app reads that public profile, so enter your own or the widgets will show someone else's usage.
The site is available in English, Simplified Chinese and Japanese. English is
the default and carries no prefix, so every existing link keeps working; the
other languages live under /zh-CN/… and /ja/…, and the switcher in the
header moves you to the same page in the other language rather than to the
home page.
The prefix is not cosmetic. HTML is cached at Cloudflare's edge by URL, so a
scheme where one URL renders different bytes based on a cookie would let
whichever request arrived first decide the language for everyone behind it.
With a prefix in the URL, /zh-CN/leaderboard and /leaderboard are simply two
documents.
To add a language:
LOCALES and LOCALE_LABELS in
web/src/lib/i18n/config.ts.web/src/lib/i18n/messages/*/en.ts to the new locale directory under
web/src/lib/i18n/messages/<namespace>/ and translate the values. Keys you
leave out fall back to English at runtime, so a partial catalogue is usable./<locale> and /<locale>/:path*) to the
matcher in web/src/middleware.ts.Messages are ICU: {name} for values, {count, plural, one {…} other {…}} for
counts, and richText() from web/src/lib/i18n/rich.tsx when a sentence has to
contain a link. Numbers and relative times go through Intl — see
web/src/lib/format.ts.
The CLI is English unless you ask otherwise: --lang, then TOKENS_LANG, then
language in settings.json. The system locale (LANG, LC_ALL) is never
consulted, and --json output is always English. tokens --lang ja status
renders one run in Japanese without changing anything stored.
Share cards follow the same rule: /api/og?locale=ja draws the Japanese card
and the URL is the cache key, so each language is its own immutable entry. An
absent or unknown locale renders English, which is what every card minted
before this existed already asks for.
So you can check what we send.
The CLI reads the session files your AI clients already write to disk, totals them locally, and uploads only the totals — token counts, model names, client names, timestamps. Prompts, completions, file contents and paths never leave your machine.
You do not have to take that on faith. The whole pipeline is here:
cli/tokens-core/src/sessions/ — one parser per client, showing exactly which
fields are read out of each session filecli/tokens-core/src/aggregator.rs — how those reads become daily totalscli/tokens-cli/src/main.rs — the submit path; build_submit_payload is the
one function that assembles the payload, for both a real submit and a dry runtokens submit --dry-run summarizes what would be uploaded without uploading
it; tokens submit --dry-run --json prints the exact JSON payload.
MCP server names are opt-in. By default no MCP information is sent. Run
tokens mcp-names enable (or pass --include-mcp to one submit) to include the
names — never commands, URLs, credentials or env values — of the MCP servers
configured for the clients that submission covers (Claude Code
~/.claude/.mcp.json, Cursor ~/.cursor/mcp.json, Kiro
~/.kiro/settings/mcp.json, OpenCode skills). They are shown publicly on your
profile. tokens mcp-names disable turns it off, and the next submit clears the
stored list; tokens mcp-names status shows the setting and the files read.
If your gateway adds routing prefixes to model IDs, list those prefixes in
~/.config/tokens/settings.json (or $TOKENS_CONFIG_DIR/settings.json):
{
"modelIdPrefixesToStrip": ["gateway-a/", "gateway-b/"]
}
This list is empty by default. Matching is case-insensitive; the longest matching
prefix is removed once before the existing model normalization. Empty prefixes
are ignored, and removal cannot produce an empty ID. Unlisted namespaces remain
distinct. The rule affects local grouping and uploaded model IDs, unlike the
presentation-only modelAliases setting. Pricing, token counts, costs, and raw
session files and caches are unchanged. Subsequent submissions apply the rule to
historical usage too. Use the same rules on devices that submit the same usage;
changing the rules changes uploaded model identity.
We are not asking anyone to run their own copy. This repo exists to be read.
All 42 are detected automatically — if it is installed and has written sessions, it is counted.
This is the beginning of the README. Read the rest at the original. Read the full README ↗