本文へスキップ
runlot
無料プラン公開中

アプリに必要な
ものは、ここに。

ホスティングから PostgreSQL、ログイン、ファイルストレージ、メール、Git リポジトリまで一つのプロジェクトで使えます。Next.js アプリも小さな API も、サーバー設定なしでデプロイできます。

npm create runlot my-app
ノートパソコンのターミナルから runlot プロジェクト一つへ向かう矢印。プロジェクトの枠の中にアプリ画面とデータベースがあり、その下にログイン・ファイル・メール・ドメインが一列に並んでいます。
project / 001my-app.me.runlot.dev
my-app デプロイ済み

runlot deploy

Bundling…

Bundled 12 files, 84.2 KiB

Uploading… (84.2 KiB)

Deploying…

v3 9f2c… 2026-09-16T04:12Z

https://my-app.me.runlot.dev

データベース
PostgreSQL · users 4 rows
バックアップ
12 分前 · コミット 62
ログイン
メール · GitHub · Google
ファイルストレージ
2.1 GiB / 10 GiB
メールアドレス
[email protected]
  • Auth
  • Storage
  • Email
  • Domains
使い慣れたツールを、そのままNext.jsHonoPrismaDrizzleTypeORMKnexSequelizeSvelteKitAstroNuxtReact Router
はじめる

この三行で始まります

作って、デプロイして、必要な機能を足す。CLI をインストールしてログインしたあとは、この三つのコマンドだけです。

  1. 01

    作る

    $ npm create runlot my-app

    Next.js、Hono、静的サイトから選んでください。runlot.json と必要な設定は最初から入っています。

  2. 02

    デプロイする

    デプロイが終わると、すぐアクセスできる URL が発行されます。

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

    my-app はプロジェクト、me は個人組織です。

  3. 03

    機能を宣言する

    runlot.json に 1 行ずつ書けば、デプロイが作ります。アプリのコードからは env で使えます。

    {
      "database": true,
      "auth": true,
      "storage": true,
      "email": true
    }
    env.db
    本物の PostgreSQL
    env.auth
    ログイン
    env.storage
    ファイルストレージ
    env.email
    メール

    有効にするコマンドはありません。必要なものだけ書いて構いません。

機能

必要な機能がそろっています

プロジェクトを作れば、下のものが一緒についてきます。別に申し込むものも、つなぐものもありません。

本物の PostgreSQL

使い慣れた SQL とトランザクションがそのまま動きます。アプリからは env.db、ターミナルからは psql・pgAdmin・使い慣れた ORM で同じデータベースに触れます。

$ psql

runlot=# select * from users limit 4;

idnameactive
1jiwootrue
2minseotrue
3haneultrue
4seojunfalse

users · 4 rows

ログイン

メールと GitHub・Google のソーシャルログイン、セッション管理を提供します。サーバーコードでは env.auth.user() でユーザーを確認し、データへのアクセス権を決められます。

ファイルストレージ

env.storage で画像や添付ファイルをアップロードし、有効期限つきの署名 URL で共有できます。認証情報がワーカーのコードに露出することはありません。

メール

プロジェクトごとにメールアドレスが用意されます。env.email.send で送り、そのアドレス宛のメールはワーカーの email() ハンドラーが受け取ります。送受信したメールはダッシュボードで確認できます。

Git リポジトリ

プロジェクトの中にリポジトリを作って HTTPS か SSH で push すると、コミットとファイルがそのままダッシュボードに見えます。

ドメイン

お持ちのドメインに CNAME と TXT レコードを設定すればつながります。証明書は自動で発行され、更新されます。

継続的なバックアップ

すべてのコミットを約 1 分ごとに暗号化して保管します。ダッシュボードでバックアップ・コミット・時刻のいずれかを選び、その時点に復元できます。

使わない間は 0 円

リクエストが来ない間は実行を止め、次のリクエストで自動的に立ち上がります。データと設定はそのまま残ります。

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.db本物の PostgreSQL
  • env.authログイン
  • env.storageファイルストレージ
コード

env. からそのまま使う
データベース、ログイン、ファイル

接続文字列や API キーを設定する必要はありません。env でアクセスして、使い慣れたフレームワークと ORM をそのまま使ってください。

  • SQL の値は $1 のようなプレースホルダで安全に渡されます
  • Prisma、Drizzle、Kysely、TypeORM、Knex、Sequelize に対応しています
  • ローカル開発でも同じ env API を使います
ドキュメント
比較

複数のサービスをつなぐ代わりに、一つの場所で

サービスごとに設定して運用していたものが、一つのプロジェクトの中にあります。

