A terminal workspace for AI agent sessions: run Claude, Codex or any shell across several projects and git worktrees at once, and review what they changed with VS Code's diffs, all in one TUI.
Install · Tour · Usage · Keys · Docs
I wanted to run several coding agents at once, each on its own branch, and review what they changed without leaving the terminal. pando takes one idea from each of three tools:
- Zed: its agent panel runs agent sessions beside the code; pando runs them side by side over many projects, each in a git worktree.
- herdr: a terminal multiplexer for coding agents; pando borrows its design, not its code: a daemon that holds the sessions and a socket API that drives them.
- VS Code: Source Control, its diffs and an editor, right next to the session.
Named after Pando, the aspen colony with thousands of trunks on one root: many sessions, one daemon.
curl -fsSL https://raw.githubusercontent.com/xseman/pando/master/install.sh | shLinux and macOS. The script verifies the binary against CHECKSUMS.txt and
installs it to ~/.local/bin (PANDO_VERSION pins a release,
PANDO_INSTALL_DIR moves it). From source: make install (Go 1.26).
Needs git. Optional: gh for GitHub, rg for search, sqlite3 (3.37+),
psql and mariadb (or mysql) for databases, language servers (gopls,
…), the claude CLI for commit messages, and a Nerd Font for icons = "nerd" (Symbols Nerd Font Mono as a fallback font is enough).
- Agent sessions: projects → worktrees → sessions, each with its own shells,
marked when they need you, resumed after a daemon restart, put to sleep when
unused to free memory; ctrl+click a
path:lineor a URL in their output to open it. - Source Control: VS Code's view — line-level staging, Commit & Sync, Publish, AI commit messages, history drawers, GitLens-style commit and pull request comparisons.
- Diffs: inline or side by side, word-level highlights, hidden lines
unfolded in place, changes marked on the scrollbar and stepped through
(
][), a file's revisions stepped through like GitLens. - Editor: undo, find & replace, suggestions, format on save, vim mode,
code folding,
.editorconfigand detected indentation, the line's git blame in the status bar, unsaved drafts that survive a restart, language servers with hover, parameter hints and their problems underlined, listed (ctrl+shift+m) and stepped through (F8). - Explorer and Search: git decorations, VS Code's context menu, quick open, workspace search & replace.
- GitHub: with
ghinstalled, pull requests, issues and notifications as VS Code's GitHub Pull Requests view lists them; a pull request opens in the editor or checks out in a worktree of its own. - Databases: the worktree's SQLite files, the server its
.envnames and connections added in a form (Postgres, MariaDB, MySQL, SQLite; passwords in the system keyring), their tables in a grid: filter, sort and page, then edit cells and rows and submit them in one transaction, or open the client in the terminal for the rest. - Layout: VS Code's editor groups, files and sessions split side by side or stacked by dragging a tab, a bottom panel with the terminals, the problems and the output, a settings tab, draggable views and columns, VS Code's 2026 themes, remappable keys.
- CLI and API: JSON over a unix socket; self-update on Linux and macOS.
- Instances:
pando --instance workis a separate pando, with projects and sessions of its own and your settings.
pando ~/code/app # add a project and open it; plain `pando` reopens the last
pando main.go:42:5 # the project holding main.go, the file open at line 42| Key | Does |
|---|---|
3 |
Spaces: your projects, worktrees and sessions |
w |
a new worktree for the selected project |
n |
a new session in the worktree: an installed agent or a shell |
ctrl+] |
move focus out of the session; inside it every key goes to it |
2 |
Source Control for the session's worktree: review and commit |
? |
every key of every view |
Every GIF below is pando itself, recorded by make demo.
![]() Agents in worktrees. A session per worktree, its state in Spaces as it changes; review and commit what it did without leaving pando. More |
![]() Resume. Stop the daemon, start pando again: every session comes back and its agent continues the same conversation. More |
![]() Review and commit. Diffs inline or side by side, staging single lines, merge conflicts with VS Code's accept actions. More |
![]() GitHub. Pull requests with their checks, opened as a description or a diff, checked out in a worktree of their own. More |
![]() Language servers. References in a peek, code actions, rename and completion, from |
![]() Editor. Untitled buffers, save with path completion, format on save. |
![]() Vim mode. |
![]() Markdown. Source, rendered, or both side by side scrolling together. |
![]() Databases. SQLite, Postgres and MariaDB tables in a grid: filter, sort, edit, submit in one transaction. More |
![]() Editor groups. Files and sessions side by side or stacked, as VS Code's groups: drag a tab to a group's edge. More |
pando (TUI) ──┐
pando (CLI) ──┼── unix socket, JSON ──▶ daemon ──▶ sessions (PTY) in worktrees
agents ──┘
One daemon owns the sessions; the TUI and the CLI are its clients, so closing the TUI leaves every agent running, and every attached TUI follows a change made anywhere.
| Doc | For |
|---|---|
| Usage | the user guide: sessions, review, editor, CLI, files |
| Settings | config.toml, every setting, colors, keys |
| Keys | every key, per view and in a file |
| Agent guide | driving pando from an agent; pando skill prints it |
| Architecture | daemon, socket protocol, sessions, packages |
Contributors: UI layout · views · preview · git · testing · release.










