Self-hosted Expo EAS alternative · v1.0.1

Ship it yourself.
Keep the keys.

leas is an open-source alternative to Expo Application Services (EAS). It builds, signs, and submits your Expo or React Native app to the App Store and Google Play — and ships over-the-air updates — from one command, on hardware you control. No build-minute meter. No vendor holding your certificate.

MIT licensed engine · leas-cli v1.0.1 · Build Expo apps without EAS · EAS Submit alternative · Compare leas with EAS

kaya — leas build
The wall

Getting a mobile app into two stores is four hours of console archaeology, then a monthly bill, a build queue, and a third party holding the certificate that proves the app is yours.

None of that is inherent to the work. It is inherent to renting somebody else’s fleet.

01

Someone else holds your identity

A hosted build service needs your distribution certificate and your App Store Connect key to function. That is a copy of your signing identity on infrastructure you do not run — and for a regulated team, a policy exception someone has to sign.

02

You find out late

A wrong bundle identifier or a lapsed profile does not fail fast. It fails forty minutes into a build, on the day something urgent needs to go out, with an error that names the wrong thing.

03

You pay per minute to wait

Builds queue on shared hardware and bill by the minute while the Mac on your desk sits idle. The cost scales with how often you ship — which is the one thing you want to do more of.

How it works

Three commands, and the pipeline is yours. The configuration is a file in your repository; the machines are ones you already have.

01 — SETUP

Answer eight questions

The wizard writes your leas.json, your GitHub Actions workflows, and a script that loads your signing material into your own repository secrets. It runs entirely in your browser.

02 — PREFLIGHT

Prove it works first

leas doctor reads every credential, checks the identifiers agree, and asks Apple and Google whether your keys are actually accepted — in about two seconds.

03 — SHIP

Build and submit

leas build --auto-submit signs, archives, uploads, and waits for TestFlight. Add --cloud and the identical engine runs on a rented Mac instead of yours.

Over-the-air

A JavaScript fix does not need a binary. Ship it to devices already in the field — no build, no submission, no review.

A self-hosted implementation of the Expo Updates protocol, so the stock client talks to it unmodified. Point your update URL at it and nothing else changes.

  • Channels and promotionTest on preview, then ship the exact same bytes to production. Not a rebuild — a pointer move.
  • Signed updatesDevices refuse any update you did not sign, so the channel cannot be used against you.
  • One-command rollbackPoint production back at the last good update, or all the way to the embedded bundle.
  • Runtime version safetyAn update only reaches binaries built against a matching runtime, so JavaScript can never outrun native code.
localhost:4180
Builds247
Success96%
Median8m 40s
In flight2
Builds per day · last 14
Credentials
expiringProvisioning profile19 days left
validDistribution certificate412 days left
validUpload keystore9243 days left

leas dashboard — runs on your machine. Sample data.

Custody

We cannot leak your signing keys, because we never receive them. That is an architectural fact, not a promise in a policy document — there is no endpoint that accepts a certificate.

Your distribution certificate, provisioning profile, upload keystore, App Store Connect key, and Play service account live in your project and in your own repository secrets. Builds read them locally. Cloud builds read them from your repository, under your GitHub account.

  • The wizard has no server halfIt generates text in your browser and posts nothing. There is no upload route in the codebase.
  • The dashboard sees metadataA credential name, an expiry date, a public fingerprint. Never key material, never a password.
  • Cloud builds run in your accountOn runners you rent, using secrets we have no ability to read.
  • Cancelling changes nothingThe engine is MIT and already on your disk. Stopping a plan stops the dashboard, not your releases.

Where every credential lives, and how to verify it yourself →

Comparison

Same outcome, different arrangement

Hosted build services are good products. The difference is structural: where the work happens, and who holds the identity that signs it.

 leasHosted build service
