Configuration
Callipso is configured through the overlay settings panel. Click the gear icon in the overlay header or press Cmd+, while the overlay is focused.
Hotkeys
Hotkeys control the voice routing workflow. All hotkeys are globally registered (they work even when Callipso is not focused).
| Action | Default | Description |
|---|---|---|
| Route voice | Ctrl+Shift+Space | Transcribes clipboard text and sends it to the active terminal |
| Toggle overlay | Ctrl+Shift+O | Show or hide the Callipso overlay |
| Pin terminal | Ctrl+Shift+P | Pin the currently focused terminal as the voice target |
| Cycle terminals | Ctrl+Shift+Tab | Cycle through available terminals |
To customize a hotkey, click on the key combination in the settings panel and press your desired shortcut. Callipso will warn you if the combination conflicts with a system or IDE shortcut.
Hotkeys are stored per-machine and persist across app updates. They are saved in ~/Library/Application Support/callipso/settings.json.
STT engine
Choose which speech-to-text engine Callipso uses:
Parakeet (local)
- Latency: ~200ms for typical commands
- Privacy: All processing happens on-device
- Model size: ~2 GB on disk
- Accuracy: Optimized for developer vocabulary (code, CLI commands, file paths)
SuperWhisper (local)
- Latency: Depends on SuperWhisper settings
- Integration: Reads from SuperWhisper's clipboard output
- Requirement: SuperWhisper must be running separately
NVIDIA NIM (cloud)
- Latency: ~300-500ms depending on network
- Privacy: Audio is sent to NVIDIA's API
- Accuracy: High accuracy with large model support
- Requirement: NVIDIA API key required
# Set the STT engine via the overlay settings, or via the config file:
# ~/Library/Application Support/callipso/settings.json
{
"stt": {
"engine": "parakeet", // "parakeet" | "superwhisper" | "nvidia-nim"
"parakeet": {
"port": 5001,
"model": "medium"
}
}
}
Routing behavior
Auto-routing vs. pinned routing
By default, Callipso uses auto-routing: voice input is sent to whichever terminal was most recently focused. If you prefer to always target a specific terminal, pin it using the hotkey or by clicking the pin icon in the terminal list.
Cross-pollination prevention
When running multiple Claude Code sessions in different terminals, Callipso uses session IDs to ensure voice input reaches the correct session. This prevents "cross-pollination" where a command meant for Terminal A accidentally goes to Terminal B.
Session routing
Session routing is automatic. Each Claude Code session registers itself with Callipso via HTTP hooks. You do not need to configure anything for this to work.
Overlay appearance
| Setting | Options | Default | |---|---|---| | Theme | Dark, Light, System | Dark | | Opacity | 0-100% | 90% | | Position | Top, Bottom, Left, Right | Right | | Width | 200-600px | 350px | | Always on top | On/Off | On |
Logging
Callipso writes structured logs (JSON format via Pino) to:
~/Library/Application Support/callipso/logs/callipso.log
View logs in real time:
tail -f ~/Library/Application\ Support/callipso/logs/callipso.log | jq '.'
# Prettier format with timestamps:
tail -f ~/Library/Application\ Support/callipso/logs/callipso.log | \
jq -r '"\(.time | . / 1000 | strftime("%H:%M:%S")) [\(.component // "?")] \(.msg)"'
Log levels can be changed at runtime:
# Via the HTTP API (port 3000):
curl -X POST http://localhost:3000/log-level -H "Content-Type: application/json" -d '{"level":"debug"}'