エージェントが最後まで設定しきれる、唯一の基盤。

Superzero は、宣言ファイル1つでアプリにデータベース・ホスティング・認証・ モバイル Push を与えます。ダッシュボードでの手作業も、2社目の契約も要りません。 エージェントがファイルを1つ書き、コマンドを1つ実行するだけです。

空白

コードを書くことはボトルネックでなくなりました。 ボトルネックはインフラの接続に移り、その作業はダッシュボードの中にあります。 そこは、エージェントが最も苦手とする場所です。

Supabase
  • Postgres
  • 認証
  • ホスティングなし
  • SMS認証なし
  • Pushなし
Vercel
  • ホスティング
  • DBなし
  • 認証なし
  • SMS認証なし
  • Pushなし
Firebase
  • 認証・SMS・Push
  • Postgresなし
  • 独自モデルへの固定
Superzero
  • Postgres
  • コンテナホスティング
  • メール・OAuth
  • SMS 認証
  • APNs・FCM Push

日本では SMS 認証がまだ現役の要件です。 欧米は Passkey と OAuth への移行が進んでいますが、国内のサービスでは電話番号による 本人確認が今も求められます。にもかかわらず、Firebase を除けば SMS 認証を持つモダンな開発者基盤はほぼ存在しません。Push も同じ空白です。

ファイル1つ

必要なものを宣言する

スキーマは strict です。知らないキーは黙って無視せず弾きます。 綴り間違いが「書いたのに動かない」にならないためです。 シークレットは $SECRET 参照で、値をファイルに書きません。

import { defineConfig } from '@superzero/config'

export default defineConfig({
  name: 'shopping-app',
  region: 'ap-northeast-1',

  database: { extensions: ['pgvector'] },

  compute: {
    framework: 'auto',        // detected by Nixpacks
    envFrom: ['database', 'auth'],
    idleTimeout: '15m',       // scale to zero
  },

  auth: {
    providers: ['email', 'google'],
    sms: { enabled: true, allowedCountries: ['JP'] },
  },

  push: {
    ios: { bundleId: 'com.example.shop', keyId: '$SECRET', teamId: '$SECRET' },
    android: { packageName: 'com.example.shop' },
  },
})

コマンド1つ

$ superzero plan
  + database:default   Neon プロジェクトを作成 (postgres, pgvector)
  + compute:default    コンテナをビルドして起動
  + auth:default       email, google, sms(JP) を有効化

$ superzero apply
  ok  database:default   ready   4.2s
  ok  compute:default    ready   38.1s
  ok  auth:default       ready   0.9s

  https://shopping-app.superzero.dev

対話を前提にしない

プロンプトも TTY も、ブラウザを開く手順もありません。 同じ操作を MCP のツールとしても公開しています (superzero_plansuperzero_applysuperzero_verifysuperzero_status)。 エージェントはシェルを経由せずに製品を使えます。

エラーが直し方を持っている

エージェントが本当に必要とする部分

人間はスタックトレースを読んで次の手を推測します。 エージェントには、その手がデータとして必要です。 すべての失敗が、安定したコードと suggestedFix (実行すべきコマンドと、変更すべき場所)を返します。

これはこの製品の設計全体を貫く規律です。 復旧の方法を言えない失敗は、未完成とみなします。

{
  "code": "COMPUTE_CONTAINER_EXITED",
  "message": "The container started but exited immediately (id: c2a4f9b2e1de).",
  "suggestedFix": {
    "command": "superzero logs",
    "description": "Read the container logs to see why the process exited.
                    Set compute.startCommand in superzero.config.ts if the
                    framework was detected incorrectly."
  }
}

データの置き場所

国内保持を求められる案件があるため、 現在地を正確に書きます。コンピュートは東京、データベースは現状シンガポールです。

リージョン理由
コンピュート東京 (ap-northeast-1) 自前の EC2 で動かしているため、東京に置けます
データベースシンガポール (ap-southeast-1) Neon が東京リージョンを提供していません。実際に API を叩いて確認済みです。 国内保持が要件の場合、現時点では要件を満たせません
シークレット東京 (AWS KMS) エンベロープ暗号化。鍵は東京の KMS にあります

この制約は解消に向けて動いています。 ただし解消するまでは、上のとおりに書きます。 確認された時点で崩れる約束は、最初からしません。

現在地

P0 のプロトタイプです。申し込みは受け付けておらず、 価格も未定です。以下は計画ではなく、実際に通したことだけを書いています。

機能状態何で確認したか
プロビジョニング動作 plan / apply / destroy、再適用の冪等性、部分失敗からの再開
Postgres動作 実際の Neon プロジェクトを API 経由で作成・削除
ホスティング動作 Nixpacks ビルド、Docker、Caddy、独自ドメイン + Let's Encrypt、scale-to-zero
シークレット保管動作 実際の AWS KMS に対するエンベロープ暗号化
認証(メール・OAuth)動作 Argon2id、JWT、PKCE(state と nonce の検証つき)
CLI と MCP動作 どちらからも apply が完走
SMS 認証保留 濫用防止5層とともに実装済み。通信事業者の審査待ち
Push(APNs・FCM)保留 実装済み。資格情報の取得待ち

エージェント向け

ソースと同期した、機械可読な説明を置いています。 これらは英語です。エージェントの流通経路が英語であるため、意図的にそうしています。

/llms.txt 索引。何であるかと、詳細の在り処
/llms-full.txt 全文。宣言ファイルのスキーマ、コマンド、MCP ツール、エラーコード