Parallel sessions
NEvery card is its own agent process. Type any time: messages queue while the agent or its sub-agents work, and show as sending until they're read.
Drawa Features
Every feature of the canvas workspace for coding agents, in one place: running sessions, reviewing what they changed, organizing the canvas, Git and GitHub, and working from anywhere. Where an agent can't do something, the feature says so.
Each session is a card on the canvas and a live agent process behind it. Run as many as your machine holds.
Every card is its own agent process. Type any time: messages queue while the agent or its sub-agents work, and show as sending until they're read.
Claude Code, OpenCode, Codex or Antigravity, picked per card from New session ▾. At launch Drawa lists the agents it finds and warns about untested versions. Compare them.
Each card picks its model and permission mode: Ask first, Plan only, Allow edits, Auto or Allow everything. New cards start with the last model and effort you picked.
Auto: Claude Code
An edit waiting on you shows its diff inside the card, above Deny, Always allow and Allow. Questions the agent asks get answered there too, by picking or typing.
Not Antigravity
Every sub-agent gets a window that fills in as it works, and you can message it directly. Workflow calls show there too.
Claude CodeOpenCodeCodex: one row
/ opens skills and slash commands, @ references a file or canvas item, ! runs a shell command, and ↑ ↓ walk your earlier messages. Paste a picture to send it.
A queued message the agent hasn't read yet can still be edited or deleted from its bubble.
Claude Code
Resume any past session from History. Copy a session's ID with its agent's resume command. The layout survives a reload, which re-attaches to sessions still running.
Under each message box: tools loaded, MCP servers, context used, and rings for the 5-hour and weekly usage windows, with their reset time on hover.
Claude CodeCodex on a ChatGPT plan
Looking at another tab? The tab title counts what's waiting, and, if you allow them, a system notification says when a turn finished or an agent needs an approval or an answer.
A session idle for 30 minutes closes its process, and its next message resumes it. DRAWA_MAX_LIVE caps how many run at once.
What an agent did is drawn next to its card, in four colors that each mean one thing. Everything else on the canvas stays neutral.
Every file a session touched, grouped by folder, changed files first, wired to its card and colored by what happened. Hide the reads when you only care about changes.
The commands a session runs collect beside its card with their output. Drag a command row out to pin it on the canvas.
Open any project file in a window: code highlighted, Markdown rendered with Mermaid diagrams, pictures shown. Relative links in Markdown open the file they point to.
Jump to a window, a file, a code symbol or a session (with its status), or run any action by name.
The project's file tree and its past sessions, in one panel. A file's inspector shows its changes from every session and the file itself.
An agent's edit isn't a line in a transcript. Each one is numbered inside its file, with line numbers and real context, next to the edits every other session made to it. Review it like a pull request, before it is one.
Get · 4 references
Get in the diff to try it.+ and −, ready to @-mention in a message.In plan mode, Claude's plan opens as a document on the canvas. Comment on any block, or draw on it, then approve it or send your notes back. The revision lands in the same window, with what changed marked word by word.
Keep the stream across reloads
Fix the line yourself without leaving the canvas, and move through code by name.
The pencil on a file window, a double-click on its text, or Edit in the file inspector turns it into an editor. Saving only writes while the file on disk still matches what you opened, and keeps its line endings and encoding.
41 func (s *Server) events(w http.ResponseWriter) { 42 lv, ok := live.Get(c.ID)
Turn on vim in Settings for the editor and scratchpads: :w, :q, gd and gD to where a name is declared, CtrlO back. Yanks flash and go to your clipboard. All editor keys.
With universal-ctags installed, CtrlK finds functions, classes and the like by name, and opens the file at that line, marked.
needs universal-ctags
Click a name in an agent's edit to go to its definition. In a Git or GitHub diff, click one for every place it's used, each opening at its line in a peek window.
An infinite canvas around your sessions, for the notes, sketches and pictures you'd otherwise keep somewhere else. Anything on it can go into a message.
Double-click empty space and type. Empty notes vanish on their own.
Markdown windows rendered like a reply: headings, lists, code with copy and pin, Mermaid diagrams and GitHub callouts. Double-click to edit the source.
Any Mermaid block becomes a diagram you can open in full view, zoom, pan and download.
A sketch shows its preview on the canvas; double-click opens the full Excalidraw editor.
Paste, drop or insert pictures. Crop them to a ratio, draw on them, zoom and pan in full view, and download them again.
Select text anywhere (a reply, a plan, a file, a diff, command output) and pin it, or drag a code block out. Code keeps its language and lines; a diff keeps its + and −.
Pen, text, rectangles, diamonds, ellipses and lines, an eraser and undo. Arrows connect any two items, drawings included.
@-mention a note, diagram, picture or snippet in a message, or drop it on a card. It's sent as what it is.
Built-in tools let an agent read, create, edit and link canvas items, like a diagram of the flow it traced. Changes go through the usual approval.
Not Antigravity
Collapse M, full view ShiftF, rename F2, pin to the sidebar ShiftP, stick to the screen ShiftS. Resize from any corner, copy a window's text from its tab.
Select and Hand modes, Space to pan, pinch or Ctrl + scroll to zoom, Shift1 to fit everything. The zoom is saved with the canvas.
Set ui to minimal and a window's tab shows only on hover or focus. A card waiting on you keeps its tab.
A group is a named frame around windows: a session, the files it touched, a note, a diagram. Drag the frame's tab and everything inside comes along. Fold it away when you're done.
- if !ok { continue }+ lv = live.Start(c.ID)
Check the phone layout once this lands.
Checks passed, ready to merge
Group the selection. Groups inside it merge into one. With nothing selected, you get an empty frame to drop windows into.
Drop in to join, drag out to leave. A window dropped into a frame keeps its spot and the frame grows to fit. Dragged out, it leaves at once, with a notice that puts it back.
Never on top of each other. Frames wrap their windows as they grow, and make room instead of overlapping another group.
Drawings and pictures belong too. Ink, arrows and pictures inside a frame move with it, and a session's files, commands and plan windows open inside the group its card is in.
Layers. Bring a window forward or send it back, past the next one it overlaps; with Shift, all the way. Inside a group, they reorder its windows.
Nothing is lost. Deleting a group can be undone with its frame intact, and a frame stays when its last window leaves. CtrlShiftG ungroups.
Stage, commit, push and open a pull request beside the sessions that wrote the code, then send what review finds straight back to one.
Status, staging, history, commit and push. Open any recent commit's diff. A refresh button lights up when there are changes held back while you read a diff.
git 2.36+
An agent drafts the commit message or pull request description. Write with ▾ picks which one.
Open a folder of cloned repos and the Git window finds each one, up to four folders deep: a foldable group each, with its own commit box and pull request strip.
Each repo's header lists its worktrees, with a search box past five. Pick one to switch to it; remove a linked one from the same list.
Modified and deleted files get a discard button, after a confirm: a change goes back to what's staged, a staged one to the last commit.
Pull requests, issues, Actions runs and checks through gh, for whichever repo you pick. Review a pull request's diff and merge it.
needs gh
Send a pull request, its failing checks or its reviews to a session in one click, as a reference the agent reads when your message goes.
drawa https://github.com/owner/repo clones it into a cache and opens it. Untrusted repos don't get to run their hooks, settings or MCP servers.
One binary on your machine, reachable from your phone, in your colors, driven from the keyboard.
drawa --net prints a network link with a one-time token and a QR code. Phones start in Hand mode, so a drag pans.
Light and dark, with Rosé Pine, Catppuccin, Tokyo Night, Gruvbox, Nord, Kanagawa, Everforest, Solarized and GitHub schemes. Try one on this page:
~/.drawa/config.json holds the theme, schemes, interface, code symbols and Vim, for every project and browser. See the settings.
Single keys for the common moves, following Excalidraw's. ? lists them all with a filter. Every shortcut.
Served on 127.0.0.1, with Host and Origin checked and file access confined to the folder you opened. It drives your own CLIs, logins, skills and MCP servers.
Drawa tells you when a release is out, downloads and verifies it, and restarts into it when you say so. Or run drawa --update.
One line installs the release binary to ~/.local/bin/drawa. Then cd into a project and run drawa.
curl -fsSL https://raw.githubusercontent.com/HimalayanNomads/drawa/main/install.sh | sh