Your presence — baki.io

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

Process

  1. Arrival — You land on a node. Presence starts at `unseen`; no record exists yet.
  2. Engagement — PresenceTracker accumulates focus-time, scroll depth, interaction count into a per-node record while you read.
  3. Classification — computePresenceState promotes the record through glanced → read → dwelled as thresholds cross. A second-day revisit flips to `returned`.
  4. Mirror — This dashboard reads every record on every refresh. The consent tier decides whether records survive the tab close.
  5. 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.