Show, don't tell.
Your agent, with a canvas.
agent-sidecar gives your coding agent a visual surface in the browser. It shows you options, forms, and previews — you click — the answer flows straight back into the conversation.
Works with Claude Code, Cursor, Codex — any MCP client. Read the docs →
Pick a direction
One loop. Your click is the API.
No push infrastructure, no channels, no polling scripts to babysit. The whole round-trip is a tool call.
create_artifact
The agent shows
Any complete HTML document — design options, a form, a diagram — appears live on your canvas.
claude.send(payload)
You click
Every artifact gets a send helper injected. Buttons, forms, anything interactive becomes a payload.
await_interaction
The agent hears it
A blocking tool call parks until you answer — or a background watcher lets it keep working meanwhile.
interactions.jsonl
Nothing is lost
Every interaction lands in a durable, tailable log in your project.
Small server, honest spec.
- canvas
- Live in the browser. Artifacts stream over SSE; new ones take focus, updates hot-reload in place, and the whole canvas survives a session restart.
- webhook
- Anything can POST in. CI, scripts, curl — external events queue into the same loop your clicks use, gated by a per-session token.
- transport
- Plain MCP over stdio. No experimental channel APIs, no org-policy fights. If your agent speaks MCP, it speaks sidecar.
- security
- Localhost-only, token-gated, sandboxed. The server binds
127.0.0.1; artifacts run in an opaque-origin iframe whereclaude.send()is the only way out. - footprint
- One process, one file. A single Bun-powered bundle from npm: MCP on one side, HTTP on the other. Read the source in ten minutes.
Rides along with
Running in a minute.
Two commands in Claude Code, restart, done. The server ships as a self-contained bundle on npm — Bun on your PATH is the only prerequisite.
On another agent? One MCP entry: see other agents.