Pix

Pi RPC coverage matrix

See how Pi's RPC surface maps onto the versioned Pix wire protocol.

How Pi's RPC surface (verified against Pi 0.84.x, the supported line >=0.84.1, <0.85.0) maps onto the Pix wire protocol. Update this file whenever SUPPORTED_PI_VERSION or the bridge changes.

Status legend:

  • supported + exposed — Pi capability mapped to a stable Pix wire surface.
  • supported + gated — mapped, but only for clients that declare the matching capability (protocol/schema/v1.md).
  • supported + intentionally omitted — deliberate product boundary.
  • TUI-only — not available through Pi's RPC mode.

Commands (host → Pi)

Pi RPC commandPix surfaceStatus
prompt (with images, streamingBehavior)session.prompt (+ attachment.* uploads)supported + exposed / images gated by attachments.v1 (attachments.v2 enables up to nine); host paths are appended to prompt text
steer (with images)session.steersupported + exposed / images gated
follow_up (with images)session.follow_upsupported + exposed / images gated
abortsession.abortsupported + exposed
get_statesnapshots, session.list refreshsupported + exposed
get_messagessession.snapshot.messagessupported + exposed; image_refs.v1 externalizes image data to lazy image.get chunks
get_available_modelsmodel.listsupported + exposed
set_modelmodel.setsupported + exposed
set_thinking_levelthinking.setsupported + exposed
compactsession.compactsupported + exposed
set_session_namesession.renamesupported + exposed
extension_ui_responseextension_ui.respondsupported + exposed
get_commandssession.metadata.commands (or legacy snapshot field)supported + gated (commands.v1, asynchronous with session_metadata.v1)
get_available_thinking_levelssession.metadata.thinking_levels (or legacy snapshot field)supported + gated (thinking_levels.v1, asynchronous with session_metadata.v1)
get_session_statssession.metadata.usage (or legacy snapshot field)supported + gated (usage.v1, asynchronous with session_metadata.v1)
new_sessionsession.createsupported + exposed (Pix owns the session ID)
switch_sessionsession.attach on a discovered sessionsupported + exposed
cycle_model / cycle_thinking_levelsupported + intentionally omitted (typed model.set / thinking.set cover it; cycling is a TUI interaction)
set_steering_mode / set_follow_up_modesupported + intentionally omitted (queue modes are not yet a product surface; revisit with queue UI)
set_auto_compaction / set_auto_retry / abort_retrysupported + intentionally omitted (retry/compaction policy stays Pi-side for now)
bashsupported + intentionally omitted (Pix is not a terminal; Pi's own tools cover execution)
abort_bashsupported + intentionally omitted (depends on bash)
fork / clone / get_tree / get_fork_messagessupported + intentionally omitted (session branching needs client UX first; get_entries cursor model also duplicates get_messages)
get_entriessupported + intentionally omitted (see fork)
get_last_assistant_textsupported + intentionally omitted (message_end events already deliver the text)
export_htmlsupported + intentionally omitted (writes files outside authorized workspace guarantees)

Events (Pi → host)

Pi eventPix eventStatus
agent_startsession.state (running)supported + exposed
agent_settledsession.state (idle)supported + exposed
message_start (user)user.messagesupported + exposed
message_updateassistant.deltasupported + exposed
message_endassistant.messagesupported + exposed
tool_execution_start/update/endtool.start/update/endsupported + exposed
extension_ui_requestextension_ui.requestsupported + exposed
compaction_start/endcompactionsupported + exposed
queue_updatesession.queue + snapshot queuesupported + gated (queue.v1); cached in the runtime for reconnects
agent_end / turn_start / turn_endsupported + intentionally omitted (state events and message events already carry the semantics)
auto_retry_start/end, summarization_retry_*supported + intentionally omitted (surfacing retries is a future snapshot field if needed)
bash_execution_updatesupported + intentionally omitted (depends on bash command)
extension_errorerror (pi_unavailable)supported + exposed
entry_appendedsupported + intentionally omitted (durable JSONL remains Pi's; Pix does not shadow it)

Deliberate non-goals

  • Embedding the Pi Node SDK or running N AgentSessions in one daemon process: one Pi RPC child per active session stays the model (see docs/ai-development/runtime-lifecycle-improvement-plan.md).
  • A second message database: Pi's native JSONL sessions stay the only durable conversation store.
  • Exposing Pi sourceInfo paths, sessionFile, or any host filesystem path through the wire: the bridge strips them (pi_bridge).
  • Terminal/TUI parity: terminal-only interactions remain outside the RPC boundary.

On this page