Lifecycle overview
- Initialize once per connection: Immediately after opening a transport connection, send an
initializerequest with your client metadata, then emitinitialized. The server rejects any request on that connection before this handshake. - Start (or resume) a thread: Call
thread/startfor a new conversation,thread/resumeto continue an existing one, orthread/forkto branch history into a new thread id. - Begin a turn: Call
turn/startwith the targetthreadIdand user input. Optional fields override model, personality,cwd, sandbox policy, and more. - Steer an active turn: Call
turn/steerto append user input to the currently in-flight turn without creating a new turn. - Stream events: After
turn/start, keep reading notifications on stdout:thread/archived,thread/unarchived,item/started,item/completed,item/agentMessage/delta, tool progress, and other updates. - Finish the turn: The server emits
turn/completedwith final status when the model finishes or after aturn/interruptcancellation.