Skip to main content

Overview

The terminal channel provides multiplexed PTY terminal sessions. Multiple concurrent sessions can run over a single WebSocket connection. Default terminal settings:
SettingValue
Shellbash
TERMxterm-256color
Columns80
Rows24

Client to Server Messages

create

Create a new terminal session.
{
  "channel": "terminal",
  "type": "create",
  "sessionId": "cli-123",
  "cols": 120,
  "rows": 40
}
FieldTypeRequiredDescription
sessionIdstringYesUnique identifier for this terminal session
colsintegerNoTerminal width in columns (default: 80)
rowsintegerNoTerminal height in rows (default: 24)

input

Send keyboard input to a terminal session.
{
  "channel": "terminal",
  "type": "input",
  "sessionId": "cli-123",
  "data": "ls -la\n"
}
FieldTypeRequiredDescription
sessionIdstringYesTarget terminal session
datastringYesRaw input data (include \n for Enter, \t for Tab, etc.)

resize

Resize a terminal session. Send this when the user resizes their terminal UI.
{
  "channel": "terminal",
  "type": "resize",
  "sessionId": "cli-123",
  "cols": 200,
  "rows": 50
}
FieldTypeRequiredDescription
sessionIdstringYesTarget terminal session
colsintegerYesNew width in columns
rowsintegerYesNew height in rows

close

Close a terminal session and terminate its process.
{
  "channel": "terminal",
  "type": "close",
  "sessionId": "cli-123"
}
FieldTypeRequiredDescription
sessionIdstringYesTerminal session to close

Server to Client Messages

output

Terminal output data from the PTY.
{
  "channel": "terminal",
  "type": "output",
  "sessionId": "cli-123",
  "data": "total 48\ndrwxr-xr-x  12 user  staff   384 Feb 20 10:30 .\n"
}
FieldTypeDescription
sessionIdstringSource terminal session
datastringRaw terminal output including ANSI escape codes

close

Terminal session has ended (process exited).
{
  "channel": "terminal",
  "type": "close",
  "sessionId": "cli-123",
  "exitCode": 0
}
FieldTypeDescription
sessionIdstringTerminal session that closed
exitCodeinteger or nullProcess exit code, or null if terminated by signal

Example Flow