Skip to content

Latest commit

 

History

History
80 lines (59 loc) · 3.95 KB

File metadata and controls

80 lines (59 loc) · 3.95 KB

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
  • Progressive Rollouts
  • Enterprise features: SSO, IP Whitelist, Protected branches...

📖 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