@mediamonks/canopy-cli
v0.7.28
Published
Canopy CLI — create, develop and deploy Canopy projects.
Downloads
2,519
Keywords
Readme
@mediamonks/canopy-cli
canopy — create, develop, deploy and manage Canopy projects from the
terminal.
canopy login # OneLogin browser PKCE flow → CLI token
canopy create / projects / delete
canopy dev [--local [--pull]] # remote-first dev, or the offline sandbox
canopy deploy [--no-build] # authorize → signed upload → complete
canopy rollback / deploys / download
canopy db pull | snapshot | snapshots | restore
canopy token create | list | revoke
canopy usage / docs / whoami / logoutControl-plane calls go through src/api.ts (/control/v1 on the active
site's api. host, bearer token — CANOPY_DEPLOY_TOKEN in CI wins over the
login token); database safety runs on the data plane (apiDataRequest with
X-Canopy-Project). canopy deploy streams bundle bytes straight to
/data/v1/uploads/:grant under a short-lived signed grant — they never
transit the control plane (docs/09-plane-split.md D-d). Multi-site profiles:
docs/10-cli-sites.md.
canopy dev proxies /_api to the platform with a 12-hour project-scoped
dev token; --local boots the PGlite + filesystem sandbox (src/local.ts),
mounting the exact @mediamonks/canopy-data-plane routers the platform
serves — Postgres-dialect, matching the Postgres targets. ai/services still
proxy to the real platform when logged in.
Working on it
The globally-installed canopy is the published npm release — it will
not exercise your changes. Build and use the local symlink instead:
vp pack # in packages/cli (or `vp run dev` for --watch)
canopy-dev … # symlink to packages/cli/dist/index.mjsTests: vp test (includes the sandbox end-to-end suite against real
PGlite). Publish via the staged workflow (root CLAUDE.md), after the SDK
when workspace:* moved.
