Alternativa open-source ao Claude Design: sua CLI de agente vira o motor de design
Overview
Local-first, implantável na web, BYOK em todas as camadas — detectados automaticamente no seu PATH (Claude Code, Codex, Cursor Agent, Gemini CLI, OpenCode, Qwen, GitHub Copilot CLI, Hermes, Kimi, Pi, Kiro) tornam-se o motor de design, conduzidos por e . Sem CLI? Um proxy BYOK compatível com OpenAI executa o mesmo loop, dispensando o spawn. English · Deutsch · 简体中文 · 繁體中文 · 한국어 · 日本語 · Português (BR) O Claude Design da Anthropic (lançado em 2026-04-17, Opus 4.7) mostrou o que acontece quando um LLM para de escrever prosa e começa a entregar artefatos de design. Viralizou — e permaneceu de código fechado, pago, apenas na nuvem, preso ao modelo da Anthropic e às skills da Anthropic. Não há checkout, não há self-host, não há deploy na Vercel, não há troca por seu próprio agente. Mesmo loop, mesmo modelo mental artifact-first, nada do lock-in. Não enviamos um agente — os agentes de codificação mais fortes já vivem no seu laptop.
README
Open Design
A alternativa open-source ao Claude Design. Local-first, implantável na web, BYOK em todas as camadas — 11 CLIs de agentes de codificação detectados automaticamente no seu
PATH(Claude Code, Codex, Cursor Agent, Gemini CLI, OpenCode, Qwen, GitHub Copilot CLI, Hermes, Kimi, Pi, Kiro) tornam-se o motor de design, conduzidos por 31 Skills componíveis e 72 Design Systems de qualidade de marca. Sem CLI? Um proxy BYOK compatível com OpenAI executa o mesmo loop, dispensando o spawn.
English · Deutsch · 简体中文 · 繁體中文 · 한국어 · 日本語 · Português (BR)
Por que isto existe
O Claude Design da Anthropic (lançado em 2026-04-17, Opus 4.7) mostrou o que acontece quando um LLM para de escrever prosa e começa a entregar artefatos de design. Viralizou — e permaneceu de código fechado, pago, apenas na nuvem, preso ao modelo da Anthropic e às skills da Anthropic. Não há checkout, não há self-host, não há deploy na Vercel, não há troca por seu próprio agente.
Open Design (OD) é a alternativa open-source. Mesmo loop, mesmo modelo mental artifact-first, nada do lock-in. Não enviamos um agente — os agentes de codificação mais fortes já vivem no seu laptop. Nós os conectamos a um fluxo de design orientado por skills que roda localmente com pnpm tools-dev, pode implantar a camada web na Vercel, e permanece BYOK em todas as camadas.
Digite crie um pitch deck estilo revista para nossa rodada seed. O formulário de perguntas interativo aparece antes que o modelo improvise um único pixel. O agente escolhe uma de cinco direções visuais curadas. Um plano TodoWrite ao vivo é transmitido para a UI. O daemon constrói uma pasta de projeto real em disco com um template seed, biblioteca de layouts e checklist de auto-verificação. O agente os lê — pre-flight aplicado — executa uma crítica de cinco dimensões contra a sua própria saída, e emite um único `` que renderiza em um iframe sandboxed segundos depois.
Isso não é “IA tentando desenhar algo”. É uma IA que foi treinada, pela stack de prompts, a se comportar como uma designer sênior com um sistema de arquivos funcional, uma biblioteca determinística de paletas e uma cultura de checklist — exatamente o nível que o Claude Design estabeleceu, mas aberto e seu.
OD se apoia em quatro ombros open-source:
alchaincyf/huashu-design— a bússola da filosofia de design. Workflow Junior-Designer, o protocolo de 5 passos para ativos de marca, o checklist anti-AI-slop, a auto-crítica de 5 dimensões, e a ideia “5 escolas × 20 filosofias de design” por trás do nosso seletor de direções — tudo destilado emapps/web/src/prompts/discovery.ts.op7418/guizang-ppt-skill— o modo deck. Empacotado verbatim emskills/guizang-ppt/com a LICENSE original preservada; layouts estilo revista, hero WebGL, checklists P0/P1/P2.OpenCoworkAI/open-codesign— a estrela-guia de UX e nosso par mais próximo. A primeira alternativa open-source ao Claude Design. Pegamos emprestado seu loop de streaming-artifact, seu padrão de preview em iframe sandboxed (React 18 + Babel vendorizado), seu painel de agente ao vivo (todos + chamadas de ferramenta + geração interrompível), e sua lista de exportação em cinco formatos (HTML / PDF / PPTX / ZIP / Markdown). Divergimos deliberadamente no formato — eles são um app desktop Electron empacotandopi-ai; nós somos um web app + daemon local que delega para sua CLI existente.multica-ai/multica— a arquitetura daemon-and-runtime. Detecção de agentes via PATH-scan, o daemon local como o único processo privilegiado, a visão de mundo agente-como-companheiro-de-equipe.
Visão geral
| O que você ganha | |
|---|---|
| CLIs de agente de codificação (11) | Claude Code · Codex CLI · Cursor Agent · Gemini CLI · OpenCode · Qwen Code · GitHub Copilot CLI · Hermes (ACP) · Kimi CLI (ACP) · Pi (RPC) · Kiro CLI (ACP) — detectados automaticamente no PATH, troque com um clique |
| Fallback BYOK | Proxy compatível com OpenAI em /api/proxy/stream — cole baseUrl + apiKey + model e qualquer fornecedor (Anthropic-via-OpenAI, DeepSeek, Groq, MiMo, OpenRouter, seu vLLM auto-hospedado, ou qualquer outro provedor compatível com OpenAI) torna-se o motor. IPs internos/SSRF bloqueados na borda do daemon. |
| Design systems integrados | 129 — 2 starters escritos à mão + 70 sistemas de produtos (Linear, Stripe, Vercel, Airbnb, Tesla, Notion, Anthropic, Apple, Cursor, Supabase, Figma, Xiaohongshu, …) de awesome-design-md, mais 57 design skills de awesome-design-skills adicionadas diretamente em design-systems/ |
| Skills integradas | 31 — 27 no modo prototype (web-prototype, saas-landing, dashboard, mobile-app, gamified-app, social-carousel, magazine-poster, dating-web, sprite-animation, motion-frames, critique, tweaks, wireframe-sketch, pm-spec, eng-runbook, finance-report, hr-onboarding, invoice, kanban-board, team-okrs, …) + 4 no modo deck (guizang-ppt · simple-deck · replit-deck · weekly-update). Agrupadas no seletor por scenario: design / marketing / operation / engineering / product / finance / hr / sale / personal. |
| Direções visuais | 5 escolas curadas (Editorial Monocle · Modern Minimal · Warm Soft · Tech Utility · Brutalist Experimental) — cada uma traz uma paleta OKLch determinística + font stack (apps/web/src/prompts/directions.ts) |
| Frames de dispositivo | iPhone 15 Pro · Pixel · iPad Pro · MacBook · Browser Chrome — pixel-accurate, compartilhados entre skills em assets/frames/ |
| Runtime do agente | O daemon local faz spawn da CLI na pasta do seu projeto — o agente recebe Read, Write, Bash, WebFetch reais contra um ambiente real em disco, com fallbacks para ENAMETOOLONG no Windows (stdin / arquivo de prompt) em todo adapter |
| Importações | Solte um ZIP de exportação do Claude Design no diálogo de boas-vindas — POST /api/import/claude-design o decompõe em um projeto real para que seu agente continue editando de onde a Anthropic parou |
| Persistência | SQLite em .od/app.sqlite: projetos · conversas · mensagens · abas · templates salvos. Reabra amanhã, o card de todo e os arquivos abertos estão exatamente onde você deixou. |
| Lifecycle | Um único ponto de entrada: pnpm tools-dev (start / stop / run / status / logs / inspect / check) — inicializa daemon + web (+ desktop) sob stamps de sidecar tipados |
| Desktop | Shell Electron opcional com renderer sandboxed + IPC de sidecar (STATUS / EVAL / SCREENSHOT / CONSOLE / CLICK / SHUTDOWN) — alimenta tools-dev inspect desktop screenshot para E2E |
| Implantável em | Local (pnpm tools-dev) · camada web na Vercel · Electron empacotado (placeholder, em andamento) |
| Licença | Apache-2.0 |
Demo
Skills
31 skills vêm na caixa. Cada uma é uma pasta em skills/ seguindo a convenção SKILL.md do Claude Code com um frontmatter od: estendido que o daemon parseia verbatim — mode, platform, scenario, preview.type, design_system.requires, default_for, featured, fidelity, speaker_notes, animations, example_prompt (apps/daemon/src/skills.ts).
Dois modos de topo carregam o catálogo: prototype (27 skills — qualquer coisa que renderize como um artefato de página única, de uma landing de revista a uma tela de celular ou um documento de spec de PM) e deck (4 skills — apresentações com swipe horizontal e chrome de framework de deck). O campo scenario é por onde o seletor as agrupa: design · marketing · operation · engineering · product · finance · hr · sale · personal.
Exemplos do showcase
As skills visualmente mais distintivas que você provavelmente vai rodar primeiro. Cada uma traz um example.html real que você pode abrir direto do repo para ver exatamente o que o agente vai produzir — sem auth, sem setup.
Superfícies de design & marketing (modo prototype)
| Skill | Plataforma | Cenário | O que produz |
|---|---|---|---|
web-prototype |
desktop | design | HTML de página única — landings, marketing, hero pages (default para prototype) |
saas-landing |
desktop | marketing | Layout de marketing com hero / features / pricing / CTA |
dashboard |
desktop | operation | Admin / analytics com sidebar + layout de dados denso |
pricing-page |
desktop | sale | Tabelas de pricing + comparação standalone |
docs-page |
desktop | engineering | Layout de documentação em 3 colunas |
blog-post |
desktop | marketing | Long-form editorial |
mobile-app |
mobile | design | Tela(s) de app emolduradas em iPhone 15 Pro / Pixel |
mobile-onboarding |
mobile | design | Fluxo de onboarding mobile multi-tela (splash · value-prop · sign-in) |
gamified-app |
mobile | personal | Protótipo de mobile-app gamificado em três frames |
email-marketing |
desktop | marketing | E-mail HTML de lançamento de produto (com fallback de tabela seguro) |
social-carousel |
desktop | marketing | Carrossel social de 3 cards 1080×1080 |
magazine-poster |
desktop | marketing | Poster de página única estilo revista |
motion-frames |
desktop | marketing | Hero de motion design com animações CSS em loop |
sprite-animation |
desktop | marketing | Slide explicador animado pixel / 8-bit |
dating-web |
desktop | personal | Mockup de dashboard de namoro |
digital-eguide |
desktop | marketing | E-guia digital em duas spreads (capa + aula) |
wireframe-sketch |
desktop | design | Sketch de ideação desenhado à mão — para o passo “mostre algo visível cedo” |
critique |
desktop | design | Folha de auto-crítica de cinco dimensões (Filosofia · Hierarquia · Detalhe · Função · Inovação) |
tweaks |
desktop | design | Painel de tweaks emitidos pela IA — o modelo levanta os parâmetros que valem a pena ajustar |
Superfícies de deck (modo deck)
| Skill | Default para | O que produz |
|---|---|---|
guizang-ppt |
default para deck | Web PPT estilo revista — empacotado verbatim de op7418/guizang-ppt-skill, LICENSE original preservada |
simple-deck |
— | Deck minimalista de swipe horizontal |
replit-deck |
— | Deck de walkthrough de produto (estilo Replit) |
weekly-update |
— | Cadência semanal de equipe como deck de swipe (progresso · blockers · próximos) |
Superfícies de office & operações (modo prototype, cenários flavor de documento)
| Skill | Cenário | O que produz |
|---|---|---|
pm-spec |
product | Doc de especificação de PM com TOC + log de decisões |
team-okrs |
product | Folha de pontuação de OKRs |
meeting-notes |
operation | Log de decisões de reunião |
kanban-board |
operation | Snapshot de board |
eng-runbook |
engineering | Runbook de incidentes |
finance-report |
finance | Sumário executivo financeiro |
invoice |
finance | Fatura de página única |
hr-onboarding |
hr | Plano de onboarding de cargo |
Adicionar uma skill exige uma pasta. Leia docs/skills-protocol.md para o frontmatter estendido, faça fork de uma skill existente, reinicie o daemon, ela aparece no seletor. O endpoint do catálogo é GET /api/skills; a montagem de seed por skill (template + referências de side-files) vive em GET /api/skills/:id/example.
Seis ideias estruturais
1 · Não enviamos um agente. O seu já basta.
O daemon escaneia seu PATH em busca de claude, codex, cursor-agent, gemini, opencode, qwen, copilot, hermes, kimi, pi, e kiro-cli na inicialização. Aqueles que ele encontra tornam-se motores de design candidatos — conduzidos por stdio com um adapter por CLI, intercambiáveis a partir do seletor de modelo. Inspirado por multica e cc-switch. Sem CLI instalada? POST /api/proxy/stream é o mesmo pipeline sem o spawn — cole qualquer baseUrl + apiKey compatível com OpenAI e o daemon encaminha os chunks SSE de volta, com destinos loopback / link-local / RFC1918 rejeitados na borda.
2 · Skills são arquivos, não plugins.
Seguindo a convenção SKILL.md do Claude Code, cada skill é SKILL.md + assets/ + references/. Solte uma pasta em skills/, reinicie o daemon, ela aparece no seletor. O magazine-web-ppt empacotado é o op7418/guizang-ppt-skill commitado verbatim — licença original preservada, atribuição preservada.
3 · Design Systems são Markdown portátil, não JSON de tema.
O schema de 9 seções DESIGN.md de VoltAgent/awesome-design-md — cor, tipografia, espaçamento, layout, componentes, motion, voz, marca, anti-padrões. Todo artefato lê do sistema ativo. Troque o sistema → o próximo render usa os novos tokens. O dropdown vem com Linear, Stripe, Vercel, Airbnb, Tesla, Notion, Apple, Anthropic, Cursor, Supabase, Figma, Resend, Raycast, Lovable, Cohere, Mistral, ElevenLabs, X.AI, Spotify, Webflow, Sanity, PostHog, Sentry, MongoDB, ClickHouse, Cal, Replicate, Clay, Composio, Xiaohongshu… — mais 57 design skills vindas de awesome-design-skills.
4 · O formulário de perguntas interativo previne 80% dos redirecionamentos.
A stack de prompts do OD codifica uma RULE 1: todo brief de design fresco começa com um `` em vez de código. Superfície · audiência · tom · contexto de marca · escala · restrições. Um brief longo ainda deixa decisões de design em aberto — tom visual, postura de cor, escala — exatamente as coisas que o formulário trava em 30 segundos. O custo de uma direção errada é uma rodada de chat, não um deck terminado.
Este é o modo Junior-Designer destilado de huashu-design: faça as perguntas em batch upfront, mostre algo visível cedo (mesmo um wireframe com blocos cinzas), permita que o usuário redirecione barato. Combinado com o protocolo de ativos de marca (localizar · baixar · grep hex · escrever brand-spec.md · vocalizar), é a maior razão única pela qual a saída deixa de parecer freestyle de IA e passa a parecer uma designer que prestou atenção antes de pintar.
5 · O daemon faz o agente parecer estar no seu laptop, porque está.
O daemon faz spawn da CLI com cwd definido para a pasta de artefatos do projeto sob .od/projects//. O agente recebe Read, Write, Bash, WebFetch — ferramentas reais contra um sistema de arquivos real. Ele pode Read no assets/template.html da skill, grep no seu CSS por valores hex, escrever um brand-spec.md, soltar imagens geradas, e produzir arquivos .pptx / .zip / .pdf que aparecem no workspace de arquivos como chips de download quando a turn termina. Sessões, conversas, mensagens, abas persistem em um DB SQLite local — abra o projeto amanhã e o card de todo do agente está exatamente onde você deixou.
6 · A stack de prompts é o produto.
O que você compõe na hora do envio não é “system + user”. É:
DISCOVERY directives (formulário do turn-1, branch de marca do turn-2, TodoWrite, crítica de 5 dimensões)
+ identity charter (OFFICIAL_DESIGNER_PROMPT, anti-AI-slop, junior-pass)
+ DESIGN.md ativo (72 sistemas disponíveis)
+ SKILL.md ativo (31 skills disponíveis)
+ metadata do projeto (kind, fidelity, speakerNotes, animations, ids de inspiração)
+ side files da skill (auto-injetados em pre-flight: ler assets/template.html + references/*.md)
+ (deck kind, sem seed de skill) DECK_FRAMEWORK_DIRECTIVE (nav / counter / scroll / print)
Cada camada é componível. Cada camada é um arquivo que você pode editar. Leia apps/web/src/prompts/system.ts e apps/web/src/prompts/discovery.ts para ver o contrato real.
Arquitetura
┌────────────────────── browser (Next.js 16) ──────────────────────┐
│ chat · workspace de arquivos · preview iframe · settings · imports │
└──────────────┬───────────────────────────────────┬───────────────┘
│ /api/* (reescrito em dev) │
▼ ▼
┌──────────────────────────────────┐ /api/proxy/stream (SSE)
│ Daemon local (Express + SQLite) │ ─→ qualquer endpoint
│ │ compatível com OpenAI (BYOK)
│ /api/agents /api/skills│ com bloqueio SSRF
│ /api/design-systems /api/projects/…
│ /api/chat (SSE) /api/proxy/stream (SSE)
│ /api/templates /api/import/claude-design
│ /api/artifacts/save /api/artifacts/lint
│ /api/upload /api/projects/:id/files…
│ /artifacts (static) /frames (static)
│
│ opcional: IPC de sidecar em /tmp/open-design/ipc//.sock
│ (STATUS · EVAL · SCREENSHOT · CONSOLE · CLICK · SHUTDOWN)
└─────────┬────────────────────────┘
│ spawn(cli, [...], { cwd: .od/projects/ })
▼
┌──────────────────────────────────────────────────────────────────┐
│ claude · codex · gemini · opencode · cursor-agent · qwen │
│ copilot · hermes (ACP) · kimi (ACP) · pi (RPC) · kiro (ACP) │
│ lê SKILL.md + DESIGN.md, escreve artefatos no disco │
└──────────────────────────────────────────────────────────────────┘
| Camada | Stack |
|---|---|
| Frontend | Next.js 16 App Router + React 18 + TypeScript, deployable na Vercel |
| Daemon | Node 24 · Express · streaming SSE · better-sqlite3; tabelas: projects · conversations · messages · tabs · templates |
| Transporte do agente | child_process.spawn; parsers de eventos tipados para claude-stream-json (Claude Code), copilot-stream-json (Copilot), parsers json-event-stream por CLI (Codex / Gemini / OpenCode / Cursor Agent), acp-json-rpc (Hermes / Kimi / Kiro via Agent Client Protocol), pi-rpc (Pi via JSON-RPC stdio), plain (Qwen Code) |
| Proxy BYOK | POST /api/proxy/stream → /v1/chat/completions compatível com OpenAI, pass-through SSE; rejeita hosts loopback / link-local / RFC1918 na borda do daemon |
| Storage | Arquivos planos em .od/projects// + SQLite em .od/app.sqlite (gitignored, auto-criado). Sobreponha a raiz com OD_DATA_DIR para isolamento de testes |
| Preview | Iframe sandboxed via srcdoc + parser `` por skill (apps/web/src/artifacts/parser.ts) |
| Export | HTML (assets inline) · PDF (impressão do browser, deck-aware) · PPTX (orientado pelo agente via skill) · ZIP (archiver) · Markdown |
| Lifecycle | pnpm tools-dev start | stop | run | status | logs | inspect | check; portas via --daemon-port / --web-port, namespaces via --namespace |
| Desktop (opcional) | Shell Electron — descobre a URL web via IPC de sidecar, sem adivinhar portas; o mesmo canal STATUS/EVAL/SCREENSHOT/CONSOLE/CLICK/SHUTDOWN alimenta tools-dev inspect desktop … para E2E |
Quickstart
git clone https://github.com/nexu-io/open-design.git
cd open-design
corepack enable
corepack pnpm --version # deve imprimir 10.33.2
pnpm install
pnpm tools-dev run web
# abra a URL web impressa pelo tools-dev
Requisitos de ambiente: Node ~24 e pnpm 10.33.x. nvm/fnm são ajudantes opcionais; se você usar um, rode nvm install 24 && nvm use 24 ou fnm install 24 && fnm use 24 antes de pnpm install.
Para inicialização desktop/background, restarts em portas fixas e checagens do dispatcher de geração de mídia (OD_BIN, OD_DAEMON_URL, apps/daemon/dist/cli.js), veja QUICKSTART.md.
A primeira carga:
- Detecta quais CLIs de agente você tem no
PATHe escolhe uma automaticamente. - Carrega 31 skills + 72 design systems.
- Abre o diálogo de boas-vindas para você colar uma chave Anthropic (necessária apenas para o caminho de fallback BYOK).
- Auto-cria
./.od/— a pasta de runtime local para o DB SQLite de projetos, artefatos por projeto e renders salvos. Não há passood init; o daemon fazmkdirem tudo que precisa no boot.
Digite um prompt, aperte Send, observe o formulário de perguntas chegar, preencha-o, observe o card de todo fluir, observe o artefato renderizar. Clique em Save to disk ou baixe como um ZIP do projeto.
Estado de primeira execução (./.od/)
O daemon possui uma pasta oculta na raiz do repo. Tudo nela é gitignored e local da máquina — nunca faça commit.
.od/
├── app.sqlite ← projetos · conversas · mensagens · abas abertas
├── artifacts/ ← renders pontuais "Save to disk" (com timestamp)
└── projects// ← diretório de trabalho por projeto, também o cwd do agente
| Quer… | Faça isso |
|---|---|
| Inspecionar o que está lá | ls -la .od && sqlite3 .od/app.sqlite '.tables' |
| Resetar para um estado limpo | pnpm tools-dev stop, rm -rf .od, rode pnpm tools-dev run web novamente |
| Movê-lo para outro lugar | ainda não suportado — o caminho é hard-coded relativo ao repo |
Mapa completo de arquivos, scripts e troubleshooting → QUICKSTART.md.
Como usar (interface web)
O Open Design é local-first: não existe SaaS hospedado. Você roda na sua máquina e acessa pelo navegador. Três cenários cobrem 99% dos usos.
1 · Modo “duplo-clique” (recomendado para usuário final)
Depois de pnpm install uma vez, use os scripts auxiliares na raiz do repo:
./start.sh # sobe daemon + web (portas fixas) e abre o navegador
./stop.sh # para tudo
Portas padrão: daemon 17456, web 17573. Sobreponha com env vars: OD_DAEMON_PORT=18000 OD_WEB_PORT=18001 ./start.sh.
URL: http://localhost:17573 (abre automaticamente se você tem xdg-open ou open).
2 · Comando manual (controle fino)
cd open-design
pnpm install # uma vez
pnpm tools-dev run web --daemon-port 17456 --web-port 17573
Abra http://localhost:17573. Para parar: pnpm tools-dev stop. Para inspecionar:
pnpm tools-dev status --json
pnpm tools-dev logs --json
pnpm tools-dev check
3 · App desktop (Electron, sem terminal aberto)
pnpm tools-dev # sobe daemon + web + desktop juntos
Uma janela nativa abre apontando para a web local. Fechando a janela, tudo morre junto. Em ambiente GUI, valide com:
pnpm tools-dev inspect desktop status
pnpm tools-dev inspect desktop screenshot --path /tmp/od.png
Pacote .app (macOS beta): pnpm tools-pack build → pnpm tools-pack start.
Self-host em servidor remoto (avançado)
Tecnicamente possível, não suportado oficialmente: rode pnpm tools-dev run web numa VM/VPS e acesse via port-forward SSH ou reverse proxy com TLS + auth próprios. Avisos:
- O daemon assume que você é dono da máquina — ele faz
spawnde CLIs de agente e escreve em.od/projects/. - Sem auth nativa na UI. Adicione uma camada (nginx basic-auth, Cloudflare Access, Tailscale) antes de expor.
- A camada web (Next.js) pode ir para Vercel; o daemon precisa de filesystem real + CLIs de agente instaladas.
Fluxo típico de uso
- Suba o serviço (cenário 1, 2 ou 3 acima).
- Abra a URL web no navegador.
- Cole sua chave de modelo (Anthropic, OpenAI, ou qualquer endpoint BYOK compatível com OpenAI) no diálogo de boas-vindas. Sem chave? Se você já tem
claude,codex,gemini,cursor-agent, etc. noPATH, o daemon detecta e usa direto. - Crie um projeto, escolha uma skill (ex.:
web-prototype,guizang-ppt,dashboard) e um design system (ex.:linear-app,stripe,warm-editorial). - Digite o brief. Responda o formulário de descoberta do turn 1 (30s de radios).
- Veja o todo plan streamando ao vivo e o artefato renderizar no iframe.
- Baixe como HTML / PDF / ZIP, ou salve como template reutilizável.
Não existe (intencionalmente)
- Versão SaaS hospedada por terceiros.
- Conta / login / multi-tenancy.
- CLI puro headless sem daemon — o bin
odé parte do daemon, não roda standalone.
Tudo é local-first por design: você é dono do .od/, dos artefatos, das chaves de modelo e do agente que conduz o loop.
Estrutura do repositório
open-design/
├── README.md ← este arquivo (em inglês)
├── README.de.md ← Deutsch
├── README.zh-CN.md ← 简体中文
├── README.pt-BR.md ← Português (Brasil)
├── QUICKSTART.md ← guia de run / build / deploy
├── package.json ← workspace pnpm, único bin: od
│
├── apps/
│ ├── daemon/ ← Node + Express, o único servidor
│ │ ├── src/ ← fonte TypeScript do daemon
│ │ │ ├── cli.ts ← fonte do bin `od`, compilado para dist/cli.js
│ │ │ ├── server.ts ← rotas /api/* (projetos, chat, arquivos, exports)
│ │ │ ├── agents.ts ← scanner de PATH + builders de argv por CLI
│ │ │ ├── claude-stream.ts ← parser de JSON em streaming para stdout do Claude Code
│ │ │ ├── skills.ts ← loader do frontmatter SKILL.md
│ │ │ └── db.ts ← schema SQLite (projects/messages/templates/tabs)
│ │ ├── sidecar/ ← wrapper de sidecar do daemon para tools-dev
│ │ └── tests/ ← testes do pacote daemon
│ │
│ └── web/ ← cliente Next.js 16 App Router + React
│ ├── app/ ← entrypoints do App Router
│ ├── next.config.ts ← rewrites de dev + export estático prod para out/
│ └── src/ ← módulos cliente React + TypeScript
│ ├── App.tsx ← roteamento, bootstrap, settings
│ ├── components/ ← chat, composer, picker, preview, sketch, …
│ ├── prompts/
│ │ ├── system.ts ← composeSystemPrompt(base, skill, DS, metadata)
│ │ ├── discovery.ts ← formulário do turn-1 + branch do turn-2 + crítica 5-dim
│ │ └── directions.ts ← 5 direções visuais × paleta OKLch + font stack
│ ├── artifacts/ ← parser de em streaming + manifests
│ ├── runtime/ ← srcdoc do iframe, markdown, helpers de export
│ ├── providers/ ← transports de SSE do daemon + API BYOK
│ └── state/ ← config + projetos (localStorage + daemon-backed)
│
├── e2e/ ← Playwright UI + harness de integração externa/Vitest
│
├── packages/
│ ├── contracts/ ← contratos compartilhados de app web/daemon
│ ├── sidecar-proto/ ← contrato de protocolo de sidecar do Open Design
│ ├── sidecar/ ← primitivos genéricos de runtime de sidecar
│ └── platform/ ← primitivos genéricos de processo/plataforma
│
├── skills/ ← 31 bundles de skill SKILL.md (27 prototype + 4 deck)
│ ├── web-prototype/ ← default para modo prototype
│ ├── saas-landing/ dashboard/ pricing-page/ docs-page/ blog-post/
│ ├── mobile-app/ mobile-onboarding/ gamified-app/
│ ├── email-marketing/ social-carousel/ magazine-poster/
│ ├── motion-frames/ sprite-animation/ digital-eguide/ dating-web/
│ ├── critique/ tweaks/ wireframe-sketch/
│ ├── pm-spec/ team-okrs/ meeting-notes/ kanban-board/
│ ├── eng-runbook/ finance-report/ invoice/ hr-onboarding/
│ ├── simple-deck/ replit-deck/ weekly-update/ ← modo deck
│ └── guizang-ppt/ ← magazine-web-ppt empacotado (default para deck)
│ ├── SKILL.md
│ ├── assets/template.html ← seed
│ └── references/{themes,layouts,components,checklist}.md
│
├── design-systems/ ← 72 sistemas DESIGN.md
│ ├── default/ ← Neutral Modern (starter)
│ ├── warm-editorial/ ← Warm Editorial (starter)
│ ├── linear-app/ vercel/ stripe/ airbnb/ notion/ cursor/ apple/ …
│ └── README.md ← visão geral do catálogo
│
├── assets/
│ └── frames/ ← frames de dispositivo compartilhados (uso cross-skill)
│ ├── iphone-15-pro.html
│ ├── android-pixel.html
│ ├── ipad-pro.html
│ ├── macbook.html
│ └── browser-chrome.html
│
├── templates/
│ └── deck-framework.html ← baseline de deck (nav / counter / print)
│
├── scripts/
│ └── sync-design-systems.ts ← reimporta o tarball upstream awesome-design-md
│
├── docs/
│ ├── spec.md ← spec do produto, cenários, diferenciação
│ ├── architecture.md ← topologias, fluxo de dados, componentes
│ ├── skills-protocol.md ← frontmatter od: estendido do SKILL.md
│ ├── agent-adapters.md ← detecção + dispatch por CLI
│ ├── modes.md ← prototype / deck / template / design-system
│ ├── references.md ← procedência long-form
│ ├── roadmap.md ← entrega em fases
│ ├── schemas/ ← schemas JSON
│ └── examples/ ← exemplos canônicos de artefatos
│
└── .od/ ← dados de runtime, gitignored, auto-criado
├── app.sqlite ← projetos / conversas / mensagens / abas
├── projects// ← pasta de trabalho por projeto (cwd do agente)
└── artifacts/ ← renders pontuais salvos
Design Systems
72 sistemas na caixa, cada um como um único DESIGN.md:
A biblioteca de sistemas de produto é importada via scripts/sync-design-systems.ts de VoltAgent/awesome-design-md. Rode novamente para atualizar. As 57 design skills vêm de bergside/awesome-design-skills e são adicionadas diretamente em design-systems/.
Direções visuais
Quando o usuário não tem brand spec, o agente emite um segundo formulário com cinco direções curadas — a adaptação OD do fallback “5 escolas × 20 filosofias de design” de huashu-design. Cada direção é uma spec determinística — paleta em OKLch, font stack, sinais de postura de layout, referências — que o agente vincula verbatim no :root do template seed. Um clique no radio → um sistema visual completamente especificado. Sem improvisação, sem AI-slop.
| Direção | Mood | Refs |
|---|---|---|
| Editorial — Monocle / FT | Revista impressa, tinta + cream + ferrugem quente | Monocle · FT Weekend · NYT Magazine |
| Modern minimal — Linear / Vercel | Frio, estruturado, accent mínimo | Linear · Vercel · Stripe |
| Tech utility | Densidade de informação, monospace, terminal | Bloomberg · ferramentas Bauhaus |
| Brutalist | Cru, tipo oversized, sem sombras, accents ásperos | Bloomberg Businessweek · Achtung |
| Soft warm | Generoso, baixo contraste, neutros pêssego | Notion marketing · Apple Health |
Spec completa → apps/web/src/prompts/directions.ts.
Além do chat — o que mais vem incluído
O loop de chat / artefato pega o destaque, mas várias capacidades menos visíveis já estão conectadas e valem ser conhecidas antes de comparar OD com qualquer outra coisa:
- Importação de ZIP do Claude Design. Solte uma exportação de claude.ai no diálogo de boas-vindas.
POST /api/import/claude-designextrai em um real.od/projects//, abre o arquivo de entrada como aba, e prepara um prompt continue-de-onde-a-Anthropic-parou para seu agente local. Sem re-prompting, sem “peça ao modelo para recriar o que acabamos de ter”. (apps/daemon/src/server.ts—/api/import/claude-design) - Proxy BYOK compatível com OpenAI.
POST /api/proxy/streamaceita{ baseUrl, apiKey, model, messages }, normaliza o caminho (…/v1/chat/completions), encaminha chunks SSE de volta ao browser, e rejeita destinos loopback / link-local / RFC1918 para evitar SSRF. Qualquer coisa que fale o schema chat OpenAI funciona — shim Anthropic-via-OpenAI, DeepSeek, Groq, MiMo, OpenRouter, seu vLLM auto-hospedado. MiMo recebetool_choice: 'none'automaticamente porque seu schema de tools se comporta mal em geração free-form. - Templates salvos pelo usuário. Uma vez que você gosta de um render,
POST /api/templatesfaz snapshot do HTML + metadata na tabelatemplatesdo SQLite. O próximo projeto o escolhe a partir de uma linha “your templates” no seletor — mesma superfície que as 31 enviadas, mas suas. - Persistência de abas. Todo projeto lembra seus arquivos abertos e a aba ativa na tabela
tabs. Reabra o projeto amanhã e o workspace fica exatamente do jeito que você deixou. - API de lint de artefatos.
POST /api/artifacts/lintroda checagens estruturais em um artefato gerado (framing `` quebrado, side files obrigatórios faltando, tokens de paleta velhos) e retorna findings que o agente pode ler de volta no próximo turn. A auto-crítica de cinco dimensões usa isso para fundamentar sua pontuação em evidência real, não vibes. - Protocolo de sidecar + automação desktop. Processos daemon, web e desktop carregam stamps tipados de cinco campos (
app · mode · namespace · ipc · source) e expõem um canal IPC JSON-RPC em/tmp/open-design/ipc//.sock.tools-dev inspect desktop status \| eval \| screenshotdirige esse canal, então E2E headless funciona contra um shell Electron real sem harnesses sob medida (packages/sidecar-proto/,apps/desktop/src/main/). - Spawning Windows-friendly. Todo adapter que de outra forma estouraria o limite ~32 KB de argv de
CreateProcessem prompts compostos longos (Codex, Gemini, OpenCode, Cursor Agent, Qwen, Pi) alimenta o prompt via stdin. Claude Code e Copilot mantêm-p; o daemon faz fallback para um arquivo de prompt temporário quando até isso transborda. - Dados de runtime por namespace.
OD_DATA_DIRe--namespacete dão árvores.od/totalmente isoladas, então Playwright, canais beta e seus projetos reais nunca compartilham um arquivo SQLite.
Maquinário anti-AI-slop
Todo o maquinário abaixo é o playbook de huashu-design, portado para a stack de prompts do OD e tornado aplicável por skill via o pre-flight de side files. Leia apps/web/src/prompts/discovery.ts para o fraseado vivo:
- Formulário de perguntas primeiro. O turn 1 é apenas `` — sem thinking, sem ferramentas, sem narração. O usuário escolhe defaults na velocidade do radio.
- Extração de brand-spec. Quando o usuário anexa um screenshot ou URL, o agente roda um protocolo de cinco passos (localizar · baixar · grep hex · codificar
brand-spec.md· vocalizar) antes de escrever CSS. Nunca adivinha cores de marca da memória. - Crítica 5-dim. Antes de emitir ``, o agente pontua silenciosamente sua saída de 1–5 em filosofia / hierarquia / execução / especificidade / contenção. Qualquer coisa abaixo de 3/5 é uma regressão — corrige e re-pontua. Dois passes é normal.
- Checklist P0/P1/P2. Toda skill envia um
references/checklist.mdcom gates P0 rígidos. O agente deve passar P0 antes de emitir. - Blacklist de slop. Gradientes roxos agressivos, ícones emoji genéricos, card arredondado com accent de borda esquerda, humanos SVG desenhados à mão, Inter como face display, métricas inventadas — explicitamente proibidos no prompt.
- Placeholders honestos > stats falsos. Quando o agente não tem um número real, ele escreve
—ou um bloco cinza rotulado, não “10× mais rápido”.
Comparação
| Eixo | Claude Design (Anthropic) | Open CoDesign | Open Design |
|---|---|---|---|
| Licença | Fechada | MIT | Apache-2.0 |
| Form factor | Web (claude.ai) | Desktop (Electron) | App web + daemon local |
| Implantável na Vercel | ❌ | ❌ | ✅ |
| Runtime do agente | Empacotado (Opus 4.7) | Empacotado (pi-ai) |
Delegado para a CLI existente do usuário |
| Skills | Proprietárias | 12 módulos TS customizados + SKILL.md |
31 bundles SKILL.md baseados em arquivo, soltáveis |
| Design system | Proprietário | DESIGN.md (roadmap v0.2) |
DESIGN.md × 129 sistemas enviados |
| Flexibilidade de provider | Apenas Anthropic | 7+ via pi-ai |
10 adapters de CLI + proxy BYOK compatível com OpenAI |
| Formulário de perguntas inicial | ❌ | ❌ | ✅ Regra rígida, turn 1 |
| Seletor de direções | ❌ | ❌ | ✅ 5 direções determinísticas |
| Progresso de todos ao vivo + stream de tools | ❌ | ✅ | ✅ (padrão UX de open-codesign) |
| Preview iframe sandboxed | ❌ | ✅ | ✅ (padrão de open-codesign) |
| Importação de ZIP do Claude Design | n/a | ❌ | ✅ POST /api/import/claude-design — continue editando de onde a Anthropic parou |
| Edições cirúrgicas em modo comentário | ❌ | ✅ | 🚧 roadmap (lift de open-codesign) |
| Painel de tweaks emitidos pela IA | ❌ | ✅ | 🟡 parcial — a skill tweaks é enviada, UX de painel dedicado lateral ao chat ainda no roadmap |
| Workspace nível-filesystem | ❌ | parcial (sandbox Electron) | ✅ cwd real, ferramentas reais, SQLite persistido (projects · conversations · messages · tabs · templates) |
| Auto-crítica 5-dim | ❌ | ❌ | ✅ Gate pre-emit |
| Lint de artefatos | ❌ | ❌ | ✅ POST /api/artifacts/lint — findings retornados ao agente |
| IPC de sidecar + desktop headless | ❌ | ❌ | ✅ Processos com stamp + tools-dev inspect desktop status | eval | screenshot |
| Formatos de export | Limitado | HTML / PDF / PPTX / ZIP / Markdown | HTML / PDF / PPTX (orientado pelo agente) / ZIP / Markdown |
| Reuso de skill PPT | N/A | Built-in | guizang-ppt-skill entra (default para modo deck) |
| Cobrança mínima | Pro / Max / Team | BYOK | BYOK — cole qualquer baseUrl compatível com OpenAI |
Agentes de codificação suportados
Detectados automaticamente do PATH no boot do daemon. Sem config necessária. O dispatch de streaming vive em apps/daemon/src/agents.ts (AGENT_DEFS); parsers por CLI vivem ao lado dele. Modelos são populados ou por probing --list-models / models / handshake ACP, ou de uma lista de fallback curada quando a CLI não expõe uma lista.
| Agente | Bin | Formato de stream | Forma do argv (caminho de prompt composto) |
|---|---|---|---|
| Claude Code | claude |
claude-stream-json (eventos tipados) |
claude -p --output-format stream-json --verbose [--include-partial-messages] [--add-dir …] --permission-mode bypassPermissions |
| Codex CLI | codex |
json-event-stream + parser codex |
codex exec --json --skip-git-repo-check --full-auto [-C cwd] [--model …] [-c model_reasoning_effort=…] - (prompt no stdin) |
| Gemini CLI | gemini |
json-event-stream + parser gemini |
gemini --output-format stream-json --skip-trust --yolo [--model …] - (prompt no stdin) |
| OpenCode | opencode |
json-event-stream + parser opencode |
opencode run --format json --dangerously-skip-permissions [--model …] - (prompt no stdin) |
| Cursor Agent | cursor-agent |
json-event-stream + parser cursor-agent |
cursor-agent --print --output-format stream-json --stream-partial-output --force --trust [--workspace cwd] [--model …] - (prompt no stdin) |
| Qwen Code | qwen |
plain (chunks brutos do stdout) |
qwen --yolo [--model …] - (prompt no stdin) |
| GitHub Copilot CLI | copilot |
copilot-stream-json (eventos tipados) |
copilot -p --allow-all-tools --output-format json [--model …] [--add-dir …] |
| Hermes | hermes |
acp-json-rpc (Agent Client Protocol) |
hermes acp --accept-hooks |
| Kimi CLI | kimi |
acp-json-rpc |
kimi acp |
| Kiro CLI | kiro-cli |
acp-json-rpc |
kiro-cli acp |
| Pi | pi |
pi-rpc (JSON-RPC stdio) |
pi --mode rpc --no-session [--model …] [--thinking …] (prompt enviado como comando RPC prompt) |
| BYOK compatível com OpenAI | n/a | Pass-through SSE | POST /api/proxy/stream → /v1/chat/completions; SSRF-guarded contra loopback / link-local / RFC1918 |
Adicionar uma nova CLI é uma entrada em apps/daemon/src/agents.ts. O formato de streaming é um de claude-stream-json, copilot-stream-json, json-event-stream (com um eventParser por CLI), acp-json-rpc, pi-rpc, ou plain.
Referências & linhagem
Todo projeto externo do qual este repo toma emprestado. Cada link vai para a fonte para que você possa verificar a procedência.
| Projeto | Papel aqui |
|---|---|
Claude Design |
O produto de código fechado para o qual este repo é a alternativa open-source. |
alchaincyf/huashu-design |
O núcleo da filosofia de design. Workflow Junior-Designer, o protocolo de 5 passos para ativos de marca, checklist anti-AI-slop, auto-crítica de 5 dimensões e a biblioteca “5 escolas × 20 filosofias de design” por trás do nosso seletor de direções — tudo destilado em apps/web/src/prompts/discovery.ts e apps/web/src/prompts/directions.ts. |
op7418/guizang-ppt-skill |
Skill magazine-web-PPT empacotada verbatim em skills/guizang-ppt/ com a LICENSE original preservada. Default para modo deck. Cultura de checklist P0/P1/P2 emprestada para toda outra skill. |
multica-ai/multica |
A arquitetura daemon + adapter. Detecção de agentes via PATH-scan, daemon local como o único processo privilegiado, visão de mundo agente-como-companheiro-de-equipe. Adotamos o modelo; não vendorizamos o código. |
OpenCoworkAI/open-codesign |
A primeira alternativa open-source ao Claude Design e nosso par mais próximo. Padrões de UX adotados: loop de streaming-artifact, preview iframe sandboxed (React 18 + Babel vendorizados), painel de agente ao vivo (todos + chamadas de tool + interrompível), lista de export em cinco formatos (HTML/PDF/PPTX/ZIP/Markdown), hub de storage local-first, taste-injection via SKILL.md. Padrões de UX no nosso roadmap: edições cirúrgicas em modo comentário, painel de tweaks emitidos pela IA. Deliberadamente não vendorizamos pi-ai — open-codesign o empacota como o runtime do agente; nós delegamos para qualquer CLI que o usuário já tenha. |
VoltAgent/awesome-claude-design / awesome-design-md |
Fonte do schema DESIGN.md de 9 seções e dos 70 sistemas de produto importados via scripts/sync-design-systems.ts. |
bergside/awesome-design-skills |
Fonte das 57 design skills adicionadas diretamente como arquivos DESIGN.md normalizados em design-systems/. |
farion1231/cc-switch |
Inspiração para distribuição de skills baseada em symlinks através de várias CLIs de agente. |
| Skills do Claude Code | A convenção SKILL.md adotada verbatim — qualquer skill do Claude Code entra em skills/ e é pega pelo daemon. |
Texto de procedência long-form — o que tomamos de cada um, o que deliberadamente não tomamos — vive em docs/references.md.
Roadmap
- [x] Daemon + detecção de agente (10 adapters de CLI) + registro de skills + catálogo de design system
- [x] App web + chat + formulário de perguntas + seletor de 5 direções + progresso de todos + preview sandboxed
- [x] 31 skills + 72 design systems + 5 direções visuais + 5 frames de dispositivo
- [x] Projetos backed por SQLite · conversas · mensagens · abas · templates
- [x] Proxy BYOK compatível com OpenAI (
/api/proxy/stream) com guard SSRF - [x] Importação de ZIP do Claude Design (
/api/import/claude-design) - [x] Protocolo de sidecar + desktop Electron com automação IPC (STATUS / EVAL / SCREENSHOT / CONSOLE / CLICK / SHUTDOWN)
- [x] API de lint de artefatos + gate pre-emit de auto-crítica 5-dim
- [ ] Edições cirúrgicas em modo comentário (clique no elemento → instrução → patch) — padrão de
open-codesign - [ ] UX do painel de tweaks emitidos pela IA — building block (skill
tweaks) é enviado; painel integrado ao chat ainda pendente - [ ] Receita de deployment Vercel + tunnel (Topologia B)
- [ ]
npx od initem um comando para esqueletar um projeto comDESIGN.md - [ ] Marketplace de skills (
od skills install) e superfície CLIod skill add | list | remove | test(rascunhada emdocs/skills-protocol.md, implementação pendente) - [ ] Build Electron empacotado a partir de
apps/packaged/
Entrega em fases → docs/roadmap.md.
Status
Esta é uma implementação inicial — o loop fechado (detectar → escolher skill + design system → chat → parsear `` → preview → salvar) roda end-to-end. A stack de prompts e a biblioteca de skills é onde a maior parte do valor vive, e elas são estáveis. A UI a nível de componente é enviada diariamente.
Dê uma estrela
Se isto te economizou trinta minutos — dê uma ★. Estrelas não pagam aluguel, mas dizem para o próximo designer, agente e contribuidor que este experimento merece sua atenção. Um clique, três segundos, sinal real: github.com/nexu-io/open-design.
Contribuindo
Issues, PRs, novas skills e novos design systems são todos bem-vindos. As contribuições de maior alavancagem geralmente são uma pasta, um arquivo Markdown ou um adapter do tamanho de um PR:
- Adicione uma skill — solte uma pasta em
skills/seguindo a convençãoSKILL.md. - Adicione um design system — solte um
DESIGN.mdemdesign-systems//usando o schema de 9 seções. - Conecte uma nova CLI de agente de codificação — uma entrada em
apps/daemon/src/agents.ts.
Walkthrough completo, barra para merge, estilo de código e o que não aceitamos → CONTRIBUTING.md (Deutsch, 简体中文).
Contribuidores
Obrigado a todos que ajudaram a mover Open Design adiante — através de código, docs, feedback, novas skills, novos design systems, ou até uma issue afiada. Toda contribuição real conta, e o mural abaixo é a forma mais fácil de dizer isso em alto e bom som.
Se você enviou seu primeiro PR — bem-vindo. A label good-first-issue é o ponto de entrada.
Atividade do repositório
O SVG acima é regenerado diariamente por .github/workflows/metrics.yml usando lowlighter/metrics. Acione um refresh manual da aba Actions se quiser mais cedo; para plugins mais ricos (tráfego, follow-up time), adicione um secret de repositório METRICS_TOKEN com um PAT fine-grained.
Histórico de Stars
Se a curva sobe, esse é o sinal que procuramos. Dê ★ neste repo para empurrá-la.
Licença
Apache-2.0. O skills/guizang-ppt/ empacotado retém sua LICENSE original (MIT) e atribuição de autoria a op7418.
Recommended Tools
Try a different keyword or remove a filter.
Install
npx skillfish add inematds/open-design