Openpencil
The world's first open-source AI-native vector design tool and the first to feature concurrent Agent Teams. Design-as-Code. Turn prompts into UI directly on the live canvas. A modern alternative to Pencil.
Ask AI about Openpencil
Powered by Claude ยท Grounded in docs
I know everything about Openpencil. Ask me about installation, configuration, usage, or troubleshooting.
0/500
Reviews
Documentation
OpenPencil
The world's first open-source AI-native vector design tool.
Concurrent Agent Teams โข Design-as-Code โข Built-in MCP Server โข Multi-model Intelligence
English ยท ็ฎไฝไธญๆ ยท ็น้ซไธญๆ ยท ๆฅๆฌ่ช ยท ํ๊ตญ์ด ยท Franรงais ยท Espaรฑol ยท Deutsch ยท Portuguรชs ยท ะ ัััะบะธะน ยท เคนเคฟเคจเฅเคฆเฅ ยท Tรผrkรงe ยท เนเธเธข ยท Tiแบฟng Viแปt ยท Bahasa Indonesia
Click the image to watch the demo video
Note: There is another open-source project with the same name โ OpenPencil, focused on Figma-compatible visual design with real-time collaboration. This project focuses on AI-native design-to-code workflows.
Why OpenPencil
๐จ Prompt โ CanvasDescribe any UI in natural language. Watch it appear on the infinite canvas in real-time with streaming animation. Modify existing designs by selecting elements and chatting. |
๐ค Concurrent Agent TeamsThe orchestrator decomposes complex pages into spatial sub-tasks. Multiple AI agents work on different sections simultaneously โ hero, features, footer โ all streaming in parallel with per-member canvas indicators. |
๐ง Multi-Model IntelligenceAutomatically adapts to each model's capabilities. Claude gets full prompts with thinking; GPT-4o/Gemini disable thinking; smaller models (MiniMax, Qwen, Llama) get simplified prompts for reliable output. |
๐ MCP ServerOne-click install into Claude Code, Codex, Gemini, OpenCode, Kiro, or Copilot CLIs. Design from your terminal โ read, create, and modify |
๐จ Style GuidesBuilt-in style guide library with tag-based fuzzy matching. Apply visual styles (glassmorphism, brutalist, retro, etc.) to AI-generated designs. MCP tools for external agent access. |
๐ฆ Design-as-Code
|
๐ฅ๏ธ Runs EverywhereWeb app + native desktop on macOS, Windows, and Linux via Electron. Auto-updates from GitHub Releases. |
โจ๏ธ CLI โ
|
๐ฏ Multi-Platform Code ExportExport to React + Tailwind, HTML + CSS, Vue, Svelte, Flutter, SwiftUI, Jetpack Compose, React Native โ all from one |
๐งฉ Embeddable SDK
|
๐ก๏ธ Design System KitManage reusable UIKits with style switching and component composition. Import/export kits from |
Install
macOS (Homebrew):
brew tap zseven-w/openpencil
brew install --cask openpencil
Windows (Scoop):
scoop bucket add openpencil https://github.com/zseven-w/scoop-openpencil
scoop install openpencil
Linux / Windows direct download: GitHub Releases โ .exe (Windows), .AppImage / .deb (Linux)
CLI (op):
npm install -g @zseven-w/openpencil
Quick Start (Development)
# Install dependencies
bun install
# Start dev server at http://localhost:3000
bun --bun run dev
Or run as a desktop app:
bun run electron:dev
Prerequisites: Bun >= 1.0 and Node.js >= 18. Optional: Zig >= 0.14 for building
agent-nativefrom source (a prebuilt binary will be downloaded automatically if Zig is not installed).
Docker
Multiple image variants are available โ pick the one that fits your needs:
| Image | Size | Includes |
|---|---|---|
openpencil:latest | ~226 MB | Web app only |
openpencil-claude:latest | โ | + Claude Code CLI |
openpencil-codex:latest | โ | + Codex CLI |
openpencil-opencode:latest | โ | + OpenCode CLI |
openpencil-copilot:latest | โ | + GitHub Copilot CLI |
openpencil-gemini:latest | โ | + Gemini CLI |
openpencil-full:latest | ~1 GB | All CLI tools |
Run (web only):
docker run -d -p 3000:3000 ghcr.io/zseven-w/openpencil:latest
Run with AI CLI (e.g. Claude Code):
The AI chat relies on Claude CLI OAuth login. Use a Docker volume to persist the login session:
# Step 1 โ Login (one-time)
docker volume create openpencil-claude-auth
docker run -it --rm \
-v openpencil-claude-auth:/root/.claude \
ghcr.io/zseven-w/openpencil-claude:latest claude login
# Step 2 โ Start
docker run -d -p 3000:3000 \
-v openpencil-claude-auth:/root/.claude \
ghcr.io/zseven-w/openpencil-claude:latest
Build locally:
# Base (web only)
docker build --target base -t openpencil .
# With a specific CLI
docker build --target with-claude -t openpencil-claude .
# Full (all CLIs)
docker build --target full -t openpencil-full .
AI-Native Design
Prompt to UI
- Text-to-design โ describe a page, get it generated on canvas in real-time with SSE streaming animation
- Orchestrator โ decomposes complex pages into spatial sub-tasks for parallel generation
- Agent Teams โ concurrent team members with delegate tool, per-member canvas indicators, and fallback strategies
- Design modification โ select elements, then describe changes in natural language
- Vision input โ attach screenshots or mockups for reference-based design
- Style Guides โ apply visual styles (glassmorphism, brutalist, retro, etc.) via tag-based fuzzy matching
- Anti-slop โ cross-generation diversity tracking to avoid repetitive AI output
Multi-Agent Support
| Agent | Setup |
|---|---|
| Built-in (9+ providers) | Select from provider presets with region switcher โ Anthropic, OpenAI, Google, DeepSeek, and more |
| Claude Code | No config โ uses Claude Agent SDK with local OAuth |
| Codex CLI | Connect in Agent Settings (Cmd+,) |
| OpenCode | Connect in Agent Settings (Cmd+,) |
| GitHub Copilot | copilot login then connect in Agent Settings (Cmd+,) |
| Gemini CLI | Connect in Agent Settings (Cmd+,) |
Model Capability Profiles โ automatically adapts prompts, thinking mode, and timeouts per model tier. Full-tier models (Claude) get complete prompts; standard-tier (GPT-4o, Gemini, DeepSeek) disable thinking; basic-tier (MiniMax, Qwen, Llama, Mistral) get simplified nested-JSON prompts for maximum reliability.
i18n โ Full interface localization in 15 languages: English, ็ฎไฝไธญๆ, ็น้ซไธญๆ, ๆฅๆฌ่ช, ํ๊ตญ์ด, Franรงais, Espaรฑol, Deutsch, Portuguรชs, ะ ัััะบะธะน, เคนเคฟเคจเฅเคฆเฅ, Tรผrkรงe, เนเธเธข, Tiแบฟng Viแปt, Bahasa Indonesia.
MCP Server
- Built-in MCP server (
pen-mcppackage) โ one-click install into Claude Code / Codex / Gemini / OpenCode / Kiro / Copilot CLIs - Auto-detects Node.js โ if not installed, falls back to HTTP transport and auto-starts the MCP HTTP server
- Design automation from terminal: read, create, and modify
.opfiles via any MCP-compatible agent - Layered design workflow โ
design_skeletonโdesign_contentโdesign_refinefor higher-fidelity multi-section designs - Segmented prompt retrieval โ load only the design knowledge you need (schema, layout, roles, icons, planning, etc.)
- Style guide tools โ
get_style_guide_tagsandget_style_guidefor applying visual styles via MCP - Multi-page support โ create, rename, reorder, and duplicate pages via MCP tools
Code Generation
- React + Tailwind CSS, HTML + CSS, CSS Variables
- Vue, Svelte, Flutter, SwiftUI, Jetpack Compose, React Native
CLI โ op
Install globally and control the design tool from your terminal:
npm install -g @zseven-w/openpencil
op start # Launch desktop app
op design @landing.txt # Batch design from file
op insert '{"type":"RECT"}' # Insert a node
op import:figma design.fig # Import Figma file
cat design.dsl | op design - # Pipe from stdin
Supports three input methods: inline string, @filepath (read from file), or - (read from stdin). Works with desktop app or web dev server. See CLI README for full command reference.
LLM Skill โ install the OpenPencil Skill plugin to teach AI agents (Claude Code, Cursor, Codex, Gemini CLI, etc.) how to design with op.
Features
Canvas & Drawing
- Infinite canvas with pan, zoom, smart alignment guides, and snapping
- Rectangle, Ellipse, Line, Polygon, Pen (Bezier), Frame, Text
- Boolean operations โ union, subtract, intersect with contextual toolbar
- Icon picker (Iconify) and image import (PNG/JPEG/SVG/WebP/GIF)
- Auto-layout โ vertical/horizontal with gap, padding, justify, align
- Multi-page documents with tab navigation
Design System
- Design variables โ color, number, string tokens with
$variablereferences - Multi-theme support โ multiple axes, each with variants (Light/Dark, Compact/Comfortable)
- Component system โ reusable components with instances and overrides
- CSS sync โ auto-generated custom properties,
var(--name)in code output - Reusable UIKits โ import/export component kits from
.penfiles
AI & Agents
- Prompt-to-canvas with streaming generation and orchestrator-driven spatial decomposition
- Concurrent Agent Teams โ multiple designers work on different sections in parallel with per-member canvas indicators
- Layered workflow โ
design_skeletonโdesign_contentโdesign_refinewith focused prompts per phase - Style Guides โ 50+ built-in styles (glassmorphism, brutalist, retro, etc.) with tag-based fuzzy matching, wired into planning and generation
- Multi-model capability profiles โ auto-adapts thinking mode, effort, and prompt shape per model tier
- Built-in agent runtime (
agent-native, Zig NAPI) + Anthropic, Claude Agent SDK, OpenCode, Codex, Copilot, Gemini providers - Anthropic-format passthrough for Chinese LLM providers โ Kimi, Zhipu, GLM, DouBao, Ark, Bailian/DashScope, ModelScope, Coding Plans
Git Integration
- Clone wizard with SSH / HTTPS auth and SSH key management
- Branch picker โ create, switch, delete, merge, all from the git panel
- Pull / push cascades with auth retry and non-fast-forward handling
- Folder-mode three-way merge with on-disk
MERGE_HEADstate tracking - Conflict panel with per-node / per-field three-way cards, inline JSON editor, bulk actions, and inline diff block
- Remote settings and SSH keys UI; 15-locale i18n across the whole Git surface
Export
- Canvas export โ PNG, JPEG, WEBP, PDF (
Cmd+Shift+P) - Code export โ React + Tailwind, HTML + CSS, Vue, Svelte, Flutter, SwiftUI, Jetpack Compose, React Native
- Incremental MCP codegen pipeline โ
codegen_plan,codegen_submit_chunk,codegen_assemble,codegen_clean
Figma Import
- Import
.figfiles with layout, fills, strokes, effects, text, images, and vectors preserved
Desktop App
- Native macOS, Windows, and Linux via Electron
.opfile association โ double-click to open, single-instance lock- Auto-update from GitHub Releases
- Native application menu with Save As, Open Recent, and an unsaved-changes dialog on close
- Recent files persistence
Tech Stack
| Frontend | React 19 ยท TanStack Start ยท Tailwind CSS v4 ยท shadcn/ui ยท i18next |
| Canvas | CanvasKit/Skia (WASM, GPU-accelerated) |
| Engine | pen-engine (headless) ยท pen-react (React UI SDK) |
| State | Zustand v5 |
| Server | Nitro |
| Desktop | Electron 35 |
| CLI | op โ terminal control, batch design DSL |
| AI | agent-native (Zig NAPI) ยท Anthropic SDK ยท Claude Agent SDK ยท OpenCode SDK ยท Copilot SDK |
| Runtime | Bun ยท Vite 7 |
| Lint | oxlint ยท oxfmt |
| File format | .op โ JSON-based, human-readable, Git-friendly |
Project Structure
openpencil/
โโโ apps/
โ โโโ web/ TanStack Start web app
โ โ โโโ src/
โ โ โ โโโ canvas/ CanvasKit/Skia engine โ drawing, sync, layout
โ โ โ โโโ components/ React UI โ editor, panels, shared dialogs, icons
โ โ โ โโโ services/ai/ AI chat, orchestrator, design generation, streaming
โ โ โ โโโ services/codegen/ Code generation service wrappers
โ โ โ โโโ stores/ Zustand โ canvas, document, pages, history, AI
โ โ โ โโโ hooks/ Keyboard shortcuts, file drop, Figma paste, MCP sync
โ โ โ โโโ i18n/ Internationalization โ 15 locales
โ โ โ โโโ uikit/ Reusable component kit system
โ โ โโโ server/
โ โ โโโ api/ai/ Nitro API โ streaming chat, agent, generation, image search
โ โ โโโ api/mcp/ MCP HTTP transport endpoints
โ โ โโโ utils/ Claude, OpenCode, Codex, Copilot, Gemini CLI wrappers
โ โโโ desktop/ Electron desktop app
โ โ โโโ main.ts Window, Nitro fork, native menu, auto-updater
โ โ โโโ ipc-handlers.ts Native file dialogs, theme sync, prefs IPC
โ โ โโโ preload.ts IPC bridge
โ โโโ cli/ CLI tool โ `op` command
โ โโโ src/commands/ Design, document, export, import, node, page, variable commands
โ โโโ connection.ts WebSocket connection to running app
โ โโโ launcher.ts Auto-detect and launch desktop app or web server
โโโ packages/
โ โโโ pen-types/ Type definitions for PenDocument model
โ โโโ pen-core/ Document tree ops, layout engine, variables
โ โโโ pen-engine/ Headless design engine โ document, selection, history, viewport
โ โโโ pen-react/ React UI SDK โ provider, canvas, hooks, panels, toolbar
โ โโโ pen-codegen/ Code generators (React, HTML, Vue, Flutter, ...)
โ โโโ pen-figma/ Figma .fig file parser and converter
โ โโโ pen-renderer/ Standalone CanvasKit/Skia renderer
โ โโโ pen-mcp/ MCP server โ tools, routes, document manager
โ โโโ pen-sdk/ Umbrella SDK (re-exports all packages)
โ โโโ pen-ai-skills/ AI prompt skill engine (phase-driven prompt loading)
โ โโโ agent-native/ Native AI agent runtime (Zig NAPI, multi-provider, teams)
โโโ .githooks/ Pre-commit version sync from branch name
Keyboard Shortcuts
| Key | Action | Key | Action | |
|---|---|---|---|---|
V | Select | Cmd+S | Save | |
R | Rectangle | Cmd+Z | Undo | |
O | Ellipse | Cmd+Shift+Z | Redo | |
L | Line | Cmd+C/X/V/D | Copy/Cut/Paste/Duplicate | |
T | Text | Cmd+G | Group | |
F | Frame | Cmd+Shift+G | Ungroup | |
P | Pen tool | Cmd+Shift+P | Export (PNG/JPG/WEBP/PDF) | |
H | Hand (pan) | Cmd+Shift+C | Code panel | |
Del | Delete | Cmd+Shift+V | Variables panel | |
[ / ] | Reorder | Cmd+J | AI chat | |
| Arrows | Nudge 1px | Cmd+, | Agent settings | |
Cmd+Alt+U | Boolean union | Cmd+Alt+S | Boolean subtract | |
Cmd+Alt+I | Boolean intersect | Cmd+Shift+S | Save As |
Scripts
bun --bun run dev # Dev server (port 3000)
bun --bun run build # Production build
bun --bun run test # Run tests (Vitest)
npx tsc --noEmit # Type check
bun run lint # Lint (oxlint)
bun run format # Format (oxfmt)
bun run bump <version> # Sync version across all package.json
bun run electron:dev # Electron dev
bun run electron:build # Electron package
bun run cli:dev # Run CLI from source
bun run cli:compile # Compile CLI to dist
bun run mcp:dev # Run MCP server from source
Contributing
Contributions are welcome! See CLAUDE.md for architecture details and code style.
- Fork and clone
- Set up version sync:
git config core.hooksPath .githooks - Create a branch:
git checkout -b feat/my-feature - Run checks:
npx tsc --noEmit && bun --bun run test - Commit with Conventional Commits:
feat(canvas): add rotation snapping - Open a PR against
main
Roadmap
- Design variables & tokens with CSS sync
- Component system (instances & overrides)
- AI design generation with orchestrator
- MCP server integration with layered design workflow
- Multi-page support
- Figma
.figimport - Boolean operations (union, subtract, intersect)
- Multi-model capability profiles
- Monorepo restructure with reusable packages
- CLI tool (
op) for terminal control - Built-in AI agent SDK with multi-provider support
- i18n โ 15 languages
- Headless design engine (
pen-engine) + React UI SDK (pen-react) - Style Guides with tag-based matching and MCP tools
- Concurrent Agent Teams with delegate tool and canvas indicators
- Native agent runtime (
agent-nativeโ Zig NAPI) - Git integration โ clone, branch, push/pull, folder-mode three-way merge
- Canvas raster export (PNG / JPEG / WEBP / PDF)
- Collaborative editing
- Plugin system
Contributors
Sponsors
OpenPencil is free and open-source. Development is funded by people who find it useful โ thank you for keeping the canvas open.
Thanks to MrQyun โ want your name here too? Become a sponsor โ
Community
Star History
Assessments
License
MIT โ Copyright (c) 2026 ZSeven-W