ブラウザ・メール・データベース・コードが矢印で互いに絡み合って接続された図
複数のサービスを組み合わせるときホスティング設定・DB 接続・メール設定・コード保管を、それぞれのコンソールで
一つのプロジェクトの枠の中にアプリ画面とデータベースがあり、その下にログイン・ファイル・メール・コード・AI が一列に並んだ図
runlot プロジェクトアプリ・PostgreSQL・認証・ファイル・メール・AI・コード — アクセス権限・使用量・ログ・バックアップを一か所で確認します
  • アプリのホスティング

    runlot
    対応
    Cloudflare
    対応
    Vercel
    対応
    Supabase
    非対応
  • Next.js

    runlot
    対応
    Cloudflare
    アダプタが必要
    Vercel
    対応
    Supabase
    非対応
  • データベース

    runlot
    本物の PostgreSQL
    Cloudflare
    SQLite (D1)
    Vercel
    外部サービス連携
    Supabase
    PostgreSQL
  • ログイン · ファイル

    runlot
    対応
    Cloudflare
    一部
    Vercel
    一部
    Supabase
    対応
  • 使っていない間

    runlot
    0 円・自動で再起動
    Cloudflare
    0 円
    Vercel
    0 円
    Supabase
    7 日後に停止・手動で復旧
  • プロジェクトごとの固定費

    runlot
    なし
    Cloudflare
    なし
    Vercel
    ユーザーごとの料金
    Supabase
    プロジェクトごとにインスタンス
  • 必要なサービスの数

    runlot
    1 か所
    Cloudflare
    2 か所以上
    Vercel
    2 か所以上
    Supabase
    2 か所以上

2026年9月時点で各サービスの公開ドキュメントと料金ページをもとにまとめました。定期的に再確認はしていないので、変わっている点があればお知らせください。

チームと組織で

会社で作ったアプリも、そのままデプロイ

AI コーディングツールで社内ツールを作るのは簡単になりましたが、デプロイは今も誰かに頼む必要があります。runlot では誰が作り、どのデータを使うのかが最初から記録されているので、セキュリティ担当者に改めて説明することがありません。

メンバー三人が一つのプロジェクトの枠にアクセスし、その枠がプロジェクトごとに分離された二つのデータベースと、鍵の付いた線でつながっている図
  1. 組織とロール

    組織を作ってメンバーを招待してください。管理者・メンバー・閲覧者のロールで、誰がデプロイし誰が見るだけかを決めます。

  2. 組織の中だけに公開

    プロジェクトへのアクセスを組織のメンバーのみにすると、ログインしたメンバー以外はアクセスできません。アプリのコードが動く前に確認するので、アプリごとにログイン画面を作り直す必要はありません。

  3. プロジェクトごとに独立したデータベース

    社内ツールが何十個あっても、それぞれが自分の PostgreSQL を使います。どのデータがどこにあるかは、プロジェクト一覧を見れば分かります。

データを社外に置けない場合、自社のインフラに導入する形はロードマップにあります。時期はお問い合わせください。

チーム・組織の導入について
料金

まずは無料で試してください

無料プランの範囲では請求されません。カードを登録していても同じです。

無料

今すぐ利用可能

個人のプロジェクトやサイドプロジェクトには十分です。

$0/ 月

  • 1 日あたり 10 万リクエスト
  • プロジェクト 3 個 · プロジェクトごとに PostgreSQL 500 MB
  • バックアップ 7 日保管 · ファイルストレージ 10 GiB
  • プロジェクトごとにカスタムドメイン 1 個
無料で始める

プロ

個人・少人数チーム

作ったサービスを自分のドメインで運用する方に向いています。

$20/ 月

  • 月 1,000 万リクエストを含む
  • プロジェクト 30 個 (無料の 10 倍) · プロジェクトごとに PostgreSQL 8 GB
  • バックアップ 30 日保管 · ファイルストレージ 100 GiB
  • プロジェクトごとにカスタムドメイン 50 個
  • 含まれる量を超えた分だけ従量課金 (支出上限を標準で適用)
プロを始める

エンタープライズ

個別見積もり

複数のメンバーが社内ツールを出していく会社のためのプランです。

お問い合わせ

  • 年間契約 · 請求書払い
  • 専任のサポート窓口とオンボーディング
  • 自社インフラへの導入 — ロードマップにあり、まだ提供していません
導入の相談
よくある質問

よくある質問

ドキュメント
上限を超えるとどうなりますか?

無料プランでは 料金には変わりません。その日はそれ以上リクエストを受け付けず、翌日から受け付けを再開します。プロは含まれる量を超えた分だけ従量で請求し、月の支出上限が標準で設定されているので、それ以上には上がりません。上限に近づくと先にお知らせします。

すでに作ったアプリを移せますか?

はい。既存のリポジトリで runlot deploy を実行してください。フレームワークを判別して必要な設定を用意します。データベースは pg_dump で取ったファイルをそのまま取り込めます。

あとからデータを持ち出せますか?

はい。標準の PostgreSQL なので pg_dump がそのまま動きます。ファイルはただのオブジェクトで、env.storage.presign で署名付きの URL を発行できます。閉じ込めるような形式は使いません。

リージョンはどこですか?

今はソウルリージョンの一か所で動いています。アプリとデータベースが同じ場所にあるため、データベース呼び出しがネットワークをまたぎません。ただし、ソウルから遠い場所では応答がその分遅くなります。ほかのリージョンは準備でき次第お知らせします。

最初のアプリをデプロイしてみてください。

登録して、三つのコマンドを実行してください。