Skip to content

Mobile CI/CD that runs on your Mac

Push a tag.
Your app ships.

Mili Ship builds, signs and publishes your Flutter and React Native apps to Google Play and TestFlight — on the Mac you already have. No build server, no YAML, no paid CI minutes.

  • Free & open source
  • macOS 13+
  • Flutter · React Native · Expo
  • No fastlane
Mili Ship — release/1.4.0+52
~/app $ git tag release/1.4.0+52 && git push --tags
  1. Checkout release/1.4.0+52
  2. Install dependencies
  3. Android · shorebird release
  4. Publish to Google Play
  5. iOS · archive & sign
  6. Upload to App Store Connect

Shipped 1.4.0 (52)to Google Play and TestFlight

Works with the tools you already ship with

  • Flutter
  • React Native
  • Expo
  • Shorebird
  • Google Play
  • App Store Connect
  • TestFlight
  • GitHub Actions

How it works

From git tag to TestFlight in three steps

Set it up in minutes with a guided wizard. After that, releasing is a git command.

  1. 01

    Point it at your repo

    Paste a Git URL. Mili Ship clones it, finds your Flutter or React Native app — even deep in a monorepo — and fills in the package name, bundle ID, team ID and flavors.

  2. 02

    Connect the stores once

    Add a Google Play service account and an App Store Connect API key. Test each connection with one click. Passwords stay in the macOS Keychain.

  3. 03

    Push a tag

    git tag release/1.4.0+52 && git push --tags. Mili Ship checks it out, builds, signs and publishes both platforms — and tells you when it lands.

The app

Every tag, every build, one window

See your release tags, their versions and how each deployment went. Deploy any tag with one click, or let new tags ship themselves.

Mili Ship showing an app's release and patch tags, each with its version, commit, date and a Succeeded deployment status

Features

Everything a mobile release needs. Nothing it doesn’t.

The whole release pipeline — checkout, dependencies, build, signing, versioning and store upload — in one native Mac app.

  • Flutter and React Native

    Flutter with flutter or Shorebird, React Native with Gradle and xcodebuild — bare or Expo. npm, yarn, pnpm, bun, melos and FVM all work.

  • Shorebird code push

    release/… tags go to the stores; patch/… tags ship an over-the-air Shorebird patch.

  • Signing, handled

    Google Play App Signing with an upload key Mili Ship can generate for you. Automatic iOS signing with your App Store Connect API key.

  • Versions your way

    Require the tag to match pubspec.yaml or build.gradle, take the version from the tag, or auto-increment the build number from the stores.

  • Live in GitHub Actions

    One click installs GitHub’s runner on your Mac. Every tag becomes a GitHub Actions run with the full log — free, no Actions minutes.

  • Lives in your menu bar

    Close the window and it keeps watching tags and running the build queue. Notifications tell you when a release lands.

  • Private by design

    Your code, keystores and API keys never leave your Mac. Secrets are masked in every log.

  • Straight to the stores

    Talks to the Google Play Developer API and App Store Connect directly: tracks, staged rollouts, release notes, TestFlight.

GitHub Actions

Your whole team sees every release — in GitHub

Mili Ship installs GitHub’s official self-hosted runner, adds one small workflow to your repository and streams each build into GitHub Actions. Your teammates push a tag and watch it ship — no Mac access needed.

  • Free on your own Mac — no GitHub Actions minutes, even for private repos
  • Starts the moment a tag is pushed; Deploy buttons in Mili Ship start runs too
  • Every step as a collapsible group, failures as annotations, a summary at the end
  • Cancel in GitHub stops the build; jobs wait while your Mac sleeps

Deploy release/1.4.0+52

Mili Ship · push by a teammate · self-hosted

Success
  1. Checkout release/1.4.0+523s
  2. Resolve version1s
  3. Install dependencies38s
  4. Android · shorebird release4m 12s
  5. Android · publish to Google Play (internal)21s
  6. iOS · archive5m 48s
  7. iOS · upload to App Store Connect52s

Shipped 1.4.0 (52)

Google Play: versionCode 52 → internal · App Store Connect: in TestFlight

Compare

A fastlane and hosted-CI alternative for small teams

If you ship from one Mac anyway, you don’t need to rent another one — or maintain a Fastfile.

Swipe the table sideways to compare →

Mili Ship compared with hosted mobile CI and hand-written fastlane scripts
Mili ShipHosted mobile CIfastlane scripts
Where builds runYour MacThe provider’s MacsWherever you set it up
CostFree, open sourcePer build minute or planFree + your CI costs
SetupGuided wizard that reads your repoYAML + uploaded secretsRuby, Fastfile, plugins
Signing keys stay with you
Flutter, Shorebird, React Native, ExpoVia plugins
Runs visible in GitHub ActionsSome providersIf you wire it up
Many builds in parallelOne Mac, one at a timeDepends on your CI

FAQ

Questions, answered

Mili Ship is a free, open-source mobile CI/CD app for macOS. When you push a git tag, it checks out your Flutter or React Native app, builds it, signs it and publishes it to Google Play and App Store Connect / TestFlight — on your own Mac.

Ship your next release with a git tag

Free and open source. Your Mac, your keys, your pipeline.