Docs

How to make a card

Loopcard reads a file you already have. We never log into Anthropic or Cursor (that would be a CFAA problem). We never ask for API keys.

1. Demo (no file)

On the home page, tap $6,000 night, $1,263 month, or $480 median. Those are labeled re-creations of published 2026 reporting, not anyone’s private invoice.

2. Anthropic / Claude spend CSV

Claude Team/Enterprise: Settings → Analytics → Export spend report. Drop the CSV on the studio. We look for a column named cost, spend, amount, or chargedCents.

3. Cursor usage CSV

Cursor dashboard → export usage events. If the column is chargedCents, we divide by 100.

4. Claude Code JSONL

Local transcripts under ~/.claude/projects/**/*.jsonl contain usage objects. Drop a jsonl, or run the CLI:

node cli/loopcard.js ~/.claude/projects/…/file.jsonl

JSONL totals are estimates from published list rates (Sonnet $2/$10, Opus $5/$25, Haiku $1/$5 per MTok as of Sep 2026). They will not match a discounted seat exactly.

5. ccusage JSON

If you already run npx ccusage, export JSON with daily costs and drop it. Loopcard is the PNG; ccusage remains the terminal.

6. Publish

Download PNG never leaves your device. Publish share URL sends only amount, source, caption, kind — not the file, not prompts, not keys. Anyone with the link can see those numbers.

CLI

node cli/loopcard.js [file] [--publish] reads local files. --publish posts aggregates to this server. Nothing is uploaded without that flag.