mrkeyoor.com_
Thu 17 Sept 18:42 UTC
AI Toolsevaluationupdated 27 Aug 2026

open-design review

OpenDesign is a local-first design workspace that asks coding agents to create real HTML, documents, slides, images, and motion graphics from prompts and reusable design systems. It connects Claude Code, Codex, DeepSeek Harness, and many other command-line agents to a desktop or web studio where generated files can be previewed, critiqued, edited, and exported.

+952stars / 7d
Verdict

Our OpenDesign install pulled 1,293 packages and used 2,644 MB, then exposed no root build or test target. Try it if you already trust coding agents with project files and want brand rules, previews, and export in one workspace. Pick a shared canvas for multiplayer design work, and test one reversible project before connecting more agents or paid media services.

We ran it

Lab card: what happened when we ran open-designScreenshot of open-design (open-design.ai)
Install✓ · 83s1293 packages · 2644 MB
Buildn/ano build script
Testsn/ano test script
Repo12864 files~1,498,326 lines of source · 365.2 MB · 50 CI workflows

Answers from our run

Does open-design build from source?

Dependencies installed in 83 seconds (1293 packages), and the project has no separate build step. We cloned commit 82c607d into a clean Debian container with 3 CPUs and no project-specific setup.

Does open-design have tests you can run?

Not through a standard command: the project exposes no test script or target that our harness could run.

Who should not use open-design?

Product teams needing multiplayer vector editing, component inspection, and designer handoff like Figma or Penpot: OpenDesign produces agent-written files and rendered artifacts, not a shared vector canvas.

What are the alternatives to open-design?

Penpot, Onlook, Open Codesign. Our OpenDesign install pulled 1,293 packages and used 2,644 MB, then exposed no root build or test target.

Setup2/5Install passed, but used 2.6 GB and exposed no root build or tests
Docs4/5Detailed runtime, security, Docker, skills, and export guidance
Community5/5Daily pushes, fresh releases, and very active issue traffic
Maturity3/5Working desktop product with young adapters and MCP rough edges

Discussed on

  1. hnOpen Design: Use Your Coding Agent as a Design Engine232 points
  2. hnOpen Design 0.22.0 – Introducing OpenDesign Arena3 points

Who it’s for

Designers and developers who prefer code-backed artifacts over manually drawing every screen on a canvas.
Claude Code, Codex, or other coding-agent users who want design skills and DESIGN.md brand rules inside their existing workflow.
Teams creating prototypes, pitch decks, dashboards, or motion pieces that need HTML, PDF, PPTX, or MP4 output.
BYOK users who want to choose an OpenAI-compatible model endpoint.
Plugin authors willing to work with declared capabilities and review generated files before delivery.

Who it’s NOT for

Product teams needing multiplayer vector editing, component inspection, and designer handoff like Figma or Penpot: OpenDesign produces agent-written files and rendered artifacts, not a shared vector canvas.
Linux desktop users who require the primary supported path: the README calls macOS and Windows native targets, while Linux AppImage is an optional release lane.
Organizations whose policy forbids mandatory telemetry: the README says product analytics and session replay require consent, but scrubbed safety and reliability telemetry is always on.
Developers expecting one root build and test gate: our measured workspace exposed neither target after installing 1,293 packages.
Contributors installing @open-design/dsh-runtime from Git rather than a package release: issue 7471 says the distribution files are absent because the Git install does not run a build.
Teams using private model gateways that cannot maintain explicit host exceptions: internal and private provider addresses are blocked unless added to OD_ALLOWED_INTERNAL_HOSTS.

Setup reality

At commit 82c607d, pnpm installation succeeded in 83 seconds. It added 1,293 packages and occupied 2,644 MB on disk. The root workspace had no build script or target and no test script or target, so both stages were skipped.

Local development requires Node 24, pnpm 10.33.x through Corepack, the daemon, and either a detected coding-agent CLI or a model endpoint and API key. Docker requires a generated daemon token. Media export can also depend on browser automation, FFmpeg, model services, and source assets.

The daemon binds to loopback and is read-only by default. LAN access needs an explicit bind host and allowed origins. Private model endpoints need a precise host exception, while reverse proxies must leave SSE unbuffered and uncompressed. Desktop, web, daemon, MCP, and local-agent processes create several places to diagnose when streaming or preview state breaks.

The output is a file, not a shared canvas

OpenDesign treats a coding agent as the rendering engine. A user chooses an artifact type, a design system, and a model or local CLI, then describes the work. The agent writes files while the Studio keeps the conversation, file tree, and preview together. Outputs include single-page prototypes, dashboards, documents, decks, images, and code-driven video.

This is meaningfully different from a vector editor. OpenDesign's reusable brand contract is a DESIGN.md file, sometimes paired with tokens, fixtures, assets, and provenance. Functional skills describe workflows; design templates describe renderable formats. The resulting HTML, PDF, PPTX, ZIP, Markdown, or MP4 can leave the application as an ordinary file. Developers can continue in their editor instead of translating a canvas into code.

