vocabulary
The words that make kolu legible.
Eight ideas cover most of the product. Learn these and the rest of kolu reads like plain language.
Canvas
An infinite, mode-less 2D plane. Pan with two-finger scroll, zoom with pinch or Ctrl + scroll, and spread terminals out like Figma or Excalidraw.
Tiles
Every terminal is a draggable, resizable tile: a real xterm.js instance with WebGL rendering, clickable URLs, inline images, splits, themes, and mobile keys.
Dock
The left-edge navigator and at-a-glance list of every live terminal. Rows show repo, branch, PR/CI, and agent state.
Worktrees
Creating a terminal in a repo branches a fresh git worktree under the hood. The name you type becomes the branch and labels the dock row.
Command palette
Cmd/Ctrl + K opens the unified palette. Drilling into a row opens a sub-palette, such as repo → worktree name → agent.
Auto-detection
kolu populates itself by watching shell facts: recent repos from cd, agent
CLIs from command marks, and branch/PR/CI from each terminal’s cwd.
Git & GitHub
Each terminal knows its repo. Branch, PR number, and CI status are read from the working directory and shown on the dock row.
File comments
Select text in the Code tab and pin a quoted note to it. The tray flushes to Markdown you paste back into the agent.
Those observations do not live only in the browser. Padi keeps the workspace record durable, while Kaval owns the live PTYs underneath it. The split is covered in Architecture.
The code browser
The right-hand panel carries an Inspector tab and a Code tab. The Code tab is a file browser scoped to the active terminal’s repo: a Pierre file tree with git-status tinting over a syntax-highlighted source view.
- Click a
path/to/file.ts:42reference in terminal output to jump to that line. - Markdown renders as a reading document with a Source/Rendered toggle.
- Repo-relative links open the target file in the tab.
- Agent-generated
.htmland.svgartifacts preview inline in a sandboxed iframe;.pdfartifacts open in the browser’s native PDF viewer. Both live-reload on change. - Select text in source, a branch diff, or a rendered artifact and leave a quoted comment for the agent.
The canvas
The desktop workspace has no separate edit mode. Terminals are tiles you arrange freely.
- Pan with two-finger scroll; hold Shift to force pan even when the cursor is over a tile.
- Zoom with pinch or Ctrl + scroll; tiles snap to a 24px grid on drag and resize.
- Double-click a title bar to maximize a tile. That posture persists across reloads.
- Run Arrange canvas by repo from the palette to cluster each repo’s tiles into an island.
- Each live tile wears its agent’s run-state as motion on its border, in the
tile’s repo color: a working tile runs a calm marching-ants outline, one that
needs you sweeps a comet (faster the fresher the wait), and a missed alert
throbs. Idle tiles stay dark;
prefers-reduced-motioncollapses every aura to a static ring. - The minimap heatmap marks tiles whose agents are waiting or thinking; the bigger multi-agent workflow lives in Power Features.
Inside a tile
A tile is a full terminal, not a preview.
- Split a bottom pane with Ctrl +
</kbd>, add tabs with <kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>. Open splits show as a▭ Nchip on the dock row. - Zoom the font with Cmd/Ctrl + + / -, persisted per terminal.
- WebGL rendering (canvas fallback), clickable URLs, Unicode 11, and inline images (sixel, iTerm2, kitty).
- On touch devices a mobile key bar sends the keys soft keyboards lack — Esc, Tab, arrows, Ctrl+C — with two sticky modifiers you tap to arm.
The dock, up close
The left-edge dock is the canonical live-terminal navigator, with two levels of
detail. Rail is a narrow strip of one chip per terminal; Cards (the
default) groups rows by repo, each row reading indicator · branch · pips · time.
The first-column status indicator folds three signals into one glyph: the core shape is the agent state (the same vocabulary as Agent detection), a thin green live ring sweeps while the terminal is moving bytes, and an amber unread badge marks a background ping you haven’t seen. Rows sort by pure recency — the terminal that just changed floats up — and clicking one centers its tile on the canvas.