Cline Cost Dashboard

Per-project LLM (DeepSeek) spending for Cline, right inside VS Code.
Built for the "VS Code + Cline + DeepSeek API" setup. Cline exposes no metrics API — its
exports/index.ts only exports startNewTask, sendMessage, pressPrimaryButton and
pressSecondaryButton — so this extension reads Cline's task storage read-only:
<globalStorage>/tasks/<taskId>/ui_messages.json # legacy: say=api_req_started -> tokensIn/tokensOut/cacheReads/cacheWrites/cost
<globalStorage>/tasks/<taskId>/task_metadata.json # legacy: model, workspace path
~/.cline/data/sessions/<id>/<id>.json # new layout: cwd / workspace_root, model
~/.cline/data/sessions/<id>/<id>.messages.json # new layout: messages[].metrics -> inputTokens/outputTokens/cacheReadTokens/cost
Nothing is ever written back to Cline's storage.
What it does
- Cards: spend in $ and ₽, Cline's own estimate and its ratio to the recompute, cache hit rate,
request count, how many requests fell into DeepSeek's peak hours, output tokens, projects.
- Per-project bars and a table: tasks, requests,
tokensIn, cache reads, output, cache %,
peak requests, $ from Cline, recomputed $, ₽.
- Period filter in the UI: 7 / 30 / 90 days / all time — recomputed instantly.
- Reconciliation: type the amount from your provider's billing page and see which variant matches
(A: miss =
tokensIn − cacheReads, which is what DeepSeek applies; B: miss = tokensIn).
- Live updates: watches the task folders and repaints the panel ~2.5 s after a change.
- Status bar: period spend + ₽ in the bottom right, click to open the dashboard. It stays hidden
when no Cline data is found, so it never nags people who do not use Cline.
- Exports: CSV (
; + BOM, opens cleanly in Excel) and a self-contained HTML dashboard.
Why recompute instead of trusting Cline's number
Cline does not know DeepSeek's off-peak discount. Peak hours are weekdays 04:00–07:00 and
09:00–13:00 MSK (01:00–04:00 and 06:00–10:00 UTC) and cost twice as much. The extension prices
every request at its own timestamp, taking cacheHit / cacheMiss / output from DeepSeek's price
list (constants in src/reader.ts, overridable with the clineCost.prices setting), so off-peak
work is not silently overcharged.
Install
VS Code — from the Marketplace: search "Cline Cost Dashboard" in the Extensions view, or
open the listing.
VSCodium / Cursor / Windsurf / Theia — install from
Open VSX, or download the .vsix
there and use Extensions → … → Install from VSIX….
From source:
npm ci && npm run compile && npx @vscode/vsce package
then Extensions → … → Install from VSIX….
After that run Cline Cost: Open Dashboard from the Command Palette, or click the status bar item.
Requirements: VS Code 1.85+, Cline installed with some task history. Auto-discovery covers VS Code,
VS Code Insiders, Cursor, VSCodium, Windsurf and the shared ~/.cline directory.
Commands
| Command |
What it does |
Cline Cost: Open Dashboard |
panel with cards, bars and the table |
Cline Cost: Refresh Data |
re-read Cline's storage |
Cline Cost: Export CSV (per project) |
CSV for accounting / estimates |
Cline Cost: Export HTML Dashboard |
self-contained HTML |
Settings
| Key |
Default |
Meaning |
clineCost.tasksDir |
`` (auto) |
Cline tasks folder; empty = auto-detect |
clineCost.projectMap |
{} |
{"/Users/you/Herd/my-app": "CityCo"} — human names instead of the folder basename |
clineCost.usdRubRate |
0 |
0 = fetch the CBR rate |
clineCost.periodDays |
30 |
period for the status bar and the dashboard |
clineCost.showStatusBar |
true |
show the spend in the status bar |
clineCost.prices |
{} |
price overrides, $ per 1M: {"deepseek-flash":{"cacheHit":[0.003,0.006],"cacheMiss":[0.15,0.3],"output":[0.6,1.2]}} |
CLI (same maths, no VS Code)
node out/cli.js --period 30 --csv ~/cline-costs.csv --json ~/cline-costs.json --html ~/cline-costs.html
node out/cli.js --tasks-dir "~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/tasks"
node out/cli.js --lang ru # English output by default, Russian with --lang ru
Handy for cron/CI: drop a monthly CSV into the project folder or send it to accounting.
A standalone Python version (stdlib only) lives in tools/cline_cost_report.py.
Privacy and security
- Read-only: the extension never writes to Cline's storage.
- No telemetry, no accounts, nothing leaves your machine. The only network call is
https://www.cbr-xml-daily.ru/daily_json.js for the USD→RUB rate (set clineCost.usdRubRate
to avoid it entirely).
- The webview runs under a
default-src 'none' CSP with no CDN and no inline handlers; project names
and paths read from Cline's files are HTML-escaped before rendering.
Limitations (the honest ones)
- Only Cline tasks are counted — not Codex, Claude Code or Hermes.
- Your provider's billing export stays the source of truth for the month; "reconciliation" is a manual
number you type in.
- Accuracy depends on how Cline reports
tokensIn, hence variants A/B and the reconciliation field.
Documentation
README.ru.md is the Russian version of this file. Developer docs (in Russian) live under docs/:
Cline's storage schema, the pricing model, the verification log, the roadmap, and docs/publishing.md
(how releases go to the Marketplace and Open VSX).
License
MIT — see LICENSE.