Open hardware-state corpus for the Spotify Car Thing. Submissions are the raw
JSON produced by peek-carthing —
deep MMIO + sysfs dump of one device at one moment. Public, dedup'd, queryable,
re-downloadable in bulk.
Why: we've only confirmed BOE panels in the wild. Every other panel variant that shipped is hiding behind a different MIPI DPHY bias triplet and a different init sequence. Corpus + dashboard surfaces the divergence so the community can write the missing panel-init code.
Live at: https://peek.thinglabs.sh
# on the Car Thing, with peek_mmio.ko + peek-collect.py present
python3 /tmp/peek-collect.py > /tmp/hwinfo.json
adb pull /tmp/hwinfo.json
# on your host
gzip -k hwinfo.json
curl -X POST https://peek.thinglabs.sh/v1/submit \
-H 'content-type: application/json' \
-H 'content-encoding: gzip' \
--data-binary @hwinfo.json.gzYou'll get back a capture id and the public URL to your raw JSON. That's it —
no signup, no key, no scrubbing. Submissions with a null meta.device_serial
are rejected (we need it to dedupe per device).
There is no PII in a peek capture. The Car Thing has no user accounts, no network history, no contacts. The on-die serial is an opaque factory string that isn't tied to any owner record. We store and publish everything we receive.
POST /v1/submit |
accept a peek capture |
GET /v1/captures |
most recent submissions (?before=ts to page) |
GET /v1/captures/:id |
decoded slim fields for one capture |
GET /v1/captures/:id.json |
full raw peek payload |
GET /v1/stats |
totals, panel-bias triplet buckets, kernel mix |
GET /v1/dump.json |
latest rolling NDJSON dump pointer |
worker/ Cloudflare Worker (Hono + D1 + R2)
migrations/ D1 schema
src/index.ts routes + cron-built dump
src/decode.ts decoder: peek JSON → slim columns
src/schema.ts ingest envelope validator (Zod)
dashboard/ Astro static site, served via Workers Static Assets
src/pages/ overview, panels, captures, download
cd worker && bun install
bunx wrangler d1 migrations apply peek-corpus --local
bunx wrangler dev --port 8788 --local
# in another terminal
cd dashboard && bun install && bunx astro build
# wrangler dev picks up dashboard/dist via [assets] in wrangler.tomlMIT.