Pascal: un editor de arquitectura 3D en el navegador, expuesto a agentes de IA por MCP
pascalorg/editor · 24.303★ · 3.013 forks
Pascal es un editor de arquitectura 3D gratuito y de código abierto que corre en el navegador: se dibujan paredes, puertas, ventanas y mobiliario, se pinta cada superficie con materiales realistas y se recorre el resultado en 3D. Lo que lo distingue del resto de editores de planos web es su arquitectura de escena paramétrica como grafo de nodos (JSON), empaquetada en npm y expuesta a agentes de IA a través de un servidor MCP, de modo que un agente puede crear y editar proyectos 3D con las mismas primitivas que usa la interfaz. Está escrito en TypeScript y construido sobre React Three Fiber y WebGPU.
Desambiguación: este informe documenta el repositorio
pascalorg/editorde la organización Pascal (pascalorg), descrito en GitHub como «Create and share 3D architectural projects» y cuyo sitio eseditor.pascal.app. No debe confundirse con los editores del lenguaje de programación Pascal (Delphi, Free Pascal, el editorchrinspirado en Turbo Pascal, ni los temas de IDE), que comparten el mismo término «pascal».
Origen
La organización Pascal (pascalorg) se creó en GitHub el 30 de mayo de 2025 con el lema «Intelligence upgrade for every building» (una mejora de inteligencia para cada edificio). El repositorio pascalorg/editor se creó el 16 de octubre de 2025 y, a diferencia de otros proyectos de esta serie, ya venía con actividad sostenida desde el principio (más de 1.300 commits pocos meses después).
Los tres contribuidores principales declarados en el README son Aymeric Rabot (Aymericr, cofundador de Pascal), Wassim Samad (wass08, «3D Web Developer», profesor de Three.js y React Three Fiber en YouTube y DevRel en elest.io) y Sudhir (sudhir9297). La primera aparición verificable en la conversación pública es un envío de Hacker News de 24 de marzo de 2026.
El contexto es la maduración de tres tendencias a la vez: (1) el editor 3D de arquitectura en el navegador (el legado de Sweet Home 3D y de las herramientas web de planos), (2) el renderizado web moderno con React Three Fiber + WebGPU, y (3) el auge de MCP (Model Context Protocol) para que los agentes de IA operen herramientas de software. Pascal nace de la intersección de las tres: un editor 3D real cuyo grafo de escena se puede consultar y mutar desde un agente.
Filosofía y principios
La documentación oficial (llms.txt) se presenta a sí misma como «the free, open-source 3D building editor». De los releases, el README y la documentación se extraen estos principios:
- La escena es un grafo de nodos paramétrico, no una malla. Todo (paredes, losas, techos, puertas, mobiliario, árboles) es un nodo con un esquema Zod; la geometría 3D se deriva de los nodos en tiempo de ejecución. Por eso el export GLB «hornea» todo en un soplo de triángulos, mientras que un importador como
pascal-blenderpuede reconstruir el modelo a partir del JSON editable. - Extensible por plugins, no por API interna. Los tipos de nodo y los paneles de la barra lateral se envían como plugins a través del mismo manifiesto
Pluginque usan los integrados; no existe un API interno separado. - El editor es un anfitrión, el viewer es un componente. La regla de oro documentada es que
packages/viewernunca debe importar deapps/editor; el viewer es un componente standalone que se puede embeber en cualquier sitio. - La IA es un actor de primera clase. El servidor MCP expone las mismas mutaciones de escena que la UI; un agente puede «construir una casa habitación por habitación» y el usuario puede ver el resultado y seguir editándolo en el navegador.
- Gratis y local-first. Corre en el navegador sin nada que instalar (cuenta en la nube o CLI local con SQLite local); MIT.
Cómo funciona
Es un monorepo Turborepo con los paquetes reutilizables, la aplicación standalone y el CLI que la distribuye:
editor/
├── apps/
│ └── editor/ # aplicación Next.js
├── packages/
│ ├── core/ # esquemas, estado de escena y contratos de registro
│ ├── viewer/ # runtime de renderizado 3D y sistemas compartidos
│ ├── editor/ # herramientas de edición y componentes de UI
│ ├── nodes/ # definiciones de nodos integrados, renderers y sistemas
│ ├── cli/ # instalador y gestor de procesos del editor local
│ ├── mcp/ # servidor MCP y almacenamiento de escena
│ └── ui/ # componentes de UI compartidos
| Paquete | Responsabilidad |
|---|---|
@pascal-app/core | Esquemas de nodos (Zod), estado de escena (Zustand), contratos de registro, consultas espaciales y bus de eventos |
@pascal-app/viewer | Renderizado 3D vía React Three Fiber, sistemas compartidos, cámara/controles y post-proceso |
@pascal-app/editor | Herramientas de edición, paneles, selección y UI de manipulación directa |
@pascal-app/nodes | Plugin de registro integrado: definiciones de nodos, renderers, geometría y sistemas |
@pascal-app/cli | Instala y gestiona un runtime standalone versionado y datos locales persistentes |
@pascal-app/mcp | Expone herramientas, recursos, prompts y almacenamiento local a anfitriones MCP |
Conceptos centrales (del README): Nodos, primitivas de datos que describen la escena — todos extienden BaseNode (id, type, parentId, visible, metadata), con jerarquía Site → Building → Level → (Wall → Item, Slab, Ceiling → Item, Roof, Zone, Scan, Guide), guardados en un diccionario plano (Record<id, Node>), no en un árbol anidado. Estado de escena (Zustand useScene): nodes, rootNodeIds, dirtyNodes, y operaciones createNode/updateNode/deleteNode, con middleware Persist (IndexedDB) y Temporal/Zundo (deshacer/rehacer con historial de 50 pasos). Dirty nodes: cuando un nodo cambia, se marca como dirty; los sistemas lo detectan cada frame y solo recalculan geometría para esos nodos. Registros (systems): WallSystem (geometría con mitering y recortes CSG para puertas/ventanas), SlabSystem, CeilingSystem, RoofSystem, ItemSystem, LevelSystem, etc.

