Skip to content
runlot
Free tier is open

Everything your app needs,
in one place.

Hosting, PostgreSQL, login, file storage, email, and Git repositories in a single project. Ship a Next.js app or a small API without configuring a server.

Start freeRead the docs
npm create runlot my-app
my-appDeployed

runlot deploy

Deployed

my-app.me.runlot.app

Backup · 12 min ago

Notes

  • This week's work2026.09.10
  • Launch checklist2026.09.09
  • Ideas2026.09.08

Example app · saved only on this page.

  • Auth
  • Storage
  • Email
  • Domains

The tools you already know.

Supported frameworks and ORMs

Keep the frameworks and data tools you already use.

  • Next.js
  • Prisma
  • SvelteKit
  • Drizzle
  • Astro
  • TypeORM
  • Hono
  • React Router
  • Sequelize
  • Nuxt
  • Knex
  • SolidStart
  • Qwik
  • Express
Get started

Three commands to start

Create it, deploy it, add what you need. Three lines and you are done.

  1. 01

    Create

    $ npm create runlot my-app

    Pick Next.js, Hono, or a static site. The setup you need is already in the template.

  2. 02

    Deploy

    When the deploy finishes you get a URL that already works. There is no server for you to configure.

    $ runlot deploy
    https://my-app.me.runlot.app

    my-app is the project and me is your personal organization.

  3. 03

    Declare features

    One line each in runlot.json, and the deploy creates them. Your app code reaches them through env.

    {
      "database": true,
      "auth": true,
      "storage": true,
      "email": true
    }
    env.db
    Real PostgreSQL
    env.auth
    Login
    env.storage
    File storage
    env.email
    Email

    There is no command to turn them on. Declare only the ones you need.

Features

It is all here

Create a project and the rest comes with it. There is nothing to sign up for separately and nothing to wire together.

Read the docs

Real PostgreSQL

The SQL and transactions you already know. Reach the same database from your app through env.db, and from your terminal through psql, pgAdmin, or the ORM you already use.

$ psql

runlot=# select * from users limit 4;

idnameactive
1jiwootrue
2minseotrue
3haneultrue
4seojunfalse

users · 4 rows

Login

Email and social login with session handling. Identify the user in your server code and decide what their data lets them do.

File storage

Upload images and attachments, and share them through signed URLs that expire. Nothing external to connect.

Email

Every project gets a mail address. Send with env.email.send, and mail sent to that address reaches your worker's email() handler. What went in and out is in the dashboard.

Git repositories

Create a repository inside the project and push over HTTPS or SSH. Commits and files are right there in the dashboard. No separate service to host your code.

Domains

Point a domain you already own at your project. Certificates are issued and renewed for you. Run the DNS zone on our nameservers, with DNSSEC if you want it.

Idle costs $0

With no requests coming in, your app stops running and starts again on the next one. Your data and settings stay exactly as they were.

Hourly backups

Every hour a snapshot is encrypted and kept. Pick a point in time in the dashboard to restore your data.

src/index.ts
import { Hono } from "hono";import { Pool } from "@runlot/pg"; const app = new Hono<{ Bindings: Env }>(); app.get("/posts", async (c) => {  const user = await c.env.auth.user(c.req.raw);  const db = new Pool({ db: c.env.db });   const { rows } = await db.query(    "select id, title from posts where owner = $1 limit 20",    [user.id],  );  return c.json(rows);}); app.post("/upload", async (c) => {  const form = await c.req.formData();  const file = form.get("file") as File;  const url = await c.env.storage.put("covers/" + file.name, file);  return c.json({ url });}); export default app;
  • env.dbReal PostgreSQL
  • env.authLogin
  • env.storageFile storage
Code

Database, login, and files
straight off env

No connection strings or API keys to configure. Reach them through env, with the frameworks and ORMs you already use.

  • SQL values are passed safely as placeholders
  • Prisma, Drizzle, Kysely, TypeORM, Knex, and Sequelize are supported
  • Local development uses the same env API
Docs
Compare

One place, instead of wiring several together

The things you used to configure and operate service by service live inside one project.

FeaturesCloudflareVercelSupabase
App hostingYesYesYesNo
Next.jsYesNeeds an adapterYesNo
DatabaseReal PostgreSQLSQLite (D1)Bring your ownPostgreSQL
Login · filesYesPartialPartialYes
While idle$0 · wakes itself$0$0Paused after 7 days · manual restore
Fixed cost per projectNoneNonePer seatAn instance per project
Services to runOneTwo or moreTwo or moreTwo or more

Compiled from each service's public documentation and pricing pages. Tell us if something has changed.

Service comparison table (scrolls horizontally)

For teams

Deploy what you built at work, as it is

AI coding tools made building an internal tool easy. Deploying it still means asking someone. On runlot, who built it and what data it touches is attached from the start — so there is nothing left to explain to your security team.

  1. Organizations and roles

    Create an organization and invite people. Admin, member, and viewer roles decide who deploys and who only looks. SSO with your company account connects as it is.

  2. Open it to your org only

    Set project access to organization members only and nobody else reaches it. The check runs before your app code does, so you do not rebuild a login screen per app.

  3. A separate database per project

    Dozens of internal tools, each with its own PostgreSQL. Which data sits where is answered by the project list.

  4. Who did what, and when

    Deploys and rollbacks, membership changes, secrets and database work all land in the organization audit log. Search it by person, project, or date, and export it when you need to.

  5. Deploy approval

    Require an admin to approve what goes to production. Deploying itself is never blocked — you still get a preview — only the moment it reaches real users.

  6. When someone leaves

    Every project has an owner. When a member leaves the organization, their projects get handed to someone else, and anything left without an owner shows up in the list — so no service keeps running quietly.

Organization usage is broken out by project and owner, and lands on the invoice that way. If your data cannot leave the company, we also install runlot on your own infrastructure.

Talk to us about teams
Pricing

Try it free first

Nothing is charged within the free plan — not even with a card on file.

Free

Available now

Enough for personal work and side projects.

$0/ mo

  • 100,000 requests a day
  • 3 projects · 150 MB of PostgreSQL each
  • 1 day of backups · 1 GiB of file storage
  • 1 custom domain
Start free

Pro

Solo · small teams

For running what you built on your own domain.

$19/ mo

  • 3 million requests a month included
  • 30 projects — ten times the free plan
  • 7 days of backups · 10 GiB of file storage
  • Unlimited custom domains
  • Usage billed only above what is included, with spending limits on by default
Start Pro

Enterprise

Custom quote

For companies where several people ship internal tools.

Talk to us

  • No cap on members
  • Annual contract · invoice billing
  • A dedicated support channel and onboarding
  • Self-hosted install option
Talk to us
FAQ

Frequently asked questions

Read the docs
What happens when I go over a limit?

On the free plan it never turns into a bill. Requests stop for the rest of that day and open again the next one. On Pro, only usage above what is included is billed, and a monthly spending limit is on by default so it cannot climb past it. We tell you before you get close.

Can I move an app I already built?

Yes. Run runlot deploy from your existing repository. It recognises the framework and writes the configuration it needs. For the database, a pg_dump file loads straight in.

Can I take my data out later?

Yes. It is standard PostgreSQL, so pg_dump works as it always does, and file storage downloads in one go from the dashboard or the CLI. Nothing is kept in a format that locks you in.

Which region does it run in?

Seoul, for now — one region. Your app and your database sit in the same place, so a database call never crosses a network. We will announce other regions as they open.

Deploy your first app.

Three minutes from signing up to your first deploy.