Docs · Reference

CLI reference.

@canner-ca/clideploys to Canner from any terminal — macOS, Linux, Windows, or an AI tool’s integrated shell. No git required. It wraps the same REST API the dashboard uses; every command below maps to one endpoint. Marketing overview on the CLI page.

Install & sign in

npm install -g @canner-ca/cli

canner login            # paste an API token from Dashboard → Account
canner init             # creates the project + writes canner.json
canner deploy --follow  # uploads, builds, streams the log

Commands

Setup

canner loginPrompt for an API token and store it at ~/.canner/credentials (mode 0600).
canner whoamiShow the email and plan this CLI is signed in as.

Projects

canner projectsList your projects.
canner initCreate a new Canner project and write canner.json in the current directory.
canner statusShow one project's state — URL, status, source, last request.
canner openOpen the tenant URL (or, with --dashboard, the dashboard project page) in your browser.

Deploys

canner deployTar the directory and upload it. --follow streams the build log and exits with the build's success code, so it works as the last step of a CI pipeline.
canner redeployTrigger a rebuild from the GitHub repo's HEAD without uploading. GitHub-connected projects only.
canner deploymentsList recent deployments, or with an id, show one deployment's build log (add --follow to tail if still in progress).
canner cancelAbort the in-flight build (or a specific one by id).
canner logsStream the running tenant's runtime logs. --lines N for history, --follow to keep streaming.

Resources

canner tokenList, create, or revoke the cnr_ API tokens that authenticate the CLI and API.
canner envList, set, or remove a project's environment variables (env set KEY=VALUE, --sensitive to hide).
canner domainsList, add, verify, or remove a project's custom domains.

JSON output

Add --json to any command for machine-readable output — tables and progress are suppressed and a single JSON value is printed to stdout, so it pipes into jq or an agent. Errors go to stderr as {"error":"…"} with a non-zero exit. With --json, deploy --follow does not stream the build log (it would corrupt the JSON) — poll canner deployments <id> --json instead.

What gets uploaded

canner deploytars the current directory and streams it to the same endpoint the dashboard’s drag-drop uses. These are always excluded (the server rebuilds them), plus anything in a .cannerignore:

node_modules, .git, .next, .nuxt, .turbo, .vercel, .svelte-kit, .DS_Store, Thumbs.db

Size caps

Starter 100 MB · Live 500 MB · Dedicated 1 GB. Full plans & limits.

Files & environment

~/.canner/credentialsStored API token (mode 0600).
canner.jsonPer-project slug — commit it alongside your source.
.cannerignoreOptional extra excludes (gitignore-like, no negation).
CANNER_TOKENUse this token instead of the stored one (handy for CI).
CANNER_API_BASEOverride the API endpoint (default https://api.canner.ca).

Related