mrkeyoor.com_
Fri 25 Sept 19:56 UTC
AI Toolsevaluationupdated 26 Aug 2026

openpencil review

OpenPencil is a Rust vector-design application that lets people and AI agents create and edit structured canvas documents. Its `.op` files are JSON, and the same project includes desktop and web editors, a CLI, an MCP server, collaboration, and code export.

+36stars / 7d
Verdict

Our OpenPencil build took 448 seconds and all 547 tests passed, making commit 9c81077 a credible engineering base for teams willing to test prerelease desktop behavior themselves. Use it when JSON design files, MCP control, and local ownership solve a concrete workflow problem. Wait if crashes or provider connection failures would block paid design work, because current issue reports show both.

We ran it

Lab card: what happened when we ran openpencilScreenshot of openpencil (op.zseven.tech)
Install✓ · 76s646 packages
Build✓ · 448s
Tests✓ · 56s547 passed · 0 failed of 547 (cargo test)
Repo3877 files~872,708 lines of source · 279.9 MB · 11 CI workflows

Answers from our run

Does openpencil build from source?

Dependencies installed in 76 seconds (646 packages), and the build succeeded in 448 seconds. We cloned commit 9c81077 into a clean Debian container with 3 CPUs and no project-specific setup.

Do openpencil's tests pass?

Yes: 547 of 547 passed when we ran the project's own test command (cargo test). Some failures need services or credentials a bare container does not have.

Who should not use openpencil?

Teams requiring a stable release channel: GitHub's newest downloadable build, v0.8.4, is marked prerelease.

What are the alternatives to openpencil?

Penpot, tldraw, Excalidraw. Our OpenPencil build took 448 seconds and all 547 tests passed, making commit 9c81077 a credible engineering base for teams willing to test prerelease desktop behavior themselves.

Setup3/576-second install, but source builds and submodules add work
Docs5/5Detailed install, security, host, CLI, MCP, and architecture notes
Community4/55,672 stars and active issue responses after an August push
Maturity3/5547 tests pass, while current desktop releases remain prerelease

Discussed on

  1. hnOpenPencil: Open-source AI-native vector design tool5 points
  2. hnOpenPencil: Open-source vector design tool controlled by AI Agents4 points

Who it’s for

Developers who want an agent to edit a real vector document through MCP or a command line.
Product teams that want design files readable in Git instead of an opaque hosted format.
Self-hosters willing to operate the Rust web host and supply their own model credentials.
Designers testing AI-assisted UI work who can tolerate prerelease software and verify exported code.

Who it’s NOT for

Teams requiring a stable release channel: GitHub's newest downloadable build, v0.8.4, is marked prerelease.
Windows users who need dependable MCP editing today: issue 219 reports repeatable desktop crashes when MCP creates text nodes.
Copilot-only workflows that cannot absorb connection troubleshooting: issue 225 reports repeated connection timeouts in v0.8.4.
Buyers expecting Figma-level polish without validation: issue 218 reports a blur request leaving the canvas scene impossible to move.

Setup reality

Our sandbox installed 646 Rust packages in 76 seconds. The build succeeded in 448 seconds, then all 547 cargo tests passed in 56 seconds. Commit 9c81077 occupied 279.9 MB before dependencies and contained 3,877 files with about 872,708 source lines.

Using the editor's AI features requires credentials for a supported provider or a connected local CLI. The web host stores browser-entered credentials in localStorage by default; server persistence is an explicit deployment-wide option intended for a trusted, access-controlled instance.

Source builds need the pinned Rust toolchain and three Git submodules. The web SDK separately needs Bun 1.0 or newer and Node.js 18 or newer. The Nix flake targets x86_64 Linux, while published desktop artifacts cover macOS, Windows, and Linux.

OpenPencil gives agents a structured canvas, not a screenshot

OpenPencil stores a design as a JSON .op document with pages, frames, components, variables, and editable vector nodes. That choice is the center of the product. Git can diff the file, the op CLI can change it, and an MCP client can inspect or modify the same document. The editor then exports React with Tailwind, plain HTML and CSS, Vue, Svelte, Flutter, SwiftUI, Jetpack Compose, or React Native. An exported interface still needs engineering review, but the handoff starts with structure rather than flattened pixels.

The scope is much larger than a prompt-to-image wrapper. The repository contains a Rust desktop host, a browser renderer based on CanvasKit, a headless web server, three web SDK packages, collaboration code, and provider adapters. It also advertises 15 interface languages and more than 50 built-in style guides. That breadth is attractive for a team trying to keep design and agent automation in one system. It also explains why the checkout has about 872,708 source lines.

MCP can edit documents, while online mode blocks local file tools

The built-in MCP server works over stdio through the desktop binary or through a local HTTP endpoint exposed by a running app. Its tools cover document reads, node creation, layered design passes, page operations, style guides, templates, and exports. The README includes one-click installation targets for Claude Code, Codex, OpenCode, Kiro, and Copilot CLIs. OpenPencil therefore fits a terminal-led workflow better than most visual editors do.

