MoAI Web Console
5 つの領域(概要・カンバン・SPEC・モニター・設定)で構成されたローカル運用コンソール — リアルタイム更新、読み取り専用の観測、設定編集。
MoAI Web Console は moai web で起動するローカル運用画面です。プロジェクトの SPEC カタログ、カンバンチェーン、セッションとゴール、検証履歴を一か所で確認でき、同じ画面から設定も編集できます。ブラウザは 127.0.0.1 にのみ接続し、データベースもログインもありません。
情報一言でいうと: コンソールは 4 つの観測領域と 1 つの設定領域を左レールにまとめた運用シェルです。観測領域は読み取りのみを行い、設定領域はターミナルウィザードと同じ検証・永続化レイヤーを使います。
画面は 3 つに分かれます。左のレールに 5 つの領域が縦に並び、上のアプリバーに現在の画面タイトルと状態が乗り、残りが本文です。どの領域にいてもレールとアプリバーは同じ位置に残ります。
| 領域 | ルート | 役割 |
|---|---|---|
| 概要(Overview) | / | プロジェクト全体の要約 — 統計タイル、カンバンチェーン、進行中 SPEC、注意リスト、セッション |
| カンバン(Kanban) | /kanban | チェーンセッションボード + SPEC パイプライン 4 カラム |
| SPEC(Specs) | /specs | SPEC カタログの検索・フィルタ・詳細、クローズ負債と MUST-FIX drift |
| モニター(Monitor) | /monitor | セッション・ゴール・検証・エピックの 4 パネル |
| 設定(Settings) | /settings | プロファイル設定とプロジェクトセクションの編集(9 タブ) |
アプリバー右側に何が出るかは領域によって変わります。観測領域 4 つではリアルタイム表示灯が、設定領域では保存クラスター(変更件数と保存ボタン)が置かれます。コンテキストチップ(lang · model · effort · dev)は設定領域だけにレンダーされます — 編集中のプロファイルの主要な値を保存前に目で確認するためのものだからです。
レールの下部にはプロファイルボタン、プロジェクト名、インターフェース言語セレクター、終了ボタンが集まっています。プロファイルボタンを押すとポップオーバーが開き、切り替え・作成・名前変更・削除が一か所で完結します。どの画面から開いても同じポップオーバーなので、プロファイルを扱う面はコンソール全体で 1 つだけです。
flowchart TD
Rail["左レール
概要 · カンバン · SPEC · モニター · 設定"]
Top["アプリバー
タイトル · リアルタイム表示灯 / 保存クラスター"]
Body["本文
領域ごとの画面"]
Read["読み取り専用領域
概要 · カンバン · SPEC · モニター"]
Write["設定領域
検証・永続化レイヤー経由"]
Files["プロジェクトファイル
.moai/ 配下の状態と設定"]
Rail --> Body
Top --> Body
Body --> Read
Body --> Write
Read -->|読み取りのみ| Files
Write -->|保存| Files
style Read fill:#E3F2FD,stroke:#1565C0
style Write fill:#FFF3E0,stroke:#E65100概要は 4 つの統計タイルから始まります。SPEC(全体件数と進行中の件数)、drift(MUST-FIX 件数)、session(PID 確認済みの数 / レジストリ登録数)、verify(最後の検証結果とキー数)です。
その下のカンバンチェーンバーは、現在のカードが lead → plan → run → review → sync の 5 役割をどこまで通過したかを 1 行で示します。セッションのない役割があれば、その地点をチェーンが止まった場所として表示します。続いて進行中 SPEC の一覧、要注意パネル(MUST-FIX drift・失敗した検証・停滞したゴール・空の役割だけを集めます)、右側にセッションパネルが置かれます。
カンバン領域には性格の異なるボードが 2 つ、上下に置かれます。
チェーンセッションボードは 5 つの役割をカードとして並べ、各役割のセッション id、バックエンド、モデル、推論強度、コンテキスト使用量、最後のハートビートを記録します。ステージ状態はハートビートから推定した値なので推定マークが付き、モデル・推論強度・コンテキストはまだ記録されない値なので空のままにします — 埋めないことが規律です。
SPEC パイプラインは SPEC を status 基準の 4 カラム(draft · in-progress · implemented · completed)に並べます。superseded · archived · rejected はこのボードには来ず、SPEC 領域のフィルタからのみ確認します。
SPEC 領域の先頭には検索ボックスと status フィルタチップがあります。その直後、一覧より先に警告パネルが 2 つ来ます。
- クローズ負債(Close debt) — 実装は終わっているのに(
implemented)lifecycle がcompletedに閉じられていない SPEC です。件数が多いときは更新の新しい数件だけを表示し、切り詰めた事実と全体件数を併記します。 - MUST-FIX drift — 対処コマンドを伴う drift です。コマンドはコピーのみされます。コンソールはサーバー上でいかなるコマンドも実行しません — コピーして自分のターミナルで実行する構造です。
2 つのパネルが一覧の上に来る理由は単純です。カタログが数百行になると、下に置いたものは画面のはるか下方に押しやられ、事実上存在しないのと同じになるからです。
一覧は ID・タイトル・status・Tier・era・更新日・drift の列で構成されます。行を選ぶと右側に詳細パネルが開き、ドキュメント一覧、ファイルパス、drift の詳細を表示します。
| パネル | 読むもの |
|---|---|
| セッション(Sessions) | セッション id、SPEC、バックエンド、ハートビート、作業ディレクトリ |
| ゴール(Goals) | 設定されたゴールの条件、経過ターン数、停滞の有無、判定 |
| 検証(Verification) | キーごとの直近履歴スパークラインと合否 |
| エピック(Epics) | moai epic status が計算したエピックごとの進捗率 |
観測領域はファイルが変わると自ら更新されます。サーバーは GET /events に SSE(Server-Sent Events — サーバーからブラウザへ一方向にイベントを流す標準)ストリームを開いたまま .moai/ 配下を監視し、変更を 250 ミリ秒単位でまとめて送出します。
要点はイベントがデータを運ばないことです。サーバーは「この領域が変わった」という名前だけを送り、ブラウザはその信号を受けて現在の画面を取り直し、本文だけを差し替えます。レンダリングの真実がサーバー 1 か所にのみ残るので、画面とファイルが食い違う状態は生まれません。
| イベント | 監視対象 |
|---|---|
spec | .moai/specs |
session | .moai/state |
goal | .moai/state/goal |
verify | .moai/state/verify |
kanban | .moai/state/kanban |
config | .moai/config/sections |
config イベントだけは扱いが異なります。設定を編集している最中に画面が下から変わると入力中の値が消えてしまうため、更新はせず「設定ファイルが変わった」というバナーだけを出します。
接続が切れても黙って止まりません。アプリバーの表示灯が切断状態に変わり、ブラウザの再接続が 3 回失敗すると 30 秒間隔のポーリングに落ちます。ポーリング中であることは表示灯にそのまま残ります。
コンソールが守る規律が画面のあちこちに現れます。
- セッションの活性はプロセスの生存を確認したものだけを活性に上げます。レジストリに記録が残っていてもプロセスが既に終了している場合があるため、確認できない項目は古いものとして表示します。
- ステージ状態はハートビートからの推定値であり、推定であるという事実をマークで併記します。
- 記録されていない値(役割ごとのモデル・推論強度・コンテキスト使用量)はもっともらしい値で埋めず、空のままにします。
- 空のリストは空のままにせず「ない」と書きます。空のパネルは「まだ読めていない」と読まれるからです。
設定領域はコンソールで唯一ファイルを書く場所です。コンソールは独自の検証ルールを持たず、ターミナルウィザード(moai profile、moai update -c)と同じ検証・永続化レイヤーを呼びます。どちらから直しても結果が同じになる理由です。
レールで設定を選ぶと、その下に 9 つのタブが縦のリストとして開きます。
- ユーザー情報(Identity) — 表示名とプロジェクト単位の identity フィールド
- 言語(Language) — 会話・コミットメッセージ・コードコメント・ドキュメントの言語
- LLM — 権限モード・モデル・推論強度
- サードパーティ LLM(3rd Party LLM) — ティアごとの GLM モデル、ティアごとの推論強度、GLM API キー
- ワークフロー(Workflow) — 実行モード・既定モード・agentic-loop・loop-prevention
- Git・ワークツリー(Git & Worktree) —
git_strategy.mode、プロファイルごとのmerge_method、ワークツリーと branch-guard のトグル - 監査(Audit) — 監査モデルとバックエンドごとのゲート
- エージェント(Agents) — エージェントごとのプロファイル・モデル割り当て
- レポート(Report) — レポート形式と出力の設定
各タブの横の数字は、そのタブがレンダーするフィールド数です。エラーのあるタブには数字の代わりに警告マークが付くので、どのタブを開くべきかが一覧からすぐ分かります。
フィールドは値の実際のドメインに合ったウィジェットでレンダーされます。bool フィールドはチェックボックスではなく 2 択のラジオグループで描きます — チェックボックスは現在の選択を隠しますが、ラジオの対は明示します。execution_mode や audit.model のような閉じた集合は select かラジオにし、集合外の値は保存時に拒否します。リポジトリパスや API キーのようにドメインが本当に開いている値だけが自由テキストとして残ります。
推論強度のランタイム伝達チャネルはセッション単位の環境変数 1 つだけなので、ティアごとに書いた推論強度は保存専用です。設定には残りますが、ランタイムはセッション単位の値だけを読みます。サードパーティ LLM タブには適用元を明示するバッジがあり、この事実が示唆ではなく明示として現れます。
編集できる範囲は単一の真実の情報源で決まっており、コンソールはその中にだけ書き込みます。user · language · quality · git-convention · git-strategy · llm は typed 検証パスで保存され、workflow と report はファイル内のコメントと行順を保つ seam で保存されます。マシン・状態セクションと大型ポリシーファイルは除外群であり、新しいセクションも明示的に登録されるまでは既定で拒否されます。各セクションのキーは config セクションリファレンス で扱います。
ループバック専用。 コンソールは 127.0.0.1 にのみバインドされます。同じマシンの別アカウントやリモートホストからは届きません。
データベースなし。 別途 DB を立てません。読み書きする値は現在のプロジェクトの .moai/ 配下のファイルがすべてです。
認証なし。 ループバック専用が前提なので、ログインやトークンのレイヤーはありません。
コマンド実行なし。 観測領域は GET 以外のメソッドを拒否し、どの画面もサーバー上でコマンドを実行しません。SPEC の status 遷移もコンソールは行いません — 遷移の所有者は各フェーズのマネージャーエージェントです。
情報ループバック専用が認証なしの前提です。リバースプロキシや0.0.0.0バインドで外部に公開する構成はサポートしません。リモートから見る必要があれば SSH トンネルでローカルポートを転送してください。
インターフェース言語はレール下部のセレクターから English · 한국어 · 日本語 · 中文 のいずれかを選びます。選んだ言語はブラウザに残り、次に開くときは最初のレンダーから適用されます。docs-site の 4 ロケールドキュメント と同じ言語セットなので、画面とドキュメントを同じ言語で並べて読めます。
プロジェクトディレクトリで moai web を実行すると 127.0.0.1:3041 にバインドされ、ブラウザが自動的に開きます。
| フラグ | 既定値 | 動作 |
|---|---|---|
--port <int> | 3041 | バインドするループバックポート |
--no-open | false | ブラウザの自動起動を無効にします |
--no-reuse | false | ポートを使う古い moai インスタンスを回収せず、衝突として終了します |
終了はターミナルで Ctrl+C、またはレール下部の終了ボタンです。詳細は CLI リファレンス — moai web を参照してください。
- CLI リファレンス — moai web — フラグとルートの詳細
- カンバンモード — コンソールが描くチェーンの元となる規約
- config セクションリファレンス — 設定領域が扱うキー
- moai epic status — モニターのエピックパネルが読む成果物