Skip to content

mercuretechnologies/expo-open-ota

Repository files navigation

Important

🚀 v3 is coming

The next major version of Expo Open OTA is in release candidate. Key features:

  • Control plane mode — run the server on PostgreSQL, manage everything from the dashboard, no Expo account required
  • Multi-app support — host several Expo apps on a single server
  • Per-app API keys — publish from CI without sharing your Expo access token
  • Secure key management — signing keys sealed in the database with AES-GCM
  • Per-app Prometheus metrics and a redesigned dashboard

📖 Check out the new documentation, including the v2 → v3 migration guide — your installed clients will keep working without a rebuild.

v2 remains the current stable release (docker pull ghcr.io/axelmarciano/expo-open-ota:latest, npm i eoas). Contributions: please target the release/v3 branch.

Expo Open OTA Expo Open OTA - Dashboard

Self-hosted OTA updates for Expo — multi-cloud, production-ready.

An open-source Go server implementing the Expo Updates protocol.
Deploy on AWS, GCP, or locally.

Documentation · Issues · Contact


Why Expo Open OTA?

  • Cut costs — Expo's OTA pricing scales with MAUs. Self-hosting gives you unlimited updates at infrastructure cost only.
  • Own your infrastructure — Store updates on your cloud, behind your VPN, with your security policies.
  • No vendor lock-in — Works with AWS, GCP, and any S3-compatible provider. Switch anytime.

Features

Feature Description
Multi-cloud storage AWS S3, Google Cloud Storage, S3-compatible (Cloudflare R2, MinIO, DigitalOcean Spaces), local file system
Fast asset delivery CloudFront CDN, GCS signed URLs, or direct serving — your choice
One-command publishing npx eoas publish from your CI/CD pipeline
Secure key management AWS Secrets Manager, environment variables, or local key files
Dashboard Built-in web UI for monitoring updates, branches, and runtime versions
Prometheus metrics Production observability out of the box
No database required Zero external dependencies beyond your storage provider
Helm chart Ready for Kubernetes deployments

Quick Start

Deploy on Railway

And follow the Quick Start guide to get up and running in minutes.

Storage Options

Provider Mode Asset Delivery
Amazon S3 STORAGE_MODE=s3 Direct or CloudFront CDN
Google Cloud Storage STORAGE_MODE=gcs GCS signed URLs
S3-compatible (R2, MinIO, etc.) STORAGE_MODE=s3 + AWS_BASE_ENDPOINT Direct
Local file system STORAGE_MODE=local Direct (dev only)

Disclaimer

Expo Open OTA is not officially supported or affiliated with Expo. This is an independent open-source project.

License

Core is MIT and will stay MIT; advanced org features may be offered under a commercial license in the future see LICENSE.

Contact

expoopenota@gmail.com

About

An open-source self-hosted custom updates server implementing the Expo Updates protocol, built for production. Supports cloud storage & CDN.

Topics

Resources

License

Stars

394 stars

Watchers

3 watching

Forks

Sponsor this project

Packages

 
 
 

Contributors