sootsim flow

Use flow files when you already have them, or start a draft session so inspect-driven actions can be kept one by one and exported into YAML once the path is proven. Flow playback, recording, and profiling now stay on the shared bridge/session runner.

terminal

sootsim flow <flow.yaml> [options]
sootsim flow start
sootsim flow keep
sootsim flow end [--output <path>] [--validate] [--video]

Aliases

  • good

Options

flagdescription
--recordrecord a video while the flow runs
--profilecapture perf stats while the flow runs
--out <dir>directory for recordings
--slow <ms>delay between steps for easier debugging
--url <url>load this target before running the flow
--newopen a fresh browser window before running the flow
--driver <id>when paired with —new, launch through a specific driver from the registry (e.g. playwright); see sootsim list --drivers
--headlesspass headless=true to the launch driver (useful with —driver playwright)
--session <id>target a specific current session
--electronprefer the desktop companion for this flow run
--output <path>write the drafted flow when using flow end
--validatereplay the drafted flow before clearing it
--videoreplay and record the drafted flow before clearing it
--previewrecord + upload the run as a shareable /preview/<id> link (implies —record)
--preview-origin <url>override the upload target for —preview (defaults to auto)
--preview-openopen the resulting /preview/<id> url after upload

Examples

terminal

sootsim flow flows/login.yaml
sootsim flow flows/login.yaml --profile
sootsim flow flows/demo.yaml --record --slow 500
sootsim flow flows/demo.yaml --preview
sootsim flow start
sootsim flow keep
sootsim flow end --output ./flows/draft.yaml
sootsim flow end --output ./flows/draft.yaml --validate
sootsim flow end --output ./flows/draft.yaml --video

Flow-Specific Behavior

flow now has two jobs:

  • run an existing YAML flow against the current bridge session by default
  • manage an ephemeral draft while you drive the app through inspect

For draft mode, the commands are intentionally minimal:

terminal

sootsim flow start
sootsim shell launch rn --clear-state
sootsim flow keep
sootsim do tap-id loginNextButton
sootsim flow keep
sootsim flow end --output ./flows/login.yaml
sootsim flow end --output ./flows/login.yaml --validate
sootsim flow end --output ./flows/login.yaml --video

Nothing is kept automatically. Only the last successful write action becomes the pending candidate, and flow keep promotes that single action into the draft. Plain flow end only exports the draft. Use --validate or --video when the finish line needs to prove the exported YAML still replays from a clean run. If replay fails, the draft stays active so you can keep iterating instead of losing the good steps you already kept. When a flow depends on a clean boot, sootsim inspect shell launch rn --clear-state can also be kept into the draft so replay resets the app before later steps.

Existing flow files still support frontmatter like:

---
app: 8081
electron: true
---

That lets a flow file encode which target it opens and whether the desktop companion is the preferred runtime for that flow. When you want frame timing for a full scripted path, run the same file with --profile. Flow playback, recording, and profiling now stay on the same bridge-backed session/action surface as the rest of the CLI.

Why Flow Owns Playback

flow is now the one public YAML playback surface. It owns both:

  • running an existing flow file through the bridge-backed session/action layer
  • managing a live draft while you prove steps through the CLI