黒子 · the stagehand the audience agrees not to see
Let AI agents drive your Mac apps. Never your mouse.
Kuroko is an MCP server that lets AI agents see native macOS apps the way assistive tech does — the real accessibility tree, not pixels — and act on it in the background. No focus steal, no cursor hijack: the agent works backstage while you keep working.
Developer ID–signed & notarized · 14-day free trial · up to 3 Macs
Actions are posted straight to the app's process — your real cursor never moves.
why not computer-use
Backstage, not on stage
Screen-driving agents borrow your seat: they move the real cursor and read pixels. Kuroko stays out of the audience's view entirely.
Pixel-driven automation
on stage- sees
- Full-screen screenshots. Guesses what's a button from pixels.
- acts
- Moves your real cursor to coordinates and hopes the layout didn't shift.
- meanwhile
- Your Mac is occupied. You watch, or you wait.
- windows
- Must be frontmost and visible to be seen at all.
Kuroko
backstage- sees
- The app's accessibility tree — roles, labels, identifiers, frames.
- acts
- Semantic AX actions, falling back to events posted directly to the app's process.
- meanwhile
- You keep typing in another app. Focus never moves.
- windows
- Screenshots via ScreenCaptureKit — even fully occluded.
the surface an agent gets
Thirteen tools, one protocol
Plain MCP over stdio — point Claude Code, Claude Desktop or any MCP host at the binary and the whole stage crew is available.
list_appsrunning apps and their bundle idscheck_permissionsthe server's own AX and recording statusget_ui_treethe accessibility tree; outline mode for huge windowsscreenshotbackground PNG of one window, size-cappedtappress an element by label, id or roledouble_tapdouble-click an elementinput_texttype into an element; refuses password fieldspress_key⌘S, ⌘F, arrows — named keys with modifiersscrollbring off-screen elements into viewread_elementone element's fields, as JSONassert_visiblewait for an element to appearlaunch_appstart an app in the backgroundstop_appquit or force-kill a running app
the trust model
Assume the agent goes rogue
Handing an agent your open apps is a real grant of power — a prompt-injected agent is the realistic threat. Kuroko is built so that the grant is constrained, auditable and revocable.
App policy
Terminal, Keychain Access, 1Password and System Settings are denied by default. Flip to a strict allowlist when only one app should be drivable.
Read-only switch
"armWriteTools": false disarms tapping, typing, keys and app control in one move. The agent can look, not touch.
Secure fields refused
input_text will not type into a password field. Not configurable — on purpose.
Everything on the record
Every call lands in a local JSONL action log the app tails live. Typed text is logged by length only; content never hits disk.
Bounded by design
Timeouts, tree depth and node budgets are clamped, so a hung target app can never freeze the server.
No network surface
stdio only — nothing listens on a port.
kuroko.app
A companion you can watch
The app never drives anything itself — it exists so you can set Kuroko up and then see exactly what agents are doing with it.
- Onboarding walks through Accessibility and Screen Recording once.
- Overview shows permissions, connection and license status at a glance.
- Activity Log tails every agent action live — tool, target, duration, errors.
- Connect holds copy-paste instructions for any MCP host.
- A menu-bar glyph keeps status one click away after you close the window.
setup
Connect in a minute
Grant permissions
Accessibility goes to the process that launches the server — your terminal or agent host. Screen Recording is needed only for the
screenshottool.Add the server
Claude Code:
claude mcp add kuroko -- /path/to/kuroko mcpClaude Desktop — or any other MCP host:
{ "mcpServers": { "kuroko": { "command": "/path/to/kuroko", "args": ["mcp"] } } }Ask for something real
“Open the git client, tap the commit ‘Improve error messages’, and confirm the detail panel shows its author and date.”
licensing
Simple licensing
14-day trial with everything enabled — no account, no card.
One license, up to 3 Macs. Activate online in seconds; deactivate a device to move a seat.
Notarized direct download. The App Store sandbox forbids driving other apps, so Kuroko doesn't live there.