pascal command comes from the @pascal-app/cli package. It runs the open-source
Pascal editor on your machine, connects MCP clients to your local projects, and lets a
hosted autonomous agent link itself to the person accountable for it. This page is the
command reference. For a walkthrough of the first run, Docker self-hosting and local
agents, see Run Pascal locally.
Install
You need Node.js 22.13 or newer, with npm. Run the CLI without installing it:npx first run installs the same version globally once the editor is
healthy, so the shorter pascal command works afterwards. To install it yourself:
npx @pascal-app/cli.
Commands
Run the editor
--port asks for a specific loopback port. If it’s taken, Pascal says so and picks a
free one. Without it, the operating system assigns a free port. --foreground keeps the
editor attached to the terminal; the command then exits with the editor’s exit code.
Open projects
open, resume, projects and the project commands also accept --runtime <path>,
used when they have to start the editor.
Update and diagnose
--version takes an exact version such as 1.0.5, or latest. --runtime applies
when the target is the version you’re running. update doesn’t touch
your projects or a globally installed pascal command. Update the command itself with
npm install --global @pascal-app/cli@latest.
Connect MCP clients
pascal mcp connect uses the MCP service in the npm package, so it works on a machine
that has never downloaded the web runtime. pascal mcp setup needs the global pascal
command at the same version as the CLI you run it with. See
Local MCP with the Pascal CLI for
client setup.
Claim a hosted agent
Both commands read the agent’s hosted Pascal API key from
PASCAL_API_KEY, send it to
Pascal, and never store or print it. --no-open or --json skips opening the browser.
A new claim supersedes the agent’s previous code. These commands don’t upload or link
local projects. See
Agent accounts and workspace invitations.
Plugins
The CLI doesn’t install plugins yet: any other
plugin subcommand fails with
plugin_command_unavailable. See Create a plugin.
The web editor runtime
The npm package holds only the CLI and the MCP service. The web editor itself is a separate archive per CLI version,pascal-web-runtime-<version>.tar.gz, attached to
the matching GitHub release. Each CLI
version pins its runtime by URL, size and SHA-256 digest.
First start
The first command that starts the editor (editor, start, open, resume,
projects, the project commands, or update) downloads the archive into
~/.pascal/tmp and shows its progress. Then it:
- Checks the archive against the SHA-256 digest published inside the npm package. On
a mismatch it deletes the download and installs nothing (
runtime_digest_mismatch). - Extracts it and installs it into
~/.pascal/runtime/<version>. - Starts the editor on it.
~/.pascal/data are separate and untouched.
After you upgrade the CLI, a running editor keeps its older runtime. pascal editor
warns you, and pascal restart or pascal update switches to the runtime the new CLI
pins.
Offline and air-gapped machines
Download the archive for your CLI version on a connected machine, copy it over, and pass it with--runtime:
--runtime goes through the same digest check as a download, so
it must be the archive for the CLI version you’re running. --runtime also accepts an
extracted runtime directory, which is installed as it is, without a digest check; use it
for a runtime you built yourself from the
editor repository.
When a download fails, the error (runtime_download_failed) prints the archive URL, its
expected digest and the --runtime command to run once you’ve copied the file.
Proxies
Downloads go throughHTTPS_PROXY (or ALL_PROXY), including a proxy with basic
authentication, and skip hosts listed in NO_PROXY. Only https:// archive URLs are
accepted.
Script the CLI
JSON output
Commands that take--json print one JSON document on stdout instead of text, for
example:
editor and start, --json also skips the automatic global install; add
--no-open to editor to keep the browser closed. pascal logs and
pascal mcp connect don’t take --json.
Errors
Without--json, an error prints Error: <message> on stderr. With --json, it prints
one line of JSON on stderr:
error is a stable code to branch on, message is for people, and details appears
only when there’s more to say, such as the HTTP status of a hosted request.
Exit codes
With
--foreground, pascal editor and pascal start exit with the editor process’s
own code.
Common error codes
Environment variables
Related
- Run Pascal locally: first run, files on disk, updates and Docker
- Connect an AI agent: local and hosted MCP
- Pascal API (v1): call the hosted Architect from your own code