Skip to content
Book a demoSign in
All docs
Reference

Deployment

Vercel for web + API, EAS for iOS + Android, Supabase for storage.

Updated May 27, 2026

Nyra is two Vercel projects plus EAS for native.

Marketing site

sarveshsea/nyra-landing (this repo). Static Next.js 16 with Tailwind v4. npm run build outputs 100 percent static routes plus one optional waitlist API handler. Import into Vercel, set NEXT_PUBLIC_OPENMIND_APP_URL to wherever the app is hosted, deploy. Custom domain at nyra.us.com.

App

sarveshsea/MiroTherapy under apps/miro/. Expo Router with output: 'server' in app.config.ts, which means API routes run as Vercel serverless functions.

Import the same GitHub repo into Vercel as a second project. Root directory = apps/miro. Required env vars:

  • OPENAI_API_KEY (OpenRouter or OpenAI)
  • OPENAI_BASE_URL (defaults to OpenRouter)
  • OPENMIND_TEXT_MODEL
  • OPENMIND_MODEL_PROVIDER_READY=true
  • SUPABASE_URL and SUPABASE_SERVICE_ROLE_KEY (server-only)
  • EXPO_PUBLIC_SUPABASE_URL and EXPO_PUBLIC_SUPABASE_ANON_KEY (client-safe)
  • OPENMIND_STORAGE=supabase
  • OPENMIND_STORAGE_MODE=per-table
  • OPENMIND_REALTIME_READY=true

Custom subdomain at app.nyra.us.com.

iOS / TestFlight

EAS Build runs the production iOS profile remotely; submit uses an App Store Connect API key (.p8) for non-interactive auth. See docs/testflight-runbook.md in the main repo for the full one-time setup. Required env vars before submit:

  • OPENMIND_IOS_BUNDLE_IDENTIFIER
  • OPENMIND_ASC_APP_ID
  • OPENMIND_APPLE_TEAM_ID
  • OPENMIND_ASC_API_KEY_PATH (absolute path to the .p8 file)
  • OPENMIND_ASC_API_KEY_ID
  • OPENMIND_ASC_API_KEY_ISSUER_ID
cd apps/miro
npm run release:verify:strict
npm run release:testflight:build
npm run release:testflight:submit

Android

release:build:preview:android gives you a free .apk URL from EAS, sideloadable for testing. Internal Play testing needs the one-time $25 Google account.

Supabase

One Supabase project. Run docs/supabase-schema.sql once in the SQL editor to create the per-table schema. The legacy single-blob mirotherapy_dev_store table is auto-imported on first per-table read, so flipping OPENMIND_STORAGE_MODE=per-table does not lose data.