IDE Integrations
Callipso integrates with multiple IDEs and terminal applications. The integration depth varies by platform — IDEs with a dedicated extension get the richest feature set.
Supported platforms
| Platform | Integration type | Terminal discovery | Voice routing | Session tracking | |---|---|---|---|---| | VS Code | Extension | Full | Full | Full | | Cursor | Extension | Full | Full | Full | | Windsurf | Extension | Full | Full | Full | | Terminal.app | AppleScript adapter | Basic | Full | None | | iTerm2 | AppleScript adapter | Basic | Full | None | | Warp | Accessibility adapter | Basic | Full | None | | Claude Desktop | HTTP adapter | Basic | Full | Partial |
How the IDE extension works
The Callipso IDE extension runs inside VS Code, Cursor, or Windsurf as an extension host process. It provides:
Terminal discovery — The extension uses the VS Code Terminal API to enumerate all open terminal instances. It reports their names, indices, and active states to the Callipso overlay via HTTP every second.
Text delivery — When Callipso routes voice input to a terminal, the extension receives the text via its HTTP server and calls terminal.sendText() on the target terminal instance.
Focus tracking — The extension listens for onDidChangeActiveTerminal events and reports focus changes to Callipso, enabling auto-routing.
Session registration — When a Claude Code session starts in a terminal, the extension detects it and registers the session ID with Callipso for session-aware routing.
Extension ports
Each IDE type uses a dedicated port to avoid conflicts when multiple IDEs are open simultaneously:
- VS Code: port 3001
- Cursor: port 3002
- Windsurf: port 3003
How adapters work
For terminal applications without a dedicated extension (Terminal.app, iTerm2, Warp), Callipso uses application adapters. These are platform-specific modules that:
- Poll the application for open windows and tabs using AppleScript or accessibility APIs
- Convert the raw data into Callipso's normalized terminal format
- Route text to the correct tab/pane using the application's scripting interface
Adapters provide basic functionality — they can discover terminals and deliver text — but lack the deep integration that the IDE extension offers (no session tracking, less precise focus detection).
Adding a new integration
Callipso's adapter system is extensible. Each adapter inherits from BaseAppAdapter and implements:
// The minimum interface for a new adapter:
class MyAppAdapter extends BaseAppAdapter {
async pollTerminals(): Promise<RawTerminal[]> { /* ... */ }
async sendText(terminalId: string, text: string): Promise<void> { /* ... */ }
async focusTerminal(terminalId: string): Promise<void> { /* ... */ }
}
If you are interested in adding support for a new terminal application, email support@callipso.dev — adapter contributions are welcomed.
Next steps
- VS Code setup — Detailed guide for VS Code integration
- Cursor setup — Detailed guide for Cursor integration