Interactive TUI
Launch the TUI:Boot and Menu
On launch, Kane CLI runs a short boot sequence (auth check, environment resolution, mascot animation), then drops into the main menu. The top-level entries are:
Use the arrow keys to navigate, Enter to select, and Esc to back out of a submenu.
Chat Mode
Selecting Run > Start Run switches the TUI into chat mode. Type your objective at the prompt and press Enter. The agent begins streaming steps into the scrollback: each step shows the action taken, a short rationale, and a status icon. When the run finishes, a result summary block appears. Subsequent runs in the same TUI session reuse the same browser, so you can iterate on objectives without re-logging in or re-navigating.Slash Commands
Typing/ in chat mode opens an autocomplete palette. Continue typing to filter, use the arrow keys to select, and press Enter to insert the command.
You can also send a bare line of text without a leading
/. It is treated as the objective for /run.
History Search
Press Ctrl+R in the input prompt to open reverse history search across past inputs in this and previous sessions. Type to filter, use the arrow keys to move between matches, Enter to accept, and Esc to dismiss. The prompt also offers ghost-text completion: if your current input is a prefix of a recent entry or a slash command, the rest is shown dimmed and Tab accepts it.Status Bar
A two-row status bar sits at the bottom of the TUI:Multi-Run Sessions
Every run launched from the same TUI invocation shares one Chrome instance and one session directory. Cookies, login state, and tabs persist across runs, so an early run can log in and a later run can land mid-application without re-authenticating. Starting a fresh session from inside the TUI is done with/new, which uploads the current session and then resets state.
Interactive Follow-Ups
If the agent needs information mid-run (for example, a one-time code or a clarifying choice), it pauses and asks at the input prompt. Type your answer and press Enter; the agent resumes from where it left off. Use Ctrl+C to cancel the run instead of answering.Keyboard Shortcuts
Cancelling and Exiting
A graceful
/exit runs the upload pipeline (if applicable), seals the session’s evidence pack, offers to open it in the browser viewer, and prints any final links to your terminal scrollback before the process ends.
Non-Interactive CLI Mode
kane-cli run is the headless surface. It is the right choice for CI jobs, shell scripts, scripted invocations, and any environment that has no interactive TTY. Progress streams to stderr; the final JSON result is written to stdout.
Basic invocation
A minimal run:Run options
The customer-facing flags accepted bykane-cli run:
Assertion, final-validation, current-page analysis and network-capture flags are covered in Assertion controls and current-page analysis.
Unresolved variables
Kane CLI checks every{{name}} in the objective before the run starts. If a name has no value, Kane CLI prints a warning and the run continues. The name is typed literally as written, unless a step sets its value first. In a terminal, the warning looks like the example in Variables and context. With --agent, it is a single typed event, sent before the first progress event:
reason is one of:
value_missing: the key exists infile, but has no value.not_declared: the key is not in any file.suggested_fileis where to add it.not_a_dataset_column: a${x}that does not match any column of the dataset row the run was given.
{{global.*}} references (resolved from Test Manager at run time), names that an earlier step stores, and the {{smart.*}}, {{environment.*}}, {{secrets.*}}, and {{totp.*}} namespaces.
For variables and context file behavior, see Variables and context. For code export and the run mode toggle, see Configuration.
Mobile runs
By default, a run targets the desktop browser (Chrome), which is what every example above uses. From any machine, you can instead point a run at a real device in the cloud:android or ios. On macOS Apple Silicon, you can also use a virtual mobile device on your machine: an emulator (a virtual Android device) or a simulator (a virtual iOS device). Every mobile run needs an app under test. From any other machine, you can run a saved emulator or simulator suite on the cloud grid with testrun run --remote.
-
--target desktop|emulator|simulator|android|ios: which target to run against. Defaults to the saved session target, otherwisedesktop. -
--device-name <name>and--os-version <version>: choose a device, using the values exactly askane-cli devices list --target emulator|simulatorprints them.- On an emulator or simulator, a name needs a version, and a version on its own matches any device on that version.
- On a real device, either one alone is enough, and a name can be a pattern such as
Pixel.*. With neither, the device hub (the cloud service that hands out real devices) picks one. List real devices withkane-cli devices list --target android|ios --remote.
kane-cli config set-device-name/set-os-version. Otherwise, the run exits and tells you how to fix it. -
--app <path|APPid>: the app under test, required for every mobile run. Pass a build (emulator:.apk, simulator:.zip, android:.apkor.aab, ios:.ipa) or an uploaded app id (APPfollowed by six or more digits).kane-cli apps list --target <kind>lists yours. On thedesktoptarget, the device flags and--appare ignored. -
--no-stream: on a real device, don’t open the live view for this run. The live view is a view-only picture of the device screen. At a terminal, it opens in its own Chrome window by default. It never opens for agents.
/mobile and /desktop until the first run starts. After that, use /new to start a fresh session before you switch. Run /doctor to check mobile tooling and devices.
For setup (Xcode or Android Studio, kane-cli login, and kane-cli doctor --target emulator|simulator --install) and the app formats each target accepts, see Mobile testing.
Output Streams
This separation lets you capture each independently:
--agent). Each line on stdout is one JSON event terminated by a newline.
Exit Codes
Use these codes to gate downstream CI steps.
What You See at the End of a Run
When a run finishes, Kane CLI prints a result summary:
Below the summary, Kane CLI prints any of the following links:
Modern terminals render these as clickable hyperlinks. For details on what each link leads to, see Test Manager integration.
The run is also captured as a sealed evidence pack: screenshots, per-step console/network logs, and failure records. In a terminal, Kane CLI offers to open it in the browser viewer; in agent or non-interactive runs it prints a one-line
evidence: view locally with … hint to stderr instead.
Assertion controls and current-page analysis
run and testmd run support two assertion controls:
--assertion-mode dom|visual:dom(the default) checks the page’s DOM and falls back to vision when needed;visualuses the vision model only. To save a default, useconfig set-assertion-mode.--final-validation on|off(default off): adds a generatedcp_finalcheckpoint that verifies the objective as a whole. To save a default, useconfig set-final-validation. This setting works the same way in action and testing mode. Keep explicit final assertions in your objectives either way.
run --analyzer-only --condition "<condition>" checks the current desktop browser page against one or more conditions, without an objective, action steps, or a saved test. Repeat --condition to check several conditions. Use --agent or non-TTY input. Results are returned in condition_results: boolean[]. Exit 0 means all conditions were judged, not that all are true. Exit 1 means a result was missing, and 3 means cancelled. This mode rejects the mobile target, app, and device options, and the code-export and name options.
The experimental run --network-ws and run --network-sse flags capture WebSocket and Server-Sent Events traffic. Both are off by default. To save a default, use config set-network-ws on|off and config set-network-sse on|off. SSE capture works in Chromium only. These flags work only with run, so do not add them to testmd or testrun commands.
Code export is on by default, unless your saved configuration turns it off. It supports python (default) or javascript. run and testmd run use --code-language, while testmd export uses --language. Whether a run uploads does not depend on action or testing mode.
Feedback Prompt
After the result and links print, Kane CLI prompts you to rate the session with thumbs up or thumbs down. Use the left and right arrow keys to choose, Enter to submit, or Esc to skip. The rating is sent to Test Manager for the active test case; see Test Manager Integration for what is recorded.Agent Mode
Add--agent to get structured NDJSON output designed for AI coding agents:
--agent:
- The interactive TUI is fully suppressed: no boot screen, no menus
- Each event is a single JSON line on stdout
- Progress UI renders to stderr (clean separation)
- Stdin is not used (no interactive prompts)
run_end event, and presents results to you. The run_end strategy applies to one-shot run only; testmd run, testrun run, generate and the assurance commands end in their own completion events. See Command-specific completion.
See Agent Mode for the full event schema and parsing guide.