Deploy from your terminal.
The Canner CLI tars your project, ships it to Quebec, and streams the build log back to your shell. Works anywhere Node 20 runs — macOS, Linux, Windows, and Cursor’s integrated terminal. No git required.
Quick start
Three commands. canner login stores an API token from canner.ca/dashboard/account. canner init creates a project and writes canner.json in the current directory. canner deploy --follow ships it and streams the build log.
canner login cd my-site canner init canner deploy --follow
Commands
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.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.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.What gets uploaded
The CLI tars the current directory, excludes the “build noise” defaults, and streams the archive to the same upload endpoint the dashboard’s drag-drop uses. The server-side build pipeline detects the framework and runs install / build / deploy just like a git push.
Always excluded: node_modules, .git, .next, .nuxt, .turbo, .vercel, .svelte-kit, .DS_Store, Thumbs.db. Add a .cannerignore file for additional excludes.
CI / GitHub Actions
--follow exits with the build's success code, so a failed build fails the workflow.
- uses: actions/setup-node@v4
with: { node-version: 22 }
- run: npx @canner-ca/cli@latest deploy --follow
env:
CANNER_TOKEN: ${{ secrets.CANNER_TOKEN }}Cursor / AI agents
Works in Cursor's integrated terminal with no extension or MCP server. Agents can invoke it as a shell tool:
canner deploy --follow
Plan size caps
Same per-tier compressed-archive cap as the dashboard upload: Starter 50 MB, Basic 200 MB, Pro 500 MB. The typical thing that pushes a project over is a public/ folder full of media — drop it into .cannerignore and serve it from external storage if so.
Full docs and source: see the README at tools/cli/ in the canner repo on GitHub.