Skip to main content
FlowDeck CLI provides powerful build and run capabilities optimized for command-line workflows and CI/CD integration. The recommended workflow is to use flowdeck config set to save project settings, then run commands without parameters:
After running flowdeck config set, all subsequent commands use the saved settings automatically. You only need to specify parameters when you want to override the defaults.
flowdeck config set saves runtime selection state. Shared project settings live separately in .flowdeck/config.json and .flowdeck/config.local.json, while explicit --config files remain the portable way to script a full command invocation.

Project Context

The context command gives you (or your AI agent) everything needed to understand your project at a glance. Available schemes, build configurations, simulators, and connected devices.

Building Your App

Basic Build

Build for macOS

Use --device "My Mac" for macOS targets:

Build for Physical Device

Use --device with the device name or UDID:
Use flowdeck device list to see available devices and their UDIDs.

Build Configurations

Specify Debug or Release configuration:

Custom Xcodebuild Options

Pass arguments directly to xcodebuild:
For the complete list of build options, see the Build Command Reference.

Running Your App

Build and Run on Simulator

This command:
  1. Builds the app
  2. Opens Simulator.app (if iOS)
  3. Boots the simulator (or uses already running)
  4. Installs the app
  5. Launches the app
flowdeck run launches app bundle schemes only. Pure Swift Package targets should use flowdeck build or flowdeck test; use -w with an Xcode app workspace or project when the goal is to launch an app.

Build and Run on macOS

Mac Catalyst

Run an iOS app as Mac Catalyst using --device "My Mac Catalyst":
This builds the app with platform=macOS,variant=Mac Catalyst and runs it natively on your Mac.
Use flowdeck device list to see all available targets including “My Mac” and “My Mac Catalyst”.

Build and Run on Physical Device

For the complete list of run options including --interactive and --wait-for-debugger, see the Run Command Reference.

Run with Log Streaming

Stream app logs after launching:

Run Without Building

Skip the build step and launch an existing app with --no-build:
This is useful for:
  • Quick iteration when you haven’t changed code
  • Testing different launch configurations
  • Launching after a manual Xcode build
Behavior:
  • If a built app exists, it shows “⏭️ Running build from X ago” and launches immediately
  • If no built app is found, it automatically falls back to building from source with “⚠️ No built app found. Building from source…”
In interactive mode, use Shift+R to run without building.

App Launch Arguments

Pass arguments and environment variables to your app:

JSON Output for Automation

Use --json for machine-readable output, essential for CI/CD pipelines:
Compiler warnings are hidden by default in regular and JSON output. Add --show-warnings to build or run to surface them (console output in text mode, diagnostic events in JSON mode). Warning snapshots are always reconciled and stored in <DerivedData>/Warnings, even without --show-warnings.
For complete CI/CD setup including license configuration and pipeline examples, see CI/CD Integration.
This outputs NDJSON (newline-delimited JSON) events:

Custom Derived Data

FlowDeck uses ~/Library/Developer/FlowDeck/DerivedData by default. Override it when you need isolation across builds:

Cleaning

Clean build artifacts before rebuilding:

Config Files

Use the --config option to pass a set of pre-defined parameters from a JSON file. This is especially useful for CI/CD pipelines and complex build configurations.
This --config file is the explicit command config format, not the same as .flowdeck/config.json or .flowdeck/config.local.json. See Configuration File for the complete reference and the distinction between the two formats.

Performance Optimization

FlowDeck CLI automatically:
  • Detects CPU core count for parallel builds
  • Uses optimized build settings
  • Enables incremental compilation

Troubleshooting

”Workspace not found”

Ensure you’re specifying the correct path:

“Scheme not found”

Use flowdeck context --json to discover available schemes:

“Simulator not found”

List available simulators first:

“Build failed”

Try cleaning and rebuilding:
Check the error output for specific issues like missing dependencies or code signing problems.