Skip to content

Pi Agent Integration

Séance integrates with Pi Agent through built-in wrapper scripts and native hook support.

How It Works

  1. Wrapper script intercepts pi launches inside Séance terminals
  2. Built-in integration handles lifecycle events without requiring a plugin
  3. Status tracking updates the sidebar with real-time agent state

Hook Events

Pi EventSéance HookWhat It Shows
session_startsession-startRunning
agent_startprompt-submitRunning
tool_callpre-tool-useRunning
tool_resultpost-tool-useRunning
agent_endstopIdle
session_shutdownsession-end(cleared)

Features

  • Per-surface status — each terminal pane tracks its own agent status independently
  • Session tracking — tracks session lifecycle from start to end
  • Desktop notifications — notifies on completion events

Configuration

Toggle integration on or off in config.toml:

toml
pi-hooks = true

Limitations

  • No notification support — Pi doesn't emit permission request events through the hook system Séance uses
  • No permission detection — when Pi prompts for permission, the sidebar shows "Running" instead of "Waiting for Permission"
  • No subagent tracking — Pi doesn't expose subagent lifecycle events to Séance

For Contributors

Integration Approach

Pi uses a built-in integration — no TypeScript plugin or Python plugin is required. The wrapper script (resources/bin/pi) intercepts launches for PID tracking and fires session-end on exit.

Event Mapping

Pi EventSeance HookUI Status
session_startsession-startRunning
agent_startprompt-submitRunning
tool_callpre-tool-useRunning
tool_resultpost-tool-useRunning
agent_endstopIdle
session_shutdownsession-end(cleared)

Key Implementation Details

  • Status mode: Per-surface. Status key prefix pi, mode surface.
  • clear_status_on_end is true.
  • has_notification_hook is false.
  • Config toggle: pi-hooks = true in config.toml.
  • Cache directory: ~/.cache/seance-pi/ — cleaned up on session end.

Upstream Framework Events

Source: github.com/earendil-works/pi

Pi Agent has an extensive extension system with many lifecycle events:

EventDescriptionSéance Handles?
session_startSession beginsYes
session_shutdownSession terminatesYes
agent_startAgent starts processingYes
agent_endAgent finishes processingYes
agent_settledAgent reaches stable stateNo
turn_startTurn beginsNo
turn_endTurn endsNo
tool_callTool call initiatedYes
tool_resultTool call result receivedYes
tool_execution_startTool execution beginsNo
tool_execution_endTool execution endsNo
message_startMessage beginsNo
message_endMessage endsNo
contextContext modificationNo
before_provider_requestProvider request about to be madeNo
model_selectModel selection changedNo
inputUser input handlingNo

Missing Event Coverage

Events that Pi Agent can emit but Séance does not currently handle:

EventPotential Use for Séance
agent_settledTrack agent stability
turn_start / turn_endTurn-level tracking
tool_execution_start / tool_execution_endTool lifecycle tracking
message_start / message_endMessage tracking
contextContext modification tracking
before_provider_requestProvider request tracking
model_selectModel changes tracking

Impact: Pi Agent has the most granular event system of all agents. Séance's built-in integration is minimal.

MIT Licensed