Stack tecnológico (README): React 19, Next.js 16, Three.js (renderer WebGPU), React Three Fiber + Drei, Zustand, Zod, Zundo, three-bvh-csg (operaciones booleanas de geometría), Turborepo y Bun.

Características por release (de la API de releases, todas con fecha): v1.0.0-beta.1 (30 jul 2026) — beta 1.0: modelado de terreno (esculpir, alisar, soporte de muros sobre terreno), modelado vertical, arquitectura de plugins/nodos pública, exportación de planos con dimensiones, GLB con texturas + STL/OBJ, iluminación y WebGPU/WebGL más seguros. Todos los paquetes se publican como 1.0.0-beta.1 bajo el dist-tag beta de npm; latest sigue en la línea 0.x.

v0.9.1 (10 jun 2026) — sistema de presets, presets de habitaciones y escaneo de plantillas, manipulación de edificios, diseño sonoro. v0.9.0 (27 may 2026) — arquitectura de registro de nodos, asas de selección in-world, importador IFC → Pascal, modos de render Solid/Rendered, seis accesorios de techo, sistema de ascensor completo. v0.8.0 (10 may 2026) — primera publicación pública de @pascal-app/mcp en npm: 19 herramientas MCP, 4 recursos, 3 prompts (from_brief, iterate_on_feedback, renovation_from_photos), transportes stdio y Streamable HTTP, SqliteSceneStore local.

v0.7.0 / v0.6.0 (abr 2026) — expansión de puertas/ventanas, columna, modo pintura de materiales, sistema de materiales multi-superficie, generación automática de habitaciones.
El ecosistema
Repositorios hermanos de la organización pascalorg. La organización tiene 7 repositorios públicos (API de GitHub, 22-ago-2026); todos orbitan el editor: pascalorg/editor (21.633 estrellas, el editor 3D, este informe), pascalorg/skills (88 estrellas, skills de agentes: extracción de paletas de color de imágenes, OCR, diff de píxeles, contraste), pascalorg/lingo (15 estrellas, «Make forms easier, LLM tools safer»: cantidades, unidades, fechas y rangos en lenguaje natural a valores canónicos), pascalorg/pascal-blender (14 estrellas, importador de escenas Pascal para Blender), pascalorg/plugin-trees (11 estrellas, plugin de ejemplo first-party: árboles, flores y hierba procedurales), pascalorg/plugin-bones (7 estrellas, plugin de estructura de madera) y pascalorg/plugin-articraft (2 estrellas, catálogo y assets articulados).

