Electron · React · macOS / Windows / Linux · MIT

A workspace terminal manager
for the age of coding agents.

SSH & local terminals, a Postgres SQL client, a Monaco editor, browser panes and an AI quick-chat — in one tiling, drag-and-drop grid.

Built around running and supervising agents (Claude, Codex, Cursor) across many sessions at once.

$ npm install && npm start
SplitGrid — ~/projects/api api infra data
claude · prod ssh Working
~ claude "refactor auth"
● Reading src/auth/*.ts
● Editing session.ts +42 −18
● Running tests
session.ts saved
export async refresh() {
  const t = await sign(
    user, "7d"
  )
}
postgres · main 38 ms
SELECT count(*) FROM sessions
─────────────
count 12 847
localhost:5173 200
agent-driven preview
screenshot · console · DOM
✓ no console errors
# features

Everything a session needs, in one window.

No more juggling a terminal app, a DB client, an editor and a browser. Split, drag, swap and zoom panes; keep multiple workspaces; it all persists.

Tiling grid workspaces

Split horizontally or vertically, drag to rearrange and swap, zoom a single pane. Layout, panes and zoom persist across restarts.

drag & dropmulti-workspacepersisted

SSH & local terminals

Two renderers (xterm / ghostty), live process tree with CPU/RSS, listening-port detection with one-click open or kill. WSL on Windows.

xtermghosttynode-ptyWSL

PostgreSQL client

Connect to saved databases, browse the schema tree, run queries in tabbed editors, read results in a data grid, keep per-connection history.

schema treedata gridhistory

Monaco code editor

The editor that powers VS Code, embedded as a pane — file tree, tabs and live file watching, right next to the terminal editing the files.

file treetabslive watch

Browser panes

Web views inside the grid, plus an automation bridge so an agent in a terminal can open, navigate, screenshot and inspect its own pane.

automation bridgescreenshotconsole

Agent awareness

Detects Working / Waiting / Done per terminal via lifecycle hooks, with a sound when a background session finishes or the window is unfocused.

lifecycle hooksnotifications

SSH with saved secrets

Encrypted saved connections, connection testing, known-hosts, and an opt-in saved-password hint — the secret never leaves the main process.

encryptedknown-hostsmain-process only

Sync, freeze & notes

SFTP sync to remote targets (.gitignore-aware), freeze a background workspace's processes (SIGSTOP) to save CPU, per-workspace notes & to-dos.

SFTPfreezenotes
# what it looks like

Terminals that watch themselves.

A few of the things that happen inside a pane — without leaving the grid.

listening ports — node-api
:5173vite48213
:3000node server.js48109
:5432postgres901
:6379redis-server1204
Every listening port detected, one click to open in a browser pane or kill the holding process — host PIDs, taskkill on Windows, in-distro for WSL.
ssh — deploy@prod-01
connected to prod-01
deploy@prod-01:~$ sudo systemctl restart api
[sudo] password for deploy:
🔒 saved password detected. Inject for this prompt? [ Send ] · [ Dismiss ]
On a detected sudo / login prompt, SplitGrid offers the saved password — confirm-to-send, and it never leaves the main process.
workspace — 4 agents
claude · auth-refactorWorking
codex · migrationWaiting ↩
cursor · testsDone ✓
claude · docsWorking
A wall of agents tells you, at a glance, exactly which one is waiting on you — driven by lifecycle hooks, not guesswork.
fast chat · ⌘K
unpack a tar.gz on Linux?
tar -xzf archive.tar.gz-x extract, -z gunzip, -f file.
A quick-question palette on ⌘K — any OpenAI-compatible endpoint (OpenAI, OpenRouter, Groq, Ollama, Gemini). The API key stays in the main process.
# install

Runs natively on your OS.

Packaged as a .app bundle, a Windows installer or portable zip, and .deb / .rpm / zip for Linux. Or build from source.

macOS
.app · zip
Windows
installer · zip · WSL
Linux
.deb · .rpm · zip
$ git clone … && cd splitgrid && npm install && npm start
# keyboard

Keyboard shortcuts.

⌘K / Ctrl+KToggle Fast chat (configurable, recordable)
⌘⇧N / Ctrl+Shift+NOpen a new workspace window
EscClose the open modal / Fast chat
Ctrl+LClear the terminal screen
⌘←/→ ⌘↑/↓ ⌘A ⌘CLine nav, history, select-all, copy in a terminal
# stack

Built on a modern, native stack.

No proprietary runtime — just Electron and the web platform, with native modules where it counts.

Electron 41 React 19 TypeScript Vite 6 @xterm/xterm ghostty-web node-pty ssh2 pg monaco-editor react-grid-layout react-complex-tree react-markdown