Skip to content

Deploy to this phone

Your agent just built an iOS app. It is sitting on a Mac somewhere. You are not.

Deploy to this phone builds the project on the host and installs the result on the iPhone you are holding — over the network, with no cable, no TestFlight round trip and no App Store review.

Available on macOS hosts only.

From the iPhone app, pick the Xcode project in the workspace and start a deploy. The host builds it, packages it, and your phone offers to install it.

The build runs on the host’s Xcode with the host’s signing setup. That is where the requirements come from.

Host builds its Xcode, its signing Signed URL short-lived, plus manifest Your iPhone installs it the .ipa manifest Apple's own install mechanism — no TestFlight, no sideloading trick
Three steps, all on machines you own, ending in the standard iOS install prompt. Artefacts expire after 48 hours.
An Apple developer account signed in to Xcode on the host the build has to be signed
Your iPhone registered with that account a provisioning profile has to include it
An Xcode project or workspace in the Offsite workspace Offsite scans a few levels deep for it
Push notifications registered from this iPhone the install link is delivered as a push; if the host reports no registration, reconnect or restart the app once

A free personal team works, with Apple’s usual limits: apps expire after seven days and some capabilities are unavailable.

Signing is where deploys fail, and the failure is reported as a specific kind rather than a wall of build log:

  • No signing account — Xcode on the host has no Apple ID.
  • Free team limitation — the project uses a capability a personal team cannot sign.
  • Device not registered — this iPhone is not in the provisioning profile.
  • Generic signing failure — everything else, with the tail of the log.
  • Deploy state lives in ~/.offsite/deploys/ on the host. Builds use a private derived-data directory (~/.offsite/xcode-derived-data) rather than the shared Xcode one, both to avoid macOS App Management restrictions and to keep your own Xcode caches untouched.
  • Install path: the IPA is uploaded to a short-lived signed URL, a manifest is published and verified, and the phone installs through itms-services://?action=download-manifest. Apple’s own mechanism, no sideloading tricks.
  • Limits: IPA up to 500 MB, artefacts expire after 48 hours, the last 10 deploy jobs are retained.
  • Project discovery scans up to 3 directory levels and skips .git, node_modules, Pods, DerivedData, Carthage, .build and .swiftpm.
  • Deploys preserve the installed app’s container — Offsite does not uninstall first, so your app’s data survives a redeploy.
  • A failed deploy keeps its log and a retry control at the end of the card, so a second attempt is one tap once you have fixed the cause.