openpencil README

The project's README from github.com/ZSeven-W/openpencil. As one markdown file: README.md.

OpenPencil

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

Stars License CI Discord

ZSeven-W%2Fopenpencil | Trendshift


OpenPencil — click to watch demo

Click the image to watch the demo video

Why OpenPencil

Infistar.cc 无限星河 — 一站式全球大模型 API 服务平台

OpenPencil × Infistar.cc 无限星河|全模型 API · 驱动 AI 原生设计创作

感谢 Infistar.cc 无限星河 赞助并为 OpenPencil 提供模型服务支持!

🎨 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.

🤖 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 with per-member canvas indicators.

🧠 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.

🔌 MCP Server

One-click install into Claude Code, Codex, OpenCode, Kiro, or Copilot CLIs. Design from your terminal — read, create, and modify .op files through any MCP-compatible agent.

🎨 Style Guides

Built-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

.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 — one Rust core, a single self-contained binary, no browser engine. .op file association — double-click to open.

⌨️ CLI — op

Control the design tool from your terminal. op design, op insert — batch design DSL, node manipulation. Pipe in from files or stdin. Works with desktop app or web server.

🎯 Multi-Platform Code Export

Export to React + Tailwind, HTML + CSS, Vue, Svelte, Flutter, SwiftUI, Jetpack Compose, React Native — all from one .op file. Design variables become CSS custom properties.

🧩 Embeddable SDK

op-web-sdk (vanilla) + op-web-sdk-react / op-web-sdk-vue adapters — embed a read-only .op viewer in your own app, powered by the same wasm renderer the editor ships.

🛡️ Design System Kit

Manage reusable UIKits with style switching and component composition. Import/export kits from .pen files. Built-in registry with MCP tools for external access.

👥 Real-Time Collaboration

Design together over authenticated peer-to-peer sessions with a public relay and built-in regional hubs. Join with a short pairing code, see live remote cursors, and resolve conflicts with per-edit detail and replay.

Install

Building from source on Windows: see BUILD_WINDOWS.md

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)

The Windows .exe installer, both Scoop packages, and the install-op.ps1 CLI installer check and, when needed, service the pinned, Microsoft-signed Visual C++ v14 runtime during every install or upgrade. The portable Windows .zip archives and Windows VSIX packages do not run an elevated system installer; install Microsoft's latest supported Visual C++ Redistributable before using those artifacts directly.

Antivirus flagged the Windows installer? That's a known heuristic false positive on new, low-prevalence releases — see how to verify your download.

Nix (Linux x86_64):

nix develop
nix run .                         # launch the desktop app
nix build .#openpencil            # native web host + CanvasKit web bundle
nix build .#op-cli                # the `op` CLI
nix build .#prebuilt              # use the matching upstream desktop archive
nix build .#prebuilt-cli          # use the matching upstream CLI archive
nix build .#web-server            # native GL-free web server + web bundle
nix build .#runtime-prebuilt      # prebuilt desktop + `op` CLI runtime
nix build .#web-sdk-packages      # npm tarballs for the web SDKs
nix build .#appimage              # portable desktop AppImage

The flake uses the pinned Rust toolchain from rust-toolchain.toml and is currently published for x86_64-linux. A Debian package is not produced by the flake yet; use the upstream release artifacts when a .deb is required. The prebuilt outputs use the release version and hashes pinned in nix/release-manifest.json, independently of the workspace source version. After a release is published, the release workflow opens a PR to refresh that manifest. Until it is merged, the prebuilt outputs continue to use the prior published release; the source-built outputs always build the checked-out source.

CLI (op):

brew install zseven-w/openpencil/op

Or use the install script (macOS / Linux):

curl -fsSL https://raw.githubusercontent.com/ZSeven-W/openpencil/main/scripts/install-op.sh | bash

To allow the newest pre-release:

curl -fsSL https://raw.githubusercontent.com/ZSeven-W/openpencil/main/scripts/install-op.sh | OP_PRERELEASE=1 bash

Windows PowerShell:

irm https://raw.githubusercontent.com/ZSeven-W/openpencil/main/scripts/install-op.ps1 | iex

To allow the newest pre-release:

$env:OP_PRERELEASE = "1"; irm https://raw.githubusercontent.com/ZSeven-W/openpencil/main/scripts/install-op.ps1 | iex

Cloning (with submodules)

git clone --recurse-submodules https://github.com/ZSeven-W/openpencil.git
# Or already cloned — sync first so stale submodule URLs pick up .gitmodules changes:
git submodule sync --recursive && git submodule update --init --recursive

Three submodules live under vendor/, all public and fetched over HTTPS (no SSH key needed): jian (GPU-Skia UI framework — widgets/render/events), casement (winit fork), and agent (agent-rs — cross-product Rust agent runtime, shared by OP + Zode). vendor/anthropic-agent-sdk is tracked in-tree, not a submodule.

Quick Start (Development)

# Web dev server (builds the CanvasKit wasm bundle, then runs the headless web host)
bash scripts/start-web-rust.sh

Browser-entered built-in provider, image-generation, and Openverse credentials are kept in same-origin localStorage (openpencil-rust-web-credentials) by default, separate from ordinary web preferences. A credential needed by an AI request is sent with that request, but the daemon does not write the browser snapshot to settings.json.

Private deployments can opt into server persistence with OPENPENCIL_PERSIST_WEB_CREDENTIALS_SERVER=true. This setting is deployment-wide; each accepted browser snapshot replaces the shared browser-owned copy. Enable it only for a trusted, access-controlled deployment with one active administrator profile, behind HTTPS. Turning the setting off removes previously persisted browser-owned credentials at the next startup while preserving operator-owned configuration. As with all localStorage, same-origin scripts can read these values, so the web origin must be protected from untrusted scripts and XSS. Before downgrading to a release that predates this switch, turn it off and start the current release once to scrub the browser-owned copy.

