kolu
Docs

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:42 reference 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 .html and .svg artifacts preview inline in a sandboxed iframe; .pdf artifacts 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-motion collapses 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 ▭ N chip 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.

Next