OpenDesign's local-first claim, its private package.json, and its zh pricing links
Open Design is a local-first desktop workspace where coding agents create prototypes, landing pages, dashboards, slides, images, and video exports.
At a glance
- What is it?
- OpenDesign is an Apache-2.0 desktop app for macOS and Windows that drives coding agents to produce prototypes, decks, images, documents, and video, sold against a paid cloud model service that occupies the first three lines of its own README. Underneath, the package is marked private, the version in package.json trails the newest tag, and the setup table mixes MCP installs with runtime adapters.
- Who is it for?
- OpenDesign fits a designer who is happy to work in single-page CSS artifacts and drive the loop through a CLI agent they already have installed. It does not fit a reader who needs an editable design document out of it, or one who expects the front page to be locally sourced, because the first announcements on that page are a paid model recharge and a Chinese pricing link.
- Can I use it commercially?
- Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 4 days ago.
- What is it written in?
- Mainly TypeScript, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 25, 2026, and from our analysis. They are not legal advice.
Editorial analysis
Local-first is the tagline, and a paid model service opens the page
The heading is OpenDesign: The open-source Claude Design alternative, and the phrase that defines the product, a local-first native desktop app for macOS and Windows, appears much further down, in a section called What is OpenDesign. The three announcements above it are all commercial or ecosystem news. The first is OpenDesign Cloud, described as the official model service, where one recharge covers both agent and image models: GPT, Claude, and DeepSeek for agents, and GPT Image 2.0, Seedream 5.0 Pro, and Nano Banana 2.0 for images. The second is DeepSeek V4 Flash and V4 Pro, available to members without limits for two weeks. The third is support for DeepSeek's official dsh agent harness as a native runtime.
So local-first and a metered model service occupy the same opening screen. Local-first describes where the app, the skills, and the generated files live. The recharge describes where the model calls might not.
That is the gap a reader has to close, and the page does not close it. Nothing in the README draws a line between the model calls that stay on your machine through a local CLI and the calls that leave it through the cloud. The package description in package.json is more precise about the local half: it detects your installed code-agent CLI, runs design skills and design systems, and streams artifacts into a sandboxed preview.
All three announcements link out to a Chinese pricing page
The three blockquote announcements each carry a link, and two of them point at the same address, https://open-design.ai/zh/pricing/. The third points at https://open-design.ai/zh/agents/deepseek-harness-design/. The zh segment is in the path of every one of them, on a README whose header is marked English and whose surrounding text is in English.
This is a project with real translation infrastructure behind it. The header row offers fourteen languages, English, Spanish, Portuguese, German, French, Simplified Chinese, Traditional Chinese, Korean, Japanese, Arabic, Russian, Ukrainian, Turkish, and Thai, with each pointing into docs/i18n/. There is a TRANSLATIONS.md at the top level, a scripts entry for i18n:check, and a separate i18n:coverage report script.
The consequence is a split between the prose and the announcements. The README can be read in fourteen languages, and a script can tell you how much of it is covered, while the three pieces of text that describe what the product costs and how to wire up the newest agent runtime are links into Chinese pages rather than translated text in place. A reader deciding whether the recharge is worth it is one click and one language barrier away from the number.
package.json says 0.23.1 and private, while the tags are at 0.24.1
The root package is named open-design, its version field reads 0.23.1, and private is set to true. It declares [email protected] as the packageManager, module as the type, and Apache-2.0 as the license. It also defines a single binary:
"od": "./apps/daemon/bin/od.mjs"That is an .mjs file inside apps/daemon/bin, not a compiled executable, and the repository's release tags tell a different version story. There is open-design-v0.23.0 dated 2026-09-20, open-design-v0.24.0 dated 2026-09-22, and open-design-v0.24.1 dated 2026-09-24. The version in package.json is behind all three.
Two consequences for a reader. Because private is true, the package is not published to a registry under the name in that file, so there is no npm install open-design to discover from the manifest. The download is a website step, and QUICKSTART.md at the top of the repository is the on-ramp. And because the manifest trails the tags, the default branch is not where the newest release lives, so the code you read after cloning is not necessarily the code the 0.24.1 tag describes.
Every tag is titled after a feature, and the one release notes file is from 0.10.0
The three most recent tags carry release titles rather than change summaries. open-design-v0.24.1 is titled World's First Design Plan. open-design-v0.24.0 is titled Every Run, Kept Intact. open-design-v0.23.0 is titled Home, Rebuilt. Each is a sentence about positioning, and none of them names a file, a flag, or a behaviour that changed.
That leaves the ordinary question, what happens when I move from the 0.23.1 in package.json up to 0.24.1, answerable only by reading CHANGELOG.md, which sits at the top level. There is also a RELEASE-NOTES-0.10.0.md, a single release-notes document for version 0.10.0, which is roughly fourteen minor versions behind the current tag. The filename pattern suggests per-release notes were written once, at 0.10.0, and not continued.
What the project cannot offer a reader is a per-version record of what broke. A tag title tells you what the release was called, a changelog has to be read in full to find the relevant line, and a file that existed for 0.10.0 and stopped is the only structural hint about how the project handles upgrade notes for everyone after it.
Supported means two different things, and one of them is an MCP install
The compatibility section states that OpenDesign connects to coding agents in two ways: skills, CLI, and MCP for agents that consume OpenDesign, plus native runtime adapters for agents that OpenDesign launches directly. Those are different contracts, and the table shows the difference. Claude Code is marked supported with the quick setup command:
od mcp install claudeClaude Desktop is marked supported with a footnote marker attached to the status, and its command is:
od mcp install claude-desktopThe front page names DeepSeek Harness through dsh, Claude Code, OpenClaw, Codex, Cursor, OpenCode, Qwen, Copilot, Amp, Hermes, Kimi, and Antigravity, and then adds 26 distinct local CLI executables. That is a detection problem rather than a compatibility promise, since the package description says the app detects your installed code-agent CLI.
The consequence is that the list is longer than the guarantees. The table already attaches a footnote to one supported row, which is the project signalling that supported is not always unqualified. The README does not say which of the named agents or the 26 executables are verified, and it does not say what the app does when the agent it wants is not on the machine.
typecheck runs with --if-present, so an opted-out package is skipped
The typecheck script is a single line that fans out across the workspace and then runs a second check on the scripts directory:
pnpm -r --workspace-concurrency=4 --if-present run typecheck && tsc -p scripts/tsconfig.json --noEmitThe flag that matters is --if-present. A workspace member that does not define a typecheck script is not an error and not a failure, it is simply not checked. The workspace is not small either. The devDependencies pull in six sibling packages by workspace reference: @open-design/components, @open-design/daemon, @open-design/tools-dev, @open-design/tools-pack, @open-design/tools-release, and @open-design/tools-serve.
So a green typecheck is a statement about the packages that opted in, and nothing more. The consequence for a contributor is that a type error in a package without its own typecheck script produces no failure, and a passing run reads like full coverage. Two other gates sit beside it and cover different sets: guard runs tsx over scripts/guard.ts, and lint:craft runs a separate reference linter, so there are three checks and three different scopes.
Exports are HTML, PDF, PPTX, and MP4, with no editable design file named
The Figma alternative framing rests on a substitution. Instead of pushing pixels on a canvas, the project says it delivers single-page artifacts in real CSS, real fonts, and real components, exported straight to HTML, PDF, PPTX, or MP4. Preview happens in a sandboxed iframe. Inside a project's Studio, six artifact types share one conversation and one live preview: Prototype, Deck, Mobile app, Image, Document, and HyperFrame, the last being code-driven motion graphics that export as video.
The consequence is about what leaves the app. The four named export targets are all delivery formats, and none of them is an editable design document that a design tool opens and a designer keeps working in. That is consistent with the CSS framing rather than an omission, and a reader who wants a file back into a canvas tool is not being served by the list as written.
The tree hints at a connection without documenting it. There is a figma-plugin/ directory, a design-browser-task-handoff.md, and sibling directories for design-systems/, design-templates/, clipper/, craft/, and charts/. The README does not say which direction the Figma relationship runs, and it makes no claim of a round trip, so treat the plugin as something to inspect rather than something to rely on.
Editorial conclusion
OpenDesign fits a designer who is happy to work in single-page CSS artifacts and drive the loop through a CLI agent they already have installed. It does not fit a reader who needs an editable design document out of it, or one who expects the front page to be locally sourced, because the first announcements on that page are a paid model recharge and a Chinese pricing link. Before installing, check whether the agent you want is in the supported table, remember the package is private so the download is a website step, and read what your typecheck run actually covered.
Frequently asked questions
What is an open design?
OpenDesign is a local-first native desktop app for macOS and Windows that calls coding agents to produce design work. Its package description says it detects your installed code-agent CLI, runs design skills and design systems, and streams artifacts into a sandboxed preview.
Is open design free to use?
The repository is licensed Apache-2.0 and the app is described as local-first. The README also promotes OpenDesign Cloud as an official model service you recharge, and says OpenDesign members can use DeepSeek V4 Flash and V4 Pro without limits for two weeks. The README does not state a price.
How do I install open design?
The README links a Download page on the project's website rather than giving an install command, and QUICKSTART.md at the top of the repository holds the steps. The package is marked private in package.json, and the od command maps to ./apps/daemon/bin/od.mjs.
how to use open design with claude
Claude Code is listed as supported with the quick setup command od mcp install claude, and Claude Desktop is listed as supported with od mcp install claude-desktop. The project says it connects in two ways, skills, CLI, and MCP for agents that consume OpenDesign, plus native runtime adapters for agents that OpenDesign launches directly.
what is open design ai
open-design.ai is the project homepage, and the repository README is headed OpenDesign: The open-source Claude Design alternative. The same page links a Download page, an OpenDesign Cloud page, a Discord server, and the account @OpenDesignHQ.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/nexu-io-open-design)