mesh-avatar-studio
일러스트를 코딩 에이전트와 로컬 편집기로 2D 메쉬 애니메이션 아바타로 변환
AI용 협업 다이어그램 도구, 실시간 캔버스에서 사양·아키텍처·워크플로우·시각 설명을 함께 그리며 정렬
An collaborative diagramming MCP tool for AI. Use it to align on specs, architecture, workflows, and visual explanations by drawing together on a shared real-time canvas.
디자인TypeScript · JavaScriptGitHub @kamiazya온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
A collaborative whiteboard for Claude Code, Codex, and Gemini CLI. Draw with your AI agent to align on specs, architecture, and workflows — directly on a shared real-time canvas.
whiteboard is a browser-first whiteboard that grows with you: open a canvas in
your browser, run it locally for durable private storage, and self-host it for a
team when you're ready.
Try it in your browser — no account; your canvas data stays in your own
browser. Kept in your browser: runs in your browser, data stays on your machine.
Get started → — runs locally from a checkout today.README 전문 보기 ↗A collaborative whiteboard for Claude Code, Codex, and Gemini CLI. Draw with your AI agent to align on specs, architecture, and workflows — directly on a shared real-time canvas.
whiteboard is a browser-first whiteboard that grows with you: open a canvas in your browser, run it locally for durable private storage, and self-host it for a team when you're ready.
Try it in your browser — no account; your canvas data stays in your own browser. Kept in your browser: runs in your browser, data stays on your machine. Get started → — runs locally from a checkout today.
The fastest way to get value today. Claude Code, Codex, or Gemini draw on the canvas alongside you over MCP. Local daemon: a server on your own machine.
Self-host for your team — run whiteboard as a shared server behind your own identity provider and TLS. Server mode: a shared server you operate. → Self-host with Docker
You and your agent both reach the same whiteboard — they talk, the agent acts, skills shape the prompts. The kamiazya/whiteboard plugin packages three skills and a Whiteboard MCP server together; the agent calls MCP tools via stdio and the daemon syncs the canvas to your browser through the whiteboard extension, picking up what the agent wrote within about half a second.
@kamiazya/whiteboard-mcp runs a spatial canvas editor in your browser and exposes MCP tools so Claude Code, Codex, Gemini CLI, or any MCP-capable agent can draw, annotate, and refine diagrams alongside you. Documents live locally in the daemon's data directory (~/.whiteboard/ by default), reach the browser within about half a second while the daemon runs, and read back as OKF Markdown or JSON Canvas 1.0 — both round-trip losslessly through the same codec that exports the PNG/SVG images on this page.
| Aligning on a design | Reviewing and marking up | Presenting or sharing |
|---|---|---|
| Agent drew it — you guided the layout | You annotated it — review notes on the canvas | Chrome-free render — clean export for docs |
The same workflow works across any scenario — the agent draws boxes, arrows, and labels on a fresh canvas:
In a Claude Code session, run:
/plugin marketplace add kamiazya/whiteboard
/plugin install whiteboard@whiteboard-marketplace
This installs the MCP server and the bundled /drawing-visuals, /coauthoring-visuals, and /auditing-workspaces skills in one step.
claude mcp add whiteboard -- npx -y @kamiazya/whiteboard-mcp@latest
Starts the MCP server only — the
/drawing-visuals,/coauthoring-visuals, and/auditing-workspacesskills are not installed this way, and there is no manual step that adds them: they are carried by the plugin, not by the npm package. Use the plugin install above if you want them.
In a Codex session, run:
codex plugin marketplace add kamiazya/whiteboard@stable
The @stable pin tracks the latest release instead of the development branch.
Then open /plugins, choose kamiazya Whiteboard → whiteboard → Install plugin, and restart Codex. This installs the MCP server and the bundled skills in one step.
Add to ~/.codex/config.toml:
[mcp_servers.whiteboard]
command = "npx"
args = ["-y", "@kamiazya/whiteboard-mcp@latest"]
Starts the MCP server only — the
/drawing-visuals,/coauthoring-visuals, and/auditing-workspacesskills are not installed this way, and there is no manual step that adds them: they are carried by the plugin, not by the npm package. Use the plugin install above if you want them.
gemini extensions install https://github.com/kamiazya/whiteboard
Add to ~/.gemini/settings.json:
{
"mcpServers": {
"whiteboard": {
"command": "npx",
"args": ["-y", "@kamiazya/whiteboard-mcp@latest"]
}
}
}
Starts the MCP server only — the
/drawing-visuals,/coauthoring-visuals, and/auditing-workspacesskills are not installed this way, and there is no manual step that adds them: they are carried by the plugin, not by the npm package. Use the plugin install above if you want them.
In your agent session, ask it to call wb_workspace_edit({ workspaceId: "default", ops: [{ op: "document.create", path: "smoke", kind: "spatial" }] }). The call creates the document in the daemon's data directory (~/.whiteboard by default); with the web app connected to the daemon (below), open smoke in it to see it.
default is the segment of the first workspace a data directory gets: it is created the first time anything opens the directory, and it is the workspace the web app opens first. An agent can use it as workspaceId without being told anything else; a workspace you create later is addressed by its own id or the segment it was given.
Already have the browser canvas open (see Get started)
and a local daemon running? The hosted app reaches it through the
whiteboard browser extension and a native messaging host that
whiteboard native-host install --json registers with your browser (run it
from a global install, not npx; see
Get the whiteboard command).
The daemon listens on an owner-only local socket and no network port, so no
web page can reach it directly, and nothing needs pasting or approving: once
connected, the tab works on the daemon's workspaces with live sync,
automatic version checkpoints on top of the manual version history the
browser keeps on its own.
0.0.x the extension is loaded by hand from a build
of this repository..whiteboardrc / .whiteboard/config.yaml auto-load and
precedence rules.See Connect to a local daemon for the full flow, including moving a workspace this browser keeps — history, identity, and images intact — into the daemon.
Three opinionated SKILL.md packs ship with the plugin, which wires them up automatically. They are not part of the @kamiazya/whiteboard-mcp npm package, so the MCP-only routes above (claude mcp add, the Codex CLI snippet, npx, the Gemini mcpServers entry) start the server without them.
| Skill | When to use |
|---|---|
/drawing-visuals | When screen layout, structure, flow, or comparison still feels too ambiguous in text alone — start drawing on the canvas together. |
/coauthoring-visuals | A structured loop for evolving visuals with the agent: gather context, structure frame by frame, run fresh-viewer tests on what you draw. |
/auditing-workspaces | Audit a workspace's documents — find empty spatial canvases, near-duplicate paths, and documents with no recorded kind; report cleanup candidates. |
You Use whiteboard to sketch the request flow for our auth service:
client → API gateway → token service → DB. Highlight where caching lives.
Agent { results: [{ documentId }] } = wb_workspace_edit({ workspaceId: "default",
ops: [{ op: "document.create", path: "auth-flow", kind: "spatial" }] })
wb_canvas_edit({ workspaceId: "default", documentId, mode: "apply", ops: [
/* 4 service boxes, the arrows between them, and: */
{ op: "node.add", node: { id: "cache-note", type: "text",
text: "cache lives here" } },
{ op: "tidy" },
] })
wb_scene_render({ workspaceId: "default", documentId })
Drew a 4-stage flow on the auth-flow canvas. Cache callout placed
between API gateway and token service. SVG attached.
The agent returns the wb_scene_render result so the next turn can reason about what was actually drawn — closing the loop between prompt and pixels.
| Topic | Where |
|---|---|
| Local checkout, HTTP MCP development loop, repo-local config override | docs/contributing/development.md |
| Environment variables, storage layout, Codex sandbox quirks | docs/reference/configuration.md |
| Components, data flow, MCP tool surface, design boundaries | docs/explanation/architecture.md |
| Export formats (SVG, OKF Markdown, JSON Canvas) and their tools | docs/reference/export-formats.md |
MCP debugging workflow (Inspector, MCP_HTTP_DEBUG, transport checks) | docs/contributing/mcp-debugging.md |
| Trust model for all three runtimes (browser, local daemon, server mode) | docs/explanation/security-model.md |
| Connecting a browser tab to a local daemon, moving a browser workspace into it | docs/how-to/connect-to-local-daemon.md |
| Live-sync message shapes between daemon and browser | docs/contributing/architecture/wire-protocol.md |
| Test layers, commit conventions, release process | CONTRIBUTING.md |
ImageContent — wb_scene_render is the closest equivalent for handing a rendered canvas back to an LLM.stdio. The HTTP MCP endpoint (pnpm mcp:http:dev) is for local development.stdio entry opens the store in its own process: it takes the same automatic History checkpoints and compaction as the daemon. It has no direct path to the browser — wb_viewport_set answers delivered: false, and the agent-activity highlight and version overlays need the daemon's process — but what it writes still reaches an open tab: the daemon follows the shared record every 500 ms for the workspaces a page is subscribed to (WHITEBOARD_WORKSPACE_TAIL_MS), and each process reads through to the record on every access, so the agent also sees what you drew or created.See docs/reference/configuration.md for sandbox quirks.
The whole codebase lives in this public monorepo. Today every package is Apache-2.0. The relicense applies to this source tree and to releases made from it going forward; npm versions published before the switch remain MIT-licensed. When the managed-hosting (SaaS) composition layer lands, only that layer — the Cloudflare Workers app and its Cloudflare-specific storage adapters — will be published under the Fair Source License (FSL-1.1-Apache-2.0): free to self-host and use internally, not usable to offer a competing hosted service, and automatically becoming Apache-2.0 two years after each release. Everything else stays Apache-2.0.
The project name and logo are not licensed for use in third-party commercial hosting offerings.