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.

The host builds and signs the app and uploads it to Offsite's file storage at an unguessable address; the iPhone installs it through Apple's own install prompt, and the upload is deleted after 48 hours.
An Apple developer account signed in to Xcode on the hostthe build has to be signed
Your iPhone registered with that accounta provisioning profile has to include it
An Xcode project or workspace in the Offsite workspaceOffsite scans a few levels deep for it
Push notifications registered from this iPhonethe 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 host uploads the IPA with a 30-minute upload token to Offsite’s file storage, at an unguessable address; 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.