Claude Code, Codex, OpenCode and Kimi Code — each in its own pane, on its own
branch, all in one window. Quit whenever: the deck comes back where you left it
A fleet in one window, a branch of your own per agent, sessions that outlive a quit,
tools where the work is, and skills every agent picks up
Up to sixteen agents in one deck
You pick the agent per pane, and up to sixteen run at once — tiled automatically as they
join, with no tabs to dig through and nothing hidden behind one
All sixteen, joining one at a time — the grid retiles itself around each one, and no
two panes look alike: each is the CLI's own interface, down to its status bar
Each pane is a real terminal running the CLI itself, so what you get is that tool's own
interface rather than a re-skin of it: Claude Code looks like Claude Code,
Codex like Codex — and KeepDeck offers only the CLIs it finds installed on your machine.
Workspaces keep separate projects side by side, and the ones you are not looking at keep
running. Any pane can be forked — the same session, carried into a new pane and its own
directory, so you can take a second run at something without losing the first
Each agent on its own branch
An agent can spawn straight into its own git worktree, created — or attached to an
existing one — as it starts, with the branch riding along in the pane header
The worktree and its branch are settled before the agent starts — base branch included
Closing the agent offers to clean the worktree up when it is done. Agents that need no
isolation share the workspace folder instead, and mixing both kinds in one workspace is
fine — isolation is a choice per agent, not a mode the whole deck is in
Nothing is lost when you quit
The deck is written as you work and restored on launch — workspaces, panes, layout — and
each pane resumes its own recorded session with the agent's own command
Quit, relaunch — the same panes, each resuming its own session
That command is the CLI's own: claude --resume,
codex resume, opencode -s. Sessions
the CLIs recorded outside KeepDeck count too — adopt one into a pane, or fork it into
another directory. Mid-day, suspend an agent instead of closing it and it waits in the
tray with its session intact, ready to pick up from the same place. If you would rather
come back to a quiet deck, restored agents can wait stopped until you resume each one;
and a pane whose folder has since gone says so plainly and offers a fresh start rather
than failing at you
Four tools that know which worktree you mean
The dock rides beside the deck, and everything in it — Run, Git, Files and Voice — is
scoped to the workspace and the worktree of the pane you are on
The deck makes room for it, and the dev server for that worktree runs beside the agent
working in it
Run starts the app that agent is building — named once, launched in its worktree,
its log streamed beside it and the port it took reported, so several versions of one
project can be up at once. Git shows what each worktree changed, diff by diff,
which is how you review four branches without leaving the window. Files browses
that workspace's tree and previews what is in it. And Voice — experimental — lets
you hold a key, talk, and let go, with the audio never leaving your machine
Write a skill once, every agent gets it
Skills live in a library the app keeps for you: write one for a single workspace or for
everything you run, and every agent that starts afterwards has it
Asked for before it exists, the agent has nothing. Written once at the global scope, and
the next agent to spawn runs it
The part that saves the work: each CLI expects skills in its own shape, and KeepDeck
stages the library into whichever one the agent needs as it spawns — Claude Code's
plugin folder, OpenCode's config directory, or the bare
SKILL.md layout. One file, four agents, no three copies to keep
in step. And nothing is written into the CLIs' own configuration: the staged copy lives
with the workspace and goes when it goes
What you are looking at
Eight parts of that window, and what each one is for
12345678
Workspaces — a folder and its own set of panes; switching keeps the rest running
The agent — Claude Code, Codex, OpenCode or Kimi Code, chosen per pane
Context — how much of this agent's context window is in use, live
Its branch — the git worktree this agent works in, made when it spawns
Minimize, maximize, close — from the pane's own header; minimized ones wait in the tray
Usage statistics — tokens and cost per session and model, 90 days of local history
Notifications — system banners, an in-app bell, or both
Skills — written and edited in the app, for one workspace or for everything
And in the same window
Usage statistics
Tokens and cost per session and per model, from the last 24 hours out to 90 days, kept
locally — and each pane's header shows how full its context is
Account limits
Your provider's rolling limit windows, read from the agent itself, in the top bar
Notifications
System banners, an in-app bell with history, or both — and the bell takes you to the
pane that rang
Sessions browser
Every session the CLIs recorded, searchable: adopt one into a pane or fork it into
another directory
Plugins
Everything around the terminal is one, agents included — a single
.kdplugin file that only touches what its manifest declared
Tray and layouts
Minimize panes to a tray, maximize one to focus, and lay the deck out as a grid or as
columns
Updates
The app offers the update and shows the changelog first — everything that accumulated
if you skipped versions
The rail
Rename a workspace, drag it into the order you think in, or collapse the rail when the
deck needs the room
Panes you can name
Name a pane yourself, or let it title itself from what the agent is doing, and open its
folder in VS Code from the header
macOS 11+, Apple Silicon & Intel
Apache-2.0, unsigned build
YOLO mode per agent or by default
native menu and hotkeys
clickable paths and URLs, even across wrapped lines
paste an image, the agent gets a file path
drop a file on a pane to paste its path
Shift+Enter for a newline instead of sending
programs can set the clipboard (OSC 52)
remote agents, experimental
Install KeepDeck
One command. It takes the right build for your Mac, installs it to
/Applications, and opens without a Gatekeeper prompt
$curl -fsSL https://raw.githubusercontent.com/KeepDeck/KeepDeck/main/install.sh | sh
The build is unsigned, which is why the installer clears the download's quarantine flag
for you. Taking the zip by hand instead? Run
xattr -dr com.apple.quarantine /Applications/KeepDeck.app once.
To install for yourself only, set KEEPDECK_DEST=~/Applications
Before you install
Is the app signed?
No. The build is unsigned, so the installer removes the download's quarantine flag
and the app opens without a Gatekeeper prompt. If you would rather not pipe a script
into a shell, take the zip and clear quarantine yourself with
xattr -dr com.apple.quarantine /Applications/KeepDeck.app —
or build it from source
Which coding agents does it run?
Claude Code, Codex, OpenCode and Kimi Code, each taught to KeepDeck by a
plugin. The agent is picked per pane, so one workspace can run several at once, and
KeepDeck only offers the CLIs it finds installed
Do I need a KeepDeck account or API keys?
Neither. KeepDeck spawns the CLI you already have and it keeps using its own login.
There is no KeepDeck account and no separate key to paste
Where does my work live?
On your machine. Workspaces, panes and settings are files in KeepDeck's own
documents; transcripts and sessions stay where each CLI records them, which is how a
pane can come back with the agent's native resume command. Voice runs locally too —
the audio never leaves the machine
Is there a Linux or Windows build?
Not yet. Today KeepDeck is macOS 11 or later, on Apple Silicon and Intel. Linux is
next and Windows comes after it
How do updates work?
The app offers the update itself and shows the changelog before you take it —
including everything that accumulated if you skipped a few versions. Re-running the
install command works just as well