Star UI for Kilo Code
A pixel-art office for your Kilo Code agents. Watch your multi-agent team work in real time inside VS Code, and click any character to give it a task.

Kilo Code already runs several agents at once: primary agents (Code, Plan, Debug, Orchestrator…), sub-agents it delegates to (Explore, General…), your own custom agents, and parallel sessions in the Agent Manager. But all of that happens in text. Star UI turns it into a little office, forked from Star-Office-UI: every Kilo agent is a character that goes to its desk when it works, to the bug corner when something breaks, and back to the lounge when it is done.
Features
- One character per Kilo agent. Built-in agents, sub-agents, your custom agents and cross-repo teammates all get a seat in the office. Several sessions of the same agent show up as
explore ×3.
- Live activity from Kilo Code. Tool calls, delegation, retries, context compaction, errors and pending approvals are mapped to the office areas (see the table below).
- Click a character to prompt it. A small dialog sends your prompt to that agent through Kilo Code, in a new conversation or in its current one. Sub-agents are started as a sub-task, just like an
@mention.
- "Needs you" alerts. When an agent waits for a permission or asks a question, it shows a
!, the status bar turns orange, and one click opens the conversation in Kilo Code.
- A virtual team in one command. Star UI: Create a Virtual Team of Agents writes ready-made Kilo agents (architect, developer, reviewer, tester, doc writer, devops). Kilo's main agents can delegate to them, and you can prompt each of them from the office.
- Cross-repository teammates. Declare "the expert of repo X" and "the expert of repo Y": your agents get an
ask_teammate tool to consult each other across repositories.
- Activity log, team list, status bar item, demo mode, in English or French.
- Model-agnostic. Star UI never talks to a model. Kilo Code keeps using whatever provider you configured (GLM, GPT, Gemini, Mistral, local models…).

