Overview
The Web terminal plugin provides:- Cross-platform terminal access (any OS)
- Browser-based xterm.js interface
- URL generation for dashboard terminal pages
- Session open state tracking
- No external dependencies
- Remote access capability
The Web terminal plugin is platform-agnostic and works on any operating system with a web browser.
How It Works
The Web terminal plugin is passive compared to iTerm2:- URL Generation: Creates dashboard URLs for terminal access
- State Tracking: Tracks which sessions have been “opened”
- Console Logging: Outputs URLs for manual access
- Dashboard Integration: Web dashboard uses session runtime info for actual terminal connection
The plugin doesn’t open browser windows automatically. It logs URLs that you can open manually or that the dashboard can detect.
Configuration
Add the Web terminal plugin to youragent-orchestrator.yaml:
Configuration Options
Base URL for the web dashboard. Used to generate terminal page URLs.Examples:
- Local development:
http://localhost:3000 - Remote server:
https://orchestrator.example.com - Custom port:
http://localhost:8080
URL Format
The plugin generates two types of URLs:Single Session Terminal
All Sessions Page
Dashboard Integration
The Web terminal plugin works with the Agent Orchestrator web dashboard: Dashboard Setup:-
Start the web server:
-
Navigate to session page:
- Dashboard uses xterm.js to connect to the session’s runtime
- Dashboard reads session metadata
- Extracts
runtimeHandleattachment info - Creates xterm.js terminal instance
- Connects to runtime (e.g., tmux session via WebSocket proxy)
The dashboard handles the actual terminal connection. The plugin only tracks session open state and generates URLs.
Usage Examples
Local Development
Remote Server
Custom Port
Multi-Environment
Session State Tracking
The plugin tracks which sessions have been “opened”:State tracking is in-memory only. Restarting the orchestrator clears the open state.
Browser-Based Terminal
The web dashboard uses xterm.js for terminal rendering: Features:- Full ANSI color support
- Copy/paste (browser-dependent)
- Resizable terminal
- Mouse support
- Keyboard shortcuts
- UTF-8 character support
- Copy:
Ctrl+Shift+C(orCmd+Con macOS) - Paste:
Ctrl+Shift+V(orCmd+Von macOS) - Clear:
Ctrl+L - Search:
Ctrl+Shift+F
Keyboard shortcuts may vary based on browser and xterm.js addons. Check the dashboard documentation for the full list.
Remote Access
The Web terminal plugin enables remote access to agent sessions: Scenario: Agent runs on server, you access from laptop-
Deploy orchestrator on server:
-
Configure plugin:
-
Access from anywhere:
Troubleshooting
Dashboard not loading terminal
Dashboard not loading terminal
Check dashboard is running:Verify session exists:Check browser console:
- Open DevTools (F12)
- Look for xterm.js errors
- Verify WebSocket connection
Terminal shows 'Connection failed'
Terminal shows 'Connection failed'
Check runtime attachment info:Verify runtime is accessible:
- For tmux:
tmux lsshould show session - For docker: container should be running
Wrong dashboard URL generated
Wrong dashboard URL generated
Update config:Verify environment:
Terminal not responding to keyboard input
Terminal not responding to keyboard input
Browser focus issues:
- Click inside terminal area
- Check browser doesn’t have conflicting shortcuts
- Try different browser
- Refresh page
- Check browser console for errors
- Verify xterm.js loaded successfully
Can't copy/paste in terminal
Can't copy/paste in terminal
Browser security restrictions:
- Use keyboard shortcuts:
Ctrl+Shift+C/V - Some browsers require HTTPS for clipboard access
- Check browser clipboard permissions
Comparison with iTerm2
| Feature | Web | iTerm2 |
|---|---|---|
| Platform | Any OS | macOS only |
| Setup | Browser only | iTerm2 required |
| Remote access | ✅ Native | ❌ Local only |
| Performance | Good (JavaScript) | Excellent (native) |
| Copy/paste | Browser-dependent | Native |
| Customization | CSS/JS | iTerm2 profiles |
| Tab management | Browser tabs | Native tabs |
| Keyboard shortcuts | xterm.js | iTerm2 bindings |
| Authentication | Custom | OS-level |
Use Cases
Remote orchestrator on cloud server
Remote orchestrator on cloud server
Perfect for:
- CI/CD server with orchestrator
- Shared development server
- Team collaboration on agent sessions
- Accessing sessions from any device
Cross-platform development
Cross-platform development
Perfect for:
- Linux development machine
- Windows + WSL
- Docker-based workflows
- Any non-macOS environment
Demo or presentation
Demo or presentation
Perfect for:
- Screen sharing agent sessions
- Client demonstrations
- Training sessions
- Recording terminal sessions
Browser-based workflows
Browser-based workflows
Perfect for:
- Chromebook or thin client access
- Tablet/mobile access (with caveats)
- Kiosk mode displays
- Embedded terminal in other web apps
Source Code
View the plugin source:- Package:
@composio/ao-plugin-terminal-web - Location:
packages/plugins/terminal-web/src/index.ts - Dashboard:
packages/web/app/sessions/[id]/terminal/page.tsx
Related
- iTerm2 Terminal - macOS native terminal alternative
- Web Dashboard - Dashboard setup and configuration
- Terminal Plugin Interface - Technical interface
- xterm.js Documentation - Official xterm.js docs
