Drawa - A better way to interact with LLMs
Drawa extends claude code and makes planning, researching, code reviewing and other regular day to day stuff really easy. Go give it a try
Your AI coding agent, drawn as a map.
Drawa turns Claude Code's scrolling terminal transcript into a live, visual canvas. You can see what the agent is doing, run several agents side by side, and review every change without leaving the browser.
The problem
AI coding agents like Claude Code are powerful, but they work inside a terminal. Their work scrolls past as a wall of text: which files did it read? What did it change? What did it run? Once you run two or three agents at once, keeping track is nearly impossible. Reviewing their work means digging through transcripts and running
git diff by hand.The solution
Drawa gives every agent session a card on an infinite canvas and draws its work around it as it happens:
- Every file the agent reads, edits or writes appears in a window wired to its card, colored by what happened to it.
- Every command it runs collects beside it.
- Click any file to see exactly how it changed, across every session.
You see at a glance what your agents did, and you stay in control of it.
Why it stands out
- Parallel agents, one screen. Each card is a live agent process. Run several at once, and type any time: messages queue while the agent or its sub-agents work.
- Sub-agents in the open. Each sub-agent gets its own window showing its work live, and you can message it directly.
- The agent can use the canvas too. Through built-in MCP tools, Claude can read, create, edit and link canvas items: it can draw a diagram, leave a note, or pin a snippet. Changes go through the normal approval flow.
- A whiteboard around your code. Sticky notes, a Markdown scratchpad, Mermaid diagrams, images, pinned snippets, shapes, arrows and freehand ink.
@reference any of them in a message, or drop them on a session card. - Git and GitHub built in. Browse status and history, and send a pull request, its failing CI checks or its review comments straight to the agent to fix.
- Not locked to one model. Works with Claude Code, and with OpenCode for OpenRouter, Google, OpenAI, local models, or free models.
- Picks up where you left off. Resume past sessions, and a page reload re-attaches to agents that are still running.
- Use it from your phone. Start it with
-net, scan the QR code, and watch or steer your agents from another device. - Private by design. Runs entirely on your machine, using your own
claudelogin, settings, skills and MCP servers. - Beautiful, and yours. Light and dark themes with Rosé Pine, Catppuccin, Tokyo Night, Gruvbox, Nord, Kanagawa, Everforest, Solarized and GitHub color schemes.
Get started in 30 seconds
Install with one command. You don't need Go or Node:
curl -fsSL <https://raw.githubusercontent.com/probablysamir/drawa/main/install.sh> | sh
Run it in any project:
cd ~/my/project drawa
Drawa opens in your browser. Press N for a new session, type what you want, and press Ctrl+Enter.
/opens skills and slash commands, and@references files or canvas itemsdrawa ~/some/projectopens another folderdrawa --net .makes it reachable from your phone or laptop on the same networkdrawa --updateupdates to the latest release
Requirements: macOS or Linux, plus Claude Code (logged in) or OpenCode.
git and gh are optional and power the Git and GitHub windows.How it's built
- Backend: Go, standard library only. A single self-contained binary with the UI embedded. It runs one long-lived agent process per session card and multiplexes all of them to the browser over a single event stream.
- Frontend: TypeScript and Vite, no framework. Plain DOM modules tuned for speed. A 27 MB transcript reopens in 0.5 s (down from 7.6 s), and streaming runs at 60 fps. Heavy libraries (Mermaid, Excalidraw) load only on first use.
- Pluggable agent backends. A registry where each agent (Claude Code, OpenCode) translates its output into one shared wire format, so the UI never branches on which agent is running.
- Security first. Local-only by default, with Host and Origin checks, JSON-only POSTs, and every file path kept inside the project folder. Network mode uses a one-time token with lockout on repeated wrong guesses.
My role: Co-founder
I co-founded Drawa and worked across the backend, infrastructure and distribution:
- Rewrote the server from Python to Go. Ported the original 1,200-line Python server to a modular, dependency-free Go backend of about 4,000 lines across 13 packages: live agent processes, the event stream, sessions and transcripts, Git, GitHub, the canvas MCP endpoint and security, with a test suite.
- Made Drawa a one-command install. Built the release pipeline (GitHub Actions cross-platform builds), embedded the web UI into a single downloadable binary, added a startup check for required tools, and wrote the
curl | shinstaller and INSTALL.md. - Built self-update.
drawa --updateinstalls new releases natively in Go, and an in-app dialog tells users when a new version is out. - Added same-network access. The
-netmode lets you open your workspace from a phone or another machine, with a QR code, one-time token authentication and brute-force lockout. - Built OpenCode support for its v2 server. Wrote the client and translation layer for OpenCode's new v2 server, with automatic fallback to v1 and golden tests for streaming, tools, questions, aborts and errors.
- Added per-session model and effort pickers. Each session card chooses its own model and reasoning effort and shows a live status line.
- Performance and reliability. Narrowed lock scopes around live sessions, parallelized GitHub pull request fetching, and fixed repeated notifications.
Links
- GitHub: https://github.com/probablysamir/drawa
- Latest release: https://github.com/probablysamir/drawa/releases/latest
- License: AGPL-3.0 (open source)