You built a demo with Gradio or Streamlit. A model behind a clean little UI, running on your laptop. The next question is always the same: where do you put it so other people can use it — without your users' data taking a detour through another country?
As of this week, the answer on Canner is the same as it is for a Next.js site: drop the folder, get a live URL. Python apps now deploy with no Dockerfile and no configuration, on infrastructure that stays in Quebec.
Python deploys like everything else now
Canner reads your project files and figures out what it is. If there is a requirements.txt or a pyproject.toml at the root, it is a Python app. From there it recognizes the framework and starts it correctly:
- Gradio— the interface launches on the port Canner assigns; share the live URL the moment the build finishes.
- Streamlit— started on the assigned port, headless, ready for visitors.
- FastAPI and Flask— run under a production server, not the development one.
- Django— built and served through your project's WSGI entry point.
- Anything else that binds to the port it is given runs too.
Dependencies install into an isolated virtual environment with uv, so installs are fast and one project can never see another's packages.
Not just Python
The same drop-and-go path now covers more of the stack. Alongside the Node.js frameworks (Next.js, Astro, SvelteKit, Nuxt, Remix, Vite, and plain Node), Canner detects and runs:
- Go— compiled to a single static binary.
- Ruby— Rails, Sinatra, or Rack, with gems bundled in.
- PHP— Laravel, Symfony, or plain PHP.
- Rust — compiled with
cargoin release mode.
No buildpacks to pick, no base images to maintain. Detection is automatic from the files already in your project.
Why Canadian infrastructure matters for an AI demo
An AI demo is rarely just a demo. People paste real text, upload real documents, try it with real customer data — often before anyone has thought about where that data lands. If the app runs in a US-owned cloud, that data sits under US legal reach regardless of how Canadian the company deploying it is. We wrote about why a Canadian AWS region is not Canadian hosting if you want the legal detail.
Canner runs your app, its environment variables, and any database on disks in Quebec. Traffic does not pass through a foreign edge network in normal operation. For a tool people will feed real information into, that is the difference between “hosted in a Canadian region” and actually sovereign. More on that on the sovereignty page.
Deploying one
Put your dependencies in a requirements.txt, then choose any of the three ways in: drag the folder onto canner.ca, connect a Git repo, or run npx @canner-ca/cli deploy. If your app reads an API key or a model token from the environment, Canner asks for it before publishing. A minute later you have a live HTTPS URL.
Heavier machine-learning apps — the ones that pull in PyTorch, TensorFlow, or transformers — need more build and runtime memory, so those run on the Pro or Enterprise plan. A plain Gradio or Streamlit interface fits comfortably on the free tier.
If you came from an AI coding tool rather than a notebook, the no-Git deploy guide covers the same drag-and-drop flow for Cursor, Bolt, and v0 exports.