Automate iOS builds, tests, and simulators
Same commands locally and in CI.
FlowDeck turns the iOS build loop into a stable command surface. Build, run, test, and collect logs with JSON output you can plug into automation.
Automation usually means glue scripts
You fight flags and parsers instead of shipping.
Most pipelines rely on:
- Custom destination strings per runner
- Simctl scripts to boot and erase
- Regex for errors and test output
- Manual log capture and filtering
- Different commands for local vs CI
That is not automation. That is babysitting.
Side by side
| Pipeline step | Scripted flow | FlowDeck |
|---|---|---|
| Pick destination | Construct a destination string | -S "iPhone 16" or -D "iPhone" |
| Build and run | xcodebuild + simctl install + launch | flowdeck run |
| Run tests | Long xcodebuild flags | flowdeck test --json |
| Stream logs | Spawn log stream and parse | flowdeck logs |
| Machine output | Regex and cleanup | --json |
One command surface everywhere
Custom scripts:
bashsimctlxcprettylog streamawksed...
FlowDeck:
contextbuildruntestlogsclean
Same locally. Same in CI.
Automation-friendly output
Unstructured output:
** TEST FAILED **
... 300 lines of logs ...
Test Suite 'MyAppTests' failed
Hard to parse. Easy to miss.
FlowDeck output:
{
"type": "test_summary",
"passed": 41,
"failed": 1
}
Automation should be deterministic. JSON makes it so.
What does not change
Your
.xcodeproj and .xcworkspace
Your signing and provisioning
Your Xcode toolchain
FlowDeck automates the loop. It does not replace Xcode.
Automate the iOS build loop
7-day free trial. No credit card required.
curl -sSL https://flowdeck.studio/install.sh | sh