github analyzed 2761674

whdrnr2583-cmd/token-meter

github

Local-first dashboard + MCP for Claude Code and Codex token usage. Per-MCP/tool breakdown.

maintainer
whdrnr2583-cmd
licence
first seen
2026-08-14
last seen
2026-08-14
releases · 30d
0
short id

Drift inferred · capture-to-capture

No drift recorded — single capability capture; advisories appear once its surface changes.

capabilities 5 tools
transport stdio · http verified reported listed in the official MCP registry counts 5 tools · 0 res · 0 prompts permission surface via code analysis

tools

  • recent_sessions
  • refresh_data
  • session_tools
  • subagent_costs
  • usage_summary
skills & danger signals github-tarball
prompt-surface shipped agent-instruction files + hidden-content / dangerous-code findings — quoted from the analyzed source

analyzed commit 2761674 · analyzer v33 · 1w ago

danger signals2

code evidence vHEAD · github-tarball
evidence-backed findings quoted directly from the published source artifact — not inferred

code files: 81

filesystem 39

  • fs (weak) whdrnr2583-cmd-token-meter-2761674/scripts/inspect-codex.cjs :1 const fs = require('fs');
  • fs (weak) whdrnr2583-cmd-token-meter-2761674/scripts/inspect-codex2.cjs :1 const fs = require('fs');
  • fs (weak) whdrnr2583-cmd-token-meter-2761674/scripts/inspect-jsonl.cjs :1 const fs = require('fs');
  • fs (weak) whdrnr2583-cmd-token-meter-2761674/scripts/investigate-dedup.cjs :4 const fs = require('fs');
  • fs (weak) whdrnr2583-cmd-token-meter-2761674/scripts/postbuild.cjs :3 const fs = require('node:fs');
  • fs (weak) whdrnr2583-cmd-token-meter-2761674/scripts/quality-audit.cjs :242 const fs = require('fs');
  • fs (weak) whdrnr2583-cmd-token-meter-2761674/scripts/verify-subagent-scan.mjs :11 import { mkdirSync, mkdtempSync, rmSync, writeFileSync } from 'node:fs';
  • fs whdrnr2583-cmd-token-meter-2761674/src/cli.ts :2 import { readFileSync, writeFileSync } from 'node:fs';
  • fs whdrnr2583-cmd-token-meter-2761674/src/codex-ingest.ts :1 import { existsSync, readdirSync, statSync } from 'node:fs';
  • fs whdrnr2583-cmd-token-meter-2761674/src/codex-parser.ts :1 import { readFileSync } from 'node:fs';
  • fs whdrnr2583-cmd-token-meter-2761674/src/db.ts :2 import { mkdirSync } from 'node:fs';
  • fs whdrnr2583-cmd-token-meter-2761674/src/ingest.ts :1 import { readdirSync, statSync, existsSync, readFileSync } from 'node:fs';
