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.

Start free on 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. 1

    Link the project

    Signs you in, creates the project in the dashboard and imports your signing keys from Expo.

  2. 2

    Build on your machine

    fastlane runs locally while every line streams to the build page.

  3. 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.

Fingerprint 3f9c21 matches build #45reused
JS bundle and assets38 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.

App Store Connect API key verified with Apple
Google Play service account verified with Google
Android upload keystoreimported from EAS
TestFlight, build #47processing at Apple
Play internal track, build #48waiting for the build

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 build
macbook-promacOS 26, M3 Max. Builds iOS and Android. Online
build-boxUbuntu 24.04, Ryzen 9. Builds Android. Online
mac-mini-officemacOS 15, M2. Builds iOS and Android. Offline

Android 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.

  1. #51 uploaded to Google PlayTom on build-boxShipped
  2. Android #51 built in 1m 12sTom on build-boxBuilt
  3. Android #51 reused build #49Tom on build-boxReused
  4. iOS preview #52 startedInès on mac-mini-officeStarted
macbook-pro Online

Builds iOS, Android

22% CPU
mac-mini-office Online

Builds iOS, Android

82% CPU
build-box Online

Builds Android

40% CPU

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
Parallel workers: 4Recommended for this machine: 4 to 6Limit

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

3 members and 3 build machinesIncluded
90 days of builds, logs and metricsIncluded
Everything in Free: live logs, metrics and store uploadsIncluded
Install links with a QR code for testersSoon
Slack, Discord and email notificationsSoon
GitHub: build on push, status on pull requestsSoon
Scheduled buildsSoon

localxpo Cloud

Recommended

The 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)
Start free on Cloud

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
Self-hosting guide

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.

Compare plans

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.

.github/workflows/release.ymlCI
- name: Build and ship
run: npx localxpo build -p ios --submit
env:
LOCALXPO_URL: ${{ vars.LOCALXPO_URL }}
LOCALXPO_TOKEN: ${{ secrets.LOCALXPO_TOKEN }}
 
✓ Build #54 on macos-runner, 7m 02s
✓ Uploaded to TestFlight

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.

Create a free Cloud account$ npx localxpo link