Everything runs on your machine. DuckDB is the database. No accounts, no SaaS, no telemetry, no network calls except what your scripts explicitly make.
Your data stays yours. Query it offline. Back it up with git. Delete it when you're done.
How it works (•̀ᴗ•́)و
Your data lives in many places. Rack pulls it into one local database, then generates dashboards you can see in Obsidian. Claude Code handles everything — you just describe what you want.
Your data
GitHub · Stripe · Sheets · APIs
→
Rack
local DuckDB
→
Obsidian
dashboards you own
Run rack refresh to update, or just ask Claude.
Just ask ( ˶ˆᗜˆ˵ )
Describe what you're curious about. Claude builds the pipeline, keeps it fresh, and answers your questions with beautiful reports.
"Track every satellite launch this year and build a cohort breakdown of the differente sat and mission types"
"Build me a calendar of every comet visible this year — when do I need to look up?"
"Monitor all the restaurants that opened in my neighborhood — predict which ones survive"
"Track Magnus's recent games — which openings is he experimenting with now?"
"Track fog delays at my airport — is there a pattern I can plan around?"
"Monitor ocean buoy temps off my coast — is my surf spot getting warmer?"
You ask questions about your world. Rack turns them into queryable answers.
Plain text for transparency ૮₍ ˶ᵔ ᵕ ᵔ˶ ₎ა
A rack is just a directory with a convention:
my-metrics/
├── .claude/CLAUDE.md# Claude reads this
├── playbook.md# What this rack tracks
├── data/
│ ├── inbox/ # Drop files here
│ ├── sources/ # JSON from APIs
│ └── my-metrics.duckdb # DuckDB database
├── scripts/
│ ├── fetch/ # Pull data
│ ├── ingest/ # JSON → DuckDB
│ └── derive/ # SQL → Markdown
└── dashboards/ # Markdown output
No magic. Read any file to understand what's happening. Edit any script to change behavior.