You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Using Kimi Code today means one window, one session:
To run several agents in parallel you open a pile of terminal windows. Once you have a few, nobody knows which one finished, which one is waiting for a permission approval, and which one is stuck — you Alt-Tab through all of them and keep the state in your head
Sessions can't see each other. A long task is grinding in window A, and you can't check on it from window B
Want to continue a session somewhere else? Close it and start over
Claude Code already answered this with its agents view (claude agents): one screen that lists all your sessions, lets you jump into any of them, dispatch new work, and see at a glance who is waiting for you. We tried it hands-on and mapped every interaction — this is exactly the piece Kimi Code is missing.
The proposal: kimi agents
A new kimi agents command that opens a full-screen console:
The list: one row per session — title, latest progress, status (running / waiting for you / done), and age
Enter to jump in: the full chat UI for that session; press ← to come back, and the session keeps running in the background, uninterrupted
A dispatch box at the bottom: type a task to spawn a new session, with command suggestions (e.g. picking a model) — no new window needed
Space to peek: expand a session's latest output without leaving the list, and reply right there to steer it
Management keys: Ctrl+X to delete (press twice to confirm), Ctrl+R to rename, Ctrl+T to pin
What it looks like (sketch):
flowchart TB
H["Header: 2 running · 1 waiting for you · 5 done"]
L["Session list:<br/>▶ Waiting for you — title + latest progress + age<br/>▶ Running — same, with a spinner<br/>▶ Done — same, long lists collapse"]
P["Peek panel (Space toggles): latest output + reply right there"]
I["Dispatch box: › describe a task for a new session…"]
F["Footer: enter to open · space to peek · ctrl+x to delete · ? for shortcuts"]
H --> L --> P --> I --> F
Loading
Why this makes you faster
Parallel work without a window farm. Dispatch, watch progress, collect results — all on one screen. Today, 5 tasks means checking 5 windows in rotation; with the list, one glance tells you who needs you
"Waiting for you" stops piling up. Agents pausing for a permission approval is routine, and a window buried in the background is easily forgotten for half an hour. Now they form their own group at the top of the list — and while you're attached to another session, the footer still reminds you
Switch in a second, nothing is interrupted. Watching agent A work, jump to B to approve something, jump back — A kept running the whole time. Like switching browser tabs
It connects with the web UI. Sessions created in kimi web show up in the same list — the terminal and the browser stop being two separate worlds
How we'd build it (plain words)
Kimi Code already has a hub: the server process behind kimi web (kap-server). Its talent is hosting many sessions at once — sessions live inside the hub, and any client that connects can see them: the web UI connects to it, the kimi-inspect debug tool connects to it.
So this feature is really just: build a terminal console on top of the hub. The sessions themselves, their persistence, and multi-session concurrency are all things the hub already does today; the API surface (list sessions, send prompts, answer approvals, read transcripts) is essentially complete. What's missing is mainly two pieces:
A wire layer that lets the terminal UI talk to the hub (the repo already has a test client we can productize as the starting point)
The console UI itself (reusing the existing terminal UI components)
flowchart LR
A["kimi agents<br/>(the new console)"] -->|"connects (same machine)"| B["kap-server hub<br/>hosts many sessions"]
C["kimi web (browser UI)"] --> B
D["kimi-inspect (debug tool)"] --> B
B --> E["session 1 (running)"]
B --> F["session 2 (waiting for you)"]
B --> G["session 3 (done)"]
Loading
The daemon question — we thought it through
We know and respect the history: 0.28.0 deliberately removed the background-daemon model (#1826, #1967) and set the rule "a process stays alive = a human is watching a terminal". The reasons it was removed (zombie processes, version drift, support burden) are real, and we agree with them.
So the first red line of this design: never leave a sneaky background process behind. Concretely:
flowchart TD
Start["kimi agents starts"] --> Q{"is a hub already running?<br/>(e.g. you have kimi web open)"}
Q -->|"yes"| Join["just attach to it"]
Q -->|"no"| Embed["embed a hub inside the view's own process"]
Join --> Use["use it"]
Embed --> Use
Use --> Exit{"when you quit the view"}
Exit -->|"attached to someone else's hub"| Keep["disconnect only —<br/>every session keeps running"]
Exit -->|"using the built-in hub"| Ask{"any sessions still running?"}
Ask -->|"yes"| Confirm["confirm dialog:<br/>these sessions will be interrupted, everything is saved"]
Ask -->|"no"| Bye["clean exit"]
Confirm --> Bye
Loading
In two sentences:
Attach to a running hub if there is one; otherwise carry our own, and our own hub lives and dies with the view — every process always has someone watching it. The rule holds, untouched
An interrupted session loses nothing: the transcript is on disk, the next launch brings it back exactly as it was, and a short "continue" gets it going again. Users who want "close the window and the task keeps running" simply keep a kimi web terminal open — the choice to stay resident belongs to the user, the tool never makes it for them
Known trade-offs (the honest list)
Console sessions run on the v2 engine (the hub only speaks v2); resuming them later via plain kimi --resume (v1) may not work — entering them from the console is always fine
Inside an attached session, two small things are temporarily absent: the plugin command panel is empty, and one-shot ! shell commands are unavailable (the hub has no routes for these yet; they can be added later)
Foreground kimi sessions in other terminal windows do not appear in the list (they are not hosted by the hub)
Same machine only (the console and the hub run on the same host)
Three questions for the maintainers
Is the overall direction OK? Per the repo rules, we came here first — no PR until you've had a chance to respond
Should the console offer a one-click "trust this directory" action? (The route exists, but this is a security-policy decision — our default is no, and we'll take your lead)
Additional notes. This is not the same ask as #2131: that issue wants a panel for subagents inside one session; we propose a console across sessions. The two don't conflict — our list could later host #2131's attach view. We're also aware of the stalled PR #1139 (a read-only /agents status command); this proposal is a superset, and if accepted we're happy to cover or close it as part of the work.
The problem
Using Kimi Code today means one window, one session:
Claude Code already answered this with its agents view (
claude agents): one screen that lists all your sessions, lets you jump into any of them, dispatch new work, and see at a glance who is waiting for you. We tried it hands-on and mapped every interaction — this is exactly the piece Kimi Code is missing.The proposal:
kimi agentsA new
kimi agentscommand that opens a full-screen console:←to come back, and the session keeps running in the background, uninterruptedWhat it looks like (sketch):
flowchart TB H["Header: 2 running · 1 waiting for you · 5 done"] L["Session list:<br/>▶ Waiting for you — title + latest progress + age<br/>▶ Running — same, with a spinner<br/>▶ Done — same, long lists collapse"] P["Peek panel (Space toggles): latest output + reply right there"] I["Dispatch box: › describe a task for a new session…"] F["Footer: enter to open · space to peek · ctrl+x to delete · ? for shortcuts"] H --> L --> P --> I --> FWhy this makes you faster
kimi webshow up in the same list — the terminal and the browser stop being two separate worldsHow we'd build it (plain words)
Kimi Code already has a hub: the server process behind
kimi web(kap-server). Its talent is hosting many sessions at once — sessions live inside the hub, and any client that connects can see them: the web UI connects to it, the kimi-inspect debug tool connects to it.So this feature is really just: build a terminal console on top of the hub. The sessions themselves, their persistence, and multi-session concurrency are all things the hub already does today; the API surface (list sessions, send prompts, answer approvals, read transcripts) is essentially complete. What's missing is mainly two pieces:
flowchart LR A["kimi agents<br/>(the new console)"] -->|"connects (same machine)"| B["kap-server hub<br/>hosts many sessions"] C["kimi web (browser UI)"] --> B D["kimi-inspect (debug tool)"] --> B B --> E["session 1 (running)"] B --> F["session 2 (waiting for you)"] B --> G["session 3 (done)"]The daemon question — we thought it through
We know and respect the history: 0.28.0 deliberately removed the background-daemon model (#1826, #1967) and set the rule "a process stays alive = a human is watching a terminal". The reasons it was removed (zombie processes, version drift, support burden) are real, and we agree with them.
So the first red line of this design: never leave a sneaky background process behind. Concretely:
flowchart TD Start["kimi agents starts"] --> Q{"is a hub already running?<br/>(e.g. you have kimi web open)"} Q -->|"yes"| Join["just attach to it"] Q -->|"no"| Embed["embed a hub inside the view's own process"] Join --> Use["use it"] Embed --> Use Use --> Exit{"when you quit the view"} Exit -->|"attached to someone else's hub"| Keep["disconnect only —<br/>every session keeps running"] Exit -->|"using the built-in hub"| Ask{"any sessions still running?"} Ask -->|"yes"| Confirm["confirm dialog:<br/>these sessions will be interrupted, everything is saved"] Ask -->|"no"| Bye["clean exit"] Confirm --> ByeIn two sentences:
kimi webterminal open — the choice to stay resident belongs to the user, the tool never makes it for themKnown trade-offs (the honest list)
kimi --resume(v1) may not work — entering them from the console is always fine!shell commands are unavailable (the hub has no routes for these yet; they can be added later)kimisessions in other terminal windows do not appear in the list (they are not hosted by the hub)Three questions for the maintainers
Additional notes. This is not the same ask as #2131: that issue wants a panel for subagents inside one session; we propose a console across sessions. The two don't conflict — our list could later host #2131's attach view. We're also aware of the stalled PR #1139 (a read-only
/agentsstatus command); this proposal is a superset, and if accepted we're happy to cover or close it as part of the work.