by Arindam200
A real-time monitoring dashboard for Claude Code
# Add to your Claude Code skills
git clone https://github.com/Arindam200/cc-lensLast scanned: 5/16/2026
{
"issues": [
{
"type": "npm-audit",
"message": "@hono/node-server: @hono/node-server has authorization bypass for protected static paths via encoded slashes in Serve Static Middleware",
"severity": "high"
},
{
"type": "npm-audit",
"message": "brace-expansion: brace-expansion: Zero-step sequence causes process hang and memory exhaustion",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "express-rate-limit: express-rate-limit: IPv4-mapped IPv6 addresses bypass per-client rate limiting on servers with dual-stack network",
"severity": "high"
},
{
"type": "npm-audit",
"message": "fast-uri: fast-uri vulnerable to path traversal via percent-encoded dot segments",
"severity": "high"
},
{
"type": "npm-audit",
"message": "flatted: flatted vulnerable to unbounded recursion DoS in parse() revive phase",
"severity": "high"
},
{
"type": "npm-audit",
"message": "hono: Hono Vulnerable to Cookie Attribute Injection via Unsanitized domain and path in setCookie()",
"severity": "high"
},
{
"type": "npm-audit",
"message": "ip-address: ip-address has XSS in Address6 HTML-emitting methods",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "next: Next.js has a Denial of Service with Server Components",
"severity": "high"
},
{
"type": "npm-audit",
"message": "path-to-regexp: path-to-regexp vulnerable to Denial of Service via sequential optional groups",
"severity": "high"
},
{
"type": "npm-audit",
"message": "picomatch: Picomatch: Method Injection in POSIX Character Classes causes incorrect Glob Matching",
"severity": "high"
},
{
"type": "npm-audit",
"message": "postcss: PostCSS has XSS via Unescaped </style> in its CSS Stringify Output",
"severity": "medium"
}
],
"status": "WARNING",
"scannedAt": "2026-05-16T06:23:06.481Z",
"semgrepRan": false,
"npmAuditRan": true,
"pipAuditRan": true
}
Local analytics dashboard for Claude Code. No cloud, no telemetry, no API key, just your ~/.claude/ data, visualized.
npx cc-lens
The CLI finds a free local port, starts the dashboard, and opens it in your browser.
Run directly with npx:
npx cc-lens
On first run, cc-lens prepares a small runtime cache in ~/.cc-lens/. After that, launches are faster.


No comments yet. Be the first to share your thoughts!

lib/pricing.ts.


~/.claude/history.jsonl.~/.claude/todos/ with search and status filters.~/.claude/plans/ with inline Markdown rendering.~/.claude/settings.json, installed skills, plugins, MCP servers, and storage usage.
.ccboard.json file containing stats, session metadata, facets, and recent command history.Import is intentionally preview-only right now. It shows which sessions are new or already present, but it does not write merged data back into ~/.claude/, to avoid corrupting live Claude Code files.

Cmd+K, Ctrl+K, or /.j / k to move, Enter to open, Esc to clear.g plus a page key, for example g s for sessions, g p for projects, g c for costs.By default, cc-lens reads ~/.claude/. To point it at another Claude Code config directory, set CLAUDE_CONFIG_DIR:
# Default profile
npx cc-lens
# Work profile
CLAUDE_CONFIG_DIR=~/.claude-work npx cc-lens
On Windows PowerShell:
$env:CLAUDE_CONFIG_DIR="C:\Users\you\.claude-work"; npx cc-lens
The active config directory is shown in the CLI banner on launch.
~/.claude/npm install
npm run dev
Open http://localhost:3000, or the port shown in your terminal.
npm run build
npm start
npm run lint
cc-lens reads local Claude Code files directly:
~/.claude/projects/<slug>/*.jsonl: session JSONL and replay data~/.claude/stats-cache.json: aggregate stats when available~/.claude/usage-data/session-meta/: session metadata fallback~/.claude/history.jsonl: command history~/.claude/todos/: todo files~/.claude/plans/: saved plan files~/.claude/projects/*/memory/: project memory files~/.claude/settings.json: settings, skills, plugins, and MCP configDashboard data refreshes every 5 seconds while the app is open.
Claude Code Lens runs locally and reads files from your machine. It does not require a login, API key, hosted backend, or telemetry service. Your Claude Code history stays on your computer.
Claude Code stores token counts and model identifiers, not final billing totals. cc-lens estimates cost using the pricing table in lib/pricing.ts. If provider pricing changes, update that file to keep estimates current.