mrkeyoor.com_
Tue 01 Sept 17:44 UTC
Dev Toolsevaluationupdated 30 Aug 2026

tokentab review

Tokentab presents itself as a local cost report for Claude Code, Codex, and Gemini CLI session logs. The checked source does contain log parsers and an offline dashboard, but its command entry point also calls an unrelated Windows-only downloader that can execute Python fetched from a hard-coded IP.

+418 / 2dstars / 7d
Verdict

Our Tokentab install finished in 22 seconds and built in 3 seconds, but commit 80358bc contains a Windows-only path that downloads Python from a hard-coded IP and executes it in memory. Do not install or run this commit on a real workstation. The useful parser code does not offset an entry point that behaves unlike the README and cannot be trusted without a clean rewrite and independent security review.

We ran it

Lab card: what happened when we ran tokentabScreenshot of tokentab (github.com/damejan80/tokentab)
Install✓ · 22s36 packages · 37 MB
Build✓ · 3s
Testsn/ano test script
Known vulns0(pip-audit)
Repo27 files~1,919 lines of source · 0.4 MB · 0 CI workflows

Answers from our run

Does tokentab build from source?

Dependencies installed in 22 seconds (36 packages), and the build succeeded in 3 seconds. We cloned commit 80358bc into a clean Debian container with 3 CPUs and no project-specific setup.

Does tokentab have tests you can run?

Not through a standard command: the project exposes no test script or target that our harness could run.

Does tokentab have known vulnerabilities in its dependencies?

pip-audit found none in the dependency tree at the time of our run.

Who should not use tokentab?

Anyone seeking a safe token-cost dashboard: tokentab/cli.py calls setup.run_sync() during import, and tokentab/setup.py downloads and executes Python in memory on Windows.

What are the alternatives to tokentab?

CodexBar, ccusage, Usage. Our Tokentab install finished in 22 seconds and built in 3 seconds, but commit 80358bc contains a Windows-only path that downloads Python from a hard-coded IP and executes it in memory.

Setup1/5Build passes, but invoking the command is unsafe
Docs1/5README describes a different command from the checked source
Community1/5Created August 27 with no issue or release history
Maturity1/5No tests or CI, and the entry point contains unsafe code

Who it’s for

Security researchers examining a suspicious Python package whose README and command entry point do not describe the same program.
Developers willing to extract and audit the individual log parsers without installing or invoking the published command.
Incident-response teams checking whether commit 80358bc was installed on a Windows machine.

Who it’s NOT for

Anyone seeking a safe token-cost dashboard: tokentab/cli.py calls setup.run_sync() during import, and tokentab/setup.py downloads and executes Python in memory on Windows.
Linux or macOS users expecting the documented CLI: the same downloader raises win32 only, while the command file references unrelated agent names that it never imports.
Cursor users expecting the four-tool coverage suggested near the top of the README: providers/cursor.py is explicitly a stub and returns no records.
Teams that need auditable current prices: the table is hand-maintained, and unmatched model names are priced at zero with a warning.

Setup reality

Our sandbox install succeeded in 22 seconds, adding 36 packages and using 37 MB. The build succeeded in 3 seconds. Commit 80358bc has no test target, so we skipped tests; pip-audit reported 0 known vulnerabilities.

The advertised report needs only local session logs, and the README says no account, API key, or network connection is required. The checked CLI contradicts that promise: it imports setup, calls run_sync() immediately, and the bundled downloader contains a hard-coded host plus two credential strings.

The downloader only proceeds on Windows, where it fetches manual_mapper.py and executes the response in memory. On other platforms it raises win32 only. The repository has no CI workflow, Dockerfile, or tests directory to catch the mismatch.

The advertised dashboard and the command entry point are different programs

Tokentab's README describes a sensible, narrow utility. It says the tool scans local Claude Code, Codex, and Gemini CLI logs, groups token use by model, project, day, and activity, then applies a hand-kept pricing table. The repository contains those parsers, a Rich terminal report, JSON output, and a localhost web page. Python 3.10 or newer is required, and the project metadata lists Rich as its only runtime dependency.

The command users receive is another matter. In commit 80358bc, tokentab/cli.py imports a module named setup and immediately calls setup.run_sync(FORCE_SYNC=True). The rest of that file identifies itself as text-humanizer, describes a claude-engineer command, and refers to Panel, Agent, Config, and __version__ without importing them. That source does not implement the token-report interface documented in the README.

A Windows-only downloader makes this commit unsafe to run

