Write in any language. We run it.
Push a Django, FastAPI, Go or Laravel app as it is. No build file to write, no SDK to add. We detect the language from the project's files, build it and run it on instances.
Bring the language you use
A project with no package.json is recognised from its files: requirements.txt or pyproject.toml, go.mod, composer.json, pom.xml, Gemfile, Cargo.toml.
Python
Django, FastAPI and Flask. Bytecode is compiled in the build, so the app starts fast.
Go
We build the binary. Under 0.2 seconds to the first answer.
PHP
Laravel and Symfony, with the dependencies composer.json names.
Java
Spring Boot and any Maven or Gradle project.
Ruby
Rails and any app with a Gemfile.
Rust
A Cargo project, built on our servers.
.NET
ASP.NET Core web apps.
JavaScript and TypeScript
Functions and Next.js or Astro apps, as always.
From code to instances
The same path as every app and function: main is production and every other branch gets a preview of its own.
Push
With git push, the CLI, or a connected repository.
git push cloudhost mainDetect and build
The language, version, install and start commands come from your files, and the build log shows them.
detected python; start: uvicorn main:appInstances start
The new version's first instance starts at once, and the old version answers until it is ready.
cloudhost instances my-apiAutoscale
More load adds instances; idle time brings them down to the minimum, even zero.
cloudhost instances set my-api --min 0 --max 5
What you get
No build file
No Dockerfile, no config file. The start command comes from your framework; if needed, a web: line in a Procfile sets it.
Instances, sized for you
Each instance is a copy of your program with its own vCPU and memory. Pick small, medium or large, separately for production and previews.
Autoscale down to zero
Set the minimum and maximum instances. With 0, nothing stays on after 5 idle minutes, and the next request waits for a short cold start.
SQL database and cache, no password
DATABASE_URL and CACHE_URL are set and hold no secret. The platform checks on every connection that the instance belongs to that app. Any driver works.
HTTPS out
Your program calls any public API over HTTPS. Common HTTP clients pick up the settings by themselves. Internal network addresses are blocked.
Logs and the instance list
Every line on stdout and stderr is a log line, with the instance's id. See the running instances and why each one stopped in the dashboard, the CLI and MCP.
Deploys with no wait
No request waits for the new version's cold start. Traffic moves once the first new instance is ready.
Previews and rollback
As for any app or function: a preview per branch, rollback with no rebuild, custom domains, secrets and alerts.
Walled off and checked
The app's folder is read-only and only /tmp can be written. Each instance has its own resource limits, and every build's image is checked for vulnerabilities before release.
Answer on PORT. We do the rest.
Your program accepts requests on the port in PORT and writes logs to standard output. Keep data in the project's database, cache or bucket.
import os
import psycopg
from fastapi import FastAPI
app = FastAPI()
@app.get("/orders")
def orders():
# DATABASE_URL holds no password: the platform checks who is calling
with psycopg.connect(os.environ["DATABASE_URL"]) as db:
return db.execute("select id, total from orders limit 10").fetchall()Instance sizes
| vCPU | Memory | |
|---|---|---|
| Small | 0.25 | 512 MB |
| Medium | 1 | 2 GB |
| Large | 4 | 8 GB |
Only while it runs
Each instance is billed for its vCPU and memory, per second, from when it is ready until it stops. An instance that is off costs nothing, and a failed start is not billed. It comes out of the month's credit first, then the wallet.
Questions
Python, Go, PHP, Java, Ruby, Rust and .NET, beside JavaScript and TypeScript. The version is read from the project's own files (such as .python-version or go.mod). If we do not offer it, the build says so plainly and names the versions offered.
No. We build the image from your code and keep it on our own servers. You send only your project's code.
Bind the SQL database and cache to the app; DATABASE_URL and CACHE_URL are set and hold no password. On every connection the platform checks that the instance belongs to an app with that binding, so no other app reaches it. Each branch preview uses its own database branch.
A Go program takes under 0.2 seconds. A FastAPI app on a small instance takes under 5 seconds, because its bytecode is compiled in the build. If the first request must not wait, set production's minimum to 1.
Yes. Requests arrive over HTTP/1.1 and WebSocket. A connection that moves no data for 5 minutes counts as idle; send pings to keep it.
A JavaScript function runs per request in milliseconds and is billed per request and CPU time. A program in another language is a full process that runs on instances and is billed for the time they are on. Versions, previews, rollback, secrets and logs are the same for both.
Push your project as it is
One command, in any language.
Sign-up is by invite for now. If you have a code, create your account.
Sign up withEmail codeSMS code