kolu
Docs

at scale

Run many, lose none.

kolu is built for the moment you are running five agents at once. These are the tools that keep that legible.

Multi-agent dock

An agent blocked on you appears in the dock’s pinned Needs-you strip — without its row moving — washes violet, and shows how long it has been waiting. A finished background agent can fire a toast and native notification that jumps straight to the terminal.

Keybindings

Cmd + T opens a terminal, Cmd + Shift + Enter opens New terminal, Cmd + 1…9 jumps, and Cmd + / shows shortcuts.

Sessions, sleep & wake

Your whole workspace survives reloads, restarts, and crashes; sleep parks a tile without keeping its PTY, agent, or GPU context alive, and wake resumes the exact conversation. Full page: Sessions, Sleep & Wake.

Export a transcript

Run Export agent session as HTML from the palette (it appears only when the active terminal has an agent session) and pick a chat log (just the Human / AI messages), a full transcript (with reasoning, tool calls, results, and edits collapsed under disclosure blocks), or both.

Each file is a self-contained .html — no external assets, no upload — that opens in any browser offline. Under the hood each agent’s storage (Claude’s JSONL, Codex’s rollout, OpenCode’s SQLite, Grok’s chat_history.jsonl) normalizes to one shape, so the same document design renders every vendor.

Record the workspace

Record the kolu tab — the whole canvas or a single maximized terminal — with your mic and an optional webcam picture-in-picture, straight to a local .webm. Chromium-only, as it uses the File System Access API.

  • One-click setup — a popover on the chrome-bar record button with a mic picker (live level meter), a webcam toggle, and a circular preview.
  • Streams to disk — chunks flow continuously into the file, so memory stays flat no matter how long you record; a partial file survives a browser crash.
  • Pause / resume⌘⇧. toggles; the capsule in the chrome bar shifts red → amber while paused.
  • Just this tab — the browser’s multi-surface picker collapses to a single “share this tab” confirmation.

Every view in kolu has a URL. Anything that can render a link — an orchestrator board, a GitHub issue, a Slack message, a browser bookmark — can point into kolu with a #/… hash link. Click it and the installed app comes to the front already showing the right host, terminal, file, or dialog (no PWA? the same link opens in any browser).

LinkLands on
#/h/<host>that host, switched to
#/t/<host>/<id>that host and the terminal focused
#/t/<host>/<id>/code?path=<p>the Code tab, <p> open (add &line=<n> to land on a line)
#/t/<host>/<id>/inspectorthe Inspector tab
#/settingsthe settings dialog

<host> is the host’s key (local, or remote:<target>); <id> is the terminal’s id. A link to a split lands the sub-terminal live, not just its parent tile. Because the Code tab and Inspector belong to the top-level tile (a split shares its parent’s right panel), a /code or /inspector link to a split focuses the split and opens the parent tile’s panel — and /code resolves <p> against that tile’s repository.

  • Durable, not one-shot — unlike a notification click, a deep link is a bookmark: open it fresh and it navigates there, and the URL stays in the bar. A reload, though, no longer re-fires the link — your session is restored to the view you’d reached, so a stale link left in the bar can’t yank you back to an old host. The back button likewise never replays a link you already followed — it restores the URL quietly and leaves your view alone.
  • View-only by law — the worst a link can do is change what you’re looking at. No URL creates a terminal, kills one, writes a file, or sends keys.
  • Loud on the edges — a link to a terminal or host that’s gone names what it pointed at and lands you on the nearest surviving view; an unknown link shape says so rather than failing silently. A link opened on a cold start waits for the host’s terminals to load before deciding anything is missing.
  • Works from inside a preview — a #/… link in an HTML file previewed in the Code tab routes the surrounding app: preview an orchestrator dashboard and its lane pills become click-to-jump, straight to each agent’s terminal. (The preview stays fully sandboxed — the link is relayed out, and view-only means a hostile page still can’t do anything but change what you’re looking at.)