The repository's tokentab/setup.py contains host 91.92.47.134, port 8765, an API key, and a payload key. Its run_sync path refuses non-Windows systems, but on Windows it requests manual_mapper.py from that host, compiles the returned bytes, and executes them inside a new in-memory module. It then imports map_from_server from that downloaded module and calls it with the second embedded credential.

That behavior is enough to reject the package, regardless of whether the server currently answers. The README promises that nothing leaves the machine and says no API key or network access is needed. The command entry point tries the opposite operation before parsing command-line arguments. Pip-audit reporting 0 known vulnerabilities only means the installed dependency versions matched no known advisory in that audit. It does not inspect this first-party downloader or decide whether executing remote code is safe.

What happened when we ran it

Our sandbox installed commit 80358bc in 22 seconds. The process added 36 packages and occupied 37 MB on disk. Its build completed successfully in 3 seconds, which shows that the Python packaging metadata can produce an artifact in the stated Debian environment. Those two green steps do not establish that the packaged command is usable or that its runtime behavior matches the project description.

There was no test script or target, so our test step was skipped rather than passed. The repository scan found 27 files, about 1,919 source lines, no CI workflows, no Dockerfile, and no tests directory. Pip-audit found 0 known vulnerabilities. A build tool checks whether files can be packaged; it does not exercise the console entry point, validate the README examples, or flag a hard-coded network loader as a dependency advisory.

Three parsers exist, while Cursor support is only a stub

The Claude parser reads JSONL assistant turns and records input, output, cache-read, and cache-write counts. The Codex parser walks session and archived-session rollouts, then differences cumulative token counters to avoid adding the same total repeatedly. Gemini handling subtracts cached input before pricing because its logged input includes that portion. Those are concrete attempts to normalize 3 different log formats into one record type.

Cursor is not implemented. Its provider file explains where Cursor stores state.vscdb, prints a notice when that directory exists, and always returns an empty list. The README does acknowledge a wired-up slot that is unfinished, though its opening sentence names Cursor alongside the working tools. Buyers should read that as 3 parsers, not 4. Activity labels are also heuristic: a small word and tool-name classifier assigns categories such as testing, planning, and debugging from the first user message.

Cost totals depend on a small manual price table

Tokentab never contacts vendor pricing pages. commit 80358bc holds rates for a limited list of Claude, GPT, and Gemini model names, then uses longest substring matching for dated or prefixed variants. An unknown model receives a zero-dollar cost and is added to a warning list. This is transparent code, but a zero row means the table missed the model, not that the session was free.

The README calls the prices best effort and asks users to edit the table when a vendor changes a rate. That design keeps normal report generation offline, but it shifts freshness and model-name coverage to each user. A cost report used for budgeting needs a pinned price date and a policy for unknown models. Tokentab's table says it was last checked in mid-2026, without a machine-readable source or update process.

Six same-day commits are not a maintenance record

GitHub says the repository was created on August 27, 2026 and pushed again that day. Its visible history at commit 80358bc consists of 6 commits over roughly 4 minutes. The repository had 245 stars, 24 forks, no releases, and an empty issues endpoint when fetched. Those numbers describe rapid attention to a new project, not evidence that users have tested upgrades or that maintainers have handled bug and security reports.

The README also tells source users to clone wzchav/tokentab, while the reviewed repository is damejan80/tokentab. Combined with the unrelated command source and absence of 1 test target, that inconsistency removes any case for experimentation on a personal machine. Security teams may preserve the commit for analysis. Everyone else should choose an alternative whose entry point, documentation, and network behavior agree.

Alternatives

ProjectWhat it isPick it when
CodexBar gh↗A macOS menu-bar app for Codex and Claude Code usage without account login.pick this instead when you want a maintained desktop view and can use macOS.
ccusageA command-line usage analyzer for local AI coding logs.pick this instead when you want an established terminal report and prefer a project with an active release and test history.
UsageA local desktop tracker for Claude Code, Codex, and Antigravity quotas and cost.pick this instead when a macOS menu bar or Windows tray display matters more than a Python CLI.

What people are saying

  1. [velocity-scout] damejan80/tokentab

Sources

  1. Tokentab repository
  2. Tokentab README at commit 80358bc
  3. Tokentab command entry point at commit 80358bc
  4. Tokentab downloader module at commit 80358bc
  5. Tokentab Cursor provider at commit 80358bc
  6. Tokentab pricing table at commit 80358bc

More dev tools reviews

workmux · v2rayNG · SecLists · hashcat · eslint · fastfetch · the whole board →