Canner for ColdFusion & CFML.
Your ColdFusion app doesn’t have to stay on ColdFusion — or on American soil.
BoxLang is the modern, CFML-compatible successor to Adobe ColdFusion and Lucee, from the team behind ColdBox and CommandBox. Canner runs it from Montreal: push your .cfm and .cfc source and it goes live on Canadian-owned infrastructure — no Adobe licence, no Dockerfile, no rewrite.
CFML runs a great deal of quiet, load-bearing software — government portals, insurance quoting, claims intake, back-office finance tools — much of it written years ago and still doing its job. Two problems have crept up on it. Adobe ColdFusion is licensed per CPU core and the bill renews every year, whether or not the roadmap gave you anything you needed; and the hosting market around CFML has thinned to a handful of specialist shops, most of them in the United States. If the data in that app is subject to PIPEDA or Quebec’s Law 25, US hosting also means US CLOUD Act exposure. BoxLang closes both gaps: it runs your existing CFML, it is open source, and Canner hosts it in Montreal on infrastructure with no US affiliate anywhere in the structure.
The licence renews whether you use it or not
Adobe ColdFusion is priced per CPU core, with an annual subscription on top for updates and support. For an app in maintenance mode — no new features, just keeping the lights on — that is a recurring cost with nothing to show for it. Lucee removes the fee but not the aging runtime or the hosting question.
A shrinking hosting market
The number of hosts that will run a CFML engine keeps falling, and the ones that remain are mostly generic Windows/IIS boxes or US specialists. There is no push-to-deploy, no preview environments, no managed database — and no Canadian option built for the residency question.
Regulated data on undifferentiated infrastructure
CFML’s strongholds — public sector, insurance, financial services — are exactly the sectors where a data-residency and vendor-jurisdiction answer is now expected in procurement. A ColdFusion app on a US host can’t give a clean one.
Deploys that are still a manual ritual
FTP the changed files to the server, restart the service, hope. No version history you can roll back to, no isolated place to test a change before it reaches users.
BoxLang runs your CFML
BoxLang parses .cfm and .cfc files as CFML. Canner detects a CFML source tree — templates, an Application.cfc, or a box.json — and automatically installs the bx-compat-cfml layer, which restores the legacy runtime semantics (date-mask letters, built-in-function signatures, the cfusion scope aliases) that a real migration depends on. Most CFML runs unchanged; Adobe-specific tags like cfdocument or direct Java interop are where a codebase usually needs a look.
No build step, no Dockerfile
The BoxLang MiniServer serves your source directory and compiles templates on the fly. Push the repo — or drag the folder into the dashboard, or run the CLI — and Canner installs any ForgeBox modules your box.json lists, then starts the server on the port it assigns. There is nothing to containerise.
A datasource, hosted in Montreal
Provision a managed Postgres database with one click; Canner injects its connection string. Add bx-postgresql to your box.json and define the datasource in Application.bx or Application.cfc from that variable, and your existing cfquery code keeps working — against a database that never leaves Canada.
Modern deploys, kept simple
Connect a GitHub repo for push-to-deploy, get a preview URL for every pull request, and roll back to any previous version in one action. HTTPS with automatic TLS, a custom domain, and cookieless traffic analytics come with it. Sessions and the cgi scope work behind the edge — Canner passes the proxy headers through.
Canner is 100% Canadian-owned and hosts solely in Montreal, Quebec — not subject to the US CLOUD Act. Moving a ColdFusion app here gives it a clean data-residency and vendor-jurisdiction story for PIPEDA, Law 25, and public-sector procurement. A signed Data Processing Agreement and a data-residency attestation are available for your compliance file (included on Studio, or through the Sovereignty & Enterprise SLA add-on on any plan). BoxLang itself is open-source software from Ortus Solutions; Canner provides the Canadian infrastructure it runs on and the paperwork to evidence where your application and its data live.
Will my existing CFML code run without changes?
Most of it. BoxLang is CFML-compatible and Canner adds the bx-compat-cfml layer automatically for CFML projects, which covers the bulk of legacy tag and script syntax, the built-in functions, and scope behaviour. The parts that usually need attention are Adobe-specific features (cfdocument / PDF generation, cfreport, some cfform controls) and any code that reaches directly into Java or ColdFusion internals. A small app often moves in an afternoon; a large one is worth scoping first.
Adobe ColdFusion, Lucee, or BoxLang — which does Canner run?
BoxLang, via its MiniServer. It reads your .cfm and .cfc files directly — it is not an Adobe ColdFusion or Lucee server, and there is no J2EE deployment. For CFML written to common Lucee or ACF conventions, the compatibility layer closes most of the gap; genuinely engine-specific code is the exception to check.
What happens to my <cfquery> and database?
Provision a managed Postgres database on Canner (one per project, hosted in Montreal) and Canner injects DATABASE_URL. Add bx-postgresql to box.json and define your datasource in Application.bx / Application.cfc from that variable; cfquery and queryExecute() then work as before. If you need to keep an existing external database for now, your app can connect out to it instead.
Do I need a box.json or server.json?
No. A folder of .cfm / .cfc files with an Application.cfc deploys as-is. A box.json is only needed when you want ForgeBox modules (a JDBC driver, a mail module, ColdBox) installed during the build — Canner reads it and installs them automatically.
I have scheduled tasks (<cfschedule>). Can I keep them?
Move each one to a Canner scheduled job: a cron expression that calls a URL in your app on a timer, with retries, timeouts, and run history. Point it at a .cfm endpoint that does the work. There is no in-engine scheduler, by design — the job outlives any single app restart.
Which plan do I need, and what does it cost?
BoxLang runs on the JVM, so it needs a paid plan for the memory and build budget — Live, at CA$9 / month, is the entry point. That includes a managed Postgres database, custom domains with automatic TLS, and two always-on projects. No per-core licensing, no per-seat fees.
Build without the sovereignty headache.
Tell us about your use case and we’ll help you scope it — from a single internal tool to a firm-wide rollout. For detailed or regulated projects, this reaches our team directly.