ntm について
ntm は、永続的な tmux セッションで複数のコーディングエージェントを管理・調整する Go 製コマンドラインツールです。プロンプト配信、状態の可視化、出力の取得、コンテキストのローテーションを備えています。
主な機能
- 01tmux セッションで複数エージェントを管理
- 02指定または全エージェントへのプロンプト送信
- 03ダッシュボードで状態とコンテキスト使用量を表示
- 04ペイン出力の取得、検索、比較
- 05活動の監視とコンテキストの自動ローテーション
活用シーン
- 01Claude Code、Codex、Gemini の並行実行
- 02実装、テスト、レビュー作業の割り当て
- 03SSH 切断後の永続セッションの再開
- 04エージェント出力の確認とコードブロックの保存
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ dicklesworthstone/ agent_flywheel_clawdbot_skills_and_integrations --skill ntmインストール後、Claude Code で/ntmを入力して読み込まれたか確認します。
詳細
NTM — Named Tmux Manager
tmux をマルチエージェントのコマンドセンターに変える Go 製 CLI です。Claude Code、Codex、Gemini のエージェントを並列でオーケストレーションできます。見事な TUI、自動コンテキストローテーション、Agent Flywheel エコシステムとの深い統合を備えたタイル状のペインで、AI エージェントを起動、管理、調整できます。
開発の背景
複数の AI コーディングエージェントの管理には、さまざまな問題があります。
- ウィンドウが煩雑:エージェントごとに専用のターミナルが必要です
- コンテキストの切り替え:ウィンドウ間の移動で作業の流れが途切れます
- オーケストレーションがない:複数のエージェントに同じプロンプトを送るには、手動でコピーして貼り付ける必要があります
- セッションが不安定:SSH 接続が切れると、すべてのエージェントセッションが失われます
- 状況を把握できない:エージェントの状態をひと目で確認するのが困難です
NTM を使えば、多数のエージェントを含む 1 つのセッションでこれらすべてを解決でき、SSH 接続が切れてもセッションが維持されます。
クイックスタート
# Install
curl -fsSL https://raw.githubusercontent.com/Dicklesworthstone/ntm/main/install.sh | bash
# Add shell integration
echo 'eval "$(ntm init zsh)"' >> ~/.zshrc && source ~/.zshrc
# Interactive tutorial
ntm tutorial
# Check dependencies
ntm deps -v
# Create multi-agent session (agy = Antigravity CLI, NTM-pinned to "Gemini 3.1 Pro (High)")
ntm spawn myproject --cc=2 --cod=1 --agy=1
# Send prompt to all Claude agents
ntm send myproject --cc "Explore this codebase and summarize its architecture."
# Open command palette (or press F6 after `ntm bind`)
ntm palette myproject
セッションの作成
エージェントの起動
ntm spawn myproject --cc=3 --cod=2 --agy=1 # 3 Claude + 2 Codex + 1 Gemini (via agy)
ntm quick myproject --template=go # Full project scaffold + agents
ntm create myproject --panes=10 # Empty panes only
ntm spawn myproject --profiles=architect,implementer,tester
エージェントのフラグ
| フラグ | エージェント | CLI コマンド |
|---|---|---|
--cc=N | Claude Code | claude |
--cod=N | Codex CLI | codex |
--agy=N | Antigravity CLI(「Gemini 3.1 Pro (High)」に固定) | agy |
--gmi=N | Gemini CLI(旧版、廃止予定 — --agy=N を推奨) | gemini |
エージェントの追加
ntm add myproject --cc=2 # Add 2 more Claude agents
ntm add myproject --cod=1 --agy=1 # Add mixed agents
プロンプトの送信
ntm send myproject --cc "Implement user auth" # To all Claude
ntm send myproject --cod "Write unit tests" # To all Codex
ntm send myproject --agy "Review and document" # To all Antigravity (Gemini 3.1 Pro)
ntm send myproject --all "Review current state" # To ALL agents
ntm interrupt myproject # Ctrl+C to all
セッションの操作
| コマンド | エイリアス | 説明 |
|---|---|---|
ntm list | lnt | すべての tmux セッションを一覧表示します |
ntm attach | rnt | セッションに接続します |
ntm status | snt | エージェント数を含むペインの詳細を表示します |
ntm view | vnt | ズームを解除し、タイル状に配置して接続します |
ntm zoom | znt | 指定したペインにズームします |
ntm dashboard | dash, d | 対話型のビジュアルダッシュボードを表示します |
ntm kill | knt | セッションを終了します(強制終了するには -f を指定) |
コマンドパレット
事前設定されたプロンプトをファジー検索できる TUI です。
ntm palette myproject # Open palette
ntm bind # Set up F6 keybinding
ntm bind --key=F5 # Use different key
パレットの機能
- Catppuccin テーマを使ったアニメーション付きグラデーションバナー
- 入力に応じたリアルタイム絞り込みが可能なファジー検索
- コマンドをピン留め/お気に入りに登録(
Ctrl+P/Ctrl+F) - メタデータ付きのライブプレビュー欄
- 数字 1〜9 でクイック選択
- ビジュアルターゲットセレクター(All/Claude/Codex/Gemini)
パレットの操作
| キー | アクション |
|---|---|
↑/↓ または j/k | 移動 |
1-9 | クイック選択 |
Enter | コマンドを選択 |
Esc | 戻る/終了 |
? | ヘルプを表示 |
Ctrl+P | ピン留め/解除 |
Ctrl+F | お気に入りに登録 |
対話型ダッシュボード
ntm dashboard myproject # Or: ntm dash myproject
ダッシュボードの機能
- エージェントカードを色分けして表示するビジュアルペイングリッド
- エージェント数をリアルタイム表示(Claude/Codex/Gemini/User)
- トークン速度バッジ(1 分あたりのトークン数)
- コンテキスト使用量インジケーター(緑/黄/オレンジ/赤)
rキーでリアルタイム更新
ダッシュボードの操作
| キー | アクション |
|---|---|
↑/↓ または j/k | ペインを移動 |
1-9 | クイック選択 |
z または Enter | ペインにズーム |
r | 更新 |
c | コンテキストを表示 |
m | Agent Mail を開く |
q | 終了 |
出力の取得
ntm copy myproject:1 # Copy specific pane
ntm copy myproject --all # Copy all panes
ntm copy myproject --cc # Copy Claude panes only
ntm copy myproject --pattern 'ERROR' # Filter by regex
ntm copy myproject --code # Extract code blocks only
ntm copy myproject --output out.txt # Save to file
ntm save myproject -o ~/logs # Save all outputs
監視と分析
ntm activity myproject --watch # Real-time activity
ntm health myproject # Health status
ntm watch myproject --cc # Stream output
ntm extract myproject --lang=go # Extract code blocks
ntm diff myproject cc_1 cod_1 # Compare panes
ntm grep 'error' myproject -C 3 # Search with context
ntm analytics --days 7 # Session statistics
ntm locks myproject --all-agents # File reservations
アクティビティの状態
| 状態 | アイコン | 説明 |
|---|---|---|
| WAITING | ● | アイドル状態で、作業を開始できます |
| GENERATING | ▶ | 出力を生成中です |
| THINKING | ◐ | 処理中です(まだ出力はありません) |
| ERROR | ✗ | エラーが発生しました |
| STALLED | ◯ | 予期せず停止しました |
チェックポイント
ntm checkpoint save myproject -m "Before refactor"
ntm checkpoint list myproject
ntm checkpoint show myproject 20251210-143052
ntm checkpoint delete myproject 20251210-143052 -f
コンテキストウィンドウのローテーション
NTM はコンテキストの使用量を監視し、使い切る前にエージェントを自動でローテーションします。
仕組み
- 監視:エージェントごとのトークン使用量を推定します
- 警告:使用量が 80% に達すると警告します
- 圧縮:まず
/compactまたは要約を試します - ローテーション:必要に応じて、引き継ぎ用の要約を添えて新しいエージェントを起動します
コンテキストインジケーター
| 色 | 使用量 | 状態 |
|---|---|---|
| 緑 | < 40% | 十分な余裕があります |
| 黄 | 40-60% | 余裕があります |
| オレンジ | 60-80% | しきい値に近づいています |
| 赤 | > 80% | 対応が必要です |
自動圧縮からの復旧
コンテキストが圧縮されると、NTM は復旧用プロンプトを送信します。
[context_rotation.recovery]
enabled = true
prompt = "Reread AGENTS.md so it's still fresh in your mind. Use ultrathink."
include_bead_context = true # Include project state from bv
ロボットモード(AI 自動化)
AI エージェントや自動化で利用できる、機械可読な JSON 出力です。
状態の確認
ntm --robot-status # Sessions, panes, agent states
ntm --robot-context=SESSION # Context window usage
ntm --robot-snapshot # Unified state: sessions + beads + mail
ntm --robot-tail=SESSION # Recent pane output
ntm --robot-inspect-pane=SESS # Detailed pane inspection
ntm --robot-files=SESSION # File changes with attribution
ntm --robot-metrics=SESSION # Session metrics
ntm --robot-plan # bv execution plan
ntm --robot-dashboard # Dashboard summary
ntm --robot-health # Project health
エージェント制御
ntm --robot-send=SESSION --msg="Fix auth" --type=claude
ntm --robot-spawn=SESSION --spawn-cc=2 --spawn-wait
ntm --robot-interrupt=SESSION
ntm --robot-assign=SESSION --assign-beads=br-1,br-2
ntm --robot-replay=SESSION --replay-id=ID
Bead 管理
ntm --robot-bead-claim=BEAD_ID --bead-assignee=agent
ntm --robot-bead-create --bead-title="Fix bug" --bead-type=bug
ntm --robot-bead-show=BEAD_ID
ntm --robot-bead-close=BEAD_ID --bead-close-reason="Fixed"
CASS との統合
ntm --robot-cass-search="auth error" --cass-since=7d
ntm --robot-cass-context="how to implement auth"
ntm --robot-cass-status
終了コード
| コード | 意味 |
|---|---|
0 | 成功 |
1 | エラー |
2 | 利用不可/未実装 |
作業の分配
インテリジェントな作業割り当てを実現するための BV との統合:
ntm work triage # Full triage with recommendations
ntm work triage --by-label # Group by domain
ntm work triage --quick # Quick wins only
ntm work alerts # Stale issues, priority drift, cycles
ntm work search "JWT auth" # Semantic search
ntm work impact src/api/*.go # Impact analysis
ntm work next # Single best next action
インテリジェントな割り当て
ntm --robot-assign=myproject --assign-strategy=balanced # Default
ntm --robot-assign=myproject --assign-strategy=speed # Maximize throughput
ntm --robot-assign=myproject --assign-strategy=quality # Best agent-task match
ntm --robot-assign=myproject --assign-strategy=dependency # Unblock downstream
エージェントの能力マトリックス
| エージェント | 得意分野 |
|---|---|
| Claude | 分析、リファクタリング、ドキュメント作成、アーキテクチャ |
| Codex | 機能の実装、バグ修正、簡単なタスク |
| Gemini | ドキュメント作成、分析、機能 |
プロファイルとペルソナ
ntm profiles list # List profiles
ntm profiles show architect # Show details
ntm spawn myproject --profiles=architect,implementer,tester
ntm spawn myproject --profile-set=backend-team
組み込みプロファイル
architect、implementer、reviewer、tester、documenter
Agent Mail との統合
ntm mail send myproject --to GreenCastle "Review API changes"
ntm mail send myproject --all "Checkpoint: sync status"
ntm mail inbox myproject
ntm mail read myproject --agent BlueLake
ntm mail ack myproject 42
コミット前のガード
ntm hooks guard install # Prevent conflicting commits
ntm hooks guard uninstall
通知
イベントに応じたマルチチャネル通知:
[notifications]
enabled = true
events = ["agent.error", "agent.crashed", "agent.rate_limit"]
[notifications.desktop]
enabled = true
[notifications.webhook]
enabled = true
url = "https://hooks.slack.com/..."
イベントタイプ
agent.error、agent.crashed、agent.rate_limit、rotation.needed、session.created、session.killed、health.degraded
アラートシステム
アラートタイプ
| タイプ | 重大度 | 説明 |
|---|---|---|
unhealthy | 高 | エージェントが異常な状態になる |
degraded | 中 | エージェントのパフォーマンスが低下する |
rate_limited | 中 | API のレート制限を検出 |
restart_failed | 高 | 再起動に失敗 |
max_restarts | 重大 | 再起動の上限を超過 |
ntm --robot-alerts
ntm --robot-dismiss-alert=ALERT_ID
コマンドフック
# ~/.config/ntm/hooks.toml
[[command_hooks]]
event = "post-spawn"
command = "notify-send 'NTM' 'Agents spawned'"
[[command_hooks]]
event = "pre-send"
command = "echo \"$(date): $NTM_MESSAGE\" >> ~/.ntm-send.log"
利用可能なイベント
pre-spawn、post-spawn、pre-send、post-send、pre-add、post-add、pre-shutdown、post-shutdown
安全システム
AI エージェントによる危険なコマンドをブロックします:
ntm safety status # Protection status
ntm safety check "git reset --hard"
ntm safety install # Install git wrapper + Claude hook
ntm safety uninstall
保護対象のコマンド
| パターン | リスク | アクション |
|---|---|---|
git reset --hard | 未コミットの変更が失われる | ブロック |
git push --force | リモートの履歴を上書きする | ブロック |
rm -rf / | 取り返しのつかない削除 | ブロック |
DROP TABLE | データベースを破壊する | ブロック |
マルチエージェント戦略
分割統治
ntm send myproject --cc "design the database schema"
ntm send myproject --cod "implement the models"
ntm send myproject --agy "write tests"
競合比較
ntm send myproject --all "implement a rate limiter"
ntm view myproject # Compare side-by-side
レビューパイプライン
ntm send myproject --cc "implement feature X"
ntm send myproject --cod "review Claude's code"
ntm send myproject --agy "write tests for edge cases"
設定
ntm config init # Create ~/.config/ntm/config.toml
ntm config show # Show current config
ntm config project init # Create .ntm/config.toml in project
設定例
projects_base = "~/Developer"
[agents]
claude = 'claude --dangerously-skip-permissions'
codex = "codex --dangerously-bypass-approvals-and-sandbox"
gemini = "gemini --yolo"
[tmux]
default_panes = 10
palette_key = "F6"
[context_rotation]
enabled = true
warning_threshold = 0.80
rotate_threshold = 0.95
環境変数
| 変数 | 説明 |
|---|---|
NTM_PROJECTS_BASE | プロジェクトのベースディレクトリ |
NTM_THEME | カラーテーマ:auto、mocha、latte、nord、plain |
NTM_ICONS | アイコンセット:nerd、unicode、ascii |
NTM_REDUCE_MOTION | アニメーションを無効化 |
NTM_PROFILE | パフォーマンスプロファイリングを有効化 |
テーマと表示
カラーテーマ
| テーマ | 説明 |
|---|---|
auto | ライト/ダークを検出 |
mocha | デフォルトのダークテーマ。暖色系 |
latte | ライト版 |
nord | 北極をイメージしたテーマ |
plain | 色なし |
エージェントの色
| エージェント | 色 |
|---|---|
| Claude | モーブ(紫) |
| Codex | 青 |
| Gemini | 黄 |
| ユーザー | 緑 |
表示幅の段階
| 幅 | 動作 |
|---|---|
| <120 cols | 縦積みレイアウト |
| 120-199 cols | リスト/詳細の分割表示 |
| 200-239 cols | ガターを広げる |
| 240+ cols | 詳細をすべて表示 |
ペインの命名規則
パターン:<project>__<agent>_<number>
myproject__cc_1- 1番目の Claudemyproject__cod_2- 2番目の Codexmyproject__gmi_1- 1番目の Gemini
ステータスインジケーター:C = Claude、X = Codex、G = Gemini、U = User
シェルエイリアス
eval "$(ntm init zsh)" の実行後:
| カテゴリ | エイリアス |
|---|---|
| エージェントの起動 | cc、cod、agy(旧名:gmi) |
| セッション | cnt、sat、qps |
| エージェント管理 | ant、bp、int |
| ナビゲーション | rnt、lnt、snt、vnt、znt |
| ダッシュボード | dash、d |
| 出力 | cpnt、svnt |
| ユーティリティ | ncp、knt、cad |
インストール
# One-liner (recommended)
curl -fsSL https://raw.githubusercontent.com/Dicklesworthstone/ntm/main/install.sh | bash
# Homebrew
brew install dicklesworthstone/tap/ntm
# Go install
go install github.com/Dicklesworthstone/ntm/cmd/ntm@latest
# Docker
docker pull ghcr.io/dicklesworthstone/ntm:latest
アップグレード
ntm upgrade # Check and install updates
ntm upgrade --check # Check only
ntm upgrade --yes # Auto-confirm
Tmux の基本
| キー | 操作 |
|---|---|
Ctrl+B, D | デタッチ |
Ctrl+B, [ | スクロール/コピーモード |
Ctrl+B, z | ズームの切り替え |
Ctrl+B, Arrow | ペイン間を移動 |
F6 | NTM パレットを開く(ntm bind の実行後) |
Flywheel との統合
| ツール | 統合 |
|---|---|
| Agent Mail | メッセージのルーティング、ファイルの予約、コミット前のガード |
| BV | 作業の分配、トリアージ、割り当て戦略 |
| CASS | ロボットモードを使った過去のセッションの検索 |
| CM | エージェントの引き継ぎにおける手続き的メモリ |
| DCG | 安全システムとの統合 |
| UBS | ファイル変更時の自動スキャン |