The web host supports built-in API-key agents only. CLI and ACP agents remain native-only: they are not shown in the web model picker, stored in browser credential snapshots, synchronized to the server, or exposed through web connect routes. Browser requests to credential and AI endpoints allow loopback/localhost origins by default. A public reverse proxy must separately set OPENPENCIL_WEB_ALLOWED_ORIGINS to a comma-separated list of exact origins, for example https://demo.openpencil.dev.

Server persistence does not permit browser-controlled requests to loopback, private, link-local, metadata, or reserved provider endpoints. A trusted private deployment that intentionally uses an internal provider must separately set OPENPENCIL_WEB_AI_ENDPOINT_ALLOWLIST to a comma-separated list of exact URL origins, for example http://127.0.0.1:11434,https://llm.internal.example.

Or run as a desktop app:

cargo run -p op-host-desktop

Prerequisites: Rust (stable) to build the product. Bun >= 1.0 and Node.js >= 18 are only needed for the web SDK under packages/.

Docker

Tagged Rust releases publish a single web-host image. The retired TypeScript images with bundled AI CLIs are no longer published.

Image Includes
ghcr.io/zseven-w/openpencil-web:vX.Y.Z Rust web host, wasm bundle, and CanvasKit assets

The web UI exposes built-in agent profiles only; Claude/Codex/OpenCode/Copilot CLI tooling is not bundled into Docker images.

Run:

VERSION="$(scripts/workspace-version.sh)"
docker run -d -p 3100:3100 "ghcr.io/zseven-w/openpencil-web:v${VERSION}"

Then open http://localhost:3100/.

Build locally:

docker build -f Dockerfile.web-rust -t openpencil-web-rust .
docker run -p 3100:3100 openpencil-web-rust

AI-Native Design

Prompt to UI

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+,)

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

Code Generation

CLI — op

Install via Homebrew or the install script, then control the design tool from your terminal:

brew install zseven-w/openpencil/op
curl -fsSL https://raw.githubusercontent.com/ZSeven-W/openpencil/main/scripts/install-op.sh | bash
curl -fsSL https://raw.githubusercontent.com/ZSeven-W/openpencil/main/scripts/install-op.sh | OP_PRERELEASE=1 bash
irm https://raw.githubusercontent.com/ZSeven-W/openpencil/main/scripts/install-op.ps1 | iex
$env:OP_PRERELEASE = "1"; irm https://raw.githubusercontent.com/ZSeven-W/openpencil/main/scripts/install-op.ps1 | iex
op start                     # Launch desktop app
op start --headless --file design.op # Launch headless file-backed server
op design @landing.txt       # Batch design from file
op design @ui.js             # Sandboxed JavaScript with loops
op insert '{"type":"rectangle"}' # 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 the desktop app, web server, or headless file-backed server. See the CLI command reference for all commands.

LLM Skill — install the OpenPencil Skill plugin to teach AI agents how to design with op. Run op install for detected agents, or target one explicitly with op install --target codex.

Features

Canvas & Drawing

Design System

AI & Agents

openpencil (ZSeven-W/openpencil)

Searching Database…

这是什么?OpenPencil 是全球首款开源的 AI 原生矢量设计工具,核心理念是“设计即代码”:你用自然语言描述界面,它会实时出现在无限画布上,同时由多个 AI“Agent Teams”并行构建不同的版块。
这是独立的设计应用、Figma 插件,还是代码库?它是独立的设计应用,而不是插件。它以原生桌面程序的形式提供,支持 macOS、Windows 和 Linux,同时还提供网页版。内置的 `op` 命令行工具和 MCP 服务器,方便智能体调用。
它支持哪些 AI 模型?我需要 API 密钥吗?它内置了 9 个以上的服务商预设(如 Anthropic、OpenAI、Google、DeepSeek 等),你可以使用手头已有的任意 API 密钥。Claude Code 无需任何密钥,因为它通过 Claude Agent SDK 使用本地 OAuth。从源码构建只需要稳定版 Rust 工具链。
安装时有哪些需要注意的坑吗?在新发布、下载量少的版本上,Windows 安装程序可能会被杀毒软件误报。Nix flake 目前只支持 x86_64 Linux,而且还不能从它构建 .deb 包,遇到这种情况请使用官方发布的 .deb 文件。
什么是 Agent Teams?编排器会把一个复杂页面拆分成多个空间子任务,例如主视觉区、功能区、页脚等,然后让多个 AI 智能体同时处理这些任务。每个智能体在画布上都有各自的成员指示标记。
什么是 .op 文件?它是 OpenPencil 的原生设计文件格式,以纯 JSON 存储,因此人类可读、便于 Git 管理、可以比对差异。其中的设计变量还能生成 CSS 自定义属性。
我可以把设计导出为哪些代码格式?一个 .op 文件可以导出为 React + Tailwind、HTML + CSS、CSS Variables、Vue、Svelte、Flutter、SwiftUI、Jetpack Compose 和 React Native。
多人可以实时一起设计吗?可以。实时协作功能允许用户通过简短的配对码加入经过身份验证的点对点会话,实时看到其他人的远程光标,并通过逐次编辑回放来解决冲突。
Creator
ZSeven-W
Size
438.7 MB
Stars
6.3K
Updated
CommitOct 17
Age
8mo
Commits · 90 Days