lose nothing
Park it now, resume it whole.
A kolu session is your whole workspace — the terminals, their layout and themes, the maximized posture, the activity-window filter — and it comes back where you left it across a reload, a server restart, and even a crash. That durability is why you can park work freely: nothing you set up is expensive to lose, because it isn’t lost.
What survives
- A reload re-attaches your terminals already-whole; the “Restore session” card only appears after a genuine restart, never as a flash on a normal reload. When it does appear, terminals are grouped by repo with the same monogram and colour spine as the live dock, so multi-repo sessions stay scannable.
- A kolu-server restart or redeploy keeps your terminals and session, because the workspace record lives in padi, not the web server.
- A kaval update keeps your live terminals — shells, scrollback, and running agents — running across it (see Kaval); the only sign is a brief “N terminals reattached” note. The one exception is a release that changes the wire the daemons speak: that is a flag day, so the daemon left over from before cannot be adopted and is restarted instead. Live shells end there — the session is restored from disk and agents resume on the conversation they were on, exactly as after a restart. The changelog says so when a release does this.
- Even an unclean crash of the terminal daemon brings your agents back resumed on their exact prior conversation, not as bare shells — including agents that were running in a split (or any parented terminal). The restore card lists every saved terminal as its own row and offers to resume every agent the host knows how to resume; turning Resume agent sessions off wakes bare shells instead.
- Start fresh on the restore card is the one way to throw a saved session away, and it takes two deliberate clicks: the first opens a confirmation naming what goes, and only the second discards. A snapshot is taken before anything is cleared, so a session you discarded on purpose — or by accident — is still recoverable from Debug → Restore state from backup.
- Behind all of this sits a backup ring: at every boot, once a day while running, and before Start fresh discards anything, the saved-session file is snapshotted into a rotated history — so even a bug that overwrites the saved session with a bad value is recoverable. Debug → Restore state from backup in the command palette brings a snapshot’s terminals back, agents resumed. See Troubleshooting.
Sleep a terminal
Sleeping parks a tile you’re done with for now while keeping only the terminals you’re using live. It’s how you keep many agent sessions around without paying for all of them.
- Click the ☾ button on the title bar, or run Sleep terminal from the palette.
- The PTY, agent process, and GPU/WebGL context are released — exactly as if you’d closed it — while the tile stays a full canvas citizen: drag, resize, rename, and re-theme it like any other. Only typing is fenced off.
- Last-known context stays visible: the directory, git branch, and GitHub PR it was on, frozen at sleep.
- Closing a sleeping tile discards it, because nothing is running behind it.
Wake — on the exact conversation
Wake respawns the terminal in the same directory and resumes the agent on the
exact conversation it was running — resumed by id (claude --resume <id>,
codex resume <id>, opencode --session <id>, and the Grok equivalent), not
merely the most-recent conversation in that folder. The launch line it replays
— flags included — is the one kolu’s shell integration
captured when you started the agent. The one exception is
deliberate: if you’d quit the agent to a bare shell before sleeping, waking
lands you at that shell rather than silently relaunching something you’d closed.