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 creation | Where the data lives today | Planned dedicated cluster |
|---|---|---|
| US (default) | Tokyo (ap-northeast-1), the single hosted project | us-east-1 |
| EU | Tokyo, same project | eu-central-1 |
| JP | Tokyo, same project | ap-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 viapgsodium. - 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.