.finalrun/ folder. The workspace holds your configuration file, test specs, optional suite manifests, and per-environment binding files. Understanding the layout and the fields in config.yaml lets the CLI resolve the right app, environment, and AI model without you needing to pass flags on every run.
Workspace layout
tests/ directory is the only required subdirectory. suites/ and env/ are optional and only needed when you run suites or use named environments.
.finalrun/config.yaml fields
The workspace config defines defaults that the CLI uses when flags are omitted. Place this file at .finalrun/config.yaml in your workspace root.
Human-readable name for the app. Optional — used only for display purposes.
Android package identifier (e.g.
com.example.myapp). Required if you run Android tests and do not pass --app.iOS bundle identifier (e.g.
com.example.myapp). Required if you run iOS tests and do not pass --app.Default environment name. Used when you omit the
--env flag. Must match a file under .finalrun/env/<name>.yaml if one exists.Default AI model in
provider/model format (e.g. google/gemini-3-flash-preview). Used when you omit --model.At least one of
app.packageName or app.bundleId is required unless you always pass --app on the command line.Example config
.finalrun/config.yaml
App identity resolution
FinalRun resolves which app to launch on the device using the following priority order:--app CLI flag (highest priority)
When you pass
--app <path>, FinalRun uses that binary directly. It extracts the package name (Android) or bundle ID (iOS) from the binary and ignores any app block in config files.Per-environment app block
If an active environment file at
.finalrun/env/<name>.yaml contains an app block, those values override the workspace defaults.Using the --app flag
Pass a local binary to run a specific build without changing any config file:
- Extracts the package name (Android) or bundle ID (iOS) from the binary
- Infers the platform from the file extension (
.apk→ Android,.app→ iOS) - Validates that the binary matches the
--platformflag if both are provided
CLI flags always override values in
config.yaml. You can use flags for one-off runs without modifying your workspace config.Per-environment app overrides
If your app uses different identifiers per environment — for example, a.staging suffix — set the override in the corresponding env file instead of changing config.yaml:
.finalrun/env/staging.yaml
app block falls back to the workspace default in .finalrun/config.yaml.