CLI Reference

sootsim command-line interface

CLI Reference

The sootsim CLI is the operational surface for booting shells, opening sims, driving automation, and exposing the bridge host to agents.

terminal

sootsim [command] [options]
sootsim [-- <bundler-command>]

Commands

commanddescription
previewproduction-like preview build
testrun tests against sootsim
flowrun flows through the current sim or manage a draft from live inspect actions
maestrorun existing Maestro YAML flows against sootsim
detoxrun existing Detox suites against sootsim on headless Chromium
recordcapture the live sim as webm/mp4/gif, or sample N png frames (—frames)
profilemanage isolated storage profiles
cpu-profilecapture a JS CPU profile of the sim workers over the Chrome DevTools Protocol
reactinspect React component render cost in the tenant worker
assertrun any read verb and convert its output into an exit code
screenshotcapture the canvas (full or cropped) as PNG
getread runtime state (tree, a11y, url, count, errors, …)
screenshotscapture + compose app-store screenshot sets from a single plan
dodrive the app (tap, type, scroll, swipe, key, reload, …)
screenshot-modetoggle the screenshot-mode chrome overlay
waitblock until the runtime reaches a known state
shelldrive shell state and simulator chrome
three-modetoggle the live browser 3d device stage
uploadpublish the current recorded bundle as a shareable /preview/<id> link
deviceinspect or change the live device preset for a sim
inspectquery, describe, and drive the running sootsim instance
networkinspect live network traffic from the running sootsim worker
logsinspect live console output from the running sootsim worker
debugdrive __sootsimDebug: channels, snapshots, and inspectors
what-happenedshow recent semantic events: toasts, keyboards, screens, alerts, fetches, errors
diagnosecomposed read commands for “what just went wrong?”
timelinecontrol the semantic event timeline (enable opt-in kinds, clear, dump)
openload a target into the current sim or open a new one
listlist connected sims or available launch drivers
useselect a connected sim
skillsinstall bundled sootsim skills into a project
claimtake an exclusive lease on a sim
agentattached projects + local agent sessions (codex/claude)
closeclose a connected sim
configmanage sootsim.config.ts
compatcheck package compatibility (alias: scan)
electronlaunch the desktop companion
daemonmanage the sootsim bridge as a login agent
versionshow the CLI + engine runtime versions you are running
upgradeupdate the sootsim CLI and engine runtime to the latest
serverrun the sootsim bridge daemon in the foreground
startinstall + run sootsim, open it in your browser
runtimemanage engine runtimes under ~/.sootsim/runtimes/
launchone-shot: install runtime if needed, start daemon, open the app
setup-reposet up sootsim in your project
install-desktopdownload and install the optional desktop GUI
loginsign in so preview uploads are associated with your account
logoutclear the local desktop auth state
whoamiprint the currently signed-in account
keysmanage the api keys that authorize CI preview uploads
hintsinspect and manage the CLI hint registry

Global Flags

flagdescription
-h, --helpshow help
-V, --versionshow version
-v, --verboseverbose output
-p, --port <number>server or bridge port, depending on command
-d, --device <model>override the simulated device model
-t, --theme <scheme>override light, dark, or auto color scheme
--headlessrun browser automation without a visible window where supported

What The CLI Covers

The CLI is split across four jobs:

  • booting a simulator shell around a local React Native bundler
  • opening, listing, and targeting live sims over the shared bridge host
  • automating those sims for tests, flows, screenshots, and recordings
  • exposing the same bridge-backed runtime to CLI automation and generated docs

If you only remember one rule, use the highest-level command that matches the task. Reach for sootsim open before pasting shell URLs, and sootsim describe before debugging with screenshots.

Command Groups

The command set is intentionally shaped around workflow instead of implementation detail.

  • development: preview, electron, install, config
  • storage: profile
  • automation: test, flow, record, screenshot, screenshots
  • live control: open, list, use, claim, close
  • runtime reads: describe, find, and the get <noun> family (get tree, get a11y, get url, get count, get errors, get requests, …)
  • runtime actions: tap, type, scroll, swipe, key, and the do <action> family, plus shell <action> for simulator chrome
  • instrumentation: debugdebug state <kind> for raw runtime dumps, plus channels/snapshots/diffs/events
  • escape hatches: inspect (full subcommand surface, all old verbs still work as aliases)
  • compatibility: compat

That grouping is what the website docs and terminal help now share from the same package source.

Bridge Model

The bridge host is the control plane behind top-level verbs like describe and tap, plus inspect, debug, open, list, use, claim, and close.

  • default bridge port: 7668
  • default browser shell URL: http://localhost:5173/
  • every connected sim gets a stable hex id like a1, a2, …, af, b0
  • the desktop companion and browser shells both register through the same host
  • the first CLI to send a command to a sim holds a 60s lease on it. other agents are rejected until the lease expires or, last-resort, taken with sootsim claim --force (which interrupts whoever’s mid-flow — prefer sootsim open --new to get a fresh sim instead). the lease refreshes on every command from the owner

This means you can open a sim one way and still inspect or debug it later from the CLI. The CLI also remembers the last sim you opened or selected, so one common pattern is:

terminal

sootsim open 8081
sootsim describe
sootsim do tap-text "Sign in"

Common Flows

terminal

# load a local port into the current sim
sootsim open 8081
# open a second sim
sootsim open --new 8085
# see what is connected and target one sim explicitly
sootsim list
sootsim describe --sim a3
# capture state around a bug
sootsim debug snapshot before
sootsim debug snapshot after
sootsim debug diff before after
# isolate app storage in Electron or Playwright
sootsim profile create qa
sootsim open 8081 --profile qa
# run a single flow
sootsim flow flows/login.yaml --record

Ready to build?

Run your React Native app in the browser. No simulators, no native toolchain, no waiting.

npm i -g sootsim