Importadores y conectores de la comunidad. pascalorg/pascal-blender (14★): consume el JSON de la escena (no el GLB horneado) y reconstruye el modelo como datos nativos y editables de Blender 4.2+, recuperando cada byte del archivo original desde el .blend. Se instala arrastrando un zip o añadiendo el repositorio remoto. jtydhr88/ComfyUI-PascalEditor (128★): plugin de ComfyUI que integra el editor Pascal como nodo de flujo. zuleikdiasb-web/pascal-editor-3d (10★): fork en español orientado a la construcción civil; la traducción al español es un fork comunitario, no una capa de traducción interna del repositorio principal.

Bifurcaciones. Las bifurcaciones devueltas por la API son mayoritariamente réplicas personales con la misma descripción original (1★ o menos). No se encontró un fork de gran escala comparable; el derivado con más actividad propia es el fork en español mencionado arriba.

No se localizó un repositorio awesome-* de alto perfil que liste a pascalorg/editor como entrada destacada en esta ejecución (las coincidencias de búsqueda «pascal editor» en GitHub son en su mayoría editores del lenguaje Pascal, no de este producto).
Estado oficial / semioficial
- Producto de empresa, open-source: lo desarrolla la organización comercial Pascal (
pascalorg, blogeditor.pascal.app, perfil «Intelligence upgrade for every building»). No es un proyecto de un individuo; tiene un equipo, un changelog activo, un sitio de documentación (Mintlify) y un canal de Discord. - Paquetes públicos en npm:
@pascal-app/core,@pascal-app/viewer,@pascal-app/editor,@pascal-app/nodes,@pascal-app/cliy@pascal-app/mcpestán publicados de forma pública en npm (dist-tagslatestybeta). El servidor MCP@pascal-app/mcptuvo su primera publicación pública en la v0.8.0 (10 de mayo de 2026). - Endpoint MCP hosted: además del paquete local, Pascal expone un endpoint MCP en
https://editor.pascal.app/api/mcppara cuentas de la nube (con API key). - Sin marketplace / estándar de facto formal: en esta ejecución no se verificó aceptación en un marketplace oficial (Claude/Cursor) ni designación como estándar. Su «estatus semioficial» es el de una herramienta de IA para arquitectura que se integra con los hosts MCP existentes (Claude Code, Codex, Cursor, OpenClaw) y que se apoya en la adopción comunitaria de MCP como mecanismo de integración.
Números del repo
Medición: 22 de agosto de 2026, API de GitHub.
| Métrica | Valor |
|---|---|
| Estrellas | 21.633 |
| Bifurcaciones | 2.777 |
| Suscriptores reales | 119 |
| Commits | 1.361 |
| Incidencias + PR abiertos | 53 |
| Ramas / Tags | 175 / 52 |
| Lenguaje principal | TypeScript |
| Licencia | MIT |
| Creación | 16 de octubre de 2025 |
| Último push | 22 de agosto de 2026 |
| Último release formal | v1.0.0-beta.1, 30 de julio de 2026 |
watchers_count replica las estrellas, por lo que se informa subscribers_count como suscriptores reales. El último release formal es la beta v1.0.0-beta.1; en npm el dist-tag latest sigue en la línea 0.x (p. ej. @pascal-app/core 0.9.2). La beta vive bajo el dist-tag beta.
Principales contribuidores por contribuciones: wass08 (742), Aymericr (220), sudhir9297 (181), open-pascal (51), anton-pascal (40), Snoopy147 (28). El cofundador wass08 concentra cerca de la mitad de las contribuciones.
Descargas de npm (último mes, 22-jul a 21-ago-2026): @pascal-app/core 39.567, @pascal-app/viewer 19.467, @pascal-app/editor 15.621, @pascal-app/nodes 4.260, @pascal-app/mcp 2.535, @pascal-app/cli 1.304.
Guía rápida de uso
Instalación y primer arranque
En la nube (sin nada que instalar): abrir editor.pascal.app, iniciar sesión (Google o email) y hacer clic en Create a new project. El editor abre sobre un lienzo vacío y todo se guarda automáticamente en la cuenta (no hay botón de guardar).
Local (CLI, sin clonar el repo) — requiere Node.js 22.13+ y npm:
# arranque de una vez (npm / pnpm / Bun)
npx @pascal-app/cli editor
# o
pnpm dlx @pascal-app/cli editor
bunx @pascal-app/cli editor
El primer arranque interactivo instala la CLI globalmente (comando pascal) una vez que el editor queda sano, elige puertos loopback sin colisiones, arranca el editor y un servicio MCP autenticado en segundo plano, y abre http://pascal.localhost:<port>. Los proyectos viven en ~/.pascal/data/pascal.db (SQLite local), separados del runtime. La primera release del CLI soporta macOS; Linux y Windows aún no están verificados.
Flujos de trabajo habituales
- Dibujar una habitación (≈5 min). Con la herramienta Wall armada (o pulsando
B), hacer clic en cada esquina; la herramienta arranca en modo Room (auto-close): volver a hacer clic en la esquina inicial cierra el bucle en una habitación. Cuando las paredes encierran un espacio, Pascal añade automáticamente suelo y techo.Escdetiene el dibujo;Cmd/Ctrl+Zdeshace;Shiftalterna el modo de ajuste (Grid, Lines, Angles, Off). - Conectar un agente de IA. Para que Claude Code, Codex o Cursor editen tus proyectos locales:
pascal mcp setup codex(opascal mcp setup claude); el conector establepascal mcp connectdescubre el puerto dinámico, así la config MCP no contiene puerto ni secreto. Para la versión hosted, crear una API key en Settings → API keys y apuntar el cliente ahttps://editor.pascal.app/api/mcp. - Importar y exportar. Importar un plano IFC (desde v0.9.0) y exportar la escena como GLB con texturas, OBJ o STL para cualquier motor o herramienta 3D; o usar
pascal-blenderpara abrir la escena JSON como modelo nativo editable en Blender 4.2+. - Hacer un plugin nuevo.
git clone https://github.com/pascalorg/plugin-trees.git,bun install,bun run check-types; a partir de ahí registrar nuevos tipos de nodo y un panel, usando@pascal-app/{core,viewer,editor}como peer deps (no importa nada privado).
Configuración esencial
Los archivos y ajustes que un usuario nuevo tocará primero: .env (desde .env.example, única opción documentada: la API key de Google Maps para búsqueda de direcciones, opcional), ~/.pascal/data/pascal.db (base de datos SQLite local del CLI, compartida entre editor y MCP), la config MCP del cliente (p. ej. .mcp.json con { "mcpServers": { "pascal": { "command": "pascal", "args": ["mcp","connect"] } } }), biome.json (lint/formato, relevante solo al contribuir) y el modo de ajuste (snapping, Shift alterna entre Grid/Lines/Angles/Off).
Trampas frecuentes y soluciones
bun testda conteos inflados.testes un subcomando de Bun, así quebun testnunca llega al script del paquete y recorre inclusodist/. Solución:bun run test(pasa por Turborepo, que compila primero las dependencias de workspace).live_sync_version_conflicten MCP. Al hacer mutaciones desde MCP sobre una escena guardada, si el navegador u otro proceso MCP guardó una versión más nueva antes, la herramienta MCP devuelvelive_sync_version_conflict. Solución: recargar la escena conload_sceneantes de continuar.- CLI aún no soporta Windows/Linux de forma verificada. La primera release soporta macOS; si el arranque falla en otro SO, usar la versión en la nube.
- Hosted MCP + Perplexity (incidencia #288, 12 comentarios). El endpoint
/api/mcpacepta la API key enGETpero rechaza elPOST initializeque Perplexity realiza (401/419), de modo que Perplexity no puede conectarse aunque Codex/Claude Code/Cursor/OpenClaw sí. - La unidad solo afecta a la muestra, no a la entrada (incidencia #308). El cambio de unidad altera la dimensión mostrada pero no la entrada.
- El viewer no importa del editor. Si una contribución hace que
packages/viewerimporte deapps/editor, rompe la regla de arquitectura y debe rechazarse/invertirse.
Integraciones y migración
- Con hosts MCP (núcleo): Claude Code, Codex CLI, Cursor y OpenClaw se conectan vía
pascal mcp connect(local) o el endpoint hosted. El agente puede crear paredes, colocar objetos, recortar aberturas, deshacer y exportar. - Con Blender:
pascal-blenderabre la escena JSON como datos nativos editables, con auto-actualizaciones desde el repositorio remoto. - Con motores/3D genéricos: export GLB (con texturas), OBJ y STL; import IFC.
- Con ComfyUI:
jtydhr88/ComfyUI-PascalEditorintegra el editor como nodo. - Embeber el viewer:
packages/vieweres un componente React standalone; la documentación incluye «Embed a scene» para incrustar el visor 3D en cualquier sitio o app. - Migración desde/otros: la conversión IFC → Pascal (v0.9.0) es la ruta documentada de importación de datos CAD/BIM existentes; para exportar a otros herramientas se usa GLB/STL/OBJ. No hay migrador directo documentado desde Sweet Home 3D ni desde AutoCAD.
Cómo contribuir
CONTRIBUTING.md documenta un proceso completo: prerrequisitos (Bun 1.3+ y Node.js 20.9+); setup (git clone, bun install, bun dev → el editor corre en http://localhost:3002); opcional copiar .env.example a .env; estilo de código con Biome (bun check y bun check:fix); tests (bun run test desde la raíz, no bun test); regla de arquitectura (packages/viewer nunca debe importar de apps/editor); plugins como ejemplo (pascalorg/plugin-trees); flujo de PR (forkear, cambios y test local, bun check y bun run test, abrir PR con descripción clara, enlazar incidencias).
Cómo lo recibió la comunidad
La evidencia recuperada muestra un proyecto de muy alta adopción relativa a su edad (21.633 estrellas ~10 meses después de su creación, 2.777 forks) pero de baja visibilidad en foros de discusión públicos, con la conversación técnica real concentrada en GitHub.
En Hacker News, «Pascal – open 3D home design in the browser», enviado por Rabot (Aymeric Rabot, cofundador) el 24 de marzo de 2026, reunió 7 puntos y 2 comentarios. El único comentario de usuario es de Snoupy, que solo enlaza el repositorio. No se encontró ningún hilo de Hacker News con discusión amplia verificable.
En GitHub, la incidencia #288 («Support Perplexity custom connectors… POST /api/mcp rejects valid API keys with 401 / clients see HTTP 419»), abierta por fieldmanneasi el 2 de mayo de 2026, reunió 12 comentarios — la incidencia con más debate sobre MCP; documenta la incompatibilidad del endpoint hosted con Perplexity. Otras incidencias de adopción/UX con varios comentarios: #158 «Import option for AutoCAD files» (9 comentarios), #154 «Map support» (7), #492 «Lag / Stuttering when dragging or moving walls» (7), #174 «Import/export options for Sweet Home 3D files» (5), #308 «unit toggle only affects the display of dimensions, not the input» (11). Contribución comunitaria visible en el changelog: por ejemplo, PR #596 por tomatotomata (mitering determinista de uniones de pared colineales) y PR #597 por ShiroKSH (materiales de escena conservados a través de guardado/carga/clonación/sincronización).
En conjunto: la comunidad consume el proyecto (estrellas, forks, descargas de npm, incidencias de feature) mucho más de lo que lo debate en foros; las críticas verificables y concretas giran en torno a rendimiento al manipular muros, conectividad MCP con Perplexity, e importación de formatos existentes (AutoCAD, Sweet Home 3D).
Pascal frente a otras propuestas
Solo competidores reales y verificables. El nicho es «editor de arquitectura / planos 3D en el navegador, con apoyo a IA»:
| Proyecto | Coincidencia verificable | Diferencia verificable |
|---|---|---|
| Sweet Home 3D | Editor de hogar/diseño 3D; la comunidad de Pascal pide import/export con él (incidencia #174). | Es una aplicación de escritorio (Java) de larga trayectoria, no un componente web embebible; su escena no se expone vía MCP. |
| AutoCAD / BIM (IFC) | Herramientas de CAD/BIM de las que Pascal importa (IFC, desde v0.9.0); la comunidad pide import de DWG (#158). | Herramientas profesionales de pago orientadas a BIM completo; Pascal es un editor web paramétrico gratuito pensado para diseño residencial y agentes de IA. |
| Componentes de escena 3D web (PlayCanvas, three.js directo) | Escena 3D en el navegador con Three.js. | No son editores de arquitectura con primitivas de edificio ni exponen un servidor MCP con mutaciones de escena; Pascal añade la capa de herramientas de arquitectura y de MCP. |
jtydhr88/ComfyUI-PascalEditor | Introduce el editor Pascal en un flujo ComfyUI (128★). | Es un integrador de Pascal, no un editor alternativo. |
La comparación más útil no es por estrellas: Pascal destaca cuando se quiere un editor 3D de arquitectura en el navegador cuyo grafo de escena puede ser consultado y editado por agentes de IA vía MCP, y que además puede embeberse como componente React. Para CAD/BIM profesional completo, AutoCAD/IFC siguen siendo la referencia.
Casos de uso y a quién puede ayudar este repositorio
- Arquitectos, diseñadores y dueños de vivienda que quieren diseñar una casa en el navegador sin instalar nada: dibujar muros (auto-close de habitaciones con suelo y techo automáticos), poner puertas/ventanas, mobiliario, pintar materiales realistas, esculpir terreno y recorrer el resultado en 3D, con export a GLB/OBJ/STL.
- Equipos que usan agentes de IA en arquitectura: al exponer la escena como servidor MCP (19 herramientas + 3 prompts como
renovation_from_photosyfrom_brief), un agente puede generar o iterar sobre un proyecto 3D y el equipo lo revisa y sigue editando en el navegador. - Ingenieros front-end / de plataformas 3D que necesitan un viewer 3D embebible:
packages/vieweres un componente React standalone que puede incrustarse en cualquier sitio o app. - Artistas 3D y flujos de producción:
pascal-blenderreconstruye la escena JSON como modelo nativo y editable de Blender, y el export GLB con texturas alimenta otros motores. - Desarrolladores de plugins / de agentes:
plugin-treeses el ejemplo documentado de cómo añadir tipos de nodo y paneles, ypascalorg/skills+pascalorg/lingoofrecen skills de agentes y parsing de cantidades/unidades para LLMs.
Recursos
- Repositorio: https://github.com/pascalorg/editor
- Documentación oficial: https://editor.pascal.app/docs/llms.txt
- Sitio / editor en la nube: https://editor.pascal.app
- Conectar un agente de IA (MCP): https://editor.pascal.app/docs/developers/mcp
- Plugins de la org: https://github.com/pascalorg/plugin-trees · https://github.com/pascalorg/pascal-blender
- Comunidad / Discord: https://discord.gg/XRKsDcpqgS
Nota: este artículo combina el README, CONTRIBUTING.md, CHANGELOG.md, los releases y la API de GitHub de pascalorg/editor, los README de packages/mcp y packages/cli, la documentación oficial, la API de descargas de npm, los perfiles de los contribuidores, la búsqueda de Hacker News y la API de búsqueda de repositorios de GitHub, consultadas el 22 de agosto de 2026. Las cifras de estrellas, bifurcaciones, contribuciones, commits y descargas cambian con el tiempo.
Comentarios