Pascal Editor
Running Pascal locally: versioned runtime, two services and persistent data
Trace the CLI installer, loopback listeners, MCP token and database path so upgrades do not confuse application files with user projects.
What you will learn
- The CLI supervises more than a web page
- Keep runtime files and project data distinct
- Treat local health and public deployment as different outcomes
Before you start
- Basic scene-graph, JavaScript and HTTP concepts
- An owned small scene with expected dimensions and relationships
Explain the implementation boundary and reproduce the chapter’s checklist or narrow graph exercise.
Key takeaways
- The editor and MCP are independently supervised services.
- Runtime directories and persistent projects need separate handling.
- A local health check is not proof of public-hosting readiness.
The CLI supervises more than a web page
The runtime manifest names separate editor and MCP entry points plus health paths. The installer validates manifest fields, restricts version-name characters, checks resolved entrypoints remain within the runtime directory and verifies that the files exist. Installation uses a lock and a temporary copy before activation; these are implementation checks, not a cryptographic signature verification claim.
The process manager starts the editor on 127.0.0.1 with an available port and a pascal.localhost URL, then starts MCP on another loopback port. It waits for the editor and MCP health checks separately and records process identity. If startup fails, it cleans up the processes it started and its state/token files; we did not execute those lifecycle operations.
Keep runtime files and project data distinct
The launcher passes an explicit PASCAL_DATA_DIR to its services. The reusable SQLite store also supports PASCAL_DB_PATH, a data-directory override and platform-specific defaults including Windows APPDATA and XDG paths. Therefore the README’s home-directory shorthand is not a universal path for every host or embedding. Resolve the actual path before planning backup or migration.
The MCP process receives a freshly generated token and the local connector reads it from a restricted-mode file. Preserve project data independently of versioned application runtime directories, and protect token files rather than putting them into documentation or diagnostics. An application update should not be implemented by deleting the entire user data root.
Treat local health and public deployment as different outcomes
A healthy editor plus MCP service establishes that the local supervisor’s checks passed. It does not establish browser rendering, successful persistence or suitability for shared public access. The checked transport permits non-loopback binding only with a token, but that condition alone does not provide TLS, tenant authorization, asset policy or operational recovery.
For a local evaluation, retain loopback, record runtime version, export a non-sensitive project and test restoration before upgrading. Public hosting needs a separate design based on the host application and its authentication model. The record below intentionally describes an unexecuted local baseline rather than presenting the CLI as a ready-made multi-tenant deployment recipe.
Implementation steps
- 1
Inspect the runtime manifest and selected package version.
- 2
Resolve the actual data directory before installing or updating.
- 3
Keep loopback listeners and protect the generated token.
- 4
Verify save, export and restoration with a test project.
Copy-ready example
{"editorHost":"127.0.0.1","mcpHost":"127.0.0.1","services":["editor","mcp"],"dataPathMustBeResolved":true,"publicHostingVerified":false,"runtimeExecuted":false}Frequently asked questions
Is the database always under the same home path?
No. Explicit environment settings and platform defaults affect the reusable store, and the managed launcher passes its chosen data directory.
Does runtime validation verify a publisher signature?
The inspected code checks structure, paths and file existence. Those checks must not be described as signature verification.
Sources
- README.mdSource checked 2026-09-08
- LICENSESource checked 2026-09-08
- packages/cli/package.jsonSource checked 2026-09-08
- packages/core/package.jsonSource checked 2026-09-08
- packages/viewer/README.mdSource checked 2026-09-08
- packages/cli/src/runtime.tsSource checked 2026-09-08
- packages/cli/src/editor-process.tsSource checked 2026-09-08
- packages/cli/src/mcp-connector.tsSource checked 2026-09-08
- packages/mcp/src/transports/http.tsSource checked 2026-09-08
- packages/mcp/src/storage/sqlite-scene-store.tsSource checked 2026-09-08
- packages/core/src/store/use-scene.tsSource checked 2026-09-08
- packages/viewer/src/components/renderers/node-renderer.tsxSource checked 2026-09-08
- packages/viewer/src/lib/renderer-capability.tsSource checked 2026-09-08
- packages/core/src/validation/validate-build-json.tsSource checked 2026-09-08
- packages/core/src/utils/heal-scene-graph.tsSource checked 2026-09-08
- packages/mcp/src/storage/slug.tsSource checked 2026-09-08