Static dashboard for Bitcoin held after Coldcard seed-entropy sweeps since July 2026.
Monitors consolidation vaults across named clusters (Galaxy Waves 1–3 plus later community waves). All balances and the movement feed come from public/snapshot.json, refreshed by a GitHub Actions cron about every 6 hours — visitors do not hit public explorers.
npm install
npm run devOpen the URL Vite prints (usually http://localhost:5173).
npm testRuns the Vitest unit suite (formatters, outbound/hop logic, incident data invariants).
npm run build
npm run previewdist/ is a static site — deploy to Vercel, Netlify, Cloudflare Pages, or any static host.
| Data | Source |
|---|---|
| Holdings & movements | /snapshot.json (cron) |
| BTC/USD | snapshot usdPrice |
| Incident facts | Galaxy Research + community cluster reports (static) |
No API key is needed for the dashboard. The browser re-reads /snapshot.json on load, on tab focus, and about every 15 minutes while the tab is visible.
Optional local research: put BLOCKCHAIR_API_KEY in a gitignored .env for faster tip wave scouts (scripts/scan-new-waves.py --blockchair) and batch balance checks (scripts/blockchair-balances.py). Estimate request points and confirm before spending quota; do not use that key in the snapshot cron.
npm run snapshotWrites public/snapshot.json (all watched holdings + movements for vaults that look spent). On main, .github/workflows/snapshot.yml runs this on a schedule and commits the file so static hosts redeploy with fresh numbers. Esplora-only by design.
python3 scripts/scan-new-waves.py --no-escalate --blockchair # needs .env key
python3 scripts/scan-new-waves.py --no-escalate # Esplora fallbackScouts the last 3 tip blocks for Coldcard-like 1-vout fee clusters. See .cursor/skills/new-wave-scan/SKILL.md.
Use the Alerts toggle in the header for browser notifications when a new
outbound spend appears in the snapshot (holdings or followed hops). This is
not live chain — the cron is about every 6 hours. Preference is stored in
localStorage. Notifications only fire while the tab is open (including after
a snapshot re-read).
The snapshot cron probes Esplora hosts in this order (see HOSTS in
scripts/build-snapshot.mjs):
mempool.bitaroo.netmempool.spacemempool.emzy.de
Address and transaction links in the UI default to mempool.space. Edit
MEMPOOL_HOSTS in src/data/incident.ts to change
link targets.
When a holding address spends reported consolidation, the snapshot builder follows the largest destinations (up to hop 2, ignoring dust under 0.01 BTC) and lists those outbound spends in the movement feed. Still-held % stays based on the watched holding addresses only.
If a vault later receives extra coins and forwards them while still holding its reported balance, that pass-through is ignored — it is not treated as the stolen stack moving.
Not affiliated with Coinkite or Coldcard. For public blockchain monitoring only.