Skip to main content
Glama
README.md
# CatHub Nyaanes

複数のサブスクリプションAI CLIを「猫」として一つの相談室に編成し、Claude CodeからMCP経由で指揮できるローカルAIドック。

![CatHub Nyaanes 相談室のスクリーンショット](assets/screenshot.png)

CatHubが複数AIの集まる場所を、Nyaanesがそれらをつなぐハーネスを表す。

```text
あなた
  ↓ 会話
Claude Code(MCP接続)
  ↓ dispatch / broadcast / debate
CatHub Nyaanes(ハーネス)
  ├─ CODEX(Codex CLI)
  ├─ GROK(Grok Build CLI)
  ├─ CLAUDE CLI(任意・Claude Code -p)
  ├─ AGY(任意・Google Antigravity CLI)
  └─ 外部MCP個体(Join Codeで接続した任意のAI)
```

**APIキーは使わない。** 各公式CLIが持つ既存のサブスクリプション認証をそのまま利用する。CatHubは認証情報ファイルを読まず、公式CLIの`login`コマンドを起動してOAuth URLを中継するだけ。

## できること(抜粋)

- Registry上の任意の猫へ非同期で仕事を依頼する(`dispatch`)
- 複数猫への一斉相談(`broadcast`)と、最大3ラウンドの有限自動相談(`debate`)
- ジョブごとに実行モードを切り替える:相談/リサーチ/サンドボックス/フルエージェント
- 猫ごとのモデル・推論エフォートを既定値とジョブ単位で指定する(各CLIの実機カタログから取得)
- 猫ごとの`SOUL.md`(人格プロンプト)をGUIで編集する。全猫共通の`NYAANES CORE`は固定注入
- サブスク認証の3値表示(ONLINE/要ログイン/OFFLINE)とログイン誘導ボタン
- 在室/帰宅待ち/おうちの切り替えで、使わないAIを相談候補から外す
- 共有掲示板:進捗・決定・引き継ぎを一投稿一Markdownで保存し、別セッション・別AIへ現在地を引き継ぐ
- `check_in`/`check_out`による出退勤と未読管理
- ドット絵の猫たちが待機中は尻尾を振り、実行中はキーボードを叩く

## 必要環境

- Windows 11(他OSは未検証)
- Node.js 24以降(SQLite組み込みモジュールを使用)
- 指揮側: [Claude Code](https://claude.com/claude-code)
- 猫側(使うものだけでよい。未導入のCLIはOFFLINE表示になるだけ):
  - [Codex CLI](https://github.com/openai/codex)(`npm i -g @openai/codex`)
  - Grok Build CLI
  - Claude Code CLI(`-p`個体として。指揮側とは別役)
  - Google Antigravity CLI(`agy`)

## セットアップ

```bash
npm install
npm run build
```

起動・終了はランチャーで行う:

- `CatHub Nyaanes 起動.cmd` — ハーネスを起動してブラウザで相談室を開く(ポート4580)
- `CatHub Nyaanes 終了.cmd` — ハーネスを安全終了する

### Claude Codeへの MCP 登録

```bash
claude mcp add cathub-nyaanes -- node <このフォルダの絶対パス>/dist-server/mcp.js
```

登録すると、Claude Codeから `agents`、`dispatch`、`broadcast`、`debate`、`results`、`stop`、`board_post`、`board_list`、`briefing`、`board_resolve`、`check_in`、`check_out` などのツールが使える。

`skills/nyaanes-handoff/` に、Claude Codeへインストールできる出退勤スキル(チェックイン/明示宣言によるチェックアウトの手順書)を同梱している。

## 4つの実行モード

| モード | 内容 |
|---|---|
| 相談 | ワークスペースを読んで考える。書き込み・ネットワーク不可 |
| リサーチ | 読み取り+ネットワーク調査。プロジェクトは変更しない |
| サンドボックス | 選択したワークスペースだけを作業対象にするエージェントモード |
| フルエージェント | ローカル操作とネットワークを許可するYOLOモード |

`broadcast`と`debate`は相談モード固定。ロール任命だけでファイル権限が上がることはない。

### 境界強度に関する正直な注記

- Windows版Codexでは、環境によってOSレベルの`workspace-write`サンドボックスが利用できない。その場合のサンドボックスモードはプロンプトによるワークスペース境界で動く(OS隔離ではない)。
- **Grokの境界はプロンプトのみ。** CatHubはACPの`clientCapabilities`でファイル・端末アクセスを一切許可していないが、Grok Build CLI自身の組み込みツールはこの設定と無関係に動作することを実機で確認している。Grokの4モードは境界指示への遵守に依存し、技術的な強制力はない。
- 完全な技術的隔離が必要な用途では、サンドボックスモードを強い安全境界として扱わないこと。

## データの保存先

- ジョブ履歴: SQLite(`data/`)
- 掲示板投稿: `data/board/posts/YYYY/MM/DD/` 以下のMarkdown(アプリを介さず直接読める)
- 編集したSOUL: `data/cats/*.SOUL.md`
- 同梱の`prompts/NYAANES_CORE.md`と`prompts/modes/`は固定ポリシーで、GUIから変更できない

## 開発

```bash
npm test           # サーバー側テスト(node:test)
npm run typecheck  # 全tsconfigの型チェック
npm run build      # UI+サーバー+デスクトップのフルビルド
npm run dist:win   # WindowsポータブルEXEのビルド(electron-builder)
```

テストは全アダプターを偽CLI(テストダブル)で駆動し、実際の認証・課金を発生させない。

## ライセンス

MIT