Changelog
What's shipping at Canner.
We've been live since early May 2026 and ship most days. The list below is hand-maintained — pulled from production deploys, not from a feed. Subscribe via RSS coming soon. For now, check back, or follow hello@canner.ca.
Deploy BoxLang — CFML apps on the JVM
- BoxLang (boxlang.io) — the modern, CFML-compatible JVM language — now deploys straight from your repo. A box.json, server.json, Application.bx/.cfc, or a .bxm/.cfm template is all Canner needs to detect it.
- No build step: the BoxLang MiniServer serves your source and compiles on the fly, box.json modules install from ForgeBox automatically, and proxy headers are trusted so datasources and sessions work behind the edge. Runs on Java 21; Live plan or above. Guide at /docs/other-runtimes.
Deploy Java — Spring Boot, Maven, and Gradle
- Java now deploys the same way as everything else. Push a Maven or Gradle project — Spring Boot included — and Canner detects it, builds the JAR, and runs it. No Dockerfile, no configuration.
- The JDK is picked from your build: declare Java 17, 21, or 25 (via maven.compiler.release, java.version, or a Gradle toolchain) and Canner runs a matching Temurin runtime end to end — build and run alike.
- Available from Starter up, on the same Canadian infrastructure as every other runtime. Full guide at /docs/other-runtimes.
Choose your Postgres version — 17 or 18
- When you provision a database you can now pick Postgres 17 (the default) or Postgres 18. Existing databases stay on the version they were created with; nothing changes unless you choose.
- The Database tab shows the exact running version (for example, 17.9) so you know precisely what you're on, not just the major line.
Team members, granular permissions, and dark mode
- Invite people into your organization. Members sign in with their own account — passkey, password, or social — and you decide, per area and per project, whether each one can view or edit. Managing members stays admin-only.
- Belong to more than one organization? An organization switcher in the sidebar moves you between them, and every plan limit is counted once per organization, never per person.
- Seats are billed as you add them: an invitation beyond your plan's included seats adds a prorated seat charge, and removing a member releases it. Starter and Live include unlimited seats. Full guide at /docs/members.
- Also new: dark mode across the whole dashboard. Follow your system, or set light or dark from the top bar.
Background workers, and PHP 8.3 with Laravel
- New: worker projects. A bot, a queue consumer, or any long-running process that isn't a web server can now run on Canner without a health check or a public URL — it just runs. Mark a project as a worker in its settings, or redeploy an existing one as one.
- PHP 8.3 with a combined Laravel + Vite build: a Laravel app whose front-end assets are built by Vite now installs and compiles both sides in one pass, then serves through PHP.
Audit log — an append-only record of what happened
- Every meaningful action in your organization — deploys, member and permission changes, domain and billing changes — is now recorded in an append-only audit log, scoped to your organization, with who did what and when. Entries can't be edited or deleted.
- Included on Studio and Enterprise, retained for 13 months, and exportable — the trail an internal review or a Law 25 accountability request asks for. Full guide at /docs/audit-log.
Canner-issued GST/QST invoices
- Every payment now comes with a proper Canner invoice — numbered, with GST and QST shown as separate lines and our Quebec registration numbers on it. Download any of them, anytime, from Billing.
- Prices are shown before tax: GST and QST are added at checkout for new and changed subscriptions, at the rate your province requires (GST only outside Quebec, no tax outside Canada). Existing subscriptions keep their current total until their next plan change.
New pricing: two clear ladders, and resources you add à la carte
- Pricing is now two ladders. For builders: Starter (free) and Live (CA$9/month). For teams and businesses: Studio (CA$149/month) and Enterprise (quoted). You pick the ladder that matches why you're here, not a grid of overlapping tiers.
- Studio is the team plan: 10 always-on apps, team members with granular permissions, the audit log, and compliance documents (DPA + Quebec residency attestation) included.
- Resources are now add-ons, not a reason to jump a whole tier: an extra always-on app (CA$4/month), a performance block of 4 GB RAM + 2 vCPU (CA$69/month), +25 GB storage (CA$5/month), and extra seats (CA$5/month). Add what you need where you are.
- Existing subscribers keep the price they signed up at. The former Dedicated tier is now Studio; nothing about a current plan changes without you choosing it.
Passkeys, social sign-in, and Canner Auth
- Sign in to Canner with a passkey — your fingerprint, face, or device PIN. Add one from Account; it then becomes the expected way in, and we email you if anyone gets in without it.
- Google and Microsoft sign-in, linkable from your account page.
- See every device you're signed in on, and sign any of them out.
- New: Passkey (Canner Auth) — add passkey sign-in to your OWN app without building a user database. Available on every plan, including the free tier.
Node.js 24 is now available
- You can now build and run your app on Node.js 24 (24.18.0 LTS) as well as Node.js 22. Pick the version under Node.js version in your project settings; Node 22 stays the default, so nothing changes unless you switch.
- The version applies to both the build and the running app, so a project that needs Node 24 features gets it end to end — not just at compile time.
- Switching versions triggers one fresh install on your next deploy. Native dependencies are compiled for a specific Node version, so cached ones can't be carried across — after that first build, caching resumes as normal.
- If your package.json sets an engines.node range, the build now tells you exactly which versions are available instead of failing on a version you can't select.
Your app now lives at your-project.canner.app
- Your app now gets a canner.app address instead of app.canner.ca — for example, my-project.canner.app. It switches over on your next deploy; until then nothing changes.
- Your old address keeps working, permanently. Every app answers on both, so existing links, bookmarks and QR codes are unaffected. There's nothing you need to do.
- Why: browser safety systems judge an entire domain at once. Hosting customer apps under canner.ca meant one abusive page could affect every other app's address — and in July, it did. Customer apps now live on their own domain, so that can't happen again.
Save your app straight from your AI builder — remote MCP + scoped tokens
- New: a remote MCP server at https://api.canner.ca/mcp. Browser-based AI app builders — Lovable, Bolt, v0 — connect to a Model Context Protocol server by URL, so you can now point one at Canner, authenticate with an API token, and tell your agent "save my app to Canner." It creates a project and deploys your code onto Canadian infrastructure, from the chat.
- New tools: canner_create_project and canner_save_app. The agent sends your project's full source directly (no repo required) and Canner builds and hosts it. Thirteen MCP tools in all; @canner-ca/mcp for desktop agents (Claude Desktop, Cursor, Claude Code) now proxies the same endpoint.
- New: scoped API tokens. Mint a token limited to project + deploy access — no billing, no token management — so a credential you paste into a third-party builder can't do more than deploy. Existing tokens are unchanged and keep full access. See /mcp to get started.
Caching, leveled up: a native Astro provider, draft mode, and stale-while-revalidate
- New: a native Astro 7 cache provider. @canner-ca/astro-cache now plugs Canner into Astro's built-in route caching as a first-class provider — the same Astro.cache.set() API you'd use on Netlify, Vercel, or Cloudflare, pointed at Canner. Configure it once and cache per route, with tag- and path-based purging through one token.
- New: draft mode. Preview unpublished CMS content on its real URL without purging what everyone else sees — a request carrying your project's bypass secret renders fresh from origin while the public keeps the cached page. Carry the secret in a cookie, a ?__canner_bypass= link, or an X-Canner-Bypass header; turnkey helpers ship for Astro, Next.js, and Nuxt.
- New: stale-while-revalidate. Past a page's TTL, Canner serves the stale copy instantly and refreshes it once in the background — so no visitor ever waits on a cold render. Add stale-while-revalidate to your Cache-Control (or swr to the helpers) to turn it on.
- Also: invalidate by URL (not just tag) — send {"paths":["/blog/post"]} to the purge endpoint. Caching is now documented as what it is: framework- and CMS-agnostic, with DatoCMS as one example among any. Full guide at /docs/caching.
Scheduled SQL queries — run SQL against your databases on a cron
- New: scheduled SQL queries. Write SQL, set a cron schedule, and Canner runs it against your project databases in Montreal — reading and writing them by name (project.schema.table), joining across projects, and writing results straight into your Postgres. No external ETL tool, no data leaving Canada. It's the SQL counterpart to scheduled jobs (which POST to a webhook). Available on every plan under Compute → Scheduled queries; full guide at /docs/scheduled-queries.
- Each run is isolated: an in-memory engine with a per-query memory cap and timeout, the local filesystem disabled, and reach limited to databases your own account owns. Run history, run-now, pause/resume, and cancel are all in the dashboard.
- Security hardening: Data Workshop queries now run with the local filesystem disabled across the board, closing off host-file access from user SQL.
Real documentation, and a Live price that reflects what it is
- A full docs site is live at /docs: quickstarts for every supported framework and runtime (Next.js, Vite, Astro, Node, Python, Go, Ruby, PHP, Rust, static), guides for domains, databases and environment variables, and a troubleshooting page that decodes the exact error messages you might see in a build log. Fully bilingual.
- Live is now CA$9/month or CA$99/year. Existing Live subscribers keep their original price — this applies to new subscriptions only. Starter stays free, Dedicated stays from CA$29.
Simpler pricing: Starter, Live, and usage-metered Dedicated
- Three tiers instead of four. Starter is free and sleeps when idle; Live is a flat CA$4.90/month for always-on hosting, custom domains, and ML; Dedicated is usage-metered from CA$29 and scales as far as you need.
- Dedicated bills fairly: you pay for memory or storage — whichever you lean on more, never both — so you only ever pay for what you actually use.
- Machine-learning Python (PyTorch, TensorFlow) and Rust now run on Live, not just the top tier. Compliance documents and audit-log export are included on Dedicated.
A documented REST API, an OpenAPI spec, and an MCP server for AI agents
- The Canner API is now a proper REST surface under /v1, described by an OpenAPI 3.1 spec with an interactive reference at api.canner.ca/docs. Manage projects, deployments, domains, databases, environment variables, and billing from your own code. A new developer guide lives at canner.ca/developers.
- Consistent error responses (a stable code, a message, and a request_id), rate-limit headers on every response, and keyset pagination on the list endpoints. Existing dashboard and CLI paths keep working unchanged.
- New @canner-ca/mcp: a Model Context Protocol server that gives AI agents — Claude Desktop, Cursor, and others — native tools to deploy and manage your projects. Zero dependencies, in keeping with Canner's clean supply chain. See canner.ca/mcp.
- The @canner-ca/cli gained a --json output mode for scripts and agents, plus new token, env, and domains commands.
Deploy Python, Go, Ruby, PHP, and Rust — not just Node
- Python now deploys the same way as everything else, with FastAPI, Flask, Streamlit, Gradio, and Django detected automatically. Drop a Gradio or Streamlit AI demo and get a live URL.
- Go, Ruby (Rails, Sinatra), PHP (Laravel, Symfony), and Rust join the list too — no configuration, automatic detection.
- More JavaScript frameworks recognized out of the box: Angular, Create React App, Gatsby, and Docusaurus, plus full-stack apps that run their own server.
- Machine-learning Python (PyTorch, TensorFlow) and Rust are available on Pro and Enterprise.
Enterprise plan, compliance documents, and a French blog
- New Enterprise plan with a dedicated server, priority support, and a 99.9% uptime commitment.
- A data processing agreement and a Quebec data-residency attestation are now available as one-time add-ons — included on Enterprise.
- The full blog is now available in French, and the pricing page has a clearer side-by-side comparison.
Response caching with targeted purge
- Opt-in tag-based HTTP caching, served from Canner's own infrastructure in Quebec — not a foreign edge network. Available on every plan.
- A headless-CMS publish can purge exactly the affected pages via a per-project webhook. Cache hit ratio is shown on each project.
Stronger build isolation
- Every build runs fully isolated under its own identity, with install scripts and network access locked down by default. Build logs now clearly flag an out-of-memory build instead of a generic failure.
Data Workshop — SQL analytics on your uploads
- Upload CSV, Parquet, or JSON and run standard SQL over it in milliseconds, right from the dashboard. Included on every plan, with per-tier storage and query limits.
Drag-and-drop uploads and a command-line tool
- Deploy without Git: drag a folder or a .zip onto the homepage, or upload from the dashboard. A static site (a folder with an index.html) deploys instantly, with no build step.
- New @canner-ca/cli: run npx @canner-ca/cli deploy from any terminal — including inside Cursor — to ship the current directory.
Pricing: free Starter, .com added to free domain offer
- Starter is now a free plan, not a 30-day trial. Resources on Starter are pooled across free accounts and deprioritized when paid builds are queued.
- Basic and Pro charge immediately on signup — no 30-day trial. What you sign up for is what you pay starting day one.
- Free domain offer expanded to include .com: Basic includes .com or .ca on monthly, plus .quebec on annual; Pro includes .com, .ca, or .quebec on either interval.
Domain checkout: CIRA CPR registrant form + Quebec acknowledgment
- New registrant form on the domain checkout modal, with proper CIRA CPR (Canadian Presence Requirements) dropdown for .ca registrations.
- Quebec acknowledgment step for .quebec domains. Friendly 409 copy when the requested name was registered minutes earlier by another customer.
Yearly billing toggle + free .ca / .quebec domain credit
- Billing page now offers monthly and annual intervals. Annual saves two months versus monthly.
- Basic annual and Pro (either interval) include a free .ca or .quebec domain registration, applied at checkout.
More reliable cold-start, wake, and preview deploys
- Idle projects sleep and wake automatically on the next request — no cold-start surprises. Live runtime logs and pull-request preview deployments now work consistently.
Per-project metrics, preview deploys on PR, per-tenant systemd, public status page
- Per-project hourly traffic metrics with status breakdown, visible as a chart on the project page.
- Preview deployments on pull requests. Each PR gets a per-branch runtime at <branch>--<slug>.app.canner.ca, torn down when the PR closes.
- Each project now runs as its own isolated system user, for stronger separation between tenants.
- Public status page at canner.ca/status, server-rendered with a 10-second platform-side cache.
Stripe billing, custom domains with auto-TLS, generic frameworks, API tokens
- Stripe billing wired end-to-end. Add a card and subscribe to a paid plan in a few clicks.
- Custom domains with automatic Let's Encrypt TLS issuance via Caddy. CNAME your domain and the certificate appears in seconds.
- Generic framework detection: Next.js, Vite (React, Vue, Svelte), and plain Node.js applications all build and serve without configuration.
- API tokens (cnr_…) for programmatic access. Retry, cancel, and rollback endpoints on every deployment.
- Bilingual French / English dashboard. Account deletion (cancels subscription, drops all tenant DBs and runtimes).