A CLI tool that manages multiple AI coding agent worktree sessions via tmux.
kage (ε½±, shadow) is inspired by ε½±εθΊ« (Kage Bunshin / Shadow Clone) β the technique of creating multiple clones of yourself, each working independently on a different task. With kage, you summon shadow clones of AI coding agents, each operating in its own git worktree and tmux window, working on separate features in parallel. You are the original; your agents are the clones.
βββββββββββββββββββββββββββββββββββββ
β kage TUI Dashboard β
β βββββββββββββββββββββββββββββββ β
β β β app/feat-auth [3p] β β
β β app/feat-search [3p] β β
β β app/fix-login [3p] β β
β β β β
β β n:new enter:jump d:delete β β
β βββββββββββββββββββββββββββββββ β
βββββββββββββββββββ¬ββββββββββββββββββ
β
βββββββββββββββββββββΌββββββββββββββββββββ
β β β
βΌ βΌ βΌ
ββββββββββββββββββ ββββββββββββββββββ ββββββββββββββββββ
β tmux window β β tmux window β β tmux window β
β feat-auth β β feat-search β β fix-login β
ββββββββββββββββββ ββββββββββββββββββ ββββββββββββββββββ
ββ Claude Code ββ ββ Aider ββ ββ Codex ββ
ββ (60%) ββ ββ (60%) ββ ββ (60%) ββ
βββββββββββββββββ€β βββββββββββββββββ€β βββββββββββββββββ€β
ββ shell (20%) ββ ββ shell (20%) ββ ββ shell (20%) ββ
βββββββββββββββββ€β βββββββββββββββββ€β βββββββββββββββββ€β
ββ shell (20%) ββ ββ shell (20%) ββ ββ shell (20%) ββ
ββββββββββββββββββ ββββββββββββββββββ ββββββββββββββββββ
ββββββββββ¬ββββββββ ββββββββββ¬ββββββββ ββββββββββ¬ββββββββ
β β β
βΌ βΌ βΌ
ββββββββββββββββββ ββββββββββββββββββ ββββββββββββββββββ
β git worktree β β git worktree β β git worktree β
β app-feat-auth β βapp-feat-search β β app-fix-login β
ββββββββββββββββββ ββββββββββββββββββ ββββββββββββββββββ
Each "shadow clone" works independently in its own
isolated worktree β no conflicts, no interference.
- Git worktree isolation β Each feature branch runs in its own worktree, so agents never interfere with each other
- tmux-based session management β One tmux session, one window per feature, with customizable pane layouts
- Bubble Tea TUI dashboard β Create, launch, switch between, and delete worktree sessions interactively
- Feature descriptions β Add short descriptions to feature branches to remember what each clone is working on
- Flexible pane layouts β Configure horizontal/vertical splits with nested tree layouts or simple flat lists
- Agent-agnostic β Works with Claude Code, Codex, Aider, or any CLI tool
- Coordinator mode β Optionally launch a coordinator Claude Code pane on the dashboard with an MCP server for cross-agent orchestration
- Go 1.26+
- tmux
- Git
go install github.com/Sean0628/kage@latestCheck the installed version with:
kage --versionWhen installed with go install github.com/Sean0628/kage@<tag>, kage --version
will report that tagged GitHub version automatically.
Or build from source:
git clone https://github.com/Sean0628/kage.git
cd kage
go build -ldflags "-X github.com/Sean0628/kage/cmd.version=v0.1.0" -o bin/kage .GitHub tags are the source of truth for released versions. Push a tag like
v0.1.0 and GitHub Actions will build release artifacts with that same version
embedded in the binary.
git tag v0.1.0
git push origin v0.1.0- Create a config file at
~/.config/kage/config.yaml:
defaults:
layout:
split: horizontal
panes:
- cmd: claude
size: 60%
- cmd: shell
size: 20%
- cmd: shell
size: 20%
projects:
- name: my-project
path: /path/to/your/repo
# Optional: launch a coordinator Claude Code pane on the dashboard
# coordinator: true- Launch kage:
kageThis creates (or attaches to) a tmux session named kage and opens the TUI dashboard.
| Key | Action |
|---|---|
β/k |
Move up |
β/j |
Move down |
n |
New feature branch |
enter |
Jump to window |
a |
Attach agent to existing worktree |
d |
Delete feature (worktree + window) |
e |
Edit description for selected feature |
r |
Refresh |
h |
Show help guide |
q |
Quit dashboard |
While in tmux, press Ctrl+b K to jump back to the dashboard.
The config file (~/.config/kage/config.yaml) defines your projects and pane layouts.
defaults:
layout:
split: horizontal
panes:
- cmd: claude
size: 60%
- split: vertical
size: 40%
panes:
- cmd: shell
size: 50%
- cmd: shell
size: 50%defaults:
layout:
- cmd: claude
size: 60%
- cmd: shell
size: 20%
- cmd: shell
size: 20%The special command shell leaves the pane as a plain shell with no command executed.
projects:
- name: frontend
path: /path/to/frontend-repo
layout:
split: horizontal
panes:
- cmd: claude
size: 70%
- cmd: shell
size: 30%
- name: backend
path: /path/to/backend-repoProjects without a layout key inherit from defaults.
When coordinator: true is set, kage splits the dashboard window and launches a coordinator agent with the kage MCP server pre-configured. The coordinator can orchestrate work across all feature agents β listing projects, sending messages, capturing output, and checking agent status.
Each feature also gets a session-scoped global numeric ID in the dashboard and MCP listings. Coordinator calls can use that id instead of spelling out project and branch.
coordinator: trueBy default this uses Claude Code. You can switch to Codex CLI or any other agent:
coordinator: true
coordinator_cmd: codex # uses `codex mcp add` to wire kage MCP automaticallycoordinator: true
coordinator_cmd: my-agent # custom agent β launched as-is, no automatic MCP wiringSupported agents with automatic MCP wiring:
- claude (default) β uses
--mcp-configflag - codex β uses
codex mcp addto register the kage MCP server
This is disabled by default.
You can set a default working directory for the kage tmux session with the workspace key. It defaults to your home directory if not set.
workspace: ~/workkagecreates a tmux session namedkage- When you create a new feature, it:
- Creates a git worktree at
<repo-parent>/<repo-name>-<branch> - Opens a tmux window named
<project>/<branch> - Sets up panes according to your layout config
- Launches the configured commands in each pane
- Creates a git worktree at
- The TUI dashboard shows all projects and their active feature branches
- Deleting a feature removes both the tmux window and the git worktree
go build -o bin/kage . # build
go test ./... # run all tests
go vet ./... # lintCopyright (c) 2026 Sho Ito. See LICENSE for further details.
