The Claude Code client for the ADHD brain. Run up to 12 Claude sessions side by side in one glass window — because an agent you can't see is an agent you forgot about. A dozen sessions, zero impulse control.
Real app screenshot — the four panes show demo projects with simulated session output.
Claude Code made it easy to run five agents at once. Your terminal made it easy to forget four of them exist.
QuadClaude is built around one rule: out of sight is out of mind. Nothing lives in a tab, nothing hides behind another window — every session stays on screen with its state readable at a glance.
- Everything visible, always. Agents don't get buried. The grid is the whole app.
- One glance, total state. Every pane shows its repo, branch, ahead/behind counts, and whether Claude is working or waiting on you.
- Interrupt-proof. Wander off mid-task and the grid shows exactly where you left things when you come back. Quit the app and the whole workspace restores itself.
- Hyperfocus on tap. Focus layouts make one pane huge while the rest stay in the corner of your eye. Double-click a header to dive in, double-click to surface.
- 4–12 Independent Terminals: Run separate Claude sessions in each pane; add or close extra panes beyond the core four (up to 12)
- Custom Agents (Bring Your Own Model): Launch any CLI agent (Claude Code, opencode, aider, …) against your own OpenAI-compatible endpoint — one agent per pane, chosen from the model badge
- Pane Pairing: Link two panes as an orchestrator ⇄ worker team (e.g. Claude plans, a local model grinds) with a shared-color ring and role chips
- 3 Layout Modes: Grid (auto-balanced), Focus (1 large + rest small), Focus-Right (rest small + 1 large)
- Glass UI: macOS Liquid Glass visual effects with dark-mode-only design
- Prompt Library: Save and recall frequently used prompts via a floating toolbar
- Usage Tracking: Real-time Claude API usage indicator in the title bar
- Custom Wallpapers: Set background wallpapers with adjustable opacity
- Favorite Directories: Star directories for quick access across terminals
- Git Status Bar: Shows branch name and ahead/behind counts on every terminal
- Auto-Named Terminals: Headers show folder/repo name automatically
- Workspace Persistence: Remembers your directories, layout, and preferences between sessions
- Drag & Drop Reordering: Rearrange terminal positions by dragging headers
Each pane can launch any CLI coding agent — not just Claude Code — so you can mix Claude with a local or self-hosted model and run them side by side. QuadClaude is a pure launcher: it runs a command with a set of env vars in a terminal and never speaks any API itself, so it works with any tool and any provider.
Add an agent in Settings → Agents → Add agent. A profile is just a name, a command, and an optional set of environment variables. Pick a preset (opencode / aider) or Other for anything else. The model badge in each pane header shows and switches the agent; the default agent is used for new panes.
Tools configure themselves in one of two ways — the presets reflect both:
-
Env-driven tools (e.g. aider) — set the variables right in the profile:
OPENAI_API_BASE=http://your-host/v1OPENAI_API_KEY= your key (any placeholder likeollamafor local models that don't check it)
-
Config-file tools (e.g. opencode) — leave the env empty and configure the tool itself. For opencode, edit
~/.config/opencode/opencode.json:{ "$schema": "https://opencode.ai/config.json", "provider": { "my-local": { "npm": "@ai-sdk/openai-compatible", "name": "My Local Model", "options": { "baseURL": "http://your-host/v1", "apiKey": "ollama" }, "models": { "your-model-id": { "name": "Your Model" } } } } }
API keys set in a profile are injected into the agent's shell at launch and never echoed into shell history.
Reaching a self-hosted endpoint. Your tool runs on your machine, so the endpoint must be reachable from it. Local models (
http://localhost:11434/v1for Ollama) just work. For a remote/self-hosted box, make sure the URL resolves and isn't gated behind browser SSO — a private VPN (e.g. Tailscale, or an Olares LarePass VPN to an internal entrance) is the cleanest way. Quick check:curl http://your-host/v1/modelsshould return a JSON model list (HTTP 200), not a redirect.
- Node.js 18+
- npm or yarn
- macOS (Liquid Glass requires macOS)
- Claude CLI installed and authenticated (
claudecommand available)
Download the latest .dmg from the Releases page.
# Clone the repository
git clone https://github.com/rdyplayerB/QuadClaude.git
cd QuadClaude
# Install dependencies
npm install
# Start development server
npm run electron:dev# Build for production
npm run buildThe packaged app will be in the release directory.
| Layout | Shortcut | Description |
|---|---|---|
| Grid | Cmd+1 |
Auto-balanced grid — 2×2 with four panes, up to 4×3 with twelve |
| Focus | Cmd+2 |
1 large pane on left + the rest small on the right |
| Focus-Right | Cmd+3 |
Small panes on left + 1 large on the right |
Tip: Double-click any terminal header to toggle focus mode on that pane.
| Action | Shortcut |
|---|---|
| Focus Terminal 1–9 | Ctrl+1-9 (1–4 rebindable in Settings; 5–9 fixed) |
| Clear Current Terminal | Cmd+K |
| Increase Font | Cmd++ |
| Decrease Font | Cmd+- |
- Each pane starts as a standard shell (bash/zsh)
- Navigate to your project directory with
cd - Run
claudeto start a Claude session - When Claude exits, the pane returns to a shell in the same directory
Save frequently used prompts and inject them into any terminal with one click.
- Click the + button on the floating toolbar to create a prompt
- Click a saved prompt to inject its text into the active terminal
- Right-click a prompt to delete it
Each terminal displays a compact status bar showing:
- Git branch name (when in a git repo)
- Commits ahead/behind remote
Your workspace state is automatically saved and restored:
- Terminal working directories
- Current layout mode
- Active pane selection
- Saved prompts and favorite directories
- Background/wallpaper settings
src/
├── main/ # Electron main process
│ ├── index.ts # App entry, window management, Liquid Glass
│ ├── pty.ts # PTY process management + git status caching
│ ├── usage.ts # Claude API usage polling
│ ├── preload.ts # Preload script for IPC
│ └── workspace.ts # State persistence
├── renderer/ # React UI
│ ├── App.tsx
│ ├── components/
│ │ ├── TerminalPane.tsx
│ │ ├── TerminalGrid.tsx
│ │ ├── PaneHeader.tsx
│ │ ├── PromptToolbar.tsx
│ │ ├── UsageIndicator.tsx
│ │ ├── FavoritesDropdown.tsx
│ │ ├── LayoutSelector.tsx
│ │ └── SettingsModal.tsx
│ ├── hooks/
│ ├── layouts/
│ └── store/
└── shared/ # Shared types
- Electron 41
- React 18 + TypeScript
- xterm.js + node-pty
- Zustand (state management)
- Tailwind CSS
- Vite
- electron-liquid-glass
- Claude-Usage-Tracker by @hamed-elfayome - the statusline script is adapted from this project; powers Claude Code statusline integration and usage tracking
- electron-liquid-glass by Meridius Labs - macOS Liquid Glass window effects behind QuadClaude's glass UI
Built on xterm.js, node-pty, Electron, React, and Zustand.
QuadClaude — Copyright (C) 2026 rdyplayerB
Licensed under the GNU AGPL v3.0 or later — if you run a modified version of QuadClaude over a network, you must make your source available to its users.
QuadClaude is an independent, community project. It is not affiliated with, endorsed by, or sponsored by Anthropic. "Claude" and "Anthropic" are trademarks of Anthropic PBC. QuadClaude uses the name only to describe its interoperability with Anthropic's Claude products.
