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 120 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 and Copilot — run sessions under different accounts; switch accounts when a rate limit hits 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. Supports plan mode — agents propose a plan before executing, with an approve/revise workflow.
- Hook-driven monitoring for Claude — receives Claude Code hook events (tool use, notifications, permission requests, stops) over HTTP for live session visibility.
- 120 MCP tools — 17 tool categories covering sessions, terminals, layout, tasks, git, files, commits, tokens, hooks, todos, prompt history, and more. Every feature is agent-accessible.
- Command palette (Cmd+Shift+P) + Quick Open (Cmd+P) — VS Code-style fuzzy navigation.
- Prompt library — unified palette combining reusable snippet templates (
@prefix) and prompt history (#prefix) with pinning and save-as-snippet. - Commit analytics — daily bar charts, streaks, heatmaps, cadence, 7d/30d averages, 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.
- Todos panel — per-repo task list with priority levels, completion tracking, and automatic scanning of
TODO/FIXME/HACK/BUGcomments in code.
Pre-built DMG for Apple Silicon (macOS):
Download latest DMG (Apple Silicon)
The app is signed and notarized — macOS Gatekeeper will allow it to open without extra steps.
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 to create a new Claude Code session (pick a working directory and optional prompt), or choose Gemini CLI, Codex CLI, or Copilot CLI from the command palette. 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
- Sidebar Panels — sessions, search, changes, stats, activity, and todos
- Kanban View — board layout, cards, and expanded session view
- Terminal Panel — bottom terminal area, tabs, and layout
- File Viewer — opening, editing, and saving files
- Git Changes & Diff Viewer — review, stage, and inspect changes
- Accounts — manage Claude accounts
- Multi-Account GitHub — GitHub SSH and gh CLI for multiple accounts
- Settings — general, tracking, editor, and advanced settings
- 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 120 tools across 17 categories:
| Category | Tools | Examples |
|---|---|---|
| Session | 19 | create, kill, resume, wait for status, set label/model, auto-close, account list |
| Layout | 15 | get/set view mode, add/remove tiles, toggle command palette |
| Terminal | 11 | send keys, read buffer, resize, drop files, panel height/tabs |
| Hooks | 9 | 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 |
| Todo | 5 | create, update, delete, reorder, list |
| Prompt History | 4 | recent, search, pin/unpin, list pinned |
| Snippet | 2 | list snippet templates, create from text |
| 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.
Note: Copilot CLI sessions are excluded from token cost metrics — Copilot does not expose token usage data.
| 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)

