localxpo builds and signs your iOS and Android apps on your own Mac or PC, then ships them to the stores. Every log line, step and gigabyte of memory lands in one dashboard, hosted for your team on localxpo Cloud.
Open source, and free on Cloud for one machine with no card needed. Pro is €10 a month with a 14-day trial. About Cloud
Uses the tools you already have: Expo fastlane Xcode Gradle CocoaPods EAS credentials
From npx to the stores in three commands.
Nothing to configure by hand: each command picks up what the one before set up.
- 1
Link the project
Signs you in, creates the project in the dashboard and imports your signing keys from Expo.
- 2
Build on your machine
fastlane runs locally while every line streams to the build page.
- 3
Ship to the stores
Uploads to TestFlight or Google Play with keys checked beforehand.
npx localxpo build
Your Mac is the build server.
Builds run with fastlane on your machine, with your caches and your Xcode. No queue, no build minutes, no upload of your source code.
- Skips what didn’t change. When the native fingerprint matches an earlier build, only the JavaScript is rebuilt.
- Errors you can read. Known Xcode, Gradle and CocoaPods failures come with what went wrong and how to fix it.
- Live in the browser. Logs stream to the build page while it runs, and stay there after it ends.
iOS production build #47
Native code unchanged since #45: the app was rebuilt from that binary in 41 s.
Android build #46 failed in Gradle
The Android SDK isn't where Gradle looks for it. Install it from Android Studio, then add export ANDROID_HOME=~/Library/Android/sdk to your shell profile.
npx localxpo submit
To TestFlight and Google Play in one command.
The first time you link a project, localxpo picks up the signing keys and store credentials from your Expo account and your machine, and stores them encrypted for the team.
- Checked before upload. Apple and Google keys are verified the moment they are saved, not at 2 a.m. on release night.
- Queued after the build. Start a build with “upload when it succeeds” and the submission waits for it.
- One place for keys. Keystores, App Store Connect keys and service accounts live on the Credentials page.
Store keys
Found in your Expo account when you ran localxpo link.
npx localxpo agent
Start a build from the dashboard.
Leave the agent running on any machine and it picks up builds started from the browser. A Mac takes iOS; Linux and Windows boxes take Android.
- Online or offline, at a glance. Each machine shows when it last checked in and what it can build.
- Cancel from anywhere. Stop a running build or upload from the build page; the machine stops within seconds.
- No silent failures. A build whose machine goes quiet for three minutes is marked failed, and resumes if the machine comes back.
Machines
New buildAndroid production on build-box
Then upload to Google Play when it succeeds. Queued behind build #48.
The whole team's builds, as they happen.
Every build, upload and failure from every machine shows up in one activity feed, with who started it and where it ran.
- Builds today
- 38
- Reused builds
- 61%
- Store uploads
- 12
Example team. Your numbers appear on the dashboard home page.
- #51 uploaded to Google PlayTom on build-boxShipped
- Android #51 built in 1m 12sTom on build-boxBuilt
- Android #51 reused build #49Tom on build-boxReused
- iOS preview #52 startedInès on mac-mini-officeStarted
Builds iOS, Android
Builds iOS, Android
Builds Android
npx localxpo build --no-limits
See what each build costs your machine.
Memory, memory pressure, CPU and energy are sampled during every build, next to the same numbers for the whole machine.
- Limits from the dashboard. Cap the Gradle heap and parallel workers, or run builds at low CPU priority, per machine. --no-limits skips them once.
- Recommended values. Each limit is checked against the machine’s memory and cores, and flagged when it is too low or too high.
- Trends over 30 days. Compare build times and peaks across machines to pick the right one.
Memory during build #53, live
This build Whole machine
- Build memory
- 4.5 GB
- Memory pressure
- Normal
- CPU, average
- 612%
- Energy
- 14 Wh
localxpo Cloud runs the dashboard for you.
Your machines keep doing the builds. Cloud hosts everything around them: the dashboard, the database, the encrypted store keys and the history, so the team signs up and links a project instead of running a server.
- Nothing to host. No server, database or certificates to maintain. Point the CLI at Cloud and build.
- One place for the team. Members, shared credentials and every build, kept for up to 2 years.
- Billed per organization. Start free, upgrade when you add machines or teammates, cancel from the billing page.
Pro on Cloud
€10 / month
localxpo Cloud
RecommendedThe open-source dashboard, run and kept up to date for you. Sign up, link a project, build.
- Ready in a minute, nothing to install or maintain
- New versions arrive on their own, without redeploying
- Pro features for teams: install links, notifications, GitHub, schedules (coming)
Self-hosted, open source
The same code under the MIT license, on your own server. Free, every feature unlocked.
- Embedded Postgres, or bring your own database
- You run upgrades, backups and the encryption key
- Read, fork and change everything
Free for one machine. Pay when the team grows.
Prices are per organization. Builds always run on your hardware, so there are no build minutes to count. Paid plans start with a 14-day trial, and self-hosting stays free with everything included.
Free
€0
1 member, 1 machine, 7 days of history.
Pro
€10 / month
3 members, 3 machines, 90 days of history.
Team
€29 / month
10 members, 10 machines, 1 year of history.
Business
€79 / month
Unlimited members, unlimited machines, 2 years of history.
npx localxpo --help
Made for developers who like their terminal.
A CLI with ten commands, profiles read from your eas.json, tokens for CI, and a REST API for everything the dashboard shows. Open source under MIT.
Link your first app in under a minute.
Run one command in your Expo project. It signs you in, creates the project and sets up your store credentials.