Docs

Set up exori Bridge on your Mac

Bridge is the Mac half of exori. It runs in your menu bar, talks to your iPhone over an end-to-end encrypted relay, and drives the toolchain you already have — git, Xcode, Fastlane, Gradle — on your own machine. Nothing about your signing setup leaves your Mac. This guide takes you from a clean Mac to a paired Bridge with a project it can build.

About 20 minutes

What you need

RequirementWhy
macOS 13 Ventura or laterApple silicon and Intel are both supported. Bridge is a menu bar app with no Dock icon.
The exori iPhone appBridge is one half of a pair. It does nothing useful until a phone claims its pairing code.
Xcode + command line toolsRequired for iOS builds. Bridge calls xcodebuild and Fastlane rather than reimplementing them.
HomebrewThe install path for fastlane and xcodegen. Bridge looks for tools in Homebrew's directories explicitly.
Android Studio or the Android SDKOnly if you build Android. Skip it for iOS-only work.
Working git auth on the MacBridge clones and pulls with your existing SSH agent or credential helper.

Install Bridge

  1. Download the disk image

    Grab the current build from exori.app/download. Every release is signed with our Developer ID and notarized by Apple, so it opens without a Gatekeeper override.

  2. Drag exori Bridge to Applications

    Open the DMG and drag the app across, the usual way.

  3. Launch it and look up, not down

    Bridge has no Dock icon — it lives in the menu bar. Click the menu bar item to open the main window. Closing that window never quits Bridge; it keeps running so builds can be triggered while you work elsewhere.

  4. Leave Launch at Login on

    It defaults to on, which is what you want: a Bridge that is not running is a Bridge your phone cannot reach. You can turn it off in Settings.

Install the toolchain

Bridge deliberately installs nothing on your behalf. It checks whether each tool is on the PATH and tells you the exact command to run when one is missing. Work through the ones that apply to you.

  1. Xcode and its command line tools

    Install Xcode from the Mac App Store, then point the command line tools at it and accept the license. Open Xcode once by hand as well — the first launch installs additional components that a headless xcodebuild cannot.

    xcode-select --install
    sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
    sudo xcodebuild -license accept
  2. Homebrew

    If you do not already have it, install Homebrew — it is how the remaining tools get onto your machine.

    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
  3. Fastlane

    Fastlane is what actually archives, signs, and uploads your app. Bridge calls its lanes; it does not replace it.

    brew install fastlane
  4. XcodeGen, for scaffolded Swift projects

    Only needed if you create native Swift projects from the phone. The templates are XcodeGen-based, so the project file is generated from project.yml rather than committed.

    brew install xcodegen
  5. Android Studio, for Android builds

    Install Android Studio, open it once, and let it install the SDK and platform tools. A JDK ships with it. Skip this entirely if you only build iOS.

  6. Flutter or Node, if that is your stack

    Bridge detects the project type from the repo and calls the matching toolchain. Install the Flutter SDK or Node exactly as you would for desk-based development.

Pair your iPhone

Pairing is a one-time phone-to-Mac handshake, not something you repeat per project.

  1. Open Pairing in Bridge

    Select Pairing in the sidebar. Bridge mints a short-lived pairing code and renders it as a QR code.

  2. Scan it from the phone

    On your iPhone, go to Settings → Pair with Bridge and scan the QR code. Bridge polls until the phone claims the code, then flips to its paired state.

  3. Check the tunnel says ready

    The paired state shows a live tunnel status row. ready means Bridge is connected to the relay; peer online means your phone is connected too.

Add a project

Bridge keeps its own list of repos it is allowed to touch. Nothing is scanned or indexed until you add it.

  1. Projects → Add

    Give the project a name and pick a branch. You have two ways to supply the code:

    • Existing folder — point Bridge at a repo already on disk.
    • Clone from URL — paste a git URL, pick a parent folder, and Bridge clones it for you. Handy when the repo is one your phone already knows about: the app's Project Settings → Bridge section will hand you the exact clone command to paste in.
  2. Hit Pull Now once

    The first successful pull is also what runs project-type detection. Until then the table shows *Not detected* and an unknown Fastlane state — that is expected, not a fault.

  3. Confirm the detected type

    Detection reads signals at the repo root: pubspec.yaml means Flutter, an ios/ folder with a Podfile plus package.json means React Native, and any .xcodeproj means Swift native. A deeply nested Xcode project will not be detected — detection is deliberately flat.

Store your credentials

Credentials live in the macOS Keychain on your Mac — one Keychain item per field, no plaintext config files, nothing synced to us. Bridge stores and uses what you give it; it never provisions anything on your behalf.

KindWhat goes in it
AppleApp Store Connect API key (Issuer ID, Key ID, the .p8 private key) plus your Team ID.
GooglePlay Console service account JSON, and the path to your upload keystore on this Mac.
GitA personal access token, or an SSH key if a repo specifically needs one.
AIProvider API keys, for bring-your-own-key setups.

Each kind is global by default — one App Store Connect key covers every app under your team, so you enter it once. A specific project can opt into its own credentials from the Project-specific overrides section when you need to, and a project that has opted in will never silently fall back to the global one.

Run Check Setup

Rather than discovering one missing piece per failed build, ask Bridge up front. Select a project and choose Check Setup from the toolbar or the row's context menu, then pick a platform.

  • Fastlane is on the PATH
  • xcodebuild is on the PATH (iOS)
  • This project has a fastlane/Fastfile with a beta lane
  • Distribution credentials for this platform are complete
  • A development team is configured in the project file (iOS)
  • An Apple Distribution certificate is installed (iOS)
  • The bundle ID is registered with Apple (iOS)
  • An App Store Connect app record exists for it (iOS)

Each failing row carries a fix. Missing Fastlane setup has a real button that writes a starter Fastfile and Appfile. The rest — a Terminal command, a credential only you have, a one-time Apple Developer Portal step — are instructions with a link, because they are not things Bridge can legitimately do for you.