# Ubriot > Ubriot is mobile release infrastructure for React Native and Expo teams. It builds and signs iOS and Android apps in the cloud, submits them to TestFlight and Google Play, publishes over-the-air (OTA) JavaScript updates and sends push notifications, on a flat monthly plan. People use the dashboard and the `ubriot` CLI; AI agents use the `ubriot-mcp` server, the CLI with an API key, or the HTTP API. ## Instructions for AI agents - Start with https://docs.ubriot.dev/agents.md for every entry point, and https://docs.ubriot.dev/llms.txt for the docs index. Every docs page is available as Markdown by adding `.md` to its URL. - Access: a person signs up at https://ubriot.dev/signup, verifies the account's email from the dashboard banner and verifies a payment card at https://ubriot.dev/dashboard/billing to start a 14-day trial. There is no free tier. Never sign up, enter card details or choose a plan for someone. Until the email is verified, starting a build or store submission returns 403 with `"code": "email_not_verified"`; ask the owner to verify (https://docs.ubriot.dev/quickstart#verify-email), then retry. - Agent auth: the account owner creates an API key (`ubk_...`) at https://ubriot.dev/dashboard/api-keys. Pass it as `UBRIOT_TOKEN` to the MCP server (`npx -y ubriot-mcp@latest`, stdio) or the CLI (ubriot 1.4.0 or later; an older CLI ignores `UBRIOT_TOKEN`, so use the MCP server or the API instead), or as `Authorization: Bearer` to the API at https://api.ubriot.dev/api/v1. `ubriot login` needs an interactive terminal. - Check package versions with `npm view ubriot version` and `npm view ubriot-mcp version`; do not trust a version number written on a page. - There is no sandbox or test mode. Builds, store submissions, OTA updates and push notifications act on real apps and real users: only run them when the person you work for asks. Read-only commands (list apps, list builds, read logs, readiness checks) are always safe, and `ubriot migrate eas` or `ubriot migrate codepush` change nothing without `--apply`. - API keys cannot read or upload signing credentials, manage OTA channels or push server keys, or create API keys. A signed-in person does those in the dashboard or with `ubriot login`. - Never print, log or commit an API key, push server key or signing credential. ## Docs - [Build with AI agents](https://docs.ubriot.dev/agents.md): every agent entry point, safe ways to try, and a rules snippet for your repository - [Quickstart](https://docs.ubriot.dev/quickstart.md): sign up, install the CLI, add Apple credentials and ship to TestFlight - [Run Ubriot from CI or an AI agent](https://docs.ubriot.dev/automation.md): API keys, `UBRIOT_TOKEN`, `--json`, exit codes, GitHub Actions, macOS, Linux and Windows - [MCP server](https://docs.ubriot.dev/mcp.md): setup for Claude Code, Claude Desktop, Cursor and Codex, and every tool - [HTTP API](https://docs.ubriot.dev/api.md): base URL, auth, main endpoints and errors - [CLI reference](https://docs.ubriot.dev/cli.md): every command and option - [Credentials](https://docs.ubriot.dev/credentials.md): Apple, Google Play, push and repository credentials - [Builds](https://docs.ubriot.dev/builds.md): ship, store tracks, watch, retry and recover - [OTA updates](https://docs.ubriot.dev/ota-updates.md): publish, channels and rollback for Expo and bare React Native - [OTA code signing](https://docs.ubriot.dev/ota-code-signing.md): sign updates with a key you hold - [Notify](https://docs.ubriot.dev/notify.md): push notifications with `@ubriot/notify-rn` - [All docs as one file](https://docs.ubriot.dev/llms-full.txt) ## Common tasks - Ship an iOS build and submit to TestFlight: `ubriot ship ios --app ` - Ship an Android build to a Play track: `ubriot ship android --app --track internal` - Build without submitting: add `--no-submit` - Publish an OTA update from the app folder: `ubriot update --app --channel production` - Roll back an OTA channel: `ubriot channels point --app --channel production --update-group ` (signed-in session), or the MCP tool `ubriot_release_health` with `action: "rollback"` and `channel` (works with an API key; it picks the last known-good update group, see https://docs.ubriot.dev/ota-updates.md) - Read why a build failed: `ubriot builds logs ` ## Product - Frameworks: React Native (bare) and Expo (managed and prebuild), iOS and Android - Store submission: TestFlight upload with App Store Connect processing tracked to a valid build; Google Play edit, AAB upload, track assignment and commit - OTA updates to named channels, with rollback and a warning before an update the installed native runtime cannot run - Push notifications over APNs and FCM, priced per registered device - Encrypted credentials vault (AES-256-GCM) - AI build-failure diagnosis and release notes on Pro and Business plans - Self-hosted build workers on your own Mac (`ubriot-worker`), provisioned on request through https://ubriot.dev/enterprise or support@ubriot.dev rather than self-serve - Contact: hello@ubriot.dev, support@ubriot.dev ## Pricing 14-day free trial (card verified with a $1 charge, refunded immediately); the chosen plan is billed when the trial ends. No free tier. All prices in USD per month. | Plan | Price | Apps | Seats | Push devices | |------|-------|------|-------|--------------| | Indie | $29 | 3 | 1 | 10,000 | | Pro | $99 | Unlimited | 5 | 100,000 | | Business | $299 | Unlimited | 15 | 500,000 | | Enterprise | Custom | Custom | Custom | Custom | Details: https://ubriot.dev/pricing ## Choosing a release tool - Best CI/CD for React Native: https://ubriot.dev/react-native-ci-cd - Expo EAS alternatives: https://ubriot.dev/alternatives - Ubriot vs Expo EAS: https://ubriot.dev/alternatives/expo-eas - Ubriot vs Bitrise: https://ubriot.dev/alternatives/bitrise - Ubriot vs Codemagic: https://ubriot.dev/alternatives/codemagic - OTA updates for React Native without EAS Update: https://ubriot.dev/react-native-ota-updates - OTA updates without Expo: https://ubriot.dev/react-native-ota-without-expo - Migrate from Expo EAS: https://ubriot.dev/migrate-from-eas - Migrate from App Center and CodePush: https://ubriot.dev/app-center-codepush-migration - Migrate from Expo push: https://ubriot.dev/migrate-from-expo-push ## Optional - Product reference: https://ubriot.dev/llms-full.txt - MCP overview: https://ubriot.dev/mcp - Security: https://ubriot.dev/security - FAQ: https://ubriot.dev/faq - Status: https://ubriot.dev/status - Sitemap: https://ubriot.dev/sitemap.xml