The approach suits quick product concepts and presentation artifacts. It is weaker for designers who need multiplayer cursor presence, constraint-based vector editing, component inspection, and careful handoff across many screens. Calling it a Figma alternative describes the market ambition, not feature equivalence. Penpot is the better comparison when a conventional collaborative canvas is required.

Agent choice is unusually open

OpenDesign can launch a long list of local coding CLIs, including Claude Code, Codex, DeepSeek Harness, Cursor, OpenCode, Qwen, Copilot, and Hermes. It can also call OpenAI-compatible, Anthropic, Google, Azure, Ollama, and other endpoints through a BYOK proxy. Both paths end in the same project and preview, though their output contract differs.

A filesystem-capable local agent writes canonical project files and sends tool events. A plain API model returns one complete artifact block for the host to parse. This difference matters when debugging. A missing preview may come from the agent runtime, its permissions, file delivery, the daemon, artifact parsing, or the iframe. The product provides one Studio, while the execution paths remain technically distinct.

MCP lets Claude Code and other clients consume OpenDesign outside the desktop UI. Installation commands can print a dry run, add the server, or uninstall it. The daemon is read-only by default, binds to loopback, and keeps credential and preview routes local even when LAN access is enabled. Those are sensible defaults for software that can spawn command-line agents and write project files.

What happened when we ran it

We cloned commit 82c607d into an unprivileged Node 22 container with three CPUs and 8 GB of RAM. pnpm installation succeeded in 83 seconds. It installed 1,293 packages and used 2,644 MB on disk. That footprint is large enough to affect CI caching, developer laptops, and container build storage.

No build script or target was available at the measured root, so the lab skipped the build stage. There was also no test script or target, and no tests directory, so the test stage was skipped. This is absence of a root gate, not a passing build or test result. The repository had 12,864 files, about 1,498,326 lines of source, 50 CI workflow files, monorepo workspaces, and no root Dockerfile.

The Quickstart gives package-level build and test commands, such as building the daemon or web package and testing a selected workspace. Those may be the correct contributor checks, but they were not the targets our standard harness discovered. An adopter should identify the exact desktop, daemon, web, or plugin packages being changed and run their documented guards, type checks, builds, and tests explicitly.

Security choices are visible

The local daemon uses Express and SQLite and serves the web application. Provider requests pass through SSRF checks that block private, link-local, carrier-grade NAT, and cloud-metadata addresses. Internal model gateways need an exact entry in OD_ALLOWED_INTERNAL_HOSTS; broad CIDR entries are not supported. This can surprise an Ollama or LiteLLM user on a private network, but an explicit exception is better than quietly allowing internal fetches.

LAN exposure also requires OD_BIND_HOST and allowed origins. Docker setup asks for a generated API token. Reverse proxies need buffering and compression disabled on SSE routes or streams may end as incomplete chunked responses. These details make the documentation useful for self-hosters, while showing that 'local-first' does not mean zero configuration.

Privacy claims need one qualification from the README. Product analytics and session replay are consent-gated. Scrubbed safety and reliability telemetry is described as always enabled. An organization with a strict no-telemetry rule should resolve that policy mismatch before installation rather than infer that every local-first component is silent.

Version 0.21.0 fixes sessions while package installation lags

Version 0.21.0 was released on August 25, 2026, and the repository was pushed on August 27. GitHub showed 867 issues and pull requests combined. The release names 42 pull requests from 13 contributors over 4 days, including fixes for HTML previews, stale desktop sidecars, Kimi sessions, and duplicate AI Optimize runs. That pace is evidence of active maintenance and a warning that adapters are moving quickly.

The release also changes the 30-minute MCP idle behavior that older reports criticized. The default remains, but OD_MCP_STDIO_IDLE_EXIT_MS can extend it to 24 hours or disable idle exit. Issue 7471 identifies a different packaging gap: Git installs of @open-design/dsh-runtime lack built distribution files because the package has no prepare script. Pull request 7475 proposes a fix. Until a release includes it, use the supported package path instead of assuming a Git URL is installable.

OpenDesign earns a trial when the deliverable is a file and the team already uses coding agents. Begin with a disposable project and inspect the HTML, assets, accessibility, and export instead of judging only the preview. The 2,644 MB dependency tree and missing root gates make package-level checks part of adoption, not an optional contributor chore.

Alternatives

ProjectWhat it isPick it when
Penpot gh↗An open-source collaborative interface design and prototyping canvas.pick this instead when designers need multiplayer vector editing, reusable components, and conventional handoff.
Onlook gh↗A visual editor for designing React applications against real code.pick this instead when the target is an existing React codebase and direct visual editing matters more than decks and media.
Open CodesignAn open-source agent-driven design workspace focused on streamed artifacts.pick this instead when you want a narrower take on the Claude Design interaction and fewer bundled catalogs.

Sources

  1. OpenDesign README
  2. OpenDesign Quickstart
  3. OpenDesign 0.21.0 release
  4. Issue 7471 on Git package installation
  5. Issue 7273 on MCP process exits
  6. Issue 7317 on missing Windows design systems

More ai tools reviews

rowboat · skills · superpowers-zh · yolov5 · eve · MemOS · the whole board →