Coming soon · Self-hosted Expo build server

Your own EAS Build,
on your own Mac.

Hangar runs eas build --local on hardware you already own. Trigger iOS & Android builds from a dashboard or the CLI, watch them live in the dashboard, and download the artifact when it's done. No per-build cloud fees. No queue.

$ npm i -g @chronsyn/hangar-cli
View source
Drop-in with your eas.json Source encrypted end-to-end Free & open source
flightdeck-mobile
iOS · production · a3f9c12
Building
Receive & decrypt bundle
Install dependencies
Run eas build --local
Publish artifact (.ipa)

The status quo

Cloud builds cost money, time, and control.

Shipping a React Native app means building it constantly. The default answer charges you per build, makes you wait in a shared queue, and asks you to upload your source to someone else's machine.

01

Per-build invoices

Every build burns credits. Costs scale with your release cadence and your team — exactly when you can least afford the friction.

02

Shared queues

Your build waits behind everyone else's. A one-line fix can sit in line for the length of a coffee break before it even starts.

03

Source leaves your control

Your working tree and build cadence are visible to a third party. For some teams that's a non-starter on its own.

How it works

Three steps, on your hardware.

The CLI bundles and encrypts your working tree, your Mac does the build, and the artifact comes back. Nothing leaves your hardware in the clear.

1

Trigger & encrypt

Run hangar build or click Build in the dashboard. The CLI bundles your working tree — minus node_modules — then encrypts and streams it to your server.

2

Build on your Mac

The server decrypts the bundle in the builder process and runs eas build --local --non-interactive for your chosen platform and EAS profile.

3

Watch & download

Streaming logs and per-step progress play out live in the dashboard; from the CLI you track build status to completion. When it's done, download the .ipa, .aab, or simulator build — with OTA install when your deployment has public TLS.

Why Hangar

Control over cost, capacity, and where your code runs.

No per-build bills

Builds run on hardware you already own. Pay for the Mac once, build as often as you like.

No build queue

It's your machine — builds start immediately instead of waiting in a shared cloud queue.

End-to-end encrypted

The bundle is encrypted from the CLI to the builder and stays encrypted at rest. Code never sits in plaintext on disk.

Dashboard and CLI

Submit, track, and download builds from a polished web dashboard or the terminal — with live streaming logs and per-step progress in the dashboard.

Live logs & progress

Watch each build step and stream logs in real time in the dashboard. From the CLI, submit a build and track its status to completion.

Own your hardware

Self-hosted by definition. Your source and build cadence stay on your machine — signing credentials are managed by Expo/EAS, the same as any eas build.

Drop-in with Expo

Uses your existing eas.json profiles. If eas build --local works, Hangar works.

Multi-user, private by user

Each account is its own private workspace — builds and artifacts are visible only to the user who ran them (and the operator). Two teammates building the same app keep separate, private histories. Self-signup (on/off), per-user disable, and a superadmin operator role round it out.

Two surfaces, one workflow

Drive it from the dashboard or the terminal.

Submit builds, track them, and download artifacts from either. Streaming logs and per-step progress are the dashboard's specialty; the CLI keeps you in the terminal and tracks status to completion.

Dashboard

web
flightdeck-mobile
iOS · production · a3f9c12
building
flightdeck-mobile
Android · preview · a3f9c12
queued
flightdeck-mobile
iOS · production · 7b1e0a4
passed

CLI

terminal
$ hangar build --platform ios --profile production --wait
↑ encrypting & uploading bundle… done (3.1s)
→ build a3f9c12 submitted on mac-mini-01
• status: queued → running…
status: succeeded 3m 29s
↓ artifact ready: flightdeck-ios-a3f9c12.ipa
$

Security

Your code never leaves your hardware in the clear.

Encryption isn't a setting you turn on — it's how the bundle moves. The only machine that ever sees your plaintext source is the one you own and operate.

Encrypted in transit

The CLI encrypts your working tree before it ever hits the network, then streams it to your server.

Encrypted at rest

Bundles stay encrypted on disk. Decryption happens inside the builder process — and nowhere else.

No third party sees your source

Self-hosted by definition. Your source and build cadence stay on your hardware. Signing credentials are still managed by Expo/EAS — the same as any eas build.

Honest scope

Self-host the build step. Keep Expo for the rest.

What Hangar does

  • Runs eas build --local on your Mac, for iOS & Android
  • Streams live logs and per-step progress in the dashboard
  • Serves .ipa / .aab / simulator artifacts for download
  • Gives each account a private workspace — builds scoped to the user who ran them, with self-signup, per-user disable, and a superadmin operator

What it leaves to Expo

  • Credential provisioning — keep using EAS
  • App-store submission (eas submit)
  • OTA updates (eas update)
  • Hosted-cloud mode — Hangar is single-host, on your Mac

It assumes your project is already configured so that eas build --local succeeds. We'd rather tell you exactly where the line is than over-promise "replace EAS."

Get started

Turn a Mac you own into a build server.

Install the CLI, point it at your server, log in, and build. The full walkthrough is in the docs.

Launching soon. Hangar is free and open source — the repository goes public shortly.

$ npm i -g @chronsyn/hangar-cli