KUMODeck
EN

リファレンス

Markdownをコピー

CLIリファレンス

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

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]スターターテンプレートをdir(既定my-game。テンプレートの既定はvanilla-canvas)にコピーする。オフラインで動き、サーバーには触らず、中身のあるフォルダには上書きしない。--init: ログイン済みなら、続けて新しいフォルダでinitまで実行する
login [--email <email>] · login --google|--githubメールとパスワード(入力は非表示)、またはブラウザでGoogle・GitHubにログインする(CLIは手元の127.0.0.1のポートで待つ。サーバーが有効にしたプロバイダだけ)。開発者セッションを~/.kumo/credentials.json(権限0600)に保存する。同じメールの既存のアカウントには自動で結び付けない(いつもの方法でログインしてから、ダッシュボードのアカウント → ログイン方法で追加する。セキュリティモデル)
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]サーバーで画面を作るアプリのフォルダでフォルダを付けずに実行すると: フレームワークを見分け(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のときだけ送る。アプリにはログが残る(kumodeck logs)。--no-logsではこの版のログを残さない。Next.js(OpenNext・ISRなし)は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とサーバーで画面を作るアプリの両方を時刻順に混ぜて(各行にfnかappの印)。functions logsと同じ(オプションもすべて同じ)
functions <command>自分のサーバーのコードとデータベース(Functions)。既定の環境: development(kumodeck functions help)
slug · slug check <new> · slug change <new> --keep-redirect|--no-redirect · slug redirect <old> on|offプロジェクトのURLスラッグ(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開発者アカウントを閉鎖する(元に戻せない。アカウントの閉鎖)。前払い残高がどうなるかを表示してから、メールアドレスかCLOSE、続けてパスワード(非表示)を入力させる。対話の端末でだけ動く: パイプ・CI・--jsonは終了コード2で断り、--yesでも確認は省けない。プロジェクトが残っていれば一覧と削除する場所を出す
help、--help、--version

kumodeck functions#

コマンドすること
statusURL、バージョン、データベース、シークレット、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とサーバーで画面を作るアプリ(既定は両方。ログ)。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の代わりにこのプロジェクトを使う
--jsonstdoutにちょうど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はエラーになります。

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のシークレットに入れる例:

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は上げない(ドットで始まるファイルは対象外)