pascalorg/editor

Open-source 3D architectural editor with a local CLI, MCP tools, and practical workflows for humans and AI agents.

Pascal Editor – A Local‑First 3D Building Editor with AI‑Agent Hooks

What it is – Pascal is an open‑source, browser‑or‑desktop 3D building editor built on React Three Fiber and the WebGPU‑enabled Three.js renderer. It runs locally (no cloud required) and can be started from a simple CLI command. The editor exposes a Model Context Protocol (MCP) server that lets external AI agents (e.g., Claude, Codex) talk to the scene, run tools, and query geometry.

Core pieces

Package Role
@pascal-app/core Schemas, scene state (Zustand), registry contracts, spatial queries
@pascal-app/viewer 3D rendering, camera/controls, post‑processing
@pascal-app/editor UI panels, selection manager, editing tools (walls, slabs, items, zones)
@pascal-app/cli Installer, process manager, persistent local data (~/.pascal/data/pascal.db)
@pascal-app/mcp HTTP server that exposes scene operations to AI agents via a typed protocol
@pascal-app/nodes Built‑in node definitions (walls, floors, items, etc.)
@pascal-app/capture‑* Optional capture‑session formats for importing/exporting scenes
apps/editor Next.js host that bundles the above packages into a runnable app

How it works

  1. CLI launchnpx @pascal-app/cli editor starts the Next.js editor and a background MCP service on a free loopback port.
  2. Scene model – Nodes are flat objects (id, type, parentId, …) stored in a Zustand store (useScene). Changes are persisted to IndexedDB and can be undone/redone via Zundo.
  3. Rendering – React‑Three‑Fiber components (NodeRenderer, WallRenderer, etc.) create Three.js objects and register them in a fast lookup registry (sceneRegistry).
  4. Systems – React components run each frame (useFrame) and only recompute geometry for nodes marked dirty in the store, keeping updates cheap.
  5. AI integration – The MCP server implements a JSON‑based protocol that AI agents can call (pascal mcp connect, pascal mcp setup claude). Skills such as pascal-3d and furniture-fit are distributed via the skills.sh marketplace and let agents invoke scene‑editing actions without needing an API key.

Key features

  • Local‑first: No external services required; all data lives on the user’s machine.
  • WebGPU‑accelerated 3D: Real‑time rendering with React Three Fiber + Drei.
  • Plugin system – Developers can ship new node types, tools, or side‑panels as npm packages that the editor loads at runtime.
  • AI‑ready MCP – A standard HTTP endpoint that describes scene state, accepts tool commands, and returns validation results, enabling “AI‑assisted design” workflows.
  • Versioned monorepo – Turborepo manages core, viewer, editor, CLI, and MCP packages; each can be published independently to npm.
  • Undo/redo & persistence – Zundo provides a 50‑step history; IndexedDB stores the scene across sessions.

Getting started

# Quick install (Node ≥22.13)
npx @pascal-app/cli editor   # launches editor + MCP

For development you need Bun (or pnpm) at the repo root:

bun install          # install all workspaces
bun dev              # watch + start Next.js dev server (http://localhost:3002)

To build and publish:

turbo build                     # build every package
npm publish --workspace=@pascal-app/core   # repeat for other packages

Typical use‑cases

  • Architects or interior designers building a quick 3‑D layout without cloud dependencies.
  • Researchers prototyping AI agents that need to manipulate a 3‑D scene (e.g., “place a chair against the wall”).
  • Plugin authors extending the editor with domain‑specific nodes (trees, HVAC, lighting).
  • Teams that want a deterministic, version‑controlled environment for collaborative design (run multiple MCP instances with separate PASCAL_HOME directories).

AI‑agent workflow example

  1. Install the skill package: npx skills add pascalorg/editor --skill pascal-3d.
  2. Start the local MCP server (pascal mcp setup claude).
  3. In Claude Code, run /mcp connect – the plugin automatically points the agent at the local MCP endpoint.
  4. The agent can now issue commands like createNode({type:"wall", …}) or runTool("ItemTool", {item:"chair", position:[1,0,2]}) and receive immediate visual feedback.

Where to learn more


All information above is taken directly from the repository’s README; no additional features have been inferred.

Related

  • Project
  • Project
  • Project
  • Project