Skip to main content

Using Claude Code, Cursor, or another coding agent? Paste this into your prompt to run cross-browser and real-device tests, debug sessions, and wire up CI on the TestMu AI cloud:
Kane CLI has three modes. Choose based on who (or what) is running the test.

Interactive TUI

Launch the TUI:
The TUI is the right surface when you are exploring objectives, debugging failures, or working through a multi-run flow that should share browser state.

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. 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) and prints any final links to your terminal scrollback before the process ends.

Non-Interactive CLI Mode

This mode is best for shell scripts, CI/CD pipelines, and any scenario where the interactive TUI is not needed.

Run options

The customer-facing flags accepted by kane-cli run: 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), so every example above is unchanged. On macOS Apple Silicon you can instead point a run at a virtual mobile device: an emulator (a virtual Android device) or a simulator (a virtual iOS device). Every mobile run needs an app under test.
The mobile run flags:
  • --target desktop|emulator|simulator: which target to run against. Defaults to the saved session target, otherwise desktop.
  • --device <id>: pick a device by name, serial, ip:port, or udid. In the TUI/TTY, omitting it opens a one-time picker and the choice is saved; in non-interactive runs a device must already be set (via --device or kane-cli config set-device) or the run exits with the fix spelled out.
  • --app <path|APPid>: the app under test, required for every mobile run. Pass a build (emulator: .apk, simulator: .zip) or an uploaded app id (APP followed by six or more digits). On the desktop target, --device and --app are ignored.
In the interactive TUI, a first run offers a Desktop / Emulator / Simulator chooser, and you can switch targets at any time with /mobile and /desktop. Run /doctor to check mobile tooling and devices. For setup (Xcode or Android Studio, kane-cli login, and kane-cli doctor --install) and the app formats each target accepts, see Mobile testing.

Output Streams

This separation lets you capture each independently:
In CI, redirect stdout to a file your job can parse and let stderr stream to the build log. When stdin is not a TTY, Kane CLI automatically switches to plain NDJSON mode (the same as --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.

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. See Test Manager Integration for details.

Agent Mode

Add --agent to get structured NDJSON output designed for AI coding agents:
With --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)
This mode is how Claude Code, Codex CLI, and Gemini CLI consume Kane CLI results. The agent reads the NDJSON stream, parses the final run_end event, and presents results to you. See Agent Mode for the full event schema and parsing guide.
Always combine --agent with --headless in non-interactive environments to prevent display server errors.