FlowDeck CLI provides a comprehensive set of commands for managing Xcode projects, simulators, devices, and builds from the command line.
Command Structure
flowdeck <command> [subcommand] [options]
Quick Reference
Build & Run
| Command | Description |
|---|
init | Save project settings (workspace, scheme, simulator) |
context | Discover project structure (workspace, schemes, simulators) |
build | Build the project for simulator, device, or macOS |
run | Build and launch the app on simulator, device, or macOS |
test | Run unit and UI tests (alias for test run) |
test run | Run unit and UI tests |
test discover | Discover available tests without building |
clean | Clean build artifacts and Xcode caches |
Legacy aliases like ctx, log, sim, dev are still supported for backward compatibility but are hidden from help output.
App Management
| Command | Description |
|---|
apps | List apps launched by FlowDeck |
logs / log | Stream app logs |
stop | Stop a running app |
Simulator Management
| Command | Description |
|---|
simulator list | List available simulators |
simulator boot | Boot a simulator |
simulator shutdown | Shutdown a simulator |
simulator open | Open Simulator.app |
simulator screenshot | Capture a screenshot |
simulator erase | Reset simulator to factory |
simulator clear-cache | Clear simulator caches |
simulator create | Create a new simulator |
simulator delete | Delete a simulator |
simulator prune | Delete unused simulators |
simulator runtime list | List installed runtimes |
simulator runtime create | Download and install a runtime |
simulator runtime delete | Remove a runtime |
simulator runtime prune | Delete simulators for a runtime |
simulator device-types | List available device types |
Device Management
| Command | Description |
|---|
device list | List connected devices |
device install | Install app on device |
device uninstall | Remove app from device |
device launch | Launch app on device |
Project Management
| Command | Description |
|---|
project schemes | List schemes in workspace |
project configs | List build configurations (Debug, Release, etc.) |
project packages list | List installed Swift packages |
project packages add | Add a new package dependency |
project packages remove | Remove a package dependency |
project packages resolve | Resolve Swift Package dependencies |
project packages update | Update packages to latest versions |
project packages clear | Clear package cache (SourcePackages) |
project sync-profiles | Sync provisioning profiles via build |
Utilities
| Command | Description |
|---|
license status | Check license status |
license activate | Activate license on this machine |
license deactivate | Deactivate license |
update | Check for and install updates |
changelog | View release notes and changes |
For CI/CD environments, set the FLOWDECK_LICENSE_KEY environment variable instead of activating.
Common Options
Most commands support these options:
| Option | Short | Description |
|---|
--json | -j | Output as JSON (for automation) |
--workspace <path> | -w | Path to .xcworkspace or .xcodeproj |
--scheme <name> | -s | Build scheme name |
--simulator <name> | -S | Simulator name/UDID |
--device <name> | -D | Physical device name/UDID, or “My Mac” for macOS |
--configuration <name> | -C | Build configuration (Debug/Release) |
--project <path> | -p | Project directory |
--verbose | -v | Show detailed output |
--config <path> | -c | Load settings from config file |
--examples | | Show usage examples for a command |
Exit Codes
| Code | Description |
|---|
0 | Success |
1 | Failure |
Environment Variables
| Variable | Description |
|---|
FLOWDECK_LICENSE_KEY | License key for CI/CD environments |
DEVELOPER_DIR | Override Xcode installation path |
FLOWDECK_NO_UPDATE_CHECK | Set to 1 to disable update checks |
Config File
Many commands support loading settings from a JSON config file via --config:
{
"workspace": "MyApp.xcworkspace",
"scheme": "MyApp",
"configuration": "Debug",
"platform": "iOS",
"version": "18.0",
"derivedDataPath": "/custom/path"
}
This is useful for saving project configuration once and reusing it across commands.