Xcode GUI without opening Xcode: Build & Ship Mac/iOS Apps via CLI
Original: Building and shipping Mac and iOS apps without ever opening Xcode
Why This Matters
Enables fully automated, scriptable Apple app CI/CD pipelines without IDE dependency — critical for LLM-assisted 'vibe coding' workflows.
Developer Scott Willsey explains how to build, sign, notarize, and ship Mac and iOS apps entirely from the command line using xcodebuild, notarytool, stapler, and XcodeGen — without ever opening Xcode.app's GUI after a one-time initial setup.
Scott Willsey published a technical guide on July 11, 2026, detailing how developers can build and ship Mac and iOS apps without opening the Xcode IDE. While Xcode.app must be installed — because key tools like xcodebuild, notarytool, stapler, and devicectl reside inside it — the GUI itself never needs to be launched after initial setup.
The workflow centers on XcodeGen, a tool installable via Homebrew, which generates and manages .xcodeproj folders from a single project.yml YAML file. This eliminates git repository conflicts caused by Xcode's constant project file modifications. Only the YAML file needs to be committed; the entire .xcodeproj folder can be git-ignored.
For Mac app distribution, a single shell script (scripts/release.sh) handles the full release chain: archive → Developer ID signing → notarization via notarytool → stapling → installation to /Applications. Signing is certificate-and-keychain based, with the key stored in the login keychain and picked up automatically by xcodebuild — no secrets stored in the repository.
One-time setup steps requiring GUI or interactive terminal include: signing into an Apple ID, creating a Developer ID certificate, and storing a notarization password. After that, all builds and deployments are fully headless. Willsey also notes that developers should verify xcode-select points to Xcode.app rather than the standalone Command Line Tools package, which lacks the iOS SDK and notarytool.