show 27 more
  • fs whdrnr2583-cmd-token-meter-2761674/src/install-command.ts :7 } from 'node:fs';
  • fs whdrnr2583-cmd-token-meter-2761674/src/install-mcp.ts :7 } from 'node:fs';
  • fs whdrnr2583-cmd-token-meter-2761674/src/license.ts :11 import { mkdirSync, readFileSync, writeFileSync } from 'node:fs';
  • fs whdrnr2583-cmd-token-meter-2761674/src/mcp.ts :4 import { readFileSync } from 'node:fs';
  • fs whdrnr2583-cmd-token-meter-2761674/src/parser.ts :1 import { readFileSync } from 'node:fs';
  • fs whdrnr2583-cmd-token-meter-2761674/src/platform.ts :1 import { readdirSync, existsSync, readFileSync } from 'node:fs';
  • fs (weak) whdrnr2583-cmd-token-meter-2761674/test/audit-expensive-session.test.ts :5 import { mkdtempSync, rmSync } from 'node:fs';
  • fs (weak) whdrnr2583-cmd-token-meter-2761674/test/audit-oversized-tool-response.test.ts :5 import { mkdtempSync, rmSync } from 'node:fs';
  • fs (weak) whdrnr2583-cmd-token-meter-2761674/test/audit-pricing-sync.test.ts :3 import fs from 'node:fs';
  • fs (weak) whdrnr2583-cmd-token-meter-2761674/test/audit-repeated-tool-calls.test.ts :5 import { mkdtempSync, rmSync } from 'node:fs';
  • fs (weak) whdrnr2583-cmd-token-meter-2761674/test/audit-slow-tool.test.ts :5 import { mkdtempSync, rmSync } from 'node:fs';
  • fs (weak) whdrnr2583-cmd-token-meter-2761674/test/calculator-pricing-sync.test.ts :3 import fs from 'node:fs';
  • fs (weak) whdrnr2583-cmd-token-meter-2761674/test/codex-ingest.test.ts :1 import { existsSync, mkdirSync, mkdtempSync, rmSync, writeFileSync } from 'node:fs';
  • fs (weak) whdrnr2583-cmd-token-meter-2761674/test/codex-model-detection.test.ts :1 import { mkdtempSync, rmSync, writeFileSync } from 'node:fs';
  • fs (weak) whdrnr2583-cmd-token-meter-2761674/test/codex-tool-events.test.ts :1 import { mkdtempSync, rmSync, writeFileSync } from 'node:fs';
  • fs (weak) whdrnr2583-cmd-token-meter-2761674/test/db-reingest-growth.test.ts :1 import { mkdtempSync, rmSync, writeFileSync } from 'node:fs';
  • fs (weak) whdrnr2583-cmd-token-meter-2761674/test/digest.test.ts :5 import { mkdtempSync, rmSync } from 'node:fs';
  • fs (weak) whdrnr2583-cmd-token-meter-2761674/test/escape.test.ts :3 import { readFileSync } from 'node:fs';
  • fs (weak) whdrnr2583-cmd-token-meter-2761674/test/export.test.ts :5 import { mkdtempSync, rmSync } from 'node:fs';
  • fs (weak) whdrnr2583-cmd-token-meter-2761674/test/forecast.test.ts :5 import { mkdtempSync, rmSync } from 'node:fs';
  • fs (weak) whdrnr2583-cmd-token-meter-2761674/test/ingest-subagent.test.ts :1 import { mkdirSync, mkdtempSync, rmSync, writeFileSync } from 'node:fs';
  • fs (weak) whdrnr2583-cmd-token-meter-2761674/test/install-command.test.ts :10 } from 'node:fs';
  • fs (weak) whdrnr2583-cmd-token-meter-2761674/test/install-mcp.test.ts :10 } from 'node:fs';
  • fs (weak) whdrnr2583-cmd-token-meter-2761674/test/parser-dedup-robustness.test.ts :3 import { mkdtempSync, writeFileSync, rmSync } from 'node:fs';
  • fs (weak) whdrnr2583-cmd-token-meter-2761674/test/rules.test.ts :5 import { mkdtempSync, rmSync } from 'node:fs';
  • fs (weak) whdrnr2583-cmd-token-meter-2761674/test/subagent-costs.test.ts :1 import { mkdirSync, mkdtempSync, rmSync, writeFileSync } from 'node:fs';
  • fs (weak) whdrnr2583-cmd-token-meter-2761674/test/trim-suggestions.test.ts :5 import { mkdtempSync, rmSync } from 'node:fs';

shell / exec 3

  • shell (weak) whdrnr2583-cmd-token-meter-2761674/scripts/test-mcp-built.cjs :3 const { spawn } = require('node:child_process');
  • shell (weak) whdrnr2583-cmd-token-meter-2761674/scripts/test-mcp.cjs :2 const { spawn } = require('node:child_process');
  • shell whdrnr2583-cmd-token-meter-2761674/src/install-mcp.ts :10 import { execSync } from 'node:child_process';

