Node.js · Bun · Laravel · Go · static sites
Deploy anything. Pay only while it runs.
Your app sleeps when nobody is using it and wakes in about a tenth of a second when someone does. 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
- frozen · 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.
Scale to zero
Asleep costs nothing. Waking takes a tenth of a second.
After 5 quiet minutes your app is frozen, not shut down, and it stays frozen for a day. Any request in that day thaws 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. Frozen time 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 is $2.74. 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.
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
- 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
- Frozen, sleeping and paused apps cost nothing