Deno · 2.9.8
Deno hosting, 24/7
Ship an API with Deno.serve, a bot or a worker and leave it running. The platform recognizes the project from deno.json or deno.lock and runs the command with deno run, in an isolated container with automatic restart when the process dies.
Who designed Deno
Ryan Dahl created Node.js in 2009 and, in 2018, introduced Deno at JSConf EU with a list of what he would do differently. Written in Rust on top of V8, Deno 1.0 shipped in May 2020 with native TypeScript and a permission model. Deno 2, from October 2024, started running projects with package.json and npm modules.

Ryan Dahl
David Calhoun · CC BY 2.0
Explicit permissions from day one
Deno was born denying file, network and environment access by default, granted through --allow-* flags. On Vertra the app runs with full permissions (-A) inside an isolated container, so there is no flag to declare.
TypeScript out of the box
A single binary runs, formats, tests and type-checks. There is no mandatory tsconfig, no separate compiler and no bundling step to get started.
Web standards first
fetch, Request, Response and streams are the same ones the web defines. What the browser already specifies, Deno uses instead of inventing its own API.
What the platform does for a Deno project
TypeScript out of the box and a single start command; the platform takes care of the container around it.
Detection from deno.json and deno.lock
With a deno.json or a deno.lock at the project root, the platform knows it is Deno and picks the runtime on its own. You only declare MAIN and, if you want, START.
TypeScript with no build step
Deno runs .ts and .tsx directly. There is no dist to generate, no tsc to configure and no bundler in the way: the MAIN file is what runs.
Two versions, one config line
2.9.8 is both the recommended and the latest; 2.8.3 is still available. Switching means changing VERSION in vertracloud.config and deploying again — there is no image to pick and no Dockerfile to maintain.
Auto-restart with a brake
An unhandled promise rejection does not leave the service down: the process is restarted on its own, on every plan. If it breaks 5 times in 10 minutes, the platform flags a crash loop and turns auto-restart off for 24 hours. Exiting with code 0 does not trigger a restart.
What people run on Deno here
Small, direct services where the runtime already brings the server, TypeScript and permissions.
APIs with Deno.serve, Hono and Oak
Publish the application to get a vertraweb.app subdomain with TLS. The server has to listen on 0.0.0.0 at the port declared in PORT — anything bound to localhost never sees a request from outside.
Discord and Telegram bots
A bot is a process with no HTTP port. The token goes in the dashboard environment variables, read with Deno.env.get, never in a .env file inside the zip.
Workers and background jobs
A queue consumer, a scheduled routine with Deno.cron, a scraper: the container stays up 24/7 and the dashboard shows real RAM next to the MEMORY ceiling.
Plain TypeScript functions and services
Code you already run locally with deno run goes up the same way. npm: and jsr: dependencies keep working, and deno.lock keeps resolution the same from one deploy to the next.
Available Deno versions
2.9.8 is both the recommended and the latest; 2.8.3 is still available. With no VERSION in vertracloud.config, the application starts on the recommended one.
| Version | vertracloud.config | Status |
|---|---|---|
| 2.9.8 | VERSION=2.9 | RecommendedLatest |
| 2.8.3 | VERSION=2.8 |
The whole configuration
vertracloud.config is an optional INI file at the project root. MAIN points at the entry file, which the platform runs with deno run -A; VERSION picks the Deno line; MEMORY sets the RAM ceiling.
NAME=minha-api
MAIN=main.ts
VERSION=2.9
MEMORY=512A plan for every stage of the project
Memory and storage change with the plan; the language does not. Compare what each plan unlocks and pick the one that fits the project today.
Compare plansAlso runs here
Same platform, same deploy, a different stack.
Frequently asked questions about Deno hosting
Permissions, version and port: the questions people ask most when they deploy Deno.
Which Deno versions can I use?
2.9.8 is both the recommended and the latest, and 2.8.3 is still available. The choice is made with the VERSION key in vertracloud.config; without it, the application starts on the recommended one.
Do I need to declare Deno permissions (--allow-*)?
No. The platform runs deno run -A, with all permissions granted inside the isolated container. If you override START, you become responsible for the flags: without --allow-net, for example, the server cannot open the port.
Do I need a package.json?
No. A deno.json is enough, and you can import from npm: and jsr:. If the project already has a package.json for Node compatibility, it keeps working.
The API starts, but the subdomain does not respond.
Two causes. The server has to listen on 0.0.0.0 at the port declared in PORT; and the application has to be published to the web, which requires 512 MB of RAM and is available from the Pro plan up.
How do I pass secrets to the app?
In the dashboard environment variables tab: they are injected into the container at startup and encrypted at rest. The platform does not read a .env file; read the values with Deno.env.get.
Deploy your Deno project today
Create the account, upload a zip with your deno.json and your entry file, or connect the GitHub repository, and follow the process start in the dashboard terminal.
Create account