Skip to content
View as .md

Privacy data map

The current production data flows behind /privacy. Update this page when a provider or data path changes.

arbe is operated by Oskar Roug Mosumgaard (Invisible Touch). The public notice lives at docs/privacy-and-security/privacy.md (served at /docs/privacy-and-security/privacy/, with /privacy redirecting there); this page is the internal map used to keep it accurate.

Controller contact is deliberately email-only (oskar+arbe@rough.dk); no postal address is published, which is a standing decision rather than an oversight. Worth revisiting if arbe takes payment, leaves alpha, or picks up users outside the current circle.

Data flows

DataSourceWhere it goesPurposeOwner
Account identity, email, OAuth profile, auth timestampsThe person and their sign-in providerSupabase Auth; GitHub when GitHub sign-in is selectedSign-in and account recoveryapps/www/src/routes/login/, apps/www/src/routes/auth/, docs/system/access/auth.md
Profiles, houses, memberships, agents, threads, workflows, environments, usage ledgerPeople, agents, and application mutationsSupabase Postgres; Electric SQL for live browser syncDurable product state and multiplayer syncpackages/supabase/migrations/, apps/www/src/routes/api/shapes/, docs/system/data/storage.md
Messages, tool events, lifecycle signals, run historyPeople, agents, and the dispatcherElectric SQL Durable StreamsShared conversation and durable run historypackages/core/entries.ts, packages/core/schemas/stream-entries/, docs/system/chat/durable-streams.md
Quick-feedback note, optional sentiment, submitting agent, current page, browser identificationSigned-in peoplePrivate Supabase feedback rowProduct feedback and triageapps/www/src/routes/api/feedback/, packages/supabase/migrations/20260825090000_feedback.sql
House files and locally decoded readingsHouse members and agentsSupabase Storage and PostgresFile storage, local UTF-8/PDF decoding, search, citations, and irreversible per-path deletionpackages/core/volume.ts, packages/core/volume-extractor.ts, docs/system/data/volumes.md
Visual and scanned file bytesHouse members and agentsExternal vision modelProduce searchable readings for images and scanned PDFspackages/core/volume-extractor.ts, docs/system/data/volumes.md
Prompts, replies, selected thread context, tool inputs and resultsPeople, agents, threads, and toolsOpenRouter and the selected model provider, or a directly selected providerGenerate model decisions and repliespackages/core/dispatch/reply.ts, packages/core/pi/, docs/system/access/llm-keys.md
Repositories, workspace files, commands, results, and bound runtime secretsHouse members and agents acting on their instructionsDaytonaRun tools and coding work on remote computerspackages/sandbox/src/daytona/, docs/system/sandboxes/runtime.md
API-token metadata, secret names, encrypted secret valuesHouse members and CLI sessionsSupabase Postgres and Vault; resolved values enter the selected runtime when neededAuthenticate API clients and supply tools with credentialsapps/www/src/routes/api/secrets/, packages/core/dispatch/turn-secrets.ts, docs/system/access/secrets.md
Request IDs, errors, runtime logsApplication and infrastructureCloudflareSecurity, failure diagnosis, and service operationapps/www/src/hooks.server.ts, apps/www/wrangler.jsonc, docs/system/ops/observability.md
App IDs, run IDs, model/tool usage, token counts, cost, latency, failure statusDispatcher and paid capability seamsSupabase usage_events; PostHog EUUsage limits, cost attribution, and operational reliabilitypackages/core/usage.ts, packages/core/usage-posthog.ts, docs/system/ops/analytics.md
Thread/agent/trace IDs, dispatch outcome, duration, HTTP statusDispatcher run terminals, always-on (not opt-in)PostHog EUOperational reliability of agent runspackages/core/dispatch/signals.ts, docs/system/ops/analytics.md
Optional lifecycle analytics, app IDs, hashed browser identity, and browser error groupsApplication after per-agent opt-inPostHog EUUnderstand product use and diagnose browser failuresapps/www/src/lib/analytics.ts, apps/www/src/hooks.client.ts, apps/www/src/lib/server/track.ts, docs/system/ops/analytics.md
House id and creation time, always-onEvery house creation through the APIPostHog EUMonitor the platform’s total house creation rateapps/www/src/routes/api/houses/+server.ts, apps/www/src/lib/server/track.ts
Error codes or kinds, hashed error-message groups, route/runtime, status, release, request/worker IDsWeb server and backstage, always-onPostHog EUDetect, group, and act on service failuresapps/www/src/hooks.server.ts, apps/backstage/src/server-error-monitoring.ts, docs/system/ops/analytics.md
Session cookies; PostHog browser identifier after opt-inThe browserSet by arbe; PostHog EU for the analytics identifierKeep a session signed in; attribute opted-in analyticsapps/www/src/hooks.server.ts, apps/www/src/lib/analytics.ts, docs/system/access/auth.md

File deletion boundary

The product contract is immediate product-level erasure: once a file deletion commits, its current bytes, earlier versions, extracted readings, search data, history, and restore path are unavailable through every arbe surface. Reusing the path starts new history. Content-free file-change records may retain the path, author, and time.

Identical bytes can be shared by content hash. Stored bytes are physically removed once no undeleted path or version refers to them; deleting one file never destroys another file’s content. Provider backups and bounded asynchronous cleanup may expire later, but must not make deleted content product-readable. Volumes owns the canonical behavior and operational proof.

Providers

ProviderRole in arbeData boundary
CloudflareHosts the web app and API; provides network security and application logsRequests, IP/network metadata, request IDs, and logged failures
SupabaseAuthentication, Postgres, file storage, and VaultAccount identity, structural product data, files, usage ledger, encrypted secrets
Electric SQLBrowser sync and durable thread streamsSynced house records and full thread/run history
GitHubOptional OAuth sign-inOAuth identity and profile fields returned during sign-in
OpenRouter and selected model providersModel inferencePrompts, selected context, replies, and tool-related content needed for a turn
DaytonaDefault remote sandbox runtimeWorkspace content, commands, results, and credentials injected for requested work
Google GeminiVisual extractionVisual and scanned bytes for extraction only. Original text and text-bearing PDF bytes stay local, and file search is lexical inside Postgres
PostHog EUOptional product telemetry plus always-on operational and usage eventsNo email, names, prompts, messages, file content, or session data; app IDs remain linkable inside arbe

Other house members and agents are recipients of data shared inside their house. They are part of the product’s collaboration boundary, not infrastructure providers.

Processors today are as mapped above. If or when EU residency is required, decide the bar first: data at rest in the EU (US-parent processors still allowed), or no US company in the processor chain. The first is mostly region moves; the second is self-host / EU-sovereign replacements. Pick the bar before migrating — they are different amounts of work.

Update rule

Before adding a provider or sending a new data category to an existing provider:

  1. Update this map and the public /privacy notice.
  2. Decide whether the data is optional or required, and keep optional analytics behind explicit opt-in.
  3. Check export and account/house deletion behavior at the canonical storage boundary.
  4. Keep content and direct identity out of PostHog.

Provider retention schedules, regions, contractual safeguards, and deletion propagation are deployment/legal records rather than code-owned facts. They are not verified in this map.