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 login | Prompt for an API token and store it at ~/.canner/credentials (mode 0600). |
canner whoami | Show the email and plan this CLI is signed in as. |
Projects
canner projects | List your projects. |
canner init | Create a new Canner project and write canner.json in the current directory. |
canner status | Show one project's state — URL, status, source, last request. |
canner open | Open the tenant URL (or, with --dashboard, the dashboard project page) in your browser. |
Deploys
canner deploy | Tar 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 redeploy | Trigger a rebuild from the GitHub repo's HEAD without uploading. GitHub-connected projects only. |
canner deployments | List recent deployments, or with an id, show one deployment's build log (add --follow to tail if still in progress). |
canner cancel | Abort the in-flight build (or a specific one by id). |
canner logs | Stream the running tenant's runtime logs. --lines N for history, --follow to keep streaming. |
Resources
canner token | List, create, or revoke the cnr_ API tokens that authenticate the CLI and API. |
canner env | List, set, or remove a project's environment variables (env set KEY=VALUE, --sensitive to hide). |
canner domains | List, 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/credentials | Stored API token (mode 0600). |
canner.json | Per-project slug — commit it alongside your source. |
.cannerignore | Optional extra excludes (gitignore-like, no negation). |
CANNER_TOKEN | Use this token instead of the stored one (handy for CI). |
CANNER_API_BASE | Override the API endpoint (default https://api.canner.ca). |
Related