// macOS menu bar app · free & open source
Build and run Xcode projects from the menu bar.
Xcode Pilot drives xcodebuild, simctl and devicectl for you. Pick a scheme and a device, press ⌃⌥⌘R in any app, and read errors and print output right in the panel. Xcode.app can stay closed.
download for macOS ↓source on GitHub
- macOS 14+
- Xcode 26
- MIT license



// the panel
Everything you open Xcode for
01/03
Errors and warnings
With the code snippet from the compiler and a filter by type. Copy an issue as file:line:col: error: …, copy all of them at once, or open it at the right line in Xcode, VS Code, Cursor or Zed. After the build the list is reconciled with the .xcresult, so nothing gets lost or duplicated.

02/03
Build log
Condensed to tasks, diagnostics and the result, or in full with ⌘F search. Copy it in one click or open the full log as a file.

03/03
Console of the running app
Run builds, installs and launches the app on a simulator, a connected device or the Mac, and stays attached: print output streams here. The filter works like Xcode’s — Return turns the text into a token, a token that starts with a minus hides lines.

// features
The small things add up
01 Any project
.xcodeproj,.xcworkspaceor a Swift package. Recent projects are remembered, and the ones Xcode opened lately are picked up from DerivedData.02 Scheme, destination, configuration
Just like Xcode’s toolbar. Destinations come from
xcodebuild -showdestinations, so the list only shows what the scheme can actually run on.03 Archives
Go where Xcode puts them and show up in the Organizer right away. Export for App Store Connect, Ad Hoc, Development, Enterprise or Developer ID, or upload to App Store Connect from the panel.
04 Devices and simulators
A tab with simulators (boot, shut down, show) and connected devices, any of which can be the run destination. Organizer and Devices and Simulators are one click away.
05 Notifications and sounds
A notification when a build finishes while the panel is closed, optional sounds, launch at login.
06 More than one Xcode
Pick the Xcode builds use when several are installed. Detach the panel into its own window when you want it to stay open.
// shortcuts
Hands stay on the keyboard
from any app
- ⌃⌥⌘Rrun
- ⌃⌥⌘Bbuild
- ⌃⌥⌘.stop
- ⌃⌥⌘Xshow or hide the panel
in the panel
- ⌘Rrun
- ⌘Bbuild
- ⌘.stop
- ⌘Utest
- ⇧⌘Kclean build folder
// under the hood
Just Apple’s command-line tools
No private frameworks and no Xcode plugins. Xcode Pilot runs the tools you would run in Terminal and parses their output. It shares DerivedData with Xcode, so incremental builds stay incremental in both.
Permissions
- Accessibility — only for the Organizer and Devices and Simulators buttons. Xcode has no URL scheme or AppleScript command for these windows, so the app presses their items in Xcode’s Window menu.
- Notifications — asked for with the first build-finished notification.
$ xcodebuild build -project Forecast.xcodeproj -scheme Forecast \
-destination id=4F2A…C91E -resultBundlePath Build.xcresult
** BUILD SUCCEEDED **
$ xcrun xcresulttool get build-results --path Build.xcresult --compact
$ xcrun simctl install 4F2A…C91E Forecast.app
$ xcrun simctl launch --console-pty 4F2A…C91E dev.example.Forecast
[network] GET /v1/forecast?city=Lisbon
[network] 200 OK forecast?city=Lisbon (142 ms)// good to know
Limitations
- While Xcode itself is building the same project, a parallel build from Xcode Pilot waits for the DerivedData lock: both share one folder.
- Packages with macros and plugins that were never trusted in Xcode won’t build with
xcodebuild. For those, settings have “Skip macro and plugin validation”. - Running on the Mac as “Designed for iPad” isn’t supported; such destinations are hidden.
- Build progress is an estimate based on the last successful build of the same scheme:
xcodebuilddoesn’t report the total number of tasks.
// install
Free and open source
Download the notarized DMG, drag Xcode Pilot to Applications and open it: it lives in the menu bar. It is released under the MIT license.
// or build it from source with Xcode 26
# project generators and the linter
brew install xcodegen swiftgen swiftlint
git clone https://github.com/ivoneug/xcode-pilot.git
# generates XcodePilot.xcodeproj
cd xcode-pilot/Scripts && ./generateProject.sh
open ../XcodePilot.xcodeprojSet your team in Scripts/project.env (DEVELOPMENT_TEAM_ID) and run the XcodePilot scheme. Signing with your team keeps macOS from resetting the Accessibility permission after every rebuild.




