Your presence
Everything the site knows about you - curated, not raw. Export, forget, or reconsider consent in one place.
[SCAFFOLD - Baki to revise] A mirror isn't surveillance. A mirror is a room you can leave.
Metrics
- presence states
- 5 — unseen · glanced · read · dwelled · returned. Classifier in src/lib/presence.ts with thresholds parked as named tokens for retuning.
- consent tiers
- 3 — ambient (session-only) · local (on this device) · telemetry (local + opt-in aggregate echo, server POST pending).
- curated device reads
- 6 — Device class · OS · viewport · screen · language · referrer. All surface as human strings; the raw User-Agent is never shown.
- server round-trips
- 0 — Every value on this page is computed from local storage on your device. Nothing travels off-device until telemetry tier + a server wire-up both land.
Cards
- Ambient tier
[SCAFFOLD - Baki to revise] sessionStorage only. Tan fades when you close the tab. Default tier; no consent dialog to dismiss. Dense mirror of the current visit, nothing more.
- Local tier
[SCAFFOLD - Baki to revise] localStorage on this device. Tan survives visits. The rail remembers where you've been; the dashboard remembers how you arrived. Opt-in via Preferences → Presence.
- Telemetry tier
[SCAFFOLD - Baki to revise] local + an anonymous aggregate echo. Server-side k-anonymized counts only; no individual record leaves your device. Wire-up pending.
Process
- Arrival — You land on a node. Presence starts at `unseen`; no record exists yet.
- Engagement — PresenceTracker accumulates focus-time, scroll depth, interaction count into a per-node record while you read.
- Classification — computePresenceState promotes the record through glanced → read → dwelled as thresholds cross. A second-day revisit flips to `returned`.
- Mirror — This dashboard reads every record on every refresh. The consent tier decides whether records survive the tab close.
- Lifecycle — Export writes a JSON snapshot. Forget wipes the keyspace. Dissent resets just the consent tier. Every action starts on-device; none of them require a server.
The module below mirrors every baki.* key stored on this device - device
context, consent tier, visit records, canvas trajectory - rendered as a
dense monospace dashboard rather than a dump of raw fields. Each row is a
curated read: Desktop · 1920×1080 · English rather than the literal
User-Agent string. Nothing travels off-device unless you opt into the
telemetry tier (still pending a server wire-up).
Three buttons sit at the bottom. Export downloads a JSON of everything
shown above so you can keep your own copy. Forget wipes every
baki.visitor.v1.* record and every baki:prefs:* key, then reloads.
Dissent resets only the consent tier back to ambient without touching
records or prefs - next visit will re-prompt.
Change tier directly in Preferences → Presence; the dashboard reflects the switch immediately.