There is an important boundary in hosted use. The online multi-tenant MCP surface denies tools that write to the local filesystem, including document saves and file exports. That restriction is sensible on a shared server, but it changes the workflow: local desktop automation and hosted collaboration do not expose identical powers. Teams should decide where files live and which agent is trusted to write them before treating MCP as one interchangeable endpoint.

What happened when we ran it

Our sandbox installed 646 packages in 76 seconds, and the Rust build completed in 448 seconds. Cargo then ran 547 tests in 56 seconds, with 547 passing and 0 failing. Those are strong results for commit 9c81077 in an unprivileged Debian container with 3 CPUs and 12 GB of RAM. The test command did not need API keys to prove the checked-out workspace could compile and exercise its available test targets.

The repository itself was 279.9 MB across 3,877 files before the package work, with roughly 872,708 lines of source. We found 11 CI workflow files, no root file named Dockerfile, and no top-level tests directory. The README documents Dockerfile.web-rust, while Rust tests live with the crates rather than in one central folder. The measurements say the source is buildable and tested; they do not measure canvas responsiveness, AI output quality, collaboration latency, or code-export fidelity.

A 448-second build is also a real cost for contributors. The project pins Rust 1.94, uses three public Git submodules, and calls for the wasm target when building the browser host. Bun 1.0 or newer and Node.js 18 or newer enter the picture for the separate web SDK workspace. Downloading a release is far easier than reproducing every artifact from source.

Web credentials stay in the browser unless an operator opts in

Built-in model providers need their own credentials. In the default web setup, OpenPencil keeps browser-entered provider and image-service secrets in same-origin localStorage. The credential needed for a request travels with that request, while the daemon does not copy the browser snapshot into settings.json. The README warns that same-origin scripts can read localStorage, so an exposed host still needs tight control over scripts and cross-site scripting risk.

A private operator can set OPENPENCIL_PERSIST_WEB_CREDENTIALS_SERVER=true, but that switch applies to the deployment and each accepted browser snapshot replaces the shared copy. The authors recommend it only for a trusted, access-controlled deployment with one active administrator profile. Public reverse proxies also need an exact origin allowlist. Internal model endpoints require a second allowlist because browser-controlled requests to private and metadata addresses are blocked by default. These controls are specific and useful, though they make self-hosting more than a container launch.

The prerelease channel still has desktop failure reports

GitHub showed 5,672 stars, 14 combined issues and pull requests, and a last push on August 26, 2026. The newest listed build was v0.8.4, published August 11 as a prerelease. Its notes are candid: v0.8.3's public relay could not start in published binaries because injected endpoint secrets contained leading spaces. Version 0.8.4 moved validation into the release build and separated authentication, rate-limit, network, and configuration errors.

Current reports still matter. Issue 219 describes three Windows crashes when an MCP caller creates a text node. Issue 225 says GitHub Copilot repeatedly times out while Claude and OpenCode connect on the same macOS installation. Issue 218 reports that asking the AI to add blur left a macOS scene impossible to move. These are narrower than saying the whole editor is unstable, but each touches a promoted workflow rather than an obscure build option.

Choose it for inspectable design automation, with a trial project first

OpenPencil has a sharper reason to exist than “Figma with AI.” A design file can sit beside application code, agents can make structured edits, and the editor can run locally. Our complete 547-test pass supports taking that architecture seriously. MIT licensing and active August development make a technical evaluation easy to justify.

Do the evaluation on a disposable but realistic UI. Connect the provider your team will use, create text and components through MCP, reopen the .op file, export the target framework, and compare the result with the canvas. Windows teams should include the text-node crash report in that check, while Copilot users should test authentication and reconnection. If those paths hold, OpenPencil is one of the more concrete attempts to make design-as-code usable. If they do not, Penpot or tldraw asks less trust from the AI layer.

Alternatives

ProjectWhat it isPick it when
Penpot gh↗A self-hostable design and prototyping suite built around open web standards.pick this instead when team design, browser collaboration, and a longer-established product matter more than agent-native editing.
tldraw gh↗An infinite-canvas SDK and whiteboard application for web products.pick this instead when you want to embed and extend a canvas in a TypeScript application.
Excalidraw gh↗A collaborative whiteboard with a hand-drawn visual style and an embeddable editor.pick this instead when diagrams and fast shared sketching matter more than UI code export or MCP control.

What people are saying

  1. [github-trending] ZSeven-W/openpencil

Sources

  1. OpenPencil repository and README
  2. OpenPencil v0.8.4 release notes
  3. Issue 219: MCP text node desktop crash
  4. Issue 225: GitHub Copilot connection timeout
  5. Issue 218: canvas movement error after blur request

More ai tools reviews

nobodywho · desktop-cc-gui · langextract · openrig · skills · awesome-grokbot · the whole board →