FlowDeck has two JSON config formats, and they are easy to confuse:Documentation Index
Fetch the complete documentation index at: https://flowdeck.studio/docs/llms.txt
Use this file to discover all available pages before exploring further.
- Explicit command config used with
--config - Project settings config stored in
.flowdeck/config.jsonor.flowdeck/config.local.json
--config for reproducible command invocations in CI, scripts, and one-off runs.
Use the project settings files for shared project defaults and per-scheme overrides inside a repository.
Today, explicit
--config remains the clearest way to drive a full build, run, or test invocation from the CLI. The project settings files are the canonical shared on-disk format, while legacy sidecar files remain supported for compatibility in current runtime paths.Explicit Command Config (--config)
Explicit Command Config Structure
Explicit Command Config Field Reference
| Field | Type | Required | Description |
|---|---|---|---|
workspace | string | Yes | Path to .xcworkspace or .xcodeproj (relative to project root) |
scheme | string | Yes | Scheme name to build |
configuration | string | No | Build configuration. Default: Debug. Options: Debug, Release, or custom |
platform | string | No | Target platform. Options: iOS, macOS, watchOS, tvOS, visionOS |
version | string | No | OS version (e.g., 18.0, 17.5). Uses latest available if not specified |
deviceUdid | string | No | Physical device UDID for device builds |
simulatorUdid | string | No | Simulator UDID for simulator builds |
derivedDataPath | string | No | Custom derived data directory path (default: ~/Library/Developer/FlowDeck/DerivedData) |
xcodebuild | object | No | Passthrough settings for xcodebuild (see Xcodebuild Arguments) |
appLaunch | object | No | Arguments and environment variables passed to the app at launch (run command only) |
Explicit Command Config Target Resolution Priority
When determining the build target, FlowDeck uses this priority order:deviceUdid- Physical device (if specified and connected)simulatorUdid- Exact simulator by UDIDplatform+version- Auto-resolve best matching simulatorplatform: "macOS"- Native Mac build (no simulator needed)
Explicit Command Config Examples
Minimal iOS Configuration
Minimal iOS Configuration
macOS Native Build
macOS Native Build
Physical Device Build
Physical Device Build
flowdeck device list --json.Specific Simulator Version
Specific Simulator Version
CI Release Build
CI Release Build
watchOS Build
watchOS Build
visionOS Build
visionOS Build
Project Settings Files
Project settings files are the shared on-disk format for project-level defaults:.flowdeck/config.json— shared team config, usually committed.flowdeck/config.local.json— per-user local override, usually gitignored
config.local.json exists, it fully replaces config.json. It is not merged with the shared file.
Project Settings Structure
Project Settings Field Reference
| Field | Type | Description |
|---|---|---|
version | integer | Schema version. Defaults to 1 |
workspace | string | Workspace or project path relative to the project root |
configuration | string | Top-level fallback build configuration |
appLaunch | object | Top-level fallback app launch settings |
xcodebuild | object | Top-level fallback xcodebuild passthrough settings |
schemes | object | Per-scheme overrides keyed by scheme name |
schemes may contain:
configurationappLaunchxcodebuild
Legacy Compatibility Files
Older FlowDeck setups may still contain:.flowdeck/schemes.json.flowdeck/app-launch-settings.json.flowdeck/build-settings.json
- Missing fields in the new project settings config may be filled from legacy files.
- Present-but-empty fields are treated as intentional and should not fall back to legacy files.
Custom Derived Data
Specify a custom derived data path to:- Avoid conflicts with Xcode
- Enable parallel builds with separate derived data
- Use faster storage (e.g., RAM disk)
xcodebuild Passthrough in --config
The xcodebuild section passes arguments and environment variables directly to xcodebuild:
See Xcodebuild Arguments for complete passthrough documentation and common arguments.
App Launch Settings in --config
The appLaunch section passes arguments and environment variables to your app when it launches (for run command only):
simctl launch or the device launch process, not to xcodebuild.
See App Launch Settings for complete documentation, common arguments, and local settings file support.
File Locations
Project Config
Store shared project settings in your repository:config.local.json gitignored so local overrides do not replace the shared team config for everyone else.
Multiple Configurations
Create separate explicit--config files for different scenarios:
CLI Override
Command-line parameters override config file values:Generating Config Files
From Interactive Mode
- Run
flowdeck -iin your project directory - Configure your build settings
- Press
P, then select Export Project Config - Save the exported explicit command config where you want to reuse it for
--config
Troubleshooting
Config File Not Found
Ensure the path is correct:Invalid JSON
Validate your JSON syntax:Workspace Not Found
Workspace paths are relative to the project root (where you run FlowDeck), not the config file location:Simulator Not Available
If the specified simulator doesn’t exist:- FlowDeck will try to resolve from
platform+version - If a matching runtime exists, it creates a new simulator
- Otherwise, it uses the first available simulator for that platform
