Skip to content

Interfaces

Every interface drives the same RPC command host, CodingSession, AgentHarness, and provider-neutral loop. Choose a surface based on who supplies input and how output needs to be consumed—not because it has a different agent implementation.

InterfaceStart itOutputBest for
Textual TUIwisp or wisp tuiFullscreen terminal UIInteractive repository work
Line TUIwisp tui --lineIncremental terminal textSimple terminals and debugging
Printwisp -p "PROMPT"Assistant text on stdout; events on stderrOne-shot prompts and scripts
JSONwisp -p "PROMPT" --mode jsonOne WispEvent JSON object per lineTyped one-shot automation
JSONL RPCwisp --mode rpcCommands on stdin; typed events/results on stdoutLong-lived clients and custom UIs
Python SDKImport InProcessWispTyped async Python APIIn-process applications and tests

Shared semantics, different controls

Session persistence, tool safety, approval decisions, cancellation, provider behavior, and event ordering are shared. Input capabilities depend on the transport:

  • RPC and SDK clients can steer an active run, queue follow-ups, edit queue state, cancel commands, and answer approvals.
  • The TUI can queue follow-up prompts, cancel the active command, and answer approvals, but it does not currently expose the steering queue as a separate user action.
  • Print and JSON modes execute one prompt and exit. They cannot accept steering, follow-up, or an approval response after the run starts; pass --yes only when unattended unsafe execution is intentional.

Use Staying in sync for queue and cancellation behavior, CLI for flags and stream contracts, and Architecture for the shared runtime boundaries.

Released under the MIT License.