Terminal-native tiling IDE for parallel coding-agent sessions
mcode is a desktop IDE that lets you run, view, and orchestrate multiple coding-agent sessions simultaneously. It currently supports Claude Code, Gemini CLI, Codex CLI, Copilot CLI, and plain terminal sessions. Instead of tabbing between terminals, you see every session at once in a tiling layout — or switch to a kanban board grouped by status. A built-in task queue, hook-driven monitoring for Claude sessions, and 105 MCP tools make it highly automatable.
Looking for setup and usage docs? Start with the user manual for guided walkthroughs, feature guides, and shortcut reference.
- Tiling layout — split the screen into resizable tiles, each running a fully interactive agent terminal. See all sessions at once.
- Kanban board — switch to a board view with columns by status: Needs Attention, Working, Ready, and Completed.
- Multi-account support for Claude — run Claude sessions under different accounts; switch accounts when an account limit reaches and resume work from a different account.
- node-pty + xterm.js WebGL — the same terminal stack used by VS Code and Cursor. Full ANSI support, not a chat wrapper.
- PTY persistence — sessions survive app restarts via a background PTY broker process.
- Task queue — dispatch prompts to sessions with per-session reordering, retry logic, and concurrent execution.
- Hook-driven monitoring for Claude — receives Claude Code hook events (tool use, notifications, permission requests, stops) over HTTP for live session visibility.
- 105 MCP tools — 15 tool categories covering sessions, terminals, layout, tasks, git, files, commits, tokens, hooks, and more. Every feature is agent-accessible.
- Command palette (Cmd+Shift+P) + Quick Open (Cmd+P) — VS Code-style fuzzy navigation.
- Snippet palette — reusable prompt templates with variable interpolation.
- Commit analytics — daily stats, streaks, heatmaps, cadence, and per-repo breakdown.
- Token analytics — usage and cost by model, cache efficiency, top sessions, 7-day heatmap.
- Git integration — commit graph visualization, VS Code-style staging/unstaging, and inline diff viewer.
Pre-built DMG for Apple Silicon (macOS):
Download latest DMG (Apple Silicon)
Gatekeeper note: macOS may block the app on first launch since it is not yet notarized. Right-click
mcode.appin your Applications folder → Open → Open Anyway. Alternatively:xattr -cr /Applications/mcode.app
brew install --cask roman10/tap/mcode- macOS (primary platform)
- Node.js 22 or later
- Agent CLIs installed and authenticated only for the session types you want to run:
- Claude Code CLI for Claude sessions (
npm install -g @anthropic-ai/claude-code) - Gemini CLI for Gemini sessions (
npm install -g @google/gemini-cli) - Codex CLI for Codex sessions
- Copilot CLI for Copilot sessions
- Claude Code CLI for Claude sessions (
- No agent CLI required for plain terminal sessions
git clone https://github.com/roman10/mcode.git
cd mcode
npm install
npm run devnpm run build:macThis produces a DMG in the dist/ directory.
- Create a session — press Cmd+N, choose Claude Code, Gemini CLI, Codex CLI, or Copilot CLI, then pick a working directory and optional prompt. Use Cmd+T for a plain terminal.
- Split the view — Cmd+D splits horizontally, Cmd+Shift+D splits vertically. Cmd+Enter maximizes a tile.
- Navigate — Cmd+Shift+P opens the command palette. Cmd+P opens Quick Open for file search.
- Queue work — Cmd+Shift+T creates a task. Tasks dispatch to sessions automatically or can target a specific session.
- Switch views — Cmd+Shift+L toggles between tiling layout and kanban board.
For the full first-run walkthrough, see Getting Started.
- User Manual — start here for setup and feature guides
- Getting Started — first-run walkthrough and core workflows
- Attention & Tasks — understand attention levels and the task queue
- Command Palette & Quick Open — fuzzy navigation, commands, and snippets
- Git Changes & Diff Viewer — review, stage, and inspect changes
- Keyboard Shortcuts — full shortcut reference
| Shortcut | Action |
|---|---|
| Cmd+N | New session |
| Cmd+T | New terminal |
| Cmd+D | Split horizontal |
| Cmd+Shift+D | Split vertical |
| Cmd+Enter | Toggle maximize |
| Cmd+W | Close tile |
| Cmd+Shift+P | Command palette |
| Cmd+P | Quick Open |
| Cmd+Shift+T | New task |
| Cmd+Shift+L | Toggle tiling / kanban |
| Cmd+\ | Toggle sidebar |
| Cmd+, | Settings |
See Keyboard Shortcuts for the full list, or browse the User Manual for feature guides.
mcode exposes a Model Context Protocol (MCP) server with 105 tools across 15 categories:
| Category | Tools | Examples |
|---|---|---|
| Session | 17 | create, kill, resume, wait for status, set label/model, account list |
| Layout | 15 | get/set view mode, add/remove tiles, toggle command palette |
| Terminal | 9 | send keys, read buffer, resize, drop files, panel height |
| Hooks | 8 | list events, attention summary, wait/clear attention |
| Sidebar | 7 | switch tab, select session, get/set filter |
| Git | 10 | stage/unstage/discard files, get diff, open diff viewer |
| Commits | 9 | daily stats, heatmap, cadence, streaks, scan control |
| Tokens | 6 | daily usage, model breakdown, session usage, heatmap |
| Task | 6 | create, update, cancel, reorder, wait for status |
| File | 5 | list, read, write, search, open viewer |
| App | 5 | version, console logs, HMR events, sleep control |
| Kanban | 3 | get columns, expand session, collapse |
| Window | 3 | get bounds, resize, screenshot |
| Snippet | 1 | list snippet templates |
| Search | 1 | full-text file search |
This means agents can drive the IDE programmatically — creating sessions, dispatching tasks, reading terminal output, and verifying results without manual interaction.
| Component | Technology |
|---|---|
| App shell | Electron 41 + electron-vite |
| Frontend | React 19 + TypeScript 5.9 |
| Terminal | node-pty + xterm.js (WebGL) |
| Tiling layout | react-mosaic-component |
| State | Zustand |
| Database | better-sqlite3 (SQLite, WAL mode) |
| Styling | Tailwind CSS v4 |
| Packaging | electron-builder |
See CONTRIBUTING.md for development setup, code conventions, and how to submit changes.
To run tests:
npm test # unit tests
npm run dev # start dev server (required for integration tests)
npm run test:mcp # integration tests (in a separate terminal)

