xtool: build, sign and install iOS apps on Linux or Windows — no Mac needed
TL;DR
xtool (xtool-org/xtool) is a cross-platform Xcode replacement: it builds SwiftPM packages into iOS apps, signs and installs them on devices, and talks to Apple Developer Services — on Linux, WSL, Windows and macOS.
iOS development has long been tied to the Mac and Xcode, a real barrier for teams on Linux or Windows, or those wanting builds on cheaper CI runners. xtool (xtool-org/xtool) is a cross-platform Xcode replacement: it builds SwiftPM packages into iOS apps, signs them, installs them on devices and works with Apple Developer Services, running on Linux, WSL, Windows and macOS.
Main commands
| Group | Commands | What they do |
|---|---|---|
| Configuration | setup, auth, sdk | Prepare the environment, log in to Apple Developer, manage the Darwin Swift SDK |
| Development | new, dev, ds | Create a SwiftPM project, build & run, work with Developer Services |
| Devices | devices, install, launch | List devices, install an .ipa, launch the app |
Beyond the CLI there's the XKit library so your own app can interact with Apple Developer Services and iOS devices.
A typical workflow
- Install xtool and run
setupto prepare the environment and SDK. - Log in to your Apple Developer account with
auth. - Create a new project with
new(a SwiftPM project). - Plug in an iPhone and run
devto build, sign, install and run on the device. - Repeat: edit code, run again.
Who should care?
- Teams on Linux/Windows: developers can build and install on an iPhone themselves without borrowing a Mac.
- CI: some build steps can run on Linux runners, usually cheaper than macOS runners.
- People working with AI agents: Claude Code running on Linux can now build and run iOS apps in the same edit–build–check loop.
Practical limits
- You still need an Apple Developer account to sign apps.
- Projects must use SwiftPM. Traditional Xcode projects need converting.
- Some things remain tied to Apple's ecosystem: App Store submission, UI tests, Interface Builder.
- A community tool: behaviour may change with Apple's updates; try it on a small project before adopting it in your main workflow.
A quick evaluation
- Pick a small app or a sample SwiftPM app.
- Try build–install–run on a real device.
- Note the manual steps and where things failed.
- Decide: use it for daily development, for CI, or only for experiments.
How to apply it
- Dev: try xtool on a small SwiftPM project before using it for your main app.
- Tech Lead: weigh Mac/macOS runner costs against the effort of maintaining an alternative workflow; keep Xcode as the fallback for releases.
- PM: xtool can lower the hardware barrier for new team members, but it doesn't fully replace Apple's standard release process.