Skip to main content

For Windows and Linux developers

Build iOS apps without owning a Mac

Capgo Build compiles and signs your Capacitor iOS app on cloud Mac machines. Run one CLI command from Windows, Linux, or CI, and the signed build uploads to App Store Connect for TestFlight.

2–3 min
typical native build
iOS + Android
from the same CLI
TestFlight
direct upload to App Store Connect
Capgo Build
npx @capgo/cli@latest build init --platform ios
npx @capgo/cli@latest build request --platform ios
# signed build runs on an ephemeral Mac runner
# logs stream back to your terminal

Cloud Mac machines

iOS builds run on dedicated Mac mini M4 machines. You start them from the computer you already use.

Signed and uploaded

The build is signed with your certificate and uploaded to App Store Connect, ready for TestFlight.

The Problem

Xcode only runs on macOS

No Mac, no iOS build

Apple's build tools need macOS. A developer on Windows or Linux cannot compile or sign an iOS build on their own machine.

Signing lives on one laptop

Certificates and profiles often sit on one person's Mac. When that person is away or a profile expires, the release waits.

Self-hosted macOS CI is its own project

A rented macOS runner still needs Xcode updates, Fastlane lanes, signing secrets, and debugging when Apple changes something.

The hidden work

What a release build needs besides a Mac

Buying a Mac only solves the hardware part. You still need Apple account setup, signing files, and build tooling that someone keeps working.

1

Apple account setup

An Apple Developer account with admin rights, a bundle ID, an App Store Connect app record, and an API key for uploads.

2

Signing files and profiles

A distribution certificate exported as a .p12, a provisioning profile for each bundle ID, and renewals when they expire.

3

Build tooling

The right Xcode version, CocoaPods or Swift Package Manager, Fastlane, and a place to keep secrets for CI.

How it works

How Windows and Linux developers ship iOS with Capgo

You need a Capacitor app, a Capgo account, and an Apple Developer account. Every command below is from the Capgo CLI docs.

  1. Set up iOS signing once

    The onboarding reads your Capacitor project, creates the distribution certificate and provisioning profile, and saves them on your machine.

    npx @capgo/cli@latest build init --platform ios
    iOS build guide
  2. Or save signing files you already have

    If your team already has a certificate and profile, save them with your App Store Connect API key. They stay in a local credentials file.

    npx @capgo/cli@latest build credentials save --platform ios \
      --apple-team-id YOUR_TEAM_ID \
      --apple-key ./AuthKey_XXXXX.p8 \
      --apple-key-id YOUR_KEY_ID \
      --apple-issuer-id YOUR_ISSUER_ID \
      --certificate ./certificate.p12 \
      --ios-provisioning-profile ./profile.mobileprovision
    Managing credentials
  3. Request the build

    Sync your web build into the iOS project, then request the build. Logs stream to your terminal, and the signed build uploads to App Store Connect for TestFlight.

    npx cap sync ios
    npx @capgo/cli@latest build request com.example.app --platform ios
    First build guide
  4. Run the same command in CI

    Export your saved credentials as CI secrets with build credentials manage, set CAPGO_TOKEN, and run build request in GitHub Actions, GitLab CI, or any runner.

    npx @capgo/cli@latest build credentials manage
    # in your CI job
    npx @capgo/cli@latest build request com.example.app --platform ios
    GitHub Actions setup

The Solution

What Capgo Build handles for you

Native builds run in the cloud when native code changes. Web changes keep shipping as live updates between store releases.

Cloud Macs only when you build

iOS builds run on dedicated Mac mini M4 machines with Xcode installed. Your Windows or Linux laptop, or a CI runner, sends the request from the terminal.

Capgo Build overview

Guided iOS signing

build init creates the distribution certificate and provisioning profile for you. It uses an App Store Connect API key, which you create in your browser when you are on Windows or Linux.

iOS build guide

Same command locally and in CI

Save credentials once, then run build request from a terminal, GitHub Actions, GitLab CI, or any other pipeline.

build command reference

Native builds plus live updates

Use Capgo Build when plugins, permissions, icons, or the Capacitor version change. Ship JavaScript, CSS, and asset changes as live updates after users install the store build.

Live update or native build?

Trust model

Use cloud hardware without handing over your code and keys

Credentials stay on your machine or in your CI secrets. Capgo only holds them while a build runs.

Only the native project is uploaded

The CLI uploads the native platform folder and native dependencies. Your full repository stays on your machine.

Logs stream to your terminal

Build logs stream live while the build runs and are not stored on Capgo servers.

Credentials exist only during the build

Certificates and profiles are used in memory during the build and deleted when it finishes. Each build runs in an isolated environment that is destroyed afterwards.

Apps built with Capacitor

Operational apps should not wait on one local Mac

School, transport, and support apps still need signed mobile releases when the team is mostly web, support, or operations. Hosted build workflows remove the single-machine bottleneck while keeping signing steps repeatable.

IRIS ParentMail app icon Education

IRIS ParentMail

School communications app where non-native teams still need reliable signed releases.

Google Play installs
1.2M
Store rating
2.8
KAI Access: Train Booking App app icon TRAVEL AND LOCAL

KAI Access: Train Booking App

Transport booking app where release handoff should not depend on one developer machine.

Google Play installs
13.5M
Store rating
3.6
Técnico Virtual – Suporte Técn app icon Tools

Técnico Virtual – Suporte Técn

Support utility where operations teams need repeatable mobile build records.

Google Play installs
10.3M
Store rating
4.3

Customer proof

What teams shipping with Capgo say

5.0/5 rated by developer teams 9,400+ teams Read reviews

sikafanka

Design, radius 5

“Capgo Build helped us simplify our Capacitor app release process. We can build and ship iOS and Android apps from one clear workflow.”

Portrait of Mikołaj Wilczek

Mikołaj Wilczek

Principal Mobile Platform Engineer, Tellent

“We originally discovered Capgo through its plugins, and that turned out to be a great entry point into a much more efficient release process for our team.”

FAQ

Questions about building iOS without a Mac

What Windows and Linux developers ask before their first cloud iOS build.

Do I need a Mac at any point?

Not to compile, sign, or upload. Builds run on Capgo's Mac mini M4 machines. You still need an Apple Developer account. On Windows or Linux, you create the App Store Connect API key in your browser, then the CLI handles certificates and profiles.

iOS build guide

How long does an iOS build take?

A typical native build takes 2–3 minutes. Logs stream to your terminal while it runs, so you see errors as they happen.

First build guide

Can the build go straight to TestFlight?

Yes. With an App Store Connect API key in your credentials, the signed build uploads to App Store Connect, where you test it in TestFlight and submit it for App Store review. Add --output-upload if you also want a download link for the IPA.

Build configuration

Where are my certificates stored?

On your machine, in ~/.capgo-credentials/credentials.json by default, or in your CI secrets. They are sent to Capgo only for the duration of a build and deleted afterwards.

Managing credentials

Do I need a new build for every change?

No. Plugin, permission, icon, and Capacitor version changes need a new native build. JavaScript, HTML, CSS, and asset changes can ship as live updates to users who already have the store build.

Live update or native build?

Ship iOS without buying a Mac

Run your first signed iOS build during the 14-day free trial, then add Android, CI, and live updates when you need them.