$ kolu — the terminal, done right
The terminal
built for many.
Not a chat-UI wrapper.
Not an editor fork.
A real terminal — just better at scale.
Real xterm.js tiles on an infinite 2D canvas, with a dock that surfaces every terminal's live state at a glance. claude, codex, opencode — anything you can run in a shell, runs in kolu.
what you're looking at
dock · canvas · code panel
- agent working
- awaiting you
- repo identity
- ↔ splits live inside a tile · code browser is its own panel
what you get
09 features
- 01 — real-terminals
Real terminals. Real xterm.js.
Every kolu tile is a full xterm.js terminal — WebGL rendering, clickable URLs, inline images (sixel, iTerm2, kitty), splits, tabs, 200+ themes, a mobile key bar. The terminal is the universal interface, so anything you run in a shell — claude, codex, opencode, a plain zsh — gets first-class status with zero adapter code.
- 02 — canvas
Infinite 2D canvas
Every terminal is a draggable, resizable tile. Pan, zoom, snap-to-grid. The left-edge dock is the canonical navigator — chip rail or repo-grouped cards. Cmd+Shift+K opens the unified palette into a workspace grid with repo facets and agent-state columns. On phones, the active tile fills the screen and the same dock lives behind a left-edge swipe.
- 03 — agent-status
Live agent status in the dock
Detects Claude Code, Codex, and OpenCode sessions — thinking, tool use, waiting on you. Each dock row carries a repo-tinted chip that pulses while the agent is working and breathes when it's waiting, so a glance tells you which agent needs attention.
- 04 — agent-agnostic
Agent-agnostic, by design
claude, codex, opencode, or whatever ships next week — kolu doesn't wrap any of them. No adapters, no registry, no vendor lock-in. Drop to a plain shell whenever you want.
- 05 — zero-setup
Zero setup — kolu watches what you do
Recent repos track your cd events. Run an agent CLI once — it appears in the palette the next time you create a worktree. Branch, PR, CI status derive from each terminal's CWD. The surface grows with your workflow, not with a preferences pane.
- 06 — git-aware
Git & GitHub aware
Repo name, branch, PR number, CI status derived from each terminal's CWD. Worktree create + agent launch in one palette step.
- 07 — comment-on-any-file
Comment on any file
Select text in any file the Code tab shows — source, branch diff, or rendered HTML artifact the agent produced — and a floating pill lets you leave a free-text note anchored to the exact quote. Notes accumulate in a per-terminal tray across every file you touch. "Copy to clipboard" flushes the queue as plain Markdown ready to paste back into the agent's prompt — the agent re-locates each comment by quote-matching, robust to file edits.
- 08 — transcript-export
Share what your agent did
Export any Claude Code, Codex, or OpenCode session as a single self-contained .html — warm-parchment editorial layout, shiki-tokenized code, real diff views for every Edit/Write/apply_patch, j/k prompt navigation, dark/light toggle. No external assets, no upload — opens offline in any browser.
- 09 — recording
Record your workspace
One click in the chrome bar captures the whole kolu tab with microphone and optional webcam PiP, streamed straight to a local .webm. Pause/resume with ⌘⇧., mic picker with live level meter, circular webcam overlay baked into the recording.
install
Three seconds
from zero to running.
Kolu is packaged with Nix. Install Nix (with flakes enabled), and you're one command away.
Or wire it into a home-manager module to run as a long-lived user service — systemd on Linux, launchd on macOS — see the deployment guide.
from the blog
all posts →Give your coding agent a browser, on Nix
A practical setup guide: install Nix, add one dep to apm.yml, your AI agent (Claude Code / Codex / OpenCode) gets DOM inspection, screenshots, network traces, and heap snapshots.
read →