Skip to Content
v1.29.0 · shipped Own analytics id., Refused batches are not replayed forever. Read the changelog →
Security & complianceData residency

Data residency

Scenario: Your EU customers’ data must stay in the EU to comply with GDPR. You need to ensure that report ingestion, embeddings, screenshots, and AI calls never leave your chosen region.

Mushi Cloud is designed for regional isolation — separate Supabase projects per region with no inter-region replication. Today all production traffic runs on a single Supabase project in ap-northeast-1 (Tokyo, dxptnwrhwsqckaftyymj), whatever region a project picked. EU and US regional clusters are reserved, not live.

Regions

Region picked at creationWhere the data lives todayPlanned dedicated cluster
US (default)Tokyo (ap-northeast-1), the single hosted projectus-east-1
EUTokyo, same projecteu-central-1
JPTokyo, same projectap-northeast-1

Region is immutable — it is set at project creation and cannot be changed. Create a new project to move regions.

How the SDK routes

The browser SDK has no region option. It sends everything to apiEndpoint, which defaults to https://dxptnwrhwsqckaftyymj.supabase.co/functions/v1/api, and every region resolves to that endpoint today. API keys use one mushi_… format in every region.

@mushi-mushi/core also exports resolveRegionEndpoint, which asks the gateway which endpoint serves a project and caches the answer in localStorage for 24 hours. Until regional clusters ship it returns the same endpoint.

import { resolveRegionEndpoint } from '@mushi-mushi/core' const endpoint = await resolveRegionEndpoint({ projectId: 'YOUR_PROJECT_ID', apiEndpoint: 'https://dxptnwrhwsqckaftyymj.supabase.co/functions/v1/api', })

Attestation

A nightly cron writes a no_cross_region_transfer attestation row to soc2_evidence. This record confirms that no row in reports, embeddings, fix_attempts, or reporter_identities was written outside the configured region that day. The evidence is included in the quarterly SOC 2 pack.

Self-hosting

If you self-host on your own Supabase project, you control the region entirely — pick any Supabase-supported region at project creation.

GDPR notes

  • All PII columns (reporter_email, reporter_name, screenshot_url) are encrypted at rest via pgsodium.
  • DSAR (data subject access requests) are handled via request_dsar() — see SOC 2 readiness.
  • When the EU region cluster ships, AI model calls from EU projects will be routed to Anthropic’s EU endpoints where available.
Last updated on