drawa
Health Gecti
- License — License: AGPL-3.0
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Community trust — 22 GitHub stars
Code Basarisiz
- rm -rf — Recursive force deletion command in .github/workflows/release.yml
- rm -rf — Recursive force deletion command in install.sh
- fs module — File system access in web/package.json
Permissions Gecti
- Permissions — No dangerous permissions requested
Bu listing icin henuz AI raporu yok.
A browser canvas for coding agents: run Claude Code, OpenCode and Codex sessions side by side, watch what they touch, review every change.
Drawa
A canvas workspace for Claude Code.
Run several Claude sessions side by side, watch every file they read, edit and run as a live map, and review every change without leaving the browser.
Install · Quick start · Features · Shortcuts · Contributing
Why Drawa
In a terminal, Claude Code's work scrolls past as a transcript. Drawa lays it out as a map instead. Each session is a card on a canvas. The files it touches appear in a window wired to that card, colored by what happened to them (read, edited, written). The commands it runs collect beside it. You can see at a glance what Claude did, and click any file to see exactly how it changed.
Drawa runs entirely on your machine. It drives the claude CLI you already have, with your login, settings, skills and MCP servers, and serves the UI on 127.0.0.1.
Features
- Parallel sessions. Each card is a live Claude process. Type any time; messages queue while Claude or its sub-agents work.
- Your work, drawn as a map. Files Claude reads, edits and writes are linked to its card and colored by action. Commands it runs collect in their own window.
- Diffs everywhere. Click a file for its changes from every session, plus the file itself with Markdown and Mermaid preview.
- Sub-agents in the open. Each sub-agent gets its own window showing its work as it happens, and you can message it directly.
- Claude can use the canvas too. Claude can read, create, edit and link canvas items through built-in tools, with changes going through the normal approval flow.
- A whiteboard around your code. Sticky notes, a Markdown scratchpad, Mermaid diagrams, pictures, pinned snippets, shapes, arrows and freehand ink.
@-reference any of them in a message, or drop them on a card. - Git and GitHub built in. Browse status and history. Open pull requests and issues through
gh, and send a PR, its failing checks or its reviews straight to Claude. - Picks up where you left off. Resume past sessions from history. The whole layout survives a reload, and a reload re-attaches to sessions that are still running.
- Themes. Light and dark, with Rosé Pine, Catppuccin, Tokyo Night, Gruvbox, Nord, Kanagawa, Everforest, Solarized and GitHub color schemes.
Requirements
| Claude Code | One agent is required. claude on PATH and logged in, for your Claude subscription. |
| OpenCode | Or, instead or as well: opencode on PATH, for any other provider or its free models. See below. Tested with OpenCode 1.18.32. |
| Codex | Or: codex on PATH and logged in, for your ChatGPT plan or an OpenAI API key. See below. Tested with Codex 0.158.0. |
git |
Optional. Powers the Git window and file history. |
gh |
Optional. Powers the GitHub window. |
| OS | macOS or Linux. Windows isn't supported yet. |
No Claude subscription? Use OpenCode
OpenCode is an open-source coding agent that works with most model providers (OpenRouter, Google, OpenAI, local models and more). With it installed, New session ▾ in the toolbar offers an OpenCode session next to a Claude Code one, and each session card picks its model from OpenCode's list.
- Install it:
curl -fsSL https://opencode.ai/install | bash(or see its docs). - Connect a provider with
opencode auth login, or skip that: OpenCode's own free models work without a key. - Start Drawa as usual. Its startup check lists
opencode, and warns if your version isn't the one Drawa was tested with.
Things to know:
- Privacy. A session's prompts, and the files it reads, go to the provider you pick. OpenCode's free models are run by third parties that may use what you send to improve their models (check OpenCode Zen's terms), so don't use them on code you can't share.
- What's the same. Approvals, questions, the files and commands windows, sub-agents, canvas tools and history work as they do for Claude Code.
- What differs. OpenCode has no Auto mode, and no effort setting. The status line's usage windows are Claude Code's, so OpenCode cards don't show them.
- Memory. Each OpenCode session runs its own
opencodeserver (about 300 MB). There's no OpenCode-specific limit: setDRAWA_MAX_LIVEif your machine needs one. - Commit messages. The Git window's Write with ▾ picks which agent writes commit messages and pull request descriptions.
Use Codex
Codex is OpenAI's coding agent. With codex installed and logged in (codex login), New session ▾ offers a Codex session, and each card picks its model from Codex's list.
- What's the same. Approvals (commands, file edits, canvas changes), the files and commands windows, canvas tools, pasted images and history work as they do for Claude Code. Looking at the canvas never asks.
- What differs. Codex has no Auto mode and no effort setting here (it uses its default). Read only asks before edits and before any command Codex doesn't consider safe. Plan only never asks, nothing it runs can write, and it doesn't hand you a plan to approve: it answers in the chat. Allow edits approves file changes inside the project only (not in
.git,.codex,.agentsor.claude, and not renames out of it). Always allow covers a command or edit until the card's Codex process closes (after 30 idle minutes, or to stay underDRAWA_MAX_LIVE; it asks again after resuming), and Drawa doesn't save Codex's permanent command rules; canvas changes ask each time. A mode change applies from the next turn (a message sent mid-turn joins the running one), except that leaving Allow everything stops a running turn, since it can't lose full access mid-turn. Sub-agents show as one row, not their own window, and a queued message can't be taken back. - Trust. For a local folder, Drawa marks it trusted for Codex, so, as with Claude Code, its
.codex/settings andAGENTS.mdload. A cloned GitHub repo you didn't trust is marked untrusted, so they don't. Either way nothing is written to~/.codex/config.toml. - Memory. Each Codex session runs its own
codex app-server(about 250 MB). There's no Codex-specific limit: setDRAWA_MAX_LIVEif your machine needs one.
Install
curl -fsSL https://raw.githubusercontent.com/HimalayanNomads/drawa/main/install.sh | sh
This downloads the right release binary for your OS and architecture and installs it to ~/.local/bin/drawa. You don't need Go or Node.
Update later with drawa --update. For manual downloads, custom install locations and uninstalling, see INSTALL.md.
Needs Go 1.22+ and Node 20.19+ (or 22.12+).
git clone https://github.com/HimalayanNomads/drawa.git
cd drawa/web && npm install && npm run build
cd .. && go build -o drawa .
Quick start
cd ~/my/project
drawa
Drawa opens http://127.0.0.1:8765 in your browser, and Claude works in that folder. Press N for a new session and start typing.
drawa # the current folder
drawa ~/some/project # any other folder
drawa --net . # also reachable from other devices on the network
drawa https://github.com/owner/repo # clones it into a cache folder and opens it (reruns reuse the clone)
drawa --clean # removes cached clones (or pass one repo's URL)
Opening a GitHub URL, or a folder inside its clone, asks on each launch whether to trust the repo (only the server's own restarts after code changes reuse the answer). Answer n (the default) and its own .claude/ settings, hooks, .mcp.json, CLAUDE.md, OpenCode project config, and Codex's .codex/ config and AGENTS.md are ignored, since they could run commands on your machine.
--clean keeps any clone with uncommitted, unpushed, stashed or ignored files. Don't run it while a Drawa is open on that clone. A GitHub folder link (/tree/main/docs) opens the repo on its default branch.
In the message box, / opens skills and slash commands and @ references files or canvas items. The toolbar picks the model and permission mode.
By default Drawa only answers on localhost. Pass --net (in any position) and, like a Vite or Next.js dev server, it also listens on the machine's network address and prints both:
- Local: http://127.0.0.1:8765
- Network: http://192.168.1.23:8765/?token=fpKZrzCN
It also prints a QR code of the Network link, so a phone can open it with its camera. The Network link lets another device on the same network — a laptop, a phone — open the same workspace. It only works with its ?token= (a fresh one each run, checked once, then kept in a cookie and dropped from the address), and an address that guesses wrong 5 times locks out for a few minutes. See Security.
Configuration
| Variable | Default | Purpose |
|---|---|---|
DRAWA_PORT |
8765 |
Port to serve on. Set it to run two projects at once. |
CLAUDE_CONFIG_DIR |
~/.claude |
Claude Code's config directory, if you keep a separate login or set of skills for Drawa. |
DRAWA_NET_TOKEN |
a fresh one per run | The --net token. Drawa sets it itself so the token survives its self-restarts; set it only to pick your own. |
DRAWA_MAX_LIVE |
unset (no cap) | Most agent processes kept running at once, of any agent (each takes a few hundred MB). Past it, the least recently used idle session is closed; its next message resumes it. Idle sessions close after 30 minutes either way. |
DRAWA_DEV |
unset | 1 trusts the Vite dev server's origin (port 5173). npm run dev sets it; see CONTRIBUTING.md. |
DRAWA_PORT=8766 CLAUDE_CONFIG_DIR=$HOME/.claude-work drawa ~/other/project
Keyboard shortcuts
Shortcuts follow Excalidraw's where the tool exists, and don't fire while you're typing. Press ? in the app for this list, and Ctrl+K to run any action by name. A short tip shows in the corner at launch; Hide tips turns them off.
| Area | Keys |
|---|---|
| Canvas | V/1 select · H hand (hold Space to pan) · Shift+1 fit all · Shift+2 zoom to selection · Shift+0 zoom 100% · F fit · +/- zoom in/out · arrows pan (Shift: bigger steps; with a selection they nudge it instead) |
| Items | N new session · C/Shift+C next/previous session (Enter to type) · T sticky note · S scratchpad · 9 insert picture · G Git · Shift+G GitHub · Shift+H history & files · Ctrl+K find a window, file or command · ? all shortcuts |
| Windows | W/Shift+W next/previous window (selects it, so Delete, arrows and Ctrl+G act on it) · M collapse/expand · Shift+F full view · F2 rename · Shift+P pin to the sidebar · Shift+S stick to the screen. They act on the selected window, else the one in front |
| Draw | D toggle Draw mode · P/7 pen · A/5 arrow between items · E/0 eraser · T/8 text · R/2 rectangle · 3 diamond · O/4 ellipse · L/6 line (Shift for square, circle, 45°) · Ctrl+Z undo · Esc stop |
| Selection | Ctrl/Cmd+A select all · arrows nudge (Shift: 10px) · Delete remove · Esc clear · Ctrl/Cmd+G group the selected windows (groups in it merge; nothing selected: an empty group) · Ctrl/Cmd+Shift+G ungroup the selected groups |
| Message box | Enter send · Shift+Enter new line (or Ctrl+Enter send and Enter new line: pick in Appearance, Aa) · Esc leave the box · ↑ at the start / ↓ at the end: previous/next message or ! command you sent in this session (past the newest: your draft) |
Mouse: drag the background to select (Select mode) or pan (Hand mode). The middle button and the wheel always pan. Ctrl/Cmd+scroll or pinch zooms; Shift+scroll scrolls sideways. The zoom is saved with the canvas. Jumping to a window (Ctrl+K, C, a notification) keeps the zoom unless the window would be under 50% or wouldn't fit, then it zooms to fit that window (at most 100%). Click a picture or diagram for full view, and click it again to zoom and pan it. Phones start in Hand mode.
Security
Drawa is built to run locally for one user:
- The server listens on
127.0.0.1only, unless you pass--net(see Quick start), and checks theHostheader on every request either way. - With
--net, the network address additionally needs its one-time?token=; wrong guesses lock that address out after 5 tries. Still only pass--neton a network you trust, and treat the printed link like a password — don't post it anywhere public. - Changing requests must come from Drawa's own page (a matching
Origin). - File access is confined to the project folder you opened.
- Claude's canvas tools use a per-process token, so only that session's own
claudeprocess can call them.
To report a vulnerability, see SECURITY.md: please open a private security advisory rather than a public issue.
Contributing
Issues and pull requests are welcome. Maintainers cut the releases; a merged pull request ships in the next one. See CONTRIBUTING.md for the development setup and an architecture overview, and CLAUDE.md for the conventions the codebase follows. Everyone taking part is expected to follow the Code of Conduct.
License
Drawa is licensed under the GNU Affero General Public License v3.0.
Yorumlar (0)
Yorum birakmak icin giris yap.
Yorum birakSonuc bulunamadi