* feat(docker): add Docker support with multi-stage build and CI workflow - Introduced a `.dockerignore` file to exclude unnecessary files from the Docker context. - Added a `Dockerfile` for multi-stage builds, optimizing the application for production with a slim runtime. - Created a GitHub Actions workflow (`docker.yml`) to automate the building and pushing of Docker images on version tag pushes. - Enhanced the `connect-agent.ts` and `install-agent.ts` files to improve OpenCode binary resolution and installation commands. - Updated the canvas components to support new polygon shape and related functionalities, including UI adjustments for shape tools and appearance settings. This update significantly enhances the deployment process and expands the application's capabilities with Docker integration. * feat(docker): enhance Dockerfile with multi-stage builds and CLI variants - Updated the Dockerfile to include multiple image variants for different CLI tools, including Claude, Codex, OpenCode, and Copilot, alongside the base web app. - Improved the build process by separating the build stage and production stage, optimizing the final image size. - Added environment variables and commands for each variant to ensure proper execution in production. - Enhanced the README files in multiple languages to document the new Docker deployment options and usage instructions. This update significantly expands the Docker deployment capabilities, allowing users to choose the appropriate image variant based on their needs.
13 KiB
OpenPencil
La primera herramienta de diseño vectorial de código abierto nativa de IA del mundo.
Equipos de Agentes Concurrentes • Diseño como Código • Servidor MCP Integrado • Inteligencia Multimodelo
English · 简体中文 · 繁體中文 · 日本語 · 한국어 · Français · Español · Deutsch · Português · Русский · हिन्दी · Türkçe · ไทย · Tiếng Việt · Bahasa Indonesia
Haz clic en la imagen para ver el video de demostración
Por Qué OpenPencil
🎨 Prompt → LienzoDescribe cualquier interfaz en lenguaje natural. Obsérvala aparecer en el lienzo infinito en tiempo real con animación de transmisión. Modifica diseños existentes seleccionando elementos y chateando. |
🤖 Equipos de Agentes ConcurrentesEl orquestador descompone páginas complejas en subtareas espaciales. Múltiples agentes de IA trabajan en diferentes secciones simultáneamente — hero, características, footer — todos transmitiendo en paralelo. |
🧠 Inteligencia MultimodeloSe adapta automáticamente a las capacidades de cada modelo. Claude recibe prompts completos con pensamiento; GPT-4o/Gemini desactivan el pensamiento; modelos más pequeños (MiniMax, Qwen, Llama) reciben prompts simplificados para una salida confiable. |
🔌 Servidor MCPInstalación con un clic en Claude Code, Codex, Gemini, OpenCode, Kiro o Copilot CLIs. Diseña desde tu terminal — lee, crea y modifica archivos |
📦 Diseño como CódigoLos archivos |
🖥️ Funciona en Todas PartesAplicación web + escritorio nativo en macOS, Windows y Linux mediante Electron. Actualizaciones automáticas desde GitHub Releases. Asociación de archivos |
Inicio Rápido
# Instalar dependencias
bun install
# Iniciar el servidor de desarrollo en http://localhost:3000
bun --bun run dev
O ejecutar como aplicación de escritorio:
bun run electron:dev
Despliegue con Docker
Hay varias variantes de imagen disponibles — elige la que se ajuste a tus necesidades:
| Imagen | Tamaño | Incluye |
|---|---|---|
openpencil:latest |
~226 MB | Solo aplicación web |
openpencil-claude:latest |
— | + Claude Code CLI |
openpencil-codex:latest |
— | + Codex CLI |
openpencil-opencode:latest |
— | + OpenCode CLI |
openpencil-copilot:latest |
— | + GitHub Copilot CLI |
openpencil-full:latest |
~1 GB | Todas las herramientas CLI |
Ejecutar (solo web):
docker run -d -p 3000:3000 ghcr.io/zseven-w/openpencil:latest
Ejecutar con AI CLI (ej. Claude Code):
El chat de IA depende del inicio de sesión OAuth de Claude CLI. Usa un volumen Docker para persistir la sesión de inicio de sesión:
# Paso 1 — Iniciar sesión (una sola vez)
docker volume create openpencil-claude-auth
docker run -it --rm \
-v openpencil-claude-auth:/root/.claude \
ghcr.io/zseven-w/openpencil-claude:latest claude login
# Paso 2 — Iniciar
docker run -d -p 3000:3000 \
-v openpencil-claude-auth:/root/.claude \
ghcr.io/zseven-w/openpencil-claude:latest
Compilar localmente:
# Base (solo web)
docker build --target base -t openpencil .
# Con un CLI específico
docker build --target with-claude -t openpencil-claude .
# Completa (todos los CLIs)
docker build --target full -t openpencil-full .
Diseño Nativo de IA
De Prompt a Interfaz
- Texto a diseño — describe una página y se genera en el lienzo en tiempo real con animación de transmisión
- Orquestador — descompone páginas complejas en subtareas espaciales para generación en paralelo
- Modificación de diseño — selecciona elementos y describe los cambios en lenguaje natural
- Entrada visual — adjunta capturas de pantalla o bocetos como referencia para el diseño
Soporte Multiagente
| Agente | Configuración |
|---|---|
| Claude Code | Sin configuración — usa Claude Agent SDK con OAuth local |
| Codex CLI | Conectar en Configuración de Agente (Cmd+,) |
| OpenCode | Conectar en Configuración de Agente (Cmd+,) |
| GitHub Copilot | copilot login y luego conectar en Configuración de Agente (Cmd+,) |
Perfiles de Capacidad de Modelos — adapta automáticamente los prompts, el modo de pensamiento y los tiempos de espera según el nivel del modelo. Los modelos de nivel completo (Claude) reciben prompts completos; los de nivel estándar (GPT-4o, Gemini, DeepSeek) desactivan el pensamiento; los de nivel básico (MiniMax, Qwen, Llama, Mistral) reciben prompts simplificados de JSON anidado para máxima fiabilidad.
Servidor MCP
- Servidor MCP integrado — instalación con un clic en Claude Code / Codex / Gemini / OpenCode / Kiro / Copilot CLIs
- Detección automática de Node.js — si no está instalado, recurre automáticamente al transporte HTTP e inicia el servidor MCP HTTP
- Automatización de diseño desde la terminal: leer, crear y modificar archivos
.opa través de cualquier agente compatible con MCP - Flujo de diseño por capas —
design_skeleton→design_content→design_refinepara diseños multisección de mayor fidelidad - Recuperación segmentada de prompts — carga solo el conocimiento de diseño que necesitas (schema, layout, roles, icons, planning, etc.)
- Soporte multipágina — crear, renombrar, reordenar y duplicar páginas mediante herramientas MCP
Generación de Código
- React + Tailwind CSS, HTML + CSS, CSS Variables
- Vue, Svelte, Flutter, SwiftUI, Jetpack Compose, React Native
Características
Lienzo y Dibujo
- Lienzo infinito con panorámica, zoom, guías de alineación inteligentes y ajuste
- Rectángulo, Elipse, Línea, Polígono, Pluma (Bezier), Frame, Texto
- Operaciones booleanas — unión, resta, intersección con barra de herramientas contextual
- Selector de iconos (Iconify) e importación de imágenes (PNG/JPEG/SVG/WebP/GIF)
- Diseño automático — vertical/horizontal con gap, padding, justify, align
- Documentos multipágina con navegación por pestañas
Sistema de Diseño
- Variables de diseño — tokens de color, número y texto con referencias
$variable - Soporte multitema — múltiples ejes, cada uno con variantes (Claro/Oscuro, Compacto/Cómodo)
- Sistema de componentes — componentes reutilizables con instancias y sobreescrituras
- Sincronización CSS — propiedades personalizadas autogeneradas,
var(--name)en la salida de código
Importación de Figma
- Importa archivos
.figconservando diseño, rellenos, trazos, efectos, texto, imágenes y vectores
Aplicación de Escritorio
- Compatible de forma nativa con macOS, Windows y Linux mediante Electron
- Asociación de archivos
.op— doble clic para abrir, bloqueo de instancia única - Actualización automática desde GitHub Releases
- Menú de aplicación nativo y diálogos de archivo
Stack Tecnológico
| Frontend | React 19 · TanStack Start · Tailwind CSS v4 · shadcn/ui |
| Lienzo | CanvasKit/Skia (WASM, acelerado por GPU) |
| Estado | Zustand v5 |
| Servidor | Nitro |
| Escritorio | Electron 35 |
| IA | Anthropic SDK · Claude Agent SDK · OpenCode SDK · Copilot SDK |
| Runtime | Bun · Vite 7 |
| Formato de archivo | .op — basado en JSON, legible por humanos, compatible con Git |
Estructura del Proyecto
src/
canvas/ Motor CanvasKit/Skia — dibujo, sincronización, diseño, guías, herramienta pluma
components/ Interfaz React — editor, paneles, diálogos compartidos, iconos
services/ai/ Chat de IA, orquestador, generación de diseño, transmisión
services/figma/ Pipeline de importación binaria de Figma .fig
services/codegen Generadores de código React+Tailwind y HTML+CSS
stores/ Zustand — lienzo, documento, páginas, historial, IA, configuración
variables/ Resolución de tokens de diseño y gestión de referencias
mcp/ Herramientas del servidor MCP para integración con CLI externas
uikit/ Sistema de kit de componentes reutilizables
server/
api/ai/ API Nitro — chat en streaming, generación, validación
utils/ Wrappers de cliente Claude CLI, OpenCode, Codex, Copilot
electron/
main.ts Ventana, fork Nitro, menú nativo, actualizador automático
preload.ts Puente IPC
Atajos de Teclado
| Tecla | Acción | Tecla | Acción | |
|---|---|---|---|---|
V |
Seleccionar | Cmd+S |
Guardar | |
R |
Rectángulo | Cmd+Z |
Deshacer | |
O |
Elipse | Cmd+Shift+Z |
Rehacer | |
L |
Línea | Cmd+C/X/V/D |
Copiar/Cortar/Pegar/Duplicar | |
T |
Texto | Cmd+G |
Agrupar | |
F |
Frame | Cmd+Shift+G |
Desagrupar | |
P |
Herramienta pluma | Cmd+Shift+E |
Exportar | |
H |
Mano (panorámica) | Cmd+Shift+C |
Panel de código | |
Del |
Eliminar | Cmd+Shift+V |
Panel de variables | |
[ / ] |
Reordenar | Cmd+J |
Chat de IA | |
| Flechas | Mover 1px | Cmd+, |
Configuración de agente | |
Cmd+Alt+U |
Unión booleana | Cmd+Alt+S |
Resta booleana | |
Cmd+Alt+I |
Intersección booleana |
Scripts
bun --bun run dev # Servidor de desarrollo (puerto 3000)
bun --bun run build # Compilación de producción
bun --bun run test # Ejecutar pruebas (Vitest)
npx tsc --noEmit # Verificación de tipos
bun run electron:dev # Desarrollo con Electron
bun run electron:build # Empaquetado de Electron
Contribuir
¡Las contribuciones son bienvenidas! Consulta CLAUDE.md para detalles sobre la arquitectura y el estilo de código.
- Haz fork y clona el repositorio
- Crea una rama:
git checkout -b feat/my-feature - Ejecuta las verificaciones:
npx tsc --noEmit && bun --bun run test - Haz commit con Conventional Commits:
feat(canvas): add rotation snapping - Abre un PR contra
main
Hoja de Ruta
- Variables de diseño y tokens con sincronización CSS
- Sistema de componentes (instancias y sobreescrituras)
- Generación de diseño con IA y orquestador
- Integración con servidor MCP con flujo de diseño por capas
- Soporte multipágina
- Importación de Figma
.fig - Operaciones booleanas (unión, sustracción, intersección)
- Perfiles de capacidad multimodelo
- Edición colaborativa
- Sistema de plugins