CLI ガイド
nolto CLI は、ターミナルから Nolto の MCP サーバーを操作する薄いクライアントです。npm パッケージ @nolto/cli として配布され、CI/CD パイプラインや Claude Code / Codex プラグインの基盤として機能します。
インストールと初回セットアップ
Node.js 20.11 以上が必要です。インストール不要で npx から実行できます:
npx @nolto/cli init
インストールした場合のコマンド名は nolto です(以降の例はインストール済みの表記):
npm install -g @nolto/cli
nolto init
対話的なプロンプトが表示されます:
- Base URL: デフォルトは
https://nolto.app(変更不要な場合はそのまま Enter) - API トークン: 入力は非表示(
*で表示) - デフォルトプロジェクト: トークンが検証された後、プロジェクト一覧から選択
設定は ~/.config/nolto/config.json(パーミッション 0o600)に保存されます。
トークン発行
API トークンは 設定 > API トークン で発行します。
トークンは mcp:read と mcp:write の両スコープを持ちます。パスワードと同様に扱い、ソースコードへの直書きは避けてください。CI 環境ではシークレットマネージャーを使用してください。
コマンドリファレンス
設定・確認
| コマンド | 説明 |
|---|---|
nolto init | インタラクティブな初期設定 |
nolto whoami | 現在の認証・設定状態を表示 |
リポジトリ紐付け
リポジトリ root に nolto.json を置くと、そのリポジトリ内のすべての CLI コマンドが自動的に正しいプロジェクトを参照します。チームでリポジトリをクローンした全員に共有されます。
| コマンド | 説明 |
|---|---|
nolto link <projectId> | nolto.json を書き込み(コミット案内を表示) |
nolto link --show | 現在の紐付けを確認(パス・projectId・解決元) |
nolto link --unlink | nolto.json から projectId を削除 |
nolto.json の形式:
{ "projectId": "00000000-0000-0000-0000-000000000001" }
nolto.json があれば --project フラグや NOLTO_PROJECT 環境変数を省略できます。
プロジェクト管理
| コマンド | 説明 |
|---|---|
nolto project list | 参加プロジェクト一覧 |
nolto project register <name> | 新規プロジェクト作成 |
nolto project set-default <projectId> | デフォルトプロジェクトをサーバーに設定 |
nolto project set-default <projectId> --local | ローカル設定ファイルのみに保存(MCP 呼び出しなし) |
プラン管理
| コマンド | 説明 |
|---|---|
nolto plan list [--status <status>] | プラン一覧(ステータスフィルタ可) |
nolto plan get <planId> | プラン詳細 |
nolto plan register --file <path> | ファイルからプランを登録 |
nolto plan status <planId> <status> | プランのステータスを更新 |
nolto plan review <planId> <verdict> | プランのレビューを記録 |
plan register の主なオプション:
nolto plan register --file PLAN.md \
--title "機能実装計画" \
--status not_started \
--doc plan=PLAN.md \
--doc test_report=test-results.md \
--no-git
フェーズ管理
| コマンド | 説明 |
|---|---|
nolto phase status <planId> <phaseId> <status> | フェーズのステータスを更新 |
nolto phase test <planId> <phaseId> <verdict> | フェーズのテスト結果を記録 |
ドキュメントアップロード
nolto doc upload <planId> --file report.md --kind test_report
環境変数と設定ファイル
環境変数(優先度順)
| 変数名 | 説明 |
|---|---|
NOLTO_TOKEN | API トークン |
NOLTO_BASE_URL | ベース URL(省略時: https://nolto.app) |
NOLTO_PROJECT | デフォルトプロジェクト ID |
設定ファイル
~/.config/nolto/config.json(または $XDG_CONFIG_HOME/nolto/config.json):
{
"token": "nolto_user_...",
"baseUrl": "https://nolto.app",
"defaultProjectId": "00000000-0000-0000-0000-000000000001"
}
優先度: コマンドラインフラグ > 環境変数 > nolto.json(リポジトリ紐付け) > 設定ファイル > デフォルト値
終了コード一覧
| コード | 意味 |
|---|---|
0 | 成功 |
1 | MCP ツールエラー(result.isError: true またはプロトコルエラー) |
2 | ローカル入力検証エラー(不正な引数・ファイルエラーなど) |
3 | 認証エラー(トークン未設定 / 401 / 403) |
4 | レート制限(429)— Retry-After 秒数をメッセージに含む |
5 | ネットワーク / DNS / 接続エラー |
レート制限の目安
Nolto MCP サーバーはユーザーあたり 60 リクエスト/分 のレート制限があります。CLI の 1 コマンドあたり約 3 HTTP ラウンドトリップ(initialize + initialized + tools/call)を消費するため、実効スループットは 約 20 コマンド/分 です。
429 エラーが発生した場合は、メッセージに含まれる Retry-After 秒数を待ってから再試行してください。
オフラインキュー (nolto queue)
nolto queue はトークン不要のオフラインコマンドです。進捗情報をプロジェクトディレクトリの .nolto/pending.jsonl に追記し、後で nolto flush でまとめて送信できます。Claude Code の Stop フックと組み合わせて、セッション終了時の自動送信に使うことが主な用途です。
4 つのサブコマンド
| コマンド | 説明 |
|---|---|
nolto queue phase-status <planId> <phaseId> <status> | フェーズのステータス更新をキューに追加 |
nolto queue phase-test <planId> <phaseId> <verdict> | フェーズのテスト結果をキューに追加 |
nolto queue plan-status <planId> <status> | プランのステータス更新をキューに追加 |
nolto queue plan-review <planId> <verdict> | プランのレビューをキューに追加 |
有効な <status> 値: not_started / in_progress / done / discarded
有効な <verdict> 値 (phase-test): passed / failed / skipped
有効な <verdict> 値 (plan-review): go / no_go
キューファイルの場所
<projectDir>/.nolto/pending.jsonl(1 エントリ 1 行の JSONL 形式)。
<projectDir> の解決順序(優先度順):
--queue-dir <path>フラグNOLTO_QUEUE_DIR環境変数CLAUDE_PROJECT_DIR環境変数(Claude Code が自動設定)- 最も近い
.gitディレクトリを持つ祖先ディレクトリ - 最も近い
.noltoディレクトリを持つ祖先ディレクトリ - カレントディレクトリ (
process.cwd())
キューの上限は 200 エントリ(QUEUE_MAX_ENTRIES)です。上限に達した場合は exit 2 で終了します。nolto flush でキューを空にしてから再度キューイングしてください。
フラッシュ (nolto flush)
nolto flush はキューに溜まったエントリを Nolto MCP サーバーに送信します。
同期モード(デフォルト)
nolto flush [--queue-dir <path>]
- キューの先頭から順に 1 件ずつ送信し、成功するたびにキューファイルを書き換えます(原子的リネーム)。
- 失敗(ネットワークエラー・429 など)が発生した時点で停止し、残りのエントリはキューに保持します。
- 常に exit 0 を返します(v0.2.0)。失敗はキューに残り、
.nolto/flush.logに記録されます。 - JSON サマリー出力 (
--json):{ flushed: number, remaining: number, failed: 0 | 1 }
デタッチモード (--detach)
nolto flush --detach
バックグラウンドワーカーを二重フォーク(spawn detached + unref)して即座に exit 0 します。Claude Code の Stop フックはこのモードで起動されます。
障害時の動作
| 状況 | 動作 |
|---|---|
| トークン未設定 | キュー保持 + flush.log に warn ログ + exit 0 |
| ネットワークエラー | 停止 + 残りキュー保持 + flush.log に error ログ + exit 0 |
| 429 レート制限 | 停止 + 残りキュー保持 + flush.log に error ログ + exit 0 |
ロックファイル
同時実行を防ぐため .nolto/flush.lock に PID を書き込みます。別プロセスがロックを保持している場合は何もせず exit 0 します。プロセスが異常終了した場合(stale PID)は次回起動時に自動的にロックを引き継ぎます。
JSON 出力モード
--json フラグを付けると、すべての出力が JSON 形式になります(結果は stdout、エラーは stderr):
nolto plan list --json | jq '.[] | .id'
エラー時の stderr 形式:
{
"error": {
"message": "Unauthorized",
"exitCode": 3,
"status": 401,
"hint": "Run `nolto init` to configure a token, or set the NOLTO_TOKEN environment variable."
}
}
フィールド: message(文字列)、exitCode(数値)、status(HTTP ステータスコード、HTTP エラー時のみ存在)、hint(任意のガイダンス)。