An open-source Go server implementing the Expo Updates protocol.
Deploy on AWS, GCP, or locally.
Documentation · Issues · Contact
- 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.
| 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 |
And follow the Quick Start guide to get up and running in minutes.
| 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) |
Expo Open OTA is not officially supported or affiliated with Expo. This is an independent open-source project.
MIT — see LICENSE.

