Terminal
The terminal brings full shell access directly into Blueberry with multi-tab support, session persistence that survives network interruptions, and smart integrations.
Multi-Tab Terminal
Run multiple terminal sessions with drag-and-drop tab management:
Tab Features
- Create tabs -
Cmd+Topens a new terminal session - Rename tabs - Double-click tab name
- Reorder tabs - Drag tabs to rearrange
- Tab indicators - Green pulsing dot shows running server
- Startup commands - Configure commands to auto-run when tab opens
Auto-Naming
- Tabs automatically rename to “Server” when a dev server is detected
- Tabs rename to the agent name when an AI agent is detected (see below)
- Manual renames are preserved
Split Panes
Split terminal tabs into multiple groups with tmux-style horizontal and vertical splits.
Creating Splits
- Horizontal split - Divide the terminal side by side
- Vertical split - Stack terminals top and bottom
- Nested splits - Splits can be nested recursively for complex layouts
Working with Split Groups
Each split group has its own tab bar and active session:
- Drag tabs between groups - Move terminal sessions across split panes
- Focused group - Keyboard shortcuts (
Cmd+T,Cmd+number) target the currently focused group - Auto-close - Empty groups close automatically when other groups exist
- Resize - Drag the handle between groups, or double-click to reset to 50/50
Split layouts persist per workspace, surviving project switches and restarts.
AI Agent Detection
Blueberry automatically detects AI coding agents running in terminal tabs:
Supported Agents
- Claude Code - Anthropic’s coding agent
- Codex - OpenAI’s coding agent
- Gemini CLI - Google’s coding agent
- OpenCode - Open-source coding agent
How It Works
Blueberry scans child processes of each terminal session to detect known agent binaries. When an agent is detected:
- The tab automatically renames to the agent name (e.g., “Claude”)
- An agent icon appears on the tab
- Both clear when the agent process exits
Session Persistence
Terminal sessions survive network interruptions, laptop sleep, and browser refreshes:
How It Works
- 30-minute grace period - PTY processes stay alive after disconnect
- 50KB output buffer - Recent output replayed on reconnection
- Heartbeat monitoring - Server detects stale connections via ping/pong
Reconnection
- Exponential backoff: 1s → 2s → 4s → 8s → 16s → 30s (max 10 attempts)
- Yellow spinner during reconnection
- Attempt counter: “Reconnecting (attempt 3/10)”
- Reload button after max attempts
Clickable Links
Cmd+click on file paths and URLs in terminal output:
File Links
- Absolute paths:
/Users/foo/project/src/file.ts:42:10 - Relative paths:
./src/file.ts,src/file.ts - With line numbers:
file.ts:42orfile.ts:42:10 - Opens file in editor at specified line
URL Links
- Full URLs:
https://example.com - Localhost:
localhost:3000,127.0.0.1:8080 - Opens in preview browser panel
Server Auto-Detection
Blueberry automatically detects when you start a dev server:
Detection Process (macOS)
- Monitors child processes every 2 seconds
- Scans for listening ports via
lsof - Verifies HTTP server with HEAD request
- Notifies via WebSocket message
When Server Detected
- Tab auto-renames to “Server”
- Green pulsing indicator appears on tab
- Preview browser can auto-navigate to server URL
Terminal Settings
Per-Tab Settings
- Tab name (with manual override protection)
- Startup command (auto-runs on tab open)
Global Settings
- Font size (adjustable)
- Scrollback buffer: 5000 lines
Keyboard Shortcuts
| Action | Shortcut |
|---|---|
| New terminal tab | Cmd+T |
| Close current tab | Cmd+W |
| Line continuation | Option+Enter |
| Delete to line start | Cmd+Backspace |
| Delete word | Opt+Backspace |
| Jump to line start/end | Cmd+Left/Right |
| Jump word | Opt+Left/Right |
| Open link in system browser | Cmd+Shift+click |
