Skip to main content

Overview

The Terminal 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: terminal
Default 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
Implementation:
  • 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
Implementation:
  • 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
Returns: true if session is open, false otherwise

Usage Examples

Implementing a Terminal Plugin (iTerm2)

Implementing a Web Terminal Plugin

Using Terminal in CLI

Implementation Notes

Runtime Integration

Terminal plugins should use runtime.getAttachInfo() to get connection details:

Platform Detection

Terminal plugins should check platform:

Session Deduplication

The isSessionOpen() 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
Future plugins could support:
  • terminal-app - macOS Terminal.app
  • gnome-terminal - GNOME Terminal on Linux
  • konsole - KDE Konsole on Linux
  • vscode - VS Code integrated terminal
  • warp - Warp terminal

See Also

  • Runtime - Runtime execution environment interface
  • Session - Session interface
  • Notifier - Notification interface