ada capture — Start a Capture Session

The ada capture command starts a new capture session, launching your app with full tracing enabled.

Usage

ada capture start <binary_or_app_path> [options] [-- <args...>]
ada capture stop [--session-id <id>]

capture start flags

FlagDefaultDescription
--no-screen(off)Disable screen recording (enabled by default)
--no-voice(off)Disable voice recording (enabled by default)
--pre-roll-ms0Detail pre-roll in ms (flight recorder)
--post-roll-ms0Detail post-roll in ms (flight recorder)
--with-detail(off)Enable detail lane capture (register values) without voice recording

capture stop flags

FlagDefaultDescription
--session-id(latest running)Session ID to stop

What It Does

  1. Launches the target with dynamic instrumentation attached (Frida-based)
  2. Records up to three tracks (configurable):
    • Screen: screen.mp4
    • Voice: voice.wav
    • Function traces: trace/ (ATF trace data)
  3. Writes a single session bundle directory you can later query with ada query

Session Output

By default, sessions are created under ~/.ada/sessions/, and the session directory is the bundle you pass to ada query:

~/.ada/sessions/<session_id>/
├── session.json     # Session metadata (status, timestamps, target info)
├── manifest.json    # Bundle manifest (entry point for queries)
├── trace/           # ATF trace data
├── screen.mp4       # Screen recording (optional)
└── voice.wav        # Voice recording (optional)

Target Path

<binary_or_app_path> can be either:

  • An executable path (for CLI tools, test binaries, etc.)
  • A macOS .app bundle path (ReadyCheck will resolve the internal executable automatically)

Notes

  • Capture stops automatically when the target exits, or when you press Ctrl+C.
  • If you see an error about libfrida_agent.dylib not being found, set ADA_AGENT_RPATH_SEARCH_PATHS to the directory containing it (the plugin installs it under its lib/ directory).