Tools

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

GroupCommandsWhat they do
Configurationsetup, auth, sdkPrepare the environment, log in to Apple Developer, manage the Darwin Swift SDK
Developmentnew, dev, dsCreate a SwiftPM project, build & run, work with Developer Services
Devicesdevices, install, launchList 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

  1. Install xtool and run setup to prepare the environment and SDK.
  2. Log in to your Apple Developer account with auth.
  3. Create a new project with new (a SwiftPM project).
  4. Plug in an iPhone and run dev to build, sign, install and run on the device.
  5. 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

  1. Pick a small app or a sample SwiftPM app.
  2. Try build–install–run on a real device.
  3. Note the manual steps and where things failed.
  4. 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.

Sources & references

  1. README xtool
  2. Swift Forums