sootsim record

Drives the engine’s built-in canvas recorder over the WS bridge — no second browser, no ffmpeg. Encoding happens in the running page (MediaRecorder for webm, WebCodecs for mp4, gifenc for gif). Two modes: atomic (duration-bounded) or stateful (start → interact → stop). Stateful mode is webm/mp4 only; for gif/png use atomic mode. Use —frames to sample N evenly-spaced png snapshots instead of a video.

terminal

sootsim record [options]
sootsim record start [options]
sootsim record stop [--output <path>]
sootsim record status
sootsim record cancel

Options

flagdescription
--format <type>webm | mp4 | gif | png (inferred from —output extension; stateful mode is webm/mp4 only)
--mode <kind>video | live | combined (default: video). live captures the event stream; combined captures both and uploads automatically
--duration <seconds>recording duration (default: 10, atomic mode only)
--fps <number>target frame rate for video/gif (default: 30)
--output <path>output file, or directory when —frames is set
--frames <n>sample N evenly-spaced png frames instead of a video
--max-width <px>downscale gif frames to this width
--session <tab-id>target a specific bridge tab

Examples

terminal

sootsim record --duration 5
sootsim record --format mp4 --output demo.mp4 --duration 8
sootsim record --output demo.gif --duration 3
sootsim record --frames 10 --output ./frames/
sootsim record --mode combined --duration 8 --open
sootsim record start --format mp4
sootsim record start --mode combined
sootsim record stop --output flow.mp4
sootsim record cancel

Recording Notes

record drives the engine’s built-in canvas recorder over the WS bridge — no second browser, no ffmpeg. Encoding happens in the running page:

  • webm via MediaRecorder (default, fastest)
  • mp4 via WebCodecs + mp4-muxer (chrome/edge — real h264)
  • gif via gifenc on sampled frames
  • --frames N dumps N evenly spaced png frames to a directory — handy when you only need a few snapshots from a session (e.g. for handoff, regression reports, or diffing)

Format is inferred from --output’s extension, or pass --format. For step-by-step evidence around a bug, pair it with debug snapshot rather than trying to infer state from the video alone.