network 8

  • net whdrnr2583-cmd-token-meter-2761674/infra/api/src/index.ts :283 const res = await fetch('https://api.resend.com/emails', {
  • net whdrnr2583-cmd-token-meter-2761674/infra/site/site.js :28 const res = await fetch(`${API_BASE}/v1/waitlist`, {
  • net whdrnr2583-cmd-token-meter-2761674/public/app.js :28 const res = await fetch(path, init);
  • net whdrnr2583-cmd-token-meter-2761674/src/digest.ts :20 * Replace the stub in sendEmailViaWorker() with a real fetch() once the
  • net whdrnr2583-cmd-token-meter-2761674/src/license.ts :166 const res = await fetch(`${getApiBase()}/v1/license/verify`, {
  • net whdrnr2583-cmd-token-meter-2761674/src/proxy.ts :1 import http from 'node:http';
  • net whdrnr2583-cmd-token-meter-2761674/src/rules.ts :205 const res = await fetch(cfg.url, {
  • net (weak) whdrnr2583-cmd-token-meter-2761674/test/proxy.test.ts :1 import http from 'node:http';

database 18

  • db (weak) whdrnr2583-cmd-token-meter-2761674/scripts/investigate-dedup.cjs :1 const Database = require('better-sqlite3');
  • db (weak) whdrnr2583-cmd-token-meter-2761674/scripts/migrate-dedup.cjs :3 const Database = require('better-sqlite3');
  • db (weak) whdrnr2583-cmd-token-meter-2761674/scripts/quality-audit.cjs :3 const Database = require('better-sqlite3');
  • db whdrnr2583-cmd-token-meter-2761674/src/audit/detectors/slow-tool.ts :46 import type Database from 'better-sqlite3';
  • db whdrnr2583-cmd-token-meter-2761674/src/audit/engine.ts :52 import type Database from 'better-sqlite3';
  • db whdrnr2583-cmd-token-meter-2761674/src/audit/types.ts :18 import type Database from 'better-sqlite3';
  • db whdrnr2583-cmd-token-meter-2761674/src/codex-ingest.ts :4 import type Database from 'better-sqlite3';
  • db whdrnr2583-cmd-token-meter-2761674/src/db.ts :1 import Database from 'better-sqlite3';
  • db whdrnr2583-cmd-token-meter-2761674/src/digest.ts :24 import type Database from 'better-sqlite3';
  • db whdrnr2583-cmd-token-meter-2761674/src/export.ts :14 import type Database from 'better-sqlite3';
  • db whdrnr2583-cmd-token-meter-2761674/src/forecast.ts :14 import type Database from 'better-sqlite3';
  • db whdrnr2583-cmd-token-meter-2761674/src/ingest.ts :4 import type Database from 'better-sqlite3';
show 6 more
  • db whdrnr2583-cmd-token-meter-2761674/src/proxy.ts :4 import type Database from 'better-sqlite3';
  • db whdrnr2583-cmd-token-meter-2761674/src/rules.ts :1 import type Database from 'better-sqlite3';
  • db whdrnr2583-cmd-token-meter-2761674/src/sessions.ts :1 import type Database from 'better-sqlite3';
  • db whdrnr2583-cmd-token-meter-2761674/src/stats.ts :1 import type Database from 'better-sqlite3';
  • db whdrnr2583-cmd-token-meter-2761674/src/trim-suggestions.ts :22 import type Database from 'better-sqlite3';
  • db (weak) whdrnr2583-cmd-token-meter-2761674/test/round3-subagents-ingested-at.test.ts :1 import Database from 'better-sqlite3';

tool registrations 5

  • usage_summary whdrnr2583-cmd-token-meter-2761674/src/mcp.ts :268
  • recent_sessions whdrnr2583-cmd-token-meter-2761674/src/mcp.ts :444
  • session_tools whdrnr2583-cmd-token-meter-2761674/src/mcp.ts :502
  • subagent_costs whdrnr2583-cmd-token-meter-2761674/src/mcp.ts :553
  • refresh_data whdrnr2583-cmd-token-meter-2761674/src/mcp.ts :655

install hooks 1

  • prepublishOnly whdrnr2583-cmd-token-meter-2761674/package.json :46 npm run typecheck && npm test && npm run build

declared dependencies 10

  • @modelcontextprotocol/sdk@^1.0.4
  • @fastify/static@^8.0.3
  • better-sqlite3@^11.5.0
  • chokidar@^3.6.0
  • fastify@^5.1.0
  • zod@^3.23.8
  • @types/better-sqlite3@^7.6.12
  • @types/node@^22.10.0
  • tsx@^4.19.2
  • typescript@^5.7.2