Skip to main content

CLI reference

The ecp CLI runs workflows in configured environments on Node.js.

Install

From a monorepo build: pnpm link --global inside packages/cli after pnpm run build. See Build from source.

Commands

ecp run

Invalid --input exits non-zero with Workflow accepts validation failed (including --dry-run). Extra unused keys on a valid object are allowed.

ecp validate

Checks the workflow graph and environment (bound capabilities). It does not check run input against workflow.accepts — use ecp run or --dry-run for that.

ecp compile

Compile Fluent/TS (or JS) workflow source to portable JSON. No --env required.
Bare ecp describe returns a light inventory (id, label, summary). Pass --capability or --extension with an exact id for full metadata and JSON Schema I/O. Search returns ranked ids; follow up with describe for detail.

ecp encode / ecp decode

Require an environment that binds the format extension you use.
Fluent decode is not supported — use ecp compile instead. JSON is the canonical manifest format.

ecp invoke

Call a single capability outside a workflow run:

ecp serve

Serve a bound environment over loopback HTTP (POST /v1/invoke, no auth). For the Ollama browser demo bridge with pairing, use ecp up instead.
Default host 127.0.0.1, port 3090.

ecp up

Start a loopback HTTP daemon that bridges Ollama for the browser demo (CORS + Private Network Access), then open the demo with a pairing token:
  • Default port 3090
  • GET /health{ ok, version, ollamaReachable } (no auth)
  • POST /v1/invoke — Bearer token; body { capability, input?, provider? }
Hosted HTTPS demos need Chromium for Private Network Access. Add origins with --cors-origin when needed. Local Vite or monorepo linking for the Graph Editor is documented in the browser-demo repository.

ecp test

Drive a workflow with a persistent test session that freezes state between operations. This is distinct from monorepo unit tests (npm run test:unit) or harness eval matrices.

ecp config secrets

OS keychain helpers:
Bind stored secrets into environments with secrets("KEY") — see Security and Environments.

Next steps