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.

$npm create runlot my-app
Get started

Three commands to start

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

1

Create

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

$ npm create runlot my-app
2

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

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 · env.auth · env.storage · env.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.

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.

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.

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
app/posts/page.tsx
import { Pool } from "@runlot/pg";
import { env } from "@runlot/next";

export default async function PostsPage() {
  const user = await env.auth.user();
  const db = new Pool({ db: env.db });

  const { rows } = await db.query(
    "select id, title from posts where owner = $1 limit 20",
    [user.id],
  );

  return (
    <ul>
      {rows.map((p) => <li key={p.id}>{p.title}</li>)}
    </ul>
  );
}
Compare

One place, instead of wiring several together

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

runlotCloudflareVercelSupabase
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.

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.

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.

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.

A separate database per project

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

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.

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.

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
$0 / mo

Enough for personal work and side projects.

  • 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
$19 / mo

For running what you built on your own domain.

  • 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
Talk to us

For companies where several people ship internal tools.

  • 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

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.