# Open CoDesign **简体中文**: [README.zh-CN.md](./README.zh-CN.md) > Your prompts. Your model. Your laptop. > > Turn prompts into polished artifacts — locally, openly, and with whichever model you already pay for. [Website](https://opencoworkai.github.io/open-codesign/) · [Quickstart](#quickstart) · [What's new](https://github.com/OpenCoworkAI/open-codesign/releases) · [Changelog](./CHANGELOG.md) · [Discussions](https://github.com/OpenCoworkAI/open-codesign/discussions) · [Docs](https://opencoworkai.github.io/open-codesign/quickstart) · [Contributing](./CONTRIBUTING.md) · [Security](./SECURITY.md) **Open-source alternative to:** [Claude Design](https://opencoworkai.github.io/open-codesign/claude-design-alternative) · [v0 by Vercel](https://opencoworkai.github.io/open-codesign/v0-alternative) · [Lovable](https://opencoworkai.github.io/open-codesign/lovable-alternative) · [Bolt.new](https://opencoworkai.github.io/open-codesign/bolt-alternative) · [Figma AI](https://opencoworkai.github.io/open-codesign/figma-ai-alternative)
claude-code · claude-design-alternative · v0-alternative · bolt-alternative · lovable-alternative · figma-alternative · ai-design · design-to-code · prompt-to-design · ai-prototyping · desktop-design-tool · byok · local-first · multi-model · electron
ui_kit rendered headlessly on the right. Parity score and status are derived deterministically — parityScore = passCount / totalChecks — from the 12-check boolean rubric. Numbers are from a real e2e-opus-final run, not a mock.

4-frame reel from the e2e-nodebench-iter run: source → iter-0 (parityScore 0.82, 6 gaps) → iter-1 (parityScore 0.78, 5 gaps) → honest verdict. The agent fixed some gaps and introduced new layout drift; the boolean rubric exposes the regression instead of hiding it. MP4 version.
- **Generation cancellation** — stop mid-stream without losing prior turns
### Preview and workflow
- **Source-backed tweaks** — the Tweaks panel reads the active preview file, not declarations in unrelated starters or previous tool results. A flat JSON object between `/*EDITMODE-BEGIN*/` and `/*EDITMODE-END*/` exposes values; optional `TWEAK_SCHEMA` chooses supported controls. Bind these values to the design (for example, `--ocd-tweak-card-radius` in CSS); discovering a declaration with `tweaks()` does not create a binding. Missing, intentionally empty, and invalid declarations have distinct explanations. Ask for useful controls in the current source rather than expecting a later generation to add them automatically. Saves merge only changed keys and reject conflicting source edits.
Conditional source saves compare the expected bytes with disk inside a per-canonical-file writer queue shared by the app's file IPC, agent text editor, scaffold, and import publications, including designs sharing a workspace. Agent replacements/inserts also check their cached source before writing and refresh the view on conflict for an explicit retry; explicit whole-file creation/replacement remains unconditional. Existing workspace rename leases are retained. This coordinates participating writers in one app process, not external editors, shell commands, other app processes, or hard-link aliases: an external change already visible at comparison is rejected, but an external write between comparison and publication cannot be made atomic by this in-process queue.
- **Compact desktop chrome** — workspace and settings headers use one row from 1,000 CSS pixels, with a two-row fallback at narrower widths and extra room for gallery tabs. Design/model tooltips preserve full names. Workspace paths and preview status share a wrapping summary row; expand the preview summary for connection settings without changing the active preview mode.
- **Fullscreen preview** — expand a runnable JSX/HTML preview within the app window without resizing sidebars manually. This works in Preview, a dedicated file tab such as `App.jsx`, and the Files tab's inline preview. Chat, file navigation, and tweak controls are temporarily hidden; the titlebar and **Exit fullscreen** remain available. Exit or press Escape to restore the previous layout without reloading the preview's forms or navigation state. Menus and artifact dialogs handle Escape first; changing designs or tabs leaves fullscreen. Other file types and connected URLs do not enable this mode.
- **Readable preview controls** — Comment mode, zoom, and Export retain visible labels and wrap below file tabs when space is tight. Zoom and export menus stay inside the window; use arrow keys / Home / End to navigate, Enter to select, and Escape to close and return focus. Preview zoom changes the artifact's display scale, not the app's control sizes or the artifact's source dimensions.
- **Phone / tablet / desktop preview** — true responsive frames, switch with one click
- **Bounded interaction self-checks** — `preview` can exercise up to 16 declarative steps and report the final screen and per-step failures. For native single-selection dropdowns, use `{"action":"select","selector":"#category","value":"work"}`, then assert the control's exact `value` and linked summary text. Selectors must uniquely identify a visible control; disabled selects/fieldsets/options/optgroups, multiple selects, and missing or duplicate option values are rejected. Values are capped at 2,000 characters; the existing 2-second step and 20-second interaction budgets apply. This does not verify untested routes or persistence between preview calls.
- **Recovering from an oversized preview call** — The 16-step limit counts actions **and assertions**. More than 16 rejects the entire call before rendering or executing any steps; the agent receives a recoverable validation error and can retry corrected arguments. Use independent short journeys, each starting from a fresh document and repeating its own required setup. Do not split a sequence into consecutive tails expecting browser state to carry over. Combine compatible assertions on the same selector where useful, preserve essential outcome/shared-state checks, and disclose untested paths rather than silently truncating them.
- **Files panel** — inspect multi-file artifacts (HTML, CSS, JS) before export
- **Collapsible chat** — fold the conversation into a narrow restore rail without resetting drafts, active generation, the previous panel width, or preview state.
- **Instant design switching** — the last five designs keep their preview iframes alive, so Hub ↔ Workspace and sidebar navigation stay zero-delay
- **Connection diagnostic panel** — one-click test for any provider, with actionable errors
- **Per-generation token counter** — see exactly how many tokens each run cost in the sidebar
- **Settings with four tabs** — Models, Appearance, Storage, and Advanced
- **Light + dark themes**, **EN + 简体中文 UI** with live toggle
### Export and packaging
- **Opt-in web research for slides** — Tavily search, public-page reading, saved evidence and separate Markdown sources alongside exports. See [Web Search configuration and usage](WEB_SEARCH.md).
- **Five export formats** — HTML (inlined local assets), PDF (local Chrome), PPTX, ZIP, Markdown. Literal local image and CSS URL references in JSX/TSX are resolved before runtime encoding; ZIP also preserves the original editable source. Dynamically computed asset paths are not statically collected.
- **GitHub Release pipeline** — unsigned DMG (macOS), EXE (Windows), AppImage (Linux). Code-signing lands in v0.5 along with opt-in auto-update
---
## Roadmap
Current release: v0.2.0. The current release theme is **Agentic Design**.
### Now — v0.2.0 shipped
v0.2 turns Open CoDesign from a one-shot generator into a local design agent with a real workspace:
- **Design as session** — every design is a pi session with JSONL history and a workspace folder on disk
- **Permissioned agent loop** — pi built-ins for read, write, edit, bash, grep, find, and ls, gated by Open CoDesign's permission UI
- **Design tools on demand** — `ask`, `scaffold`, `skill`, `preview`, `gen_image`, `tweaks`, `todos`, and `done`
- **`DESIGN.md` as shared memory** — brand tokens and design-system decisions become editable files, not model memory
- **v0.1 migration path** — existing SQLite designs migrate into workspaces and session history
### Previous — v0.1.4
- **AI image generation** — opt-in bitmap assets through OpenAI image models or OpenRouter image models
- **ChatGPT Plus / Codex subscription login** — one-click OAuth for users who do not want to paste an API key
- **CLIProxyAPI one-click import** — auto-detect a running local proxy and bring it into Settings
- **API config hardening** — clearer relay diagnostics for timeouts, SSE truncation, missing `/models`, and incompatible Messages APIs
### Later — v0.2.x and beyond
- Renderer polish for the new `ask`, `preview`, tweaks, and process-management surfaces
- Cost transparency — pre-generation estimate + weekly budget (per-generation token count already shipped)
- Version snapshots + side-by-side diff
- Three-style parallel exploration
- Codebase → design system (token extraction)
- Code-signing (Apple ID + Authenticode) + opt-in auto-update — v0.5
- Figma layer export — post-1.0
Have a different priority in mind? [Open an issue](https://github.com/OpenCoworkAI/open-codesign/issues/new/choose) or 👍 an existing one — we do read them.
---
## Star History
---
## Built on
- Electron + React 19 + Vite 6 + Tailwind v4
- `@mariozechner/pi-ai` and `pi-coding-agent` (model/provider and agent-loop primitives)
- `electron-builder`
## Reporting issues
Found a bug or have a feature request?
1. **Search** [existing issues](https://github.com/OpenCoworkAI/open-codesign/issues) first.
2. **Generate a diagnostics bundle** — Settings → Storage → Export diagnostics (API keys and prompts are redacted automatically).
3. **Open a new issue** using our [bug report](https://github.com/OpenCoworkAI/open-codesign/issues/new?template=bug_report.yml) or [feature request](https://github.com/OpenCoworkAI/open-codesign/issues/new?template=feature_request.yml) template.
4. For security vulnerabilities, see [SECURITY.md](./SECURITY.md).
## More from OpenCoworkAI
If you like Open CoDesign, you may also want to check out our earlier project, [Open Cowork](https://github.com/OpenCoworkAI/open-cowork), an open-source AI agent desktop app for Windows and macOS with one-click install, multi-model support, sandbox isolation, and built-in skills.
## Community
Open CoDesign first launched on the [LINUX DO](https://linux.do/) community — thanks to everyone there for the early feedback and discussion.
- **[GitHub Discussions](https://github.com/OpenCoworkAI/open-codesign/discussions)** — share your designs in [Show & Tell](https://github.com/OpenCoworkAI/open-codesign/discussions/categories/show-and-tell), ask questions in [Q&A](https://github.com/OpenCoworkAI/open-codesign/discussions/categories/q-a), and propose features in [Ideas](https://github.com/OpenCoworkAI/open-codesign/discussions/categories/ideas).
- **[LINUX DO](https://linux.do/)** — Chinese-speaking discussion, use tips, and feedback (primary community).
- **GitHub Issues** — [bug reports and reproducible problems](https://github.com/OpenCoworkAI/open-codesign/issues).
### WeChat group
For Chinese-speaking users, we also keep a WeChat group for product updates, usage questions, and community discussion.