Node.js · Bun · Laravel · Python · Go · static sites
Deploy anything. Pay only while it runs.
Your app sleeps when nobody is using it. When someone comes back within a day, it wakes in about a tenth of a second. Asleep, it costs nothing. Push to GitHub or GitLab, or run one command, and it’s live.
Free for 3 apps and a database. No card needed.
- source
- working tree, 2 changes
- detected
- Next.js · Node 24
- build
- next build → standalone
- live
- https://shop.homeport.run
- idle
- asleep · not billed
- wake
- 0.1s
The 60-second path
From code to a URL
- 1
Bring your code
Connect GitHub or GitLab and every push deploys. Or run homeport deploy and ship your working tree, uncommitted changes included.
- 2
We work out the build
package.json, composer.json, go.mod or a folder of HTML: your repo already says how it builds. No Dockerfile, no YAML.
- 3
It's live
Your app gets an HTTPS address on homeport.run. Add your own domain when you are ready.
No repo handy? Deploy an example.
Next.js, Express, Elysia, Laravel, Go and more, ready to deploy from homeport-sh/examples.
Speed and cost
Quick for your visitors. Cheap to keep running.
You shouldn’t have to pick between an app that feels fast and a bill that stays small.
Fast
- A sleeping app wakes when a request comes in. Within a day of going to sleep, waking took 57 to 240 ms in our tests with example apps.
- Busy? homeport adds copies of your app as traffic grows, up to 10 on Growth and 20 on Business, and takes them away when it’s quiet.
- A deploy that fails its health check never goes live. The release before it keeps serving.
Pay for what runs
- $0.015 per GB-hour, only while your app is awake. Asleep, it costs nothing.
- On Free, a 256 MB app awake 2 hours a day uses 15 of the 50 GB-hours Free includes a month. You pay $0: Free never sends a bill.
- On Starter, the $5 fee covers a 512 MB app awake 2 hours a day. It uses $0.46 of the $5 included, so you pay $5. Even awake all month, you pay $5.48 in total.
- A paid plan’s fee counts as usage, not a charge on top: you pay the fee or your usage, whichever is more.
- No fee per seat or per app. Set a monthly budget, with alerts, so the bill holds no surprises.
Scale to zero
Asleep costs nothing. Waking takes a tenth of a second.
After 5 quiet minutes your app goes to sleep. It isn’t shut down: it stays asleep for a day with its memory kept, and any request in that day wakes it in about 0.1 seconds. After a full day with no visitors it starts fresh, as fast as your app starts. You pay $0.015 per GB-hour while it’s awake. Asleep is free.
Never want it to sleep? Set it to at least 1 copy and it stays awake, billed as awake time at the same rate. A 256 MB app awake all month uses $2.74, inside Starter’s $5, so you pay $5. Always on is on every paid plan; on Free, apps sleep when idle.
When traffic grows, set how many copies run: at least this many, at most that many. homeport adds copies under load and takes them away when it’s quiet, all the way back to zero.
How sleeping works- to wake, within a day of going quiet
- ~0.1s
- while it’s asleep
- $0
- copies, scaled with load, together on one host: about 7 GB per app
- 0 → 20
Included
Everything around your app
Your app’s own disk is scratch space. What must last goes in a database or a bucket, so your app can sleep, wake and scale without losing anything.
Preview deployments
Every pull or merge request gets its own address. Private to your team by default, and you choose which variables a preview gets.
Cron jobs
Run your own code on a schedule. Your app sleeps between runs, so you pay only while a run is going: by the second, 10 seconds at least.
Scheduled calls
homeport calls any URL on a schedule, with no app running. Billed per call: 10,000 a month free, then $0.01 per 1,000 on paid plans.
Postgres
A managed database, its DATABASE_URL set for you. It sleeps when idle too, and each preview gets a branch of it.
File storage
Private buckets for your app’s files and public ones for assets, with their keys in your variables. Downloads are free.
Environments
Production and your own, like staging. Each app gets its own address, variables, database and storage in each.
Security
Safe by default, with nothing to set up
As hands-off as serverless, without its limits. Your app is isolated from every other app, and attacks are turned away before they reach it, so they cost you nothing.
Isolated from every other app
Nothing else running on homeport can see into your app or reach it. It still runs as a full app, with none of the limits serverless puts on it.
Attacks stopped at the edge
Scripts pretending to be browsers are checked without your visitors noticing, and an address caught probing is held back for an hour.
Secret files never served
Requests for .env, .git and other files that hold secrets get a 404 before they reach your app, even if one was deployed by mistake.
Attack traffic never billed
Traffic we flag as an attack is never billed. It still shows on your bill, as a line that costs $0.
Secrets encrypted
Secret variables are encrypted when they are saved and never shown again, not even to us.
Always up to date
Security updates are applied for you, with nothing to schedule. Your app keeps serving while they roll out.
In one week of October 2026, homeport turned away 1,880 requests for .env, .git and other secret files.
Platforms
Give every customer their own domain
Building a SaaS? Each of your customers can have a subdomain like acme.yourapp.com, or bring their own domain. One app serves them all. Certificates are issued and renewed for each one, free.
- Add a tenant with one API call, the moment they sign up
- Growth includes 100 tenant domains, Business 10,000
- Past that, $1 per 100 a month
Built for your stack
- SvelteKitThe official adapter-bun runs it on Bun, or compiles it to one binary. adapter-node runs it on Node, adapter-static is served as files. Configured in vite.config or svelte.config.js.
- Next.jsIts standalone output, set for you. next-bun-compile makes one binary. output: export is served as files.
- NuxtNitro’s .output, on Node or Bun. Or compile it to one binary with Bun, with Nitro’s serveStatic: 'inline'.
- Astro@astrojs/node in standalone mode runs its server. Without an adapter, dist/ is served as files.
- React RouterFramework mode and Remix, started with react-router-serve as your start script says.
- TanStack StartThrough Nitro’s Vite plugin, nitro() from nitro/vite: on Node, or on Bun with nitro({ preset: 'bun' }).
- Node.jsSvelteKit, Next.js, Nuxt, Astro, React Router, TanStack Start, NestJS, Express, Hono, Fastify
- BunElysia, Hono or any Bun server, compiled to a binary or not
- LaravelFrankenPHP, Octane, queues, scheduler, Inertia SSR, Reverb
- PythonDjango, FastAPI and Flask, from uv.lock or requirements.txt
- Gogo.mod → a static binary
- rsc-kit and static sitesan export, a build folder or plain HTML, served as files
From your terminal
Your terminal, and your coding agent
Sign in from the CLI, deploy the folder you’re in, and pull a staging database’s credentials into .env.local to develop against.
homeport mcp lets Claude Code or Cursor deploy, read logs and set variables for you. Every change it wants to make is shown to you first, and nothing happens until you approve it.
$ curl -fsSL homeport.sh/install | sh
$ homeport login
$ homeport deploy
$ homeport env pull --env staging
$ claude mcp add homeport -- homeport mcpPricing
Start free. Pay for what runs.
Free needs no card. A paid plan’s fee is usage credit: Starter $5, Growth $20, Business $200 a month, and that much usage is included. No fee per seat or per app. Set a monthly budget and the bill won’t surprise you.
- Compute $0.015 per GB-hour, only while an app is awake
- Bandwidth $0.02 per GB
- Builds $0.005 per minute
- Postgres $0.14 per CU-hour awake, $0.45 per GB-month
- Storage $0.02 per GB-month, downloads free
- Sleeping and paused apps cost nothing