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.
Link to any view
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).
| Link | Lands 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>/inspector | the Inspector tab |
#/settings | the 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.)