Command line tools
Midscene defines a YAML-based scripting format so you can quickly author automation scripts, then run them from the command line without extra setup. For more details on YAML scripts, see Automate with scripts in YAML.
For example, you can write a YAML script like this:
Run it with one command:
The CLI prints execution progress and generates a visual report when it finishes, while keeping setup simple.
Configure environment variables with .env
The Midscene CLI uses dotenv to load a .env file from the directory where you run the tool. Create a .env file and add:
For more configuration details, see the Model strategy guide.
Notes:
- The file is optional; you can also set global environment variables instead.
- Do not add an
exportprefix—this is how dotenv expects values. - Place
.envin the directory where you run the tool, not necessarily next to the YAML file. - These values do not override existing global environment variables unless you enable
--dotenv-override(see below). - Use
--dotenv-debugif you need to debug how environment variables load.
Get started
Install the CLI
Install @midscene/cli globally (recommended for first-time users):
Or install it per project:
Write your first script
Create bing-search.yaml to drive a web browser:
Drive an Android device connected over adb:
Or drive an iOS device with WebDriverAgent configured:
Run the script
The CLI prints execution progress and generates a visual report when it finishes.
Advanced usage of the command-line tool
Use environment variables in .yaml
Reference environment variables in your scripts with ${variable-name}.
Run multiple scripts
@midscene/cli supports glob patterns to batch-execute scripts, which is a shorthand for the --files argument.
Analyze command-line output
After execution, the output directory contains:
- A JSON summary specified by
--summary(defaults toindex.json) with execution status and statistics for all scripts. - Individual execution results for each YAML file (JSON).
- Visual reports for each script (HTML).
Run in headed mode
webscenarios only
Headed mode opens the browser window. By default, scripts run headless.
Use bridge mode
webscenarios only
Bridge mode lets YAML scripts drive your existing desktop browser so you can reuse cookies, extensions, or state. Install the Chrome extension, then add:
See Bridge Mode via Chrome Extension for details.
Run YAML scripts with JavaScript
Call the Agent's runYaml method to execute YAML from JavaScript. This runs only the tasks section of the script.
Command-line options
The CLI provides parameters to control how scripts run:
--files <file1> <file2> ...: List of script files. Executes in order, sequentially by default (--concurrentis1), or concurrently when--concurrentis set. Supports glob patterns.--concurrent <number>: Number of concurrent executions. Default1.--continue-on-error: Continue running remaining scripts even if one fails. Default off.--share-browser-context: Share browser context (cookies,localStorage, etc.) across scripts. Default off.--summary <filename>: Path for the JSON summary report.--headed: Run in a headed browser instead of headless.--keep-window: Keep the browser window after execution; enables--headedautomatically.--config <filename>: Config file whose values become defaults for CLI arguments.--web.userAgent <ua>: Overrideweb.userAgentfor all scripts.--web.viewportWidth <width>: Overrideweb.viewportWidthfor all scripts.--web.viewportHeight <height>: Overrideweb.viewportHeightfor all scripts.--android.deviceId <device-id>: Overrideandroid.deviceIdfor all scripts.--ios.wdaPort <port>: Overrideios.wdaPortfor all scripts.--ios.wdaHost <host>: Overrideios.wdaHostfor all scripts.--dotenv-debug: Enable dotenv debug logs. Default off.--dotenv-override: Allow dotenv to override global environment variables. Default off.
Examples:
Use --files to specify execution order:
Run all scripts with a concurrency of 4 and continue when errors occur:
Write command-line arguments in a file
You can place arguments in a YAML config file and reference it with --config. Command-line arguments take priority over the config file.
Run with:
FAQ
How can I export cookies from Chrome as JSON?
Use this Chrome extension to export cookies.
How can I view dotenv debug logs?
Use the --dotenv-debug flag:

