
Before you start
- macOS VMs: Devin’s sessions need to run on macOS. If you’re on a Dedicated SaaS deployment, ask your account team to enable macOS VMs. See macOS support.
- A repository: create an empty repository (for example,
habit-tracker) and give Devin access to it through your Git integration. - Desktop mode: turn on Enable desktop mode in Settings > Customization so Devin can interact with the Simulator and record its testing. See Computer Use.
macOS sessions use the same amount of usage as Linux sessions. There is no macOS surcharge.
Step 1: Prompt Devin to build the app
Start a new session on your chosen repository and choose macOS from the platform menu below the prompt box. Xcode, the iOS Simulator, and Homebrew are preinstalled, so there’s nothing to configure first.In Slack, add the
!mac bang command to your message. Through the API, set platform: "macos" when you create a session.- Names the platform version and frameworks, so Devin doesn’t guess the deployment target or architecture.
- Names the simulator device, so build commands use a destination that exists on the VM.
- Describes a concrete verification flow, so Devin tests the behavior you care about instead of only checking that it compiles.
Step 2: Watch Devin build and test
Devin works through the task much like an iOS developer would:-
Scaffolds the project: writes
project.yml, the SwiftUI views, the habit model, and the test target, then runsxcodegen generate. -
Builds and fixes errors: runs
xcodebuildfrom its shell, reads the compiler output, and fixes errors until the build and tests pass. -
Runs the app in the Simulator: boots the device and installs and launches the build:
- Tests the flow you described: taps through the app with Computer Use, checks the result on screen, and records the run.
- Opens a pull request with the summary and screenshot.
Step 3: Review and iterate
Review the pull request as you would any other. Check that the screenshot and recording match what you asked for. Then keep building in the same session with follow-up prompts:Step 4: Ship a beta to TestFlight
Once the app works in the Simulator, Devin can archive it, sign it, and upload the build to TestFlight so testers can install it on real devices. This needs some one-time setup that you do yourself. Upload iOS builds to TestFlight covers each step:- Set up App Store Connect: accept agreements, register the bundle ID, create the app record, create a beta group, and answer export compliance.
- Create an App Store Connect API key and download its
.p8file. - Add Devin secrets:
ASC_KEY_ID,ASC_ISSUER_ID,ASC_PRIVATE_KEY, andAPPLE_TEAM_ID. - Allow network access to Apple’s servers if your organization uses a restricted network policy.
Use the same bundle ID in
project.yml and in App Store Connect. If Devin picked a placeholder bundle ID in Step 1, ask it to update the project first.xcodebuild archive, and uploads it with xcodebuild -exportArchive. It then adds the processed build to the beta group. To reuse these steps without repeating them in every prompt, add a testflight entry to the blueprint’s knowledge section. See Save the steps in your blueprint.
Tips
- Pin the toolchain: macOS images include more than one Xcode version. Use
DEVELOPER_DIRorxcode-selectin the blueprint to choose one. See Selecting an Xcode version. - Store credentials as secrets: App Store Connect API keys, signing certificates, and private package registry tokens belong in Secrets. Devin reads them as environment variables.
- Allow package registries: if your organization uses a restricted network policy, make sure the macOS allowlist includes Swift Package Manager, CocoaPods, or any private registries your app uses. See Network access.
- Restart the Simulator after a wake: when a session sleeps and wakes, files survive but running processes don’t. Ask Devin to boot the Simulator again before testing.
- Ask for evidence: ask for screenshots or a recording of specific screens so you can check the UI without running the app yourself.
Limitations
- Devin runs apps on simulators, not physical iPhones or iPads. To test on a device, install a TestFlight build.
- Timing and profiling results inside a VM don’t reflect real device performance.
- Containers run under software emulation on macOS VMs, so container-heavy work is slow.
Next steps
TestFlight uploads
App Store Connect setup, API keys, and secrets for uploading builds
macOS support
Blueprint options, preinstalled tools, and troubleshooting for macOS sessions
Testing and recordings
How Devin tests your app and records the results

