Ship it yourself.
Keep the keys.
leas 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 already own. No build-minute meter. No vendor holding your certificate.
MIT licensed engine · no account required to build
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.
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.
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.
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.
Three commands, and the pipeline is yours. The configuration is a file in your repository; the machines are ones you already have.
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.
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.
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.
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.
leas dashboard — runs on your machine. Sample data.
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 →
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.
| leas | Hosted build service | |
|---|---|---|
| Who holds your signing keys | You. There is no upload path. | The vendor, by necessity |
| Where builds run | Your Mac, or runners you rent | Vendor-managed shared fleet |
| Build cost | No per-minute charge from us | Metered build minutes |
| Queue time | None locally — it starts when you press enter | Depends on plan and load |
| Preflight checking | leas doctor — credentials, identifiers, live API auth | Usually discovered mid-build |
| Credential expiry | Watched weekly, opens an issue before it lapses | Varies |
| Over-the-air updates | Included, self-hostable, protocol-compatible | Included, vendor-hosted |
| If you stop paying | You keep building. The engine is MIT. | Builds stop |
| iOS needs Apple hardware | Yes — everyone’s does | Yes |
Capabilities compared, not prices. Hosted plans change often, and you should check theirs directly rather than trust a number on our marketing page.
The engine is free,
and it is finished.
Building, signing, submitting, and updating are open source and always will be. The paid tiers are roadmap — listed so you can tell us which parts matter. Nothing takes payment yet, and what is not built is said plainly.
- 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 — expiry check you can run or schedule
- Setup wizard, generated workflows and secrets script
- Local dashboard with live build status
- No account. No build minutes. No seat count.
- Everything in Open source
- Credential expiry alerts to Slack, before anything lapses
- Hosted dashboard — history outlives your laptop
- Build history across machines and teammates
- Sign in with GitHub; no new password anywhere
- Email alerts — the moment our sending domain verifies
- Everything in Pro
- Release audit trail — who shipped which commit, when
- Shared credential inventory across apps
- Role-based access, no key sharing
- SSO
- Everything in Team
- Self-host the control plane in your own cloud
- SCIM provisioning
- Security review and DPA
- Named support contact
Do I need a paid plan for over-the-air updates?
What can I actually use today?
leas doctor and leas creds are MIT licensed and run on your own hardware. Pro adds the hosted dashboard, build history across machines, and expiry alerts to Slack. Email alerts are the one thing still waiting on our sending domain — it is listed as pending on the plan rather than hidden. Team and Enterprise are roadmap.What happens if I pay and something does not work?
Do you ever see my signing keys?
Is this really free, or free until you have enough users?
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.