A powerful cross-platform multi-terminal app with tiling layouts, floating panels, and a keyboard-driven workflow.
Built with Electron, React, TypeScript, xterm.js, and node-pty.
Multiple Terminals in One View
- Tiling layout with horizontal/vertical splits (binary tree, like tmux)
- Floating panels that can be dragged, resized, and maximized
- Equalize all panes to the same size with one shortcut
Grid View Mode
- Toggle between Focus (single terminal) and Grid layout (
Ctrl+Shift+F) - Grid auto-arranges terminals: 2x2, 3x2, etc. based on terminal count
- Cycle grid column count with
Ctrl+Shift+L(1-col stack, 2-col, 3-col, ...) - Fully resizable dividers in grid mode
AI Sessions Panel
- Monitor GitHub Copilot and Claude Code sessions in real-time (
Ctrl+Shift+C) - Shows session status, summary, branch, repo, message/tool counts, and relative time
- Click a session to resume it directly in a new terminal pane
- Filter tabs: All / Copilot / Claude Code
- Search across sessions by name, branch, cwd, or summary
- Desktop notifications when a Copilot session needs approval or input
- Sessions automatically filtered to last 7 days and deduplicated
- Configurable base commands for Copilot and Claude Code sessions via Settings > Terminal
Keyboard-Driven Workflow
- Command palette (
Ctrl+Shift+P) with every action searchable - Jump to any terminal by name (
Ctrl+Shift+G) - Split, move, resize, and navigate -- all from the keyboard
- Every shortcut is fully configurable
Drag & Drop
- Drag tabs to split panes (left/right/top/bottom indicators)
- Drag to swap terminal positions
- Drag to detach as floating panel
- Visual drop zone labels showing exactly where the terminal will land
Session Management
- Auto-save/restore on close, crash, or reboot (saves every 5 seconds)
- Named layouts: save and load terminal arrangements with titles and working directories
- Startup commands per terminal -- restored when loading a layout
External Links
- Links open in your default browser, not inside the app
Configurable Everything
- Settings UI (
Ctrl+,) with tabs for Terminal, Keybindings, Shells, and Theme - Re-record any keybinding by clicking it
- Add/remove shell profiles (PowerShell, CMD, WSL, or any executable)
- Set default start folder globally or per shell
- 10 built-in color themes (or create your own with color pickers)
| Shortcut | Action |
|---|---|
Ctrl+Shift+P |
Command palette |
Ctrl+Shift+N |
New terminal |
Ctrl+Shift+W |
Close terminal |
Ctrl+Shift+R |
Rename terminal |
Ctrl+Shift+G |
Jump to terminal by name |
Shift+Arrow |
Move focus between panes |
Ctrl+Shift+Arrow |
Move/swap terminal in direction |
Ctrl+Alt+Arrow |
Split in that direction |
Ctrl+Shift+F |
Toggle view mode (Focus / Grid) |
Ctrl+Shift+L |
Cycle grid column layout |
Ctrl+Shift+C |
AI Sessions panel (Copilot / Claude) |
Ctrl+Shift+D |
Directory favorites panel |
Ctrl+Shift+E |
Equalize all pane sizes |
Ctrl+Shift+Alt+Arrow |
Resize pane |
Ctrl+= / Ctrl+- |
Zoom in / out |
Ctrl+0 |
Reset zoom |
Ctrl+, |
Open settings |
Ctrl+Shift+/ |
Show all shortcuts |
All shortcuts are remappable in Settings > Keybindings.
Right-click any tab for:
- Rename
- Split Right / Down
- Float / Dock
- Set Startup Command
- New Terminal (pick shell)
- Close / Close Others / Close All
Download the latest version from the Releases page. Available for Windows (.exe installer + portable .zip), macOS (.dmg for Apple Silicon and Intel), and Linux (.deb, .rpm).
macOS: If you see "tmax is damaged and can't be opened", run:
xattr -cr /Applications/tmax.app
- Node.js 18+
- npm
- Windows: Visual Studio 2022 Build Tools with "Desktop development with C++" workload (for node-pty native compilation). VS 2025+ is not yet supported by node-gyp — if you only have VS 2025, install the 2022 Build Tools alongside it and set
GYP_MSVS_VERSION=2022before runningnpm install. - macOS: Xcode Command Line Tools (
xcode-select --install) - Linux:
build-essential,python3,libx11-dev,libxkbfile-dev
git clone https://github.com/InbarR/tmax.git
cd tmax
npm install
npm startnpm run buildOutput per platform:
- Windows:
out/make/squirrel.windows/x64/tmax-1.0.0.Setup.exe - macOS:
out/make/*.dmg - Linux:
out/make/deb/x64/*.debandout/make/rpm/x64/*.rpm - All: portable
.zip
src/
main/ Electron main process
main.ts Window creation, IPC handlers
pty-manager.ts node-pty lifecycle management
config-store.ts electron-store config persistence
copilot-session-monitor.ts Scans ~/.copilot/session-state/
copilot-session-watcher.ts File watcher for Copilot sessions
copilot-events-parser.ts Incremental JSONL parser for Copilot events
copilot-notification.ts Desktop notifications for Copilot
claude-code-session-monitor.ts Scans ~/.claude/projects/
claude-code-session-watcher.ts File watcher for Claude Code sessions
claude-code-events-parser.ts JSONL parser for Claude Code sessions
preload/ Secure IPC bridge (contextBridge)
renderer/ React UI
state/ Zustand store + binary tree / grid layout engine
components/ Terminal, TabBar, TilingLayout, FloatingPanel,
CopilotPanel, CommandPalette, Settings, etc.
hooks/ Keybindings, drag & drop, PTY helpers
styles/ Global CSS (Catppuccin theme)
shared/ IPC channel constants, AI session types
Key design decisions:
- Binary tree layout engine for tmux-style tiling with arbitrary splits
- Zustand for state management (terminals, layout, focus, config)
@dnd-kitfor structured drag & drop with per-pane drop zonesnode-ptywith ConPTY for native Windows terminal emulationcontextIsolation: truefor Electron security- Session auto-save every 5s for crash recovery
Settings are stored at:
%APPDATA%/tmax/tmax-config.json
You can edit this file directly or use the Settings UI (Ctrl+,).
The commands used to resume Copilot and Claude Code sessions are configurable in Settings > Terminal:
| Setting | Default | Description |
|---|---|---|
| Copilot Command | agency copilot |
Base command for Copilot sessions |
| Claude Code Command | claude |
Base command for Claude Code sessions |
This lets you use custom aliases (e.g., frodo instead of agency copilot) or wrapper scripts. The configured command is invoked as <command> --resume <sessionId>.
MIT