Who holds your signing keysYou. There is no upload path.The vendor, by necessity
Where builds runYour Mac, or runners you rentVendor-managed shared fleet
Build costNo per-minute charge from usMetered build minutes
Queue timeNone locally — it starts when you press enterDepends on plan and load
Preflight checkingleas doctor — credentials, identifiers, live API authUsually discovered mid-build
Credential expiryleas creds any time. Pro emails you before it lapses.Varies
Over-the-air updatesIncluded, self-hostable, protocol-compatibleIncluded, vendor-hosted
If you stop payingYou keep building. The engine is MIT.Builds stop
iOS needs Apple hardwareYes — everyone’s doesYes

Capabilities compared, not prices. Hosted plans change often, and you should check theirs directly rather than trust a number on our marketing page. Read the sourced EAS comparison. Build Expo apps without EAS. EAS Submit alternative.

Pricing

The engine is free,
and it is finished.

Building, signing, submitting, and updating are open source and always will be. Pro adds the watching — a hosted dashboard and expiry alerts — for $19 a month. Team and Enterprise are roadmap, and what is not built is said plainly.

Available now
Open source
Everything needed to build, sign, submit, and update your app.
$0forever
MIT licensed · available now
Start building
  • Unlimited builds on your own machine
  • Cloud builds on your own GitHub Actions runners
  • Submit to the App Store and Google Play
  • Over-the-air updates, self-hosted
  • leas doctor — preflight every credential in seconds
  • leas creds — see what expires, whenever you run it
  • Setup wizard, generated workflows and secrets script
  • Local dashboard with live build status
  • No account. No build minutes. No seat count.
Available now
Pro
The watching. For when a laptop being closed should not mean nobody is minding the release.
$19/ month
Cancel any time
Upgrade to Pro
  • Everything in Open source
  • Credential expiry alerts to email and Slack, before anything lapses
  • Hosted dashboard — history outlives your laptop
  • Build history across machines and teammates
  • Sign in with GitHub; no new password anywhere
Planned
Team
More than one person with the keys, and someone who asks who shipped what.
$99/ month
Planned · up to 10 seats
Tell us what you need
  • Everything in Pro
  • Release audit trail — who shipped which commit, when
  • Shared credential inventory across apps
  • Role-based access, no key sharing
  • SSO
Planned
Enterprise
Procurement is involved and the answer to "who holds our keys" matters.
Custom
Planned · scoped per customer
Start a conversation
  • Everything in Team
  • Self-host the control plane in your own cloud
  • SCIM provisioning
  • Security review and DPA
  • Named support contact

Full comparison, and what is not built yet

Questions
Do I need a paid plan for over-the-air updates?
No, and you never will. Publishing, promoting, rolling back, and code-signing updates are all in the free tier, and the update server is yours to run. We are not planning to host update delivery — that would be a separate service with its own storage and bandwidth, rather than a tier of this one. If you would rather not run it, several projects host Expo-protocol updates and we would sooner point you at them than half-build it.
What can I actually use today?
Everything required to build, sign, submit, and update, with no account. leas creds will tell you what is about to expire when you run it, and you can schedule that yourself. Pro is the part that keeps watch while you are not there: email and Slack before a credential lapses, and a dashboard that still has your history when the laptop is shut. Team and Enterprise are roadmap.
Can I cancel Pro?
Yes, from your account page, at any time. Cancellation stops the next charge. The period you have already paid for runs to its end, and we do not refund it. Building, signing, and submitting do not depend on the subscription, so they continue either way. The terms say the same thing.
Do you ever see my signing keys?
No, and there is no code path that would let us. Your certificate, provisioning profile, keystore, and API keys live on your machine and in your own repository secrets. The hosted dashboard receives metadata and nothing else: a credential name, an expiry date, and a public certificate fingerprint. Never key material, never a password — there is no endpoint that accepts it, and anything else sent to one is discarded before it is stored.
Is this really free, or free until you have enough users?
The engine is MIT licensed. That licence is irrevocable for the code already published, so the version you have today stays yours whatever happens next. Pro sells the hosted convenience layer — a dashboard that outlives your laptop, and alerts before a credential lapses. It has never sold, and will never sell, the ability to build and ship.

More questions on the pricing page

Own the pipeline that ships your app.

Ten minutes from here to a signed build. Nothing to sign up for, and nothing to hand over.