v1 — iOS and Android, local and cloud

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

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 expiryWatched weekly, opens an issue before it lapsesVaries
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.

Pricing

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.

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 — 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.
Available now
Pro
The watching. For when a laptop being closed should not mean nobody is minding the release.
$19/ month
Cancel any time · 30-day refund
Upgrade to Pro
  • 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
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?
The whole free tier, and all of Pro except email alerts. Building, signing, submitting to both stores, over-the-air updates, the setup wizard, 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?
Ask and we refund it, in full, within 30 days, with no conditions — that is in the terms, not just here. Pro is new and the one known gap is email alerts, which is stated on the plan itself. If you hit anything else, tell us and we will either fix it quickly or give you your money back.
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. If a hosted dashboard arrives, what it receives is metadata: a credential name, an expiry date, and a public certificate fingerprint. Never key material, never a password.
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. Paid plans, if they arrive, will sell the hosted convenience layer — never 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.