Privacy

Last updated 2026-04-21. Plain-English summary first.

Short version

What we collect, and why

1. Install pixel

Fired by install.sh after install. Opt out: TETRIS_NO_PIXEL=1.

FieldExampleWhy
tripleaarch64-apple-darwinbinary demand
versionv0.1.2adoption curve
build_idhashartifact integrity

2. First-run beacon

Once per install.

FieldExampleWhy
install_idUUID v4de-dupe installs
machine_id_hashHMAC(salt, host-id)per-plan device count
platformdarwin/arm64release QA
binary_versionv0.1.2adoption

machine_id_hash is a one-way HMAC with a per-install random salt. Not reversible to your hostname or MAC.

3. Session heartbeat

After each compression session.

FieldExample
install_idUUID
jtilicense token ID
tokens_before / tokens_after41822 / 5119
strategy_chain[safety_mask, ast_pack, rome_prune, …]
model_idclaude-sonnet-4-5
latency_ms142

We do not receive prompts, responses, file paths, project names, tool args, tool results, or node contents. Only the numeric counters + strategy chain.

4. Idle heartbeat

Once per day. Updates last_seen_at. Returns license freshness + CRL status.

What we do not collect

What runs in the browser

Cloudflare Web Analytics (cookieless) and a small Alpine.js counter that fetches aggregate stats from a Supabase Edge Function. No identifiers are sent.

Retention

Opt-outs

Your rights

GDPR / CCPA: email privacy@tetris.codes with your install_id (tetris config show install_id). We export or delete within 30 days.

Sub-processors

VendorPurpose
CloudflareDNS, TLS, Pages, Workers, Web Analytics
SupabaseAuth, Postgres, Realtime, Edge Functions
Resendtransactional email
Stripepayment processing (Pro + Enterprise)

Contact

privacy@tetris.codes