[ Documentation ]
Agent Devtool (Inspect)

Agent Devtool (Inspect)

The Inspect pane is the in-sim devtools tab where you talk to a coding agent and watch it work. Open it from the rail (devtools button), or press Option+I to toggle it.

[ network ] [ logs ] [ agent ] [ ? ] [ dock ] [ × ] ───────────────────────────────────────────────────────────────── PROMPT "rename the home tab to feed" PLAN 1. find the tab label 2. rename it 3. verify TOOL peach find --text "Home" FILE app/(tabs)/_layout.tsx (read) DIFF app/(tabs)/_layout.tsx - <Tabs.Screen name="home" options={{ title: "Home" }} /> + <Tabs.Screen name="home" options={{ title: "Feed" }} /> APPROVAL write app/(tabs)/_layout.tsx? [accept] [reject] ───────────────────────────────────────────────────────────────── > ask the agent something…

How it connects

Peach runs an agent daemon. Any coding agent can receive messages from the simulator by running peach agent listen. The command drains one pending message or waits for the next one, prints it, saves its evidence under the OS temporary directory, and exits. Run it again after handling the message.

Peach can also start managed Claude or Codex sessions. Attach a project once, pick a provider in shell settings, and the daemon matches every running sim to its project by bundle URL.

  • +
    Each (project × provider) pair gets its own session.
  • +
    Switching providers in shell settings retargets the prompt bar to the latest session for the new provider.

You’ll know it’s wired up when the prompt composer appears at the bottom of the agent tab. If it doesn’t, the daemon isn’t running or this sim isn’t attached; see Setup and the CLI.

Sending a prompt

  1. +
    Type into the composer at the bottom of the pane.
  2. +
    Optionally select a node on the canvas first; the agent receives an inspect summary alongside your prompt.
  3. +
    Submit. A waiting peach agent listen receives it. Otherwise, if there’s no active managed session for the selected provider, one lazy-starts.

Inspect-as-context is the standout feature: tap a button on the canvas, then ask “why doesn’t this open the right screen?”. The agent gets the node’s type, testID, layout, ARIA, and a short trace of its parent chain along with your prompt.

The listener output is enough for the usual edit. Use the saved full describe when the compact context is ambiguous, inspect JSON for exact props and ancestry, and the screenshot only when the request depends on color, clipping, or spatial appearance. peach agent info <message-id> prints the full message and every saved evidence path.

Reading the transcript

Each row is one event. The label tells you what kind:

LabelWhat it is
PROMPTwhat you sent (with any inspect context attached)
PLANthe agent’s plan steps, as a bulleted list
THINKINGstreamed reasoning (collapsed into one row per turn)
ASSISTANTstreamed assistant message
TOOLa tool call the agent made
FILEa file the agent read or edited
DIFFper-file code diff
INSPECTinspect snapshot the agent attached to a turn
APPROVALagent is waiting for you to approve an action
STATUSnon-fatal session status
ERRORa step that failed
SESSIONsession lifecycle (ready, exited)

Tone color codes severity at a glance: muted for trace, info for normal flow, warning for approvals, error for failures.

Approvals

Some agent actions (writing files, running shell commands) gate on your approval. The pane shows an APPROVAL row; accept or reject inline. Until you do, the agent waits.

This is the safety valve: long autonomous runs stay safe because anything with side effects pauses for a human OK.

Pop out

The dock toggle in the top right detaches the devtools into its own window. The agent transcript stays in sync with the sim via BroadcastChannel, so you can keep the sim full-screen on one display and the transcript on another.

Multi-window / multi-agent

Inspect listeners are scoped to a sim, so messages go to the listener for that sim. The pane shows the foreground managed session for the selected provider when no listener is waiting; switching providers in settings retargets it.

Troubleshooting

  • +
    No composer at the bottom: window.sootsimAgent isn’t installed. The daemon isn’t running, or this sim isn’t attached. Run peach agent attach.
  • +
    Nothing streams when I submit: the daemon is up but the session is stuck. Check STATUS/ERROR rows and inspect the session with peach agent watch or peach agent transcript.
  • +
    Provider change doesn’t switch sessions: close and reopen the popout, or restart the sim window.