A free, open-source terminal workspace for macOS.
Tabby gives you browser-style tabs, split-pane layouts, live terminal sessions, and per-pane launch profiles — all in one native app. Press Cmd+T, pick a layout, and start working across multiple terminals without losing context.
- One window, many terminals — tabs hold independent workspace layouts, each with its own split configuration
- No session loss — switching tabs or resizing panes never kills your running processes
- Per-pane identity — each pane has its own working directory, profile, and runtime
- Built-in profiles — launch Terminal, Claude Code, Codex, or any custom command per pane
- Scriptable — CLI flags let you automate workspace creation from scripts or hotkey daemons
- Open a tab —
Cmd+Tcreates a new workspace tab - Pick a layout — choose from
1x1up to3x3grid presets - Work — each pane runs an independent PTY session that survives tab switches
- Customize — set profiles, working directories, and themes per pane
git clone https://github.com/markbrutx/Tabby.git
cd Tabby
bun install
# Full desktop app with real terminal sessions
bun run tauri devFrontend-only mode (no Rust, mock transport for UI development):
bun run devbun run build # Frontend bundle
bun run tauri build # macOS .app + .dmg| Feature | Description |
|---|---|
| Workspace tabs | Cmd+T / Cmd+W / Cmd+1-9 — each tab is an independent workspace |
| Split layouts | Grid presets from 1x1 to 3x3, fully resizable after creation |
| Persistent sessions | PTY processes survive tab switches, focus changes, and layout resizing |
| CLI profiles | Terminal, Claude Code, Codex, or custom commands per pane |
| Per-pane cwd | Each pane tracks its own working directory |
| Browser panes | Embed web views alongside terminal panes |
| Git integration | Status, branches, commits, diffs, blame, and stash management |
| Theme system | Light/dark modes, custom themes, live editor |
| Keyboard-first | Full shortcut coverage for tabs, panes, and workspace actions |
| CLI automation | tabby --new-tab --layout 2x2 --profile codex --cwd ~/project |
# Open a new tab with a 2x2 grid in a specific directory
tabby --new-tab --layout 2x2 --cwd ~/projects/my-app
# Open a tab with Codex profile
tabby --new-tab --profile codex
# Custom command in a new tab
tabby --new-tab --profile custom --command "docker compose up"| Flag | Description |
|---|---|
--new-tab |
Opens a new tab in the running instance |
--layout |
Layout preset: 1x1, 1x2, 2x2, 2x3, 3x3 |
--profile |
Pane profile: terminal, claude-code, codex, custom |
--cwd |
Working directory for panes |
--command |
Custom command (with --profile custom) |
Tabby follows a layered architecture with five bounded contexts:
Presentation → React 18 + TypeScript + Zustand + Tailwind CSS v4
Transport → specta + tauri-specta (typed IPC bindings)
Application → Rust services with port-adapter pattern
Infrastructure→ Tauri v2 + portable-pty + plugin ecosystem
Domain → Pure Rust crates (kernel, workspace, runtime, settings, git)
| Crate | Purpose |
|---|---|
tabby-kernel |
Shared value objects and ID types |
tabby-workspace |
Tabs, panes, split layouts, domain events |
tabby-runtime |
Pane runtime lifecycle and status tracking |
tabby-settings |
User preferences and terminal profiles |
tabby-git |
Git operations domain model |
tabby-contracts |
Transport DTOs and IPC event structs |
For full architecture docs, see the documentation site.
# Frontend
bun run lint # ESLint + DTO boundary check
bun run typecheck # TypeScript strict mode
bun run test # Vitest (500+ tests)
bun run test:e2e # Playwright E2E
# Rust
cd src-tauri
cargo fmt --all --check
cargo clippy --workspace --all-targets --all-features -- -D warnings
cargo test --workspace # 500+ tests
# Everything at once
bun run verify:allsrc/ React frontend
features/ Feature modules (workspace, terminal, browser, git, settings, theme)
app-shell/ Transport clients and bootstrap
components/ Shared UI components
src-tauri/ Rust backend
src/ Tauri bootstrap, services, commands, infrastructure
crates/ Domain crates (kernel, workspace, runtime, settings, git, contracts)
tests/e2e/ Playwright E2E tests
docs/ VitePress documentation site
Tabby is macOS-first. The architecture is portable — if you're interested in bringing Tabby to Linux or Windows, contributions are welcome.
See CONTRIBUTING.md for guidelines, or visit the docs site.
- Tauri for the Rust-based desktop framework
- xterm.js for terminal rendering
- portable-pty for cross-platform PTY management