Overview
TheTerminal interface manages how humans view and interact with running sessions. Terminal plugins open IDE tabs, browser windows, or terminal sessions for direct agent interaction.
Plugin Slot: terminalDefault Plugin:
iterm2
Interface Definition
Methods
string
required
Plugin name identifier (e.g.
"iterm2", "web", "none").(session: Session) => Promise<void>
required
Open a session for human interaction.Parameters:
session- Session to open
- iTerm2: Create new tab with tmux attach command
- Web: Open browser to web terminal URL
- None: No-op (headless mode)
(sessions: Session[]) => Promise<void>
required
Open all sessions for a project.Parameters:
sessions- Array of sessions to open
- iTerm2: Create window with multiple tabs
- Web: Open browser with multiple tabs
- None: No-op
(session: Session) => Promise<boolean>
Optional: Check if a session is already open in a tab/window.Parameters:
session- Session to check
Usage Examples
Implementing a Terminal Plugin (iTerm2)
Implementing a Web Terminal Plugin
Using Terminal in CLI
Implementation Notes
Runtime Integration
Terminal plugins should useruntime.getAttachInfo() to get connection details:
Platform Detection
Terminal plugins should check platform:Session Deduplication
TheisSessionOpen() method helps avoid opening duplicate tabs:
Built-in Plugins
- iterm2 - iTerm2 on macOS (default)
- web - Web-based terminal (browser)
- none - No-op for headless/CI environments
- terminal-app - macOS Terminal.app
- gnome-terminal - GNOME Terminal on Linux
- konsole - KDE Konsole on Linux
- vscode - VS Code integrated terminal
- warp - Warp terminal