Getting started
- Install Kilo Code 7 or later and set up your provider as usual.
- Install Star UI for Kilo Code.
- Click Connect Kilo in the office (or run Star UI: Connect to Kilo Code), then reload the window.
- Click the ★ Star Office icon in the activity bar (or the status bar item). The office also lives in the bottom panel, next to the terminal.
No Kilo at hand? Run Star UI: Toggle Demo Mode to watch fake agents at work.
How it works
Kilo Code (VS Code extension)
└─ kilo serve ── loads ~/.config/kilo/plugin/star-ui-kilo.js
│ lightweight events (status, tool names, sub-agents, approvals, agent list)
▼
127.0.0.1 bridge (random port + token) ◀── prompts you send from the office
│
Star UI for Kilo Code ──┴─ office model ─▶ pixel office (webview) + status bar
Kilo Code does not expose an API to other extensions, but it runs the Kilo engine, which loads plugins from ~/.config/kilo/plugin/. Connect Kilo installs a small plugin there (star-ui-kilo.js). The plugin:
- listens to Kilo's event bus and forwards a summary of each agent's activity to the extension;
- receives the prompts you type in the office and sends them through Kilo's own, already authenticated client;
- adds the
ask_teammate tool when cross-repository teammates are configured.
Kilo passes the VS Code window that started it to its server, so each window only shows its own Kilo Code agents, plus any kilo CLI session running inside the workspace.
| Kilo activity |
Office |
reading, searching, browsing (read, grep, glob, webfetch, ask_teammate…) |
desk · researching |
editing (edit, write, patch, todowrite) |
desk · working |
running commands, delegating (bash, task) |
desk · executing |
| thinking / answering |
desk · working |
| API retry, offline, context compaction |
sync corner |
| error |
bug corner |
| waiting for your approval or answer |
! above the character |
| idle |
lounge |
Privacy and safety
- Everything stays on your machine. The bridge only listens on
127.0.0.1, uses a random port and token, and rejects browser requests.
- The plugin never forwards file contents, prompts, model output or credentials. It sends agent names, session titles, tool names and short hints such as a file name.
- The plugin swallows all of its errors, so it cannot break Kilo. Remove it at any time with Star UI: Disconnect from Kilo Code.
- Prompts sent from the office go through Kilo's normal permission system: Kilo still asks before running commands or editing files.
Your virtual team
Run Star UI: Create a Virtual Team of Agents, pick the roles, and choose where the team lives:
- Project (
.kilo/agent/*.md): shared with everyone working on the repo, if you commit it;
- Global (
~/.config/kilo/agent/*.md): available in all your projects.
| Role |
Can edit files |
Good for |
| architect |
no |
designs, plans, structure reviews |
| developer |
yes |
implementing features and fixes |
| reviewer |
no |
bugs, security, readability |
| tester |
yes |
reproducing bugs, writing and running tests |
| docs |
yes |
README, guides, changelog |
| devops |
yes |
CI/CD, Docker, build tooling |
These are plain Kilo agents (mode: all). You can prompt them directly from the office, and Kilo's main agents can delegate to them with the task tool. They use your default model unless you add a model: line. Edit the Markdown files freely: the office picks up any agent Kilo knows about, including ones you write yourself.
Cross-repository teammates
Agents in a Kilo session all work in the same folder. To let an agent consult an expert of another repository, run Star UI: Add a Teammate from Another Repository, or edit ~/.star-ui-kilo/team.json:
{
"members": [
{ "name": "api-expert", "repo": "~/code/my-api", "agent": "ask", "description": "Knows the backend API: routes, auth, database schema" },
{ "name": "web-expert", "repo": "~/code/my-web", "agent": "ask", "description": "Knows the React front-end" }
]
}
After a reload, every Kilo agent gets an ask_teammate tool. When the agent working on my-web needs to know how the API authenticates, it calls ask_teammate("api-expert", "…"). Kilo then opens a session in my-api with the ask agent, waits for the answer and hands it back. Both characters light up in the office while they talk. You can also click a teammate to prompt it directly in its own repository.
- Loop protection: a teammate that is being consulted cannot consult other teammates.
- Read-only teammates: prefer a read-only agent such as
ask, or a custom agent with edit: deny, so a consultation never modifies the other repository.
Commands
| Command |
What it does |
| Star UI: Open the Office in an Editor Tab |
Big view of the office |
| Star UI: Connect to Kilo Code / Disconnect |
Installs / removes the Kilo plugin |
| Star UI: Create a Virtual Team of Agents |
Writes ready-made Kilo agents |
| Star UI: Add a Teammate from Another Repository |
Adds a cross-repo expert to team.json |
| Star UI: Edit the Cross-Repository Team File |
Opens team.json |
| Star UI: Toggle Demo Mode |
Fake agents, no Kilo needed |
| Star UI: Open Kilo Code |
Focuses the Kilo Code sidebar |
| Star UI: Show Log |
Diagnostics |
Settings
| Setting |
Default |
Description |
starUiKilo.language |
en |
en, fr, or auto (follows VS Code) |
starUiKilo.officeName |
"" |
Text on the plaque (default "Kilo Office") |
starUiKilo.room |
office |
office or lodge (snowy mountain lodge) |
starUiKilo.scope |
workspace |
workspace: this window's Kilo Code + CLI sessions in the workspace. all: every Kilo session on the machine |
starUiKilo.showBuiltInAgents |
true |
Show idle built-in agents (plan, debug, explore…) |
starUiKilo.lingerSeconds |
20 |
Time an agent stays at its desk after finishing |
starUiKilo.openConversationAfterPrompt |
false |
Open the Kilo conversation after prompting from the office |
starUiKilo.statusBar |
true |
Show the status bar item |
starUiKilo.kiloConfigDir |
"" |
Kilo config folder (default KILO_CONFIG_DIR or ~/.config/kilo) |
Troubleshooting
- "Plugin installed, waiting for Kilo Code…": Kilo loads plugins when it starts. Reload the window, then open Kilo Code once.
- The Kilo CLI too:
kilo in a terminal loads the same plugin. Its sessions appear in the office when they run inside your workspace, or everywhere with starUiKilo.scope: all.
- Remote / WSL / Dev Containers: install Star UI in the same place Kilo Code runs (the remote side). The extension declares itself as a workspace extension for that reason.
- Kilo started with
--pure: external plugins are disabled in that mode, so the office stays empty.
- Corporate proxy, no Internet: supported. Loopback traffic never goes through the proxy, and Kilo is not asked to download anything (Star UI marks
@kilocode/plugin as installed in ~/.config/kilo when it is the only plugin there).
- Kilo Code 4.x / 5.x: these versions use the legacy engine, which has no plugins. Update to Kilo Code 7 or later.
Development
npm ci
npm test # unit tests + the real plugin against the real bridge
npm run build
npm run preview && node dev/serve.mjs # office + demo in a browser: http://localhost:5317
- Press
F5 in VS Code to run the extension in a development host.
npm i --no-save @kilocode/cli && KILO_BIN=node_modules/.bin/kilo node scripts/e2e-kilo.mjs runs an end-to-end check against a real Kilo server. It uses an isolated Kilo config and never touches yours.
KILO_EXTENSIONS_DIR=<dir with kilocode.kilo-code installed> npm run test:kilo runs VS Code with the real Kilo Code extension and checks that its server loads the plugin.
E2E_OFFLINE=1 with HTTP_PROXY set runs the Kilo end-to-end check the way a locked-down corporate machine would.
npm run package builds the .vsix.
Project layout: src/ holds the extension (bridge, office model, webview host), plugin/ the Kilo plugin, media/ the webview (Phaser scene adapted from Star-Office-UI, EN/FR strings, CSS, art), test/ the tests.
Releasing
Releases are published by GitHub Actions when a v* tag is pushed. The publish job runs in the protected marketplace environment and needs the owner's approval. See RELEASING.md.
Credits and license
- Forked from Star-Office-UI by Ring Hyacinth & Simon Lee: office scene, sprites and the original idea.
- Guest characters: LimeZu, Animated Mini Characters 2.
- Font: Ark Pixel Font (SIL OFL 1.1). Engine: Phaser 3 (MIT).
Code is under the MIT License. The art assets are not: their authors allow non-commercial use only, and they must be replaced for any commercial use. See LICENSE.
This is an independent community project, not affiliated with Kilo Code.
En bref (français)
Star UI transforme les agents de Kilo Code en petits personnages dans un bureau en pixel art, directement dans VS Code. Chaque agent Kilo (Code, Plan, Explore, tes agents perso, tes experts d'autres repos) a son personnage. Tu les vois travailler en temps réel, et un clic sur un personnage permet de lui envoyer un prompt. La commande Create a Virtual Team crée une équipe prête à l'emploi. team.json permet à un agent de consulter l'expert d'un autre repo via l'outil ask_teammate. L'interface est en anglais par défaut ; passe starUiKilo.language à fr pour l'avoir en français.
| |