---
title: "CLIリファレンス"
description: "`kumodeck` CLIは依存パッケージがゼロです（Node 22以上: `parseArgs`、`fetch`、`fs`、`crypto`）。"
url: "/ja/docs/reference/cli/"
lang: ja
index: "/ja/llms.txt"
---
# CLIリファレンス

`kumodeck` CLIは**依存パッケージがゼロ**です（Node 22以上: `parseArgs`、`fetch`、`fs`、`crypto`）。そのためすぐに入ってすぐに起動し、サプライチェーンにほかのものを持ち込みません。

```sh
npm install -g kumodeck     # 以後は kumodeck <command> [options]
npx kumodeck <command> [options]       # インストールせずに使う場合
```

## コマンド

| コマンド | すること |
|---|---|
| `signup [--email <email>] [--name <name>] [--invite <コード>]` | 開発者アカウントを作ってログインする（メールとパスワード。入力は非表示で、パスワードは2回入力）。メールの確認は後で`verify`で行う（確認までは、シークレットキー・AIツール（MCP）の接続・ログイン方法の追加は使えない）。`--invite`: 招待コードを使う（利用料に使える招待クレジット。メールの確認が済むと入る。無効なコードならアカウントは作られない）。使用済みのメールなら`login`を使う |
| `verify <リンク>` / `verify --resend` | 端末でメールを確認する: 確認メールのリンク（トークンだけでも可）を貼る。`signup` / `login`で保存したセッションで確認するので、パスワードはそのまま（そのセッションの無いブラウザでリンクを開くと、新しいパスワードを決めることになる）。`--resend`は確認メールを送り直す |
| `keys create --secret [--env <env>] [--show-secrets]` | 紐づけたプロジェクトのシークレットキーを発行し、画面に出さずに`.kumo/secrets.env`へ書く（`--env`が無ければ両方の環境）。`init`が「シークレットキーはまだありません」と言ったときに、メールの確認の後で使う |
| `create [dir] [--template <name>] [--init]` | [スターターテンプレート](/ja/docs/templates/index.md)を`dir`（既定`my-game`。テンプレートの既定は`vanilla-canvas`）にコピーする。オフラインで動き、サーバーには触らず、中身のあるフォルダには上書きしない。`--init`: ログイン済みなら、続けて新しいフォルダで`init`まで実行する |
| `login [--email <email>]` · `login --google\|--github` | メールとパスワード（入力は非表示）、またはブラウザでGoogle・GitHubにログインする（CLIは手元の`127.0.0.1`のポートで待つ。サーバーが有効にしたプロバイダだけ）。開発者セッションを`~/.kumo/credentials.json`（権限0600）に保存する。同じメールの既存のアカウントには自動で結び付けない（いつもの方法でログインしてから、ダッシュボードの**アカウント → ログイン方法**で追加する。[セキュリティモデル](/ja/docs/security/index.md#開発者アカウント)） |
| `logout` | サーバー上のセッションを失効させてから、ローカルのセッションを削除する |
| `whoami` | ログイン中の開発者・前払い残高（使い切っていれば`kumodeck billing topup`の案内。うち招待クレジット）・紐づいているプロジェクト |
| `billing` · `billing topup [金額] [--no-open] [--no-wait] [--timeout <秒>]` · `billing wait <topupId>` · `billing redeem <コード>` | 前払い残高（うち招待クレジット）・未払い・あと何日もつか。`redeem`は招待コードを使う: 招待クレジット（利用料だけに使えます・返金や出金はできません）。メールの確認が済むと入る。1アカウントに1回。`topup`は米ドルで入金する（既定・最低**5ドル**）: Stripeの支払いURLを出してブラウザで開き（CIやSSH先では開かない）、支払いが済むまで待って（既定540秒。Ctrl-Cで待つのをやめても支払えば入金は有効）新しい残高を出す。支払いはStripeの画面で本人が行い、CLIはカード情報を見ない。ログインしたセッションが必要（シークレットキーでは不可）。ほかのコマンドの`402`では、ヒントに`kumodeck billing topup`が出る |
| `init [--name <n>] [--slug <s>] [--project <id\|slug>] [--yes] [--force] [--show-secrets]` | プロジェクトを作成（または選択）し、`./kumo.json` `{ projectId, slug, api, deployDir }`を書く。作成時には公開鍵を表示し、**一度だけ**返る秘密鍵は表示せずに`.kumo/secrets.env`（権限0600、`.gitignore`に追加）へ保存する（AIアシスタントの会話に残さないため）。`--show-secrets`を付けると画面（と`--json`）にも出す。プロジェクトを作り直したときは前のファイルを`.kumo/secrets.<日時>.env`に移す。テンプレートのフォルダでは、公開鍵を`public/kumo-config.js`に書き込み（`REPLACE_ME`が残っている間だけ）、`deployDir: "public"`を保存する。既存のプロジェクトに紐づけるときは、`public/kumo-config.js`にまだ公開鍵が無い環境の分だけ新しく発行して書く（既存の鍵はKUMODeckからもう一度表示できないため。使われない鍵を溜めないよう、ある環境では発行しない。テンプレート以外のフォルダでは表示の例のために発行する）。既定のURLの名前が使用済みならサーバーが示す空いている名前の1つ目を使う（`my-game-2`）。`--slug`を明示したときは変えず、空いている候補をヒントに出す |
| `config push [file] [--env development\|production]` | `kumo.config.json`を検証してpushする（既定の環境: **development**）。内容が同じなら何もしない |
| `config show [--env]` · `config check [file] [--env]` | 読むだけ（既定の環境: **development**・`config push` と同じ）。`show`: サーバーの今の設定とその版（`--json`: `{ environment, version, config }`）。`check`: `kumo.config.json`（か `file`）を反映せずに読み、JSON として正しいか・KUMODeck の機能の名前かを見て、反映すると変わるものを並べます（`features: on saves; OFF hosting`・`multiplayer: added duel`）。知らない機能の名前は終了コード 1。そのあと KUMODeck が **push と同じ規則を全部** 使ってファイルを確かめます（何も保存しない = production でも確認は要りません）。`ok` なら push すると変わるものと警告を、誤りがあれば path と hint つきで並べて終了コード 1。直したら、もう一度 `config check` を実行してください（直すと次の誤りが出ることがあります）。`--json`: `{ ok, warnings, errors, changes: { featuresOn, featuresOff, changedSections }, checked }`。**`config push` の前に毎回実行します** |
| `features [--env]` · `features on\|off <名前…> [--file]` | 環境ごとにどの機能が ON かを一覧する（ON にするまではすべて OFF）。または`kumo.config.json`で機能を ON / OFF にする。`config push`するまでサーバーは変わらない |
| `skills [list]` · `skills add <名前…> [--force]` | Skillは、AIエージェントが読む手順書です（プロジェクトをはじめる・デプロイ・エラーを直す・自分のデータベースに仕組みを作る）。`list`はこのCLIに入っているものの一覧（`*` = このプロジェクトに入っているもの）。`add`は、`kumo.json`のあるフォルダ（無ければ今のフォルダ）の`.claude/skills/<名前>/`（Claude Code）と`.agents/skills/<名前>/`（Codex・Cursorなどほかのエージェント）に写し、そこの`INDEX.md`も直す。オフラインで動き、ログインは要らない。手を入れた写しは、確認してから置き換える（端末でなければ`--force`） |
| `deploy [dir] [--env] [-m <message>]` | フォルダをアップロードして公開する（既定の環境: **development** = 試し用。本番は`--env production`を付ける。出力にもそのコマンドを出す）。既定のフォルダは`kumo.json`の`deployDir`、無ければ`./dist`。フォルダの`kumo-config.js`にその環境の公開鍵が無ければ警告する（止めない）。その環境で`hosting`がOFFなら、先に`kumo.config.json`でONにして反映し（手元にファイルが無ければサーバーのconfigに`features.hosting`だけを足す）、1行で知らせる。`--json`では`warnings`・`shareCards`・`featuresTurnedOn`（例: `["hosting"]`）・`configPush`が付く |
| `deploy [--env] [--dry-run] [--app\|--static] [--no-build --outdir <path>] [--sourcemaps] [--no-logs]` | [サーバーで画面を作るアプリ](/ja/docs/guides/hosting/index.md#サーバーで画面を作るアプリ)のフォルダでフォルダを付けずに実行すると: フレームワークを見分け（`main`のある`wrangler.jsonc`か、`package.json`のサーバーの形のフレームワーク）、`wrangler.jsonc`が無ければ`wrangler setup --yes`を動かし、ビルドし（`<npm\|pnpm\|yarn\|bun> run build`）、`wrangler deploy --dry-run --outdir .kumo/app-build`でまとめ、KUMODeckの試しの確認をしてから新しいファイルだけを上げて公開する。`features.serverRendering`とプロジェクトのwranglerが要る（wranglerが無ければビルドを静的なファイルとして上げ、そう知らせる）。`--dry-run`は確認で止める（静的なデプロイでも使える）。`--app`・`--static`は見分けを飛ばす（`--app`のときの`[dir]`はプロジェクトのフォルダ）。`--no-build --outdir`は既にあるバンドルを使う。sourcemapは`--sourcemaps`のときだけ送る。アプリには[ログ](/ja/docs/guides/functions/index.md#ログ)が残る（`kumodeck logs`）。`--no-logs`ではこの版のログを残さない。Next.js（[OpenNext・ISRなし](/ja/docs/guides/hosting/index.md#nextjs)）は`opennextjs-cloudflare build`でビルドし、ビルド時に作ったページをアセットに写す。`open-next.config.ts`が`staticAssetsIncrementalCache`でなければビルドの前に止まる（`next_incremental_cache_unsupported`）。`--json`には`kind`・`detection`・`build.commands`・`build.prerenderCache`・`sent`・`bindings`（`create`付き）・`serverWarnings`（`code`付き）・`previousKind`・`secretsMissing`・`logs`（この版がログを残すか）が付く |
| `deployments [--env] [--limit 20]` | バージョンの一覧。`*`が公開中のもの（既定の環境: **development**） |
| `rollback <version> [--env]` | 以前のバージョンを即座に公開状態へ戻す（既定の環境: **development**） |
| `share on [file] [--env]` | `kumo.config.json`の`share.images`（タイトルは`index.html`の`<title>`）・`share.links`・`share.tracking`をONにして、**両方**の環境へ反映する（`--env`で片方だけ）。既存の文言・色は残す。Xでログインは OFF のまま。再デプロイ不要 |
| `share tags [--ks <id>] [--env]` | ページの`<head>`に書く`<meta>`カード用タグと、書く場所（`--json`: `html`・`image`・`placement`）。`share.images`か`share.tags.image`が必要 |
| `share link <label> [--env]` | 自分の投稿用に計測付きの共有リンクを作り、URLを表示する |
| `share stats [--from YYYY-MM-DD] [--to YYYY-MM-DD] [--limit n] [--env]` | 共有リンクごとの訪問数、新しい利用者、利用回数（plays） |
| `logs [--since 1h] [--level error,warn] [--source functions\|app] [--search <text>] [--all] [--env]` | 公開したコードが出したログ（直近7日）: [Functions](/ja/docs/guides/functions/index.md#ログ)とサーバーで画面を作るアプリの両方を時刻順に混ぜて（各行に`fn`か`app`の印）。`functions logs`と同じ（オプションもすべて同じ） |
| `functions <command>` | 自分のサーバーのコードとデータベース（[Functions](/ja/docs/guides/functions/index.md)）。既定の環境: **development**（`kumodeck functions help`） |
| `slug` · `slug check <new>` · `slug change <new> --keep-redirect\|--no-redirect` · `slug redirect <old> on\|off` | プロジェクトのURLスラッグ（[URLスラッグを変える](/ja/docs/guides/hosting/index.md#urlスラッグを変える)）: 表示・新しい名前の確認（使えるか・何が変わるか）・変更（30日に1回）・古いスラッグの転送のON / OFF。`--keep-redirect`（古いスラッグ1つにつき月$1・日割り）か`--no-redirect`（古いリンクは「見つかりません」）を必ず選ぶ。どちらも無ければ両方を表示して止まる（終了コード2）。変更では新しいスラッグの打ち直し（`--yes`で省略）とパスワード（非表示）を聞くので、対話の端末でだけ動く。パスワードの無いアカウント・パイプ・CIはダッシュボードへ案内（終了コード2）。`kumo.json`のスラッグも直す |
| `projects list` · `projects rename "<新しい名前>" [--project <id\|slug>]` | 自分のプロジェクトの一覧（名前・スラッグ・id） · プロジェクトの表示名を変える（既定は`kumo.json`のプロジェクト）。名前は利用者（players）に届くメールの件名（「Confirm your email for <名前>」）と差出人の名前に出るので、公開の前に分かりやすい名前にしておく。1〜80文字。今と同じ名前なら何も変えず（「same name (nothing changed)」）、変えたときは古い → 新しいを出す。KUMO という語（大文字・小文字を問わず）を含む名前や、運営を思わせる語だけの名前（「Support」「Security Team」「Admin」など）は`name_reserved`で断られる（プロジェクトを作るときも同じ）。ゲームそのものの名前を付ける。URLスラッグは別（`slug`）で、変わらない。`--json`はスクリプト用。名前は`whoami`にも出る |
| `projects show [--project <id\|slug>] [--env]` | プロジェクトの概要（既定の環境: **production**）: 利用者（合計・新規・24 時間のアクティブ・BAN）・14 日の日ごとのアクティブ・設定の版・公開中の版と URL。`--json` のキーは MCP の道具 `project_overview` と同じ |
| `usage [--period YYYY-MM] [--daily]` | アカウント全体（すべてのプロジェクトと環境）の今月の KUMODeck の利用料を、部品ごとに原価で表示します。`--daily` は日ごと（月の調整の前の目安）。`--env` は使えません。支払い元の前払い残高は `billing` |
| `players search [文字] [--limit n] [--cursor <id>] [--env]` · `players show <playerId> [--env]` | 読むだけ（既定の環境: **production**）。利用者（API の名前では players）を id・表示名・メールで探す／1 人のログインの方法・BAN の状態。メールは伏せ、利用者が書いた文は «…» で示します（データとして読む）。BAN はダッシュボードか、先に確かめる AI エージェントの KUMODeck の道具で |
| `appeals [--status open\|accepted\|rejected] [--limit n] [--env]` | 利用者からの BAN の異議申し立て（既定: open・production・古い順）。BAN の理由と異議の本文は «…» で示します。回答はダッシュボードか AI エージェントの KUMODeck の道具で |
| `account close` | 開発者アカウントを閉鎖する（元に戻せない。[アカウントの閉鎖](/ja/docs/pricing/index.md)）。前払い残高がどうなるかを表示してから、メールアドレスか`CLOSE`、続けてパスワード（非表示）を入力させる。対話の端末でだけ動く: パイプ・CI・`--json`は終了コード2で断り、`--yes`でも確認は省けない。プロジェクトが残っていれば一覧と削除する場所を出す |
| `help`、`--help`、`--version` | |

### `kumodeck functions`

| コマンド | すること |
|---|---|
| `status` | URL、バージョン、データベース、シークレット、cron、上限 |
| `enable` · `disable` | この環境でONにする（前払いのクレジットが必要） · 配信を止める（コードとデータは残る） |
| `limits --cpu-ms <n> --subrequests <n>` | リクエストごとの上限（既定は200ms / 50） |
| `deploy [dir] [-m <message>] [--no-logs]` | ローカルのwranglerでバンドルしてデプロイする（dirの既定: `./functions`または`.`）。`--no-logs`ではこの版のログを残さない |
| `deployments` | デプロイの履歴 |
| `logs [--since 1h] [--until <時刻>] [--level error,warn] [--search <text>] [--limit <n>] [--cursor <c>] [--all] [--source functions\|app]` | 公開したコードが出したログ（直近7日）: Functionsとサーバーで画面を作るアプリ（既定は両方。[ログ](/ja/docs/guides/functions/index.md#ログ)）。`kumodeck logs`でも同じ |
| `delete [--purge] [--yes]` | コードを削除する。`--purge`ではデータベース、ファイル、キューも削除する |
| `secret put <NAME>` · `secret list` · `secret delete <NAME>` | 値は非表示の入力かstdinから読み、引数からは決して読まない |
| `db query <BINDING> "<SQL>"` · `db migrate <BINDING> [--dir migrations]` | 自分のデータベースに対するSQLとマイグレーション |
| `dev [dir]` | ローカルで実行する（`npx wrangler dev`）。KUMODeckには触れない |

## 共通オプション

| オプション | |
|---|---|
| `--api <url>` | APIのURL。`KUMO_API_URL`でも指定できる。既定は`http://localhost:4000` |
| `--project <id\|slug>` | `./kumo.json`の代わりにこのプロジェクトを使う |
| `--json` | stdoutにちょうど1つのJSONドキュメントを出力する（常に英語）。スクリプト向け |

## 本番の確認

ブラウザのログイン（`kumodeck connect`、またはフラグなしの`kumodeck login`）では、本番の変更ごとにいったん止まってリンクを表示します。開いてダッシュボードで1回「確認」を押してください。コマンドは最大10分待ち、同じ変更を1回だけ送ります。`--json`では、待つ前にリンクを1行のJSONでstderrに出します: `{"pendingAction": {"id": "kpa_…", "confirmUrl": "…", "expiresAt": "…"}}`。
期限までに押されなかったとき（終了コード1・`pending_action_expired`）や拒否されたとき（`pending_action_denied`）は何も変わりません。やり直すには同じコマンドをもう一度実行します（新しいリンクが出ます）。Ctrl-Cは待つのをやめるだけで、確認の依頼は期限まで残ります。`--yes`では省けません。
`deploy --env production`はアップロードを先に済ませ、新しい版に切り替える直前に1回だけ聞きます。
本番でまだhostingがOFFの初めての公開も1回です。アップロードはhostingがOFFのまま済ませ（まだ公開されません）、hostingをONにする変更と新しい版への切り替えを、1つのリンクでまとめて確認します（「本番の2件の変更をまとめて確認」。`--json`では1行に`"bundle": {"count": 2}`が付きます）。送るのはその順です。`kumo.config.json`に`features.hosting: true`を書くのは、変更が通った後です。
development、`kumodeck login --email`のセッション、`KUMO_SECRET_KEY`では聞きません。

## CIモード

ログインする代わりに`KUMO_SECRET_KEY`を設定します。環境は鍵で決まり、鍵と食い違う`--env`はエラーになります。

```sh
KUMO_API_URL=https://api.kumodeck.com KUMO_SECRET_KEY=${{ secrets.KUMO_SECRET_KEY }} npx kumodeck deploy dist
```

鍵は`.kumo/secrets.env`にあります（`KUMO_SECRET_KEY_DEVELOPMENT=…`、`KUMO_SECRET_KEY_PRODUCTION=…`）。画面に出さずにGitHub Actionsのシークレットに入れる例:

```sh
grep '^KUMO_SECRET_KEY_PRODUCTION=' .kumo/secrets.env | cut -d= -f2- | gh secret set KUMO_SECRET_KEY
```

## 終了コード

| コード | 意味 |
|---|---|
| 0 | 成功 |
| 1 | 失敗（サーバーエラー、通信、検証） |
| 2 | 使い方の誤り（引数の誤り、ファイルがない、`index.html`がない） |
| 3 | 未ログイン / セッション切れ。`kumodeck login`を実行する |
| 130 | キャンセル |

## 言語

人が読むための出力は英語か日本語です。`KUMO_LANG=ja|en`で指定し、なければ`LC_ALL` / `LC_MESSAGES` / `LANG`から決めます（`ja*` → 日本語）。`--json`の出力は常に英語です。コマンドとフラグは常に英語です。

## ファイル

| ファイル | コミットする？ | 内容 |
|---|---|---|
| `kumo.json` | する | `projectId`、`slug`、`api`、`deployDir`。秘密情報は含まない |
| `kumo.config.json` | する | マスターデータ |
| `~/.kumo/credentials.json` | 絶対にしない | 開発者セッション |
| `.kumo/secrets.env` | 絶対にしない（自動で`.gitignore`に入る） | `init`で受け取った秘密鍵（権限0600）。`deploy`は上げない（ドットで始まるファイルは対象外） |
