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.
Install / Use
/learn @ZSeven-W/OpenpencilQuality Score
Category
Development & EngineeringSupported Platforms
README
Why OpenPencil
<table> <tr> <td width="50%">🎨 Prompt → Canvas
Describe 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.
</td> <td width="50%">🤖 Concurrent Agent Teams
The orchestrator decomposes complex pages into spatial sub-tasks. Multiple AI agents work on different sections simultaneously — hero, features, footer — all streaming in parallel.
</td> </tr> <tr> <td width="50%">🧠 Multi-Model Intelligence
Automatically 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.
</td> <td width="50%">🔌 MCP Server
One-click install into Claude Code, Codex, Gemini, OpenCode, Kiro, or Copilot CLIs. Design from your terminal — read, create, and modify .op files through any MCP-compatible agent.
📦 Design-as-Code
.op files are JSON — human-readable, Git-friendly, diffable. Design variables generate CSS custom properties. Code export to React + Tailwind or HTML + CSS.
🖥️ Runs Everywhere
Web app + native desktop on macOS, Windows, and Linux via Electron. Auto-updates from GitHub Releases. .op file association — double-click to open.
Quick Start
# 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
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-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 streaming animation
- Orchestrator — decomposes complex pages into spatial sub-tasks for parallel generation
- Design modification — select elements, then describe changes in natural language
- Vision input — attach screenshots or mockups for reference-based design
Multi-Agent Support
| Agent | Setup |
| --- | --- |
| 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+,) |
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.
MCP Server
- Built-in MCP server — 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.)
- 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
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
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 and file dialogs
Tech Stack
| | |
| --- | --- |
| Frontend | React 19 · TanStack Start · Tailwind CSS v4 · shadcn/ui |
| Canvas | CanvasKit/Skia (WASM, GPU-accelerated) |
| State | Zustand v5 |
| Server | Nitro |
| Desktop | Electron 35 |
| AI | Anthropic SDK · Claude Agent SDK · OpenCode SDK · Copilot SDK |
| Runtime | Bun · Vite 7 |
| File format | .op — JSON-based, human-readable, Git-friendly |
Project Structure
src/
canvas/ CanvasKit/Skia engine — drawing, sync, layout, guides, pen tool
components/ React UI — editor, panels, shared dialogs, icons
services/ai/ AI chat, orchestrator, design generation, streaming
services/figma/ Figma .fig binary import pipeline
services/codegen Multi-platform code generators (React, HTML, Vue, Svelte, Flutter, SwiftUI, Compose, React Native)
stores/ Zustand — canvas, document, pages, history, AI, settings
variables/ Design token resolution and reference management
mcp/ MCP server tools for external CLI integration
uikit/ Reusable component kit system
server/
api/ai/ Nitro API — streaming chat, generation, validation
utils/ Claude CLI, OpenCode, Codex, Copilot client wrappers
electron/
main.ts Window, Nitro fork, native menu, auto-updater
preload.ts IPC bridge
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+E | Export |
| 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
Related Skills
bluebubbles
325.9kUse when you need to send or manage iMessages via BlueBubbles (recommended iMessage integration). Calls go through the generic message tool with channel="bluebubbles".
node-connect
325.9kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
slack
325.9kUse when you need to control Slack from OpenClaw via the slack tool, including reacting to messages or pinning/unpinning items in Slack channels or DMs.
frontend-design
80.3kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
