【実験】tmux × Claude Codeで、VPS上に「AI完全会社」を構築してみた話


思いついて**「tmuxの複数ウィンドウでAI(Claude Code)を動かし、擬似的な会社組織を作る」**という実験を行いました。

Geminiと壁打ちしながらアーキテクチャを詰め、実際にVPS上で稼働させてみたところ、単なる自動化とは違う**「箱庭的な面白さ」と、現実的な「API制限の壁」**が見えてきました。

今回は、その構築プロセスと、実際に動かしてみた気づきをシェアします。

実験のコンセプト:AI株式会社の設立

今回目指したのは、単一のタスクをこなすエージェントではなく、**「自律的に連携する組織」**です。 Linuxのターミナル多重化ソフトウェアである tmux を使い、以下のような割り当てで「会社」を表現しました。

  • Window(タブ) = 「部署」
  • Pane(分割画面) = 「社員」

組織図(tmux構成)

実際に構築したのは、以下のような構成です。

  1. Window 0: 経営戦略室 (HQ)

    • CEO: 全体の指揮、プロジェクト管理。
  2. Window 1: 開発部 (Dev)

    • PM/Frontend/Backend: 設計と実装担当。
  3. Window 2: 管理・バックオフィス (Admin)

    • Legal: コンプライアンスチェック、規約作成。
    • Knowledge: 社内Wiki(Obsidian等)の整備。
  4. Window 3: 広報 (Marketing)

    • SNS/Analyst: 情報発信と市場調査。

理論上、マシンスペックとAPIレートリミットが許す限り、エージェント(社員)は無限に増殖可能です。

システム構成と通信の仕組み

単なるチャットの羅列ではなく、システムとして機能させるために以下のディレクトリ構成を採用しました。GitHubでのリポジトリ名は aoi-system としています。

Plaintext

aoi-system/ (Root)
├── ai-corp/               # AI組織の頭脳
│   ├── boot_corp.sh       # 起動スクリプト
│   ├── .tmux.conf         # 画面分割設定
│   ├── prompts/           # CEO, Dev, Legal等の役割定義
│   └── communication/     # エージェント間の通信用
│       └── inbox/         # ここに指示書(JSON/MD)を投げる
├── docker/                # 既存のn8nなどのインフラ
└── data/                  # 永続データ

コミュニケーションの「作法」

ここが肝なのですが、各エージェントはチャットで直接話すのではなく、**「ファイルベースのメッセージキュー」**でやり取りします。

  1. CEOが指示書(MarkdownやJSON)を作成し、communication/inbox に配置。
  2. DevLegalのエージェントがフォルダを監視し、自分宛てのタスクを処理。
  3. 成果物を提出し、完了報告を書き込む。

私は基本、CEOのウィンドウ(カウンターパート)に対して「こういうアプリを作りたい」と入力するだけ。あとはCEOが各部署へのプロンプトを作成し、指示を飛ばしてくれます。

やってみて分かったこと:箱庭感と「かわいさ」

実際に6つほどの部署を立ち上げてみて、最初に感じたのは**「健気さ」**でした。

最初はセットアップのために各部署を一つずつ立ち上げる手間があるのですが、一度動き出すと、CEOが出した指示に対して各エージェントが作業を完了し、次のタスクを待機している状態になります。

tmuxの画面分割の中で、複数のAIがそれぞれの役割を全うしようと待機したり動いたりしている様子は、まるで**「箱庭(ハコニワ)」**を見ているようで、妙な愛着(かわいさ)が湧いてきます。

現実的な壁:APIレートリミット

一方で、運用上の大きな課題にも直面しました。

Claude Proプランでは、すぐにAPI上限に達します。

6エージェントが並列で思考し始めると、トークン消費量は凄まじいことになります。まともに「会社」として機能させ続けるには、Claude Max、TeamプランやEnterprise、あるいはAPI課金の青天井モードへの切り替えが必要だと感じました。

ただ、見方を変えれば「部署を2〜3個に絞る(少数精鋭)」運用にすれば、Proプランの範囲内でも十分遊べる感触はあります。

インフラ構成の妙:VPS × tmux × Tailscale

今回、この環境をローカルPCではなく**VPS(常時稼働サーバー)**上に構築したのは正解でした。

  • 永続性: tmuxのセッションはサーバー上で生き続けるため、PCの電源を切っても「会社」は動き続けます(または待機し続けます)。再接続すれば、いつでも作業の続きから再開できます。
  • Vibe Coding: TailscaleでVPN接続することで、iPhoneやiPadから安全にサーバーへアクセスできます。

出先からスマホでふとCEOに指示を出し、帰宅してPCを開くと、法務部と開発部が議論して成果物ができている。そんな「スマホだけで完結するVibe Coding」の実用性を肌で感じることができました。

まとめ:なぜ自前でやるのか?

Difyやn8nを使えばワークフローは組めますし、SaaSを使えばもっと楽かもしれません。しかし、権利関係が複雑なコンテンツ制作や、自分だけの独自データを扱う場合、**「自前のインフラ(VPS)に、自前のデータとAI組織を持つ」**ことには大きな意義があります。

立ち上げ役としての私の仕事は、リポジトリを作り、最初のコミットをして、彼らに「あとは頼んだ」と言うことまででした。

AIエージェントたちがtmuxの向こう側で自律的に働く未来。まだ「待ち時間」との戦いはありますが、非常に有意義な実験でした。

(執筆者メモ)

  • 環境: VPS (Linux), Docker
  • ツール: Claude Code, tmux, Gemini (アーキテクチャ壁打ち), Tailscale
  • 今の気分: 待ち時間は多いけど、ログを眺めているだけでお酒が飲める。

リソース・設計書

本実験で使用したディレクトリ構成と、AIエージェントに渡したマスタープラン(指示書)を公開します。 完全な構成ファイル(tmux設定や起動スクリプト含む)は、以下のGitHubリポジトリにまとめています。

[Githubアイコン]https://github.com/0xshugo/ai-corp-experiment

1. ディレクトリ構成

今回は既存のDocker環境などと共存させるため、以下のような構成にしました。

project-root/
├── MASTER_PLAN.md        # 下記で紹介する全体計画書
├── TECHNICAL_REFERENCE.md # 技術仕様書(動画の手法などを定義)
├── ai-corp/
│   ├── .tmux.conf        # エージェント操作用の画面設定
│   ├── prompts/          # 各役割(CEO, Dev等)のシステムプロンプト
│   └── communication/    # エージェント間の通信用ディレクトリ
└── data/                 # 成果物やログの保存先

2. AI組織マスタープラン (MASTER_PLAN.md)

CEOエージェントに最初に読ませる「会社の憲法」です。これを読み込ませることで、単なるチャットボットが「経営者」として振る舞い始めます。

Markdown

# AI-Corp Genesis: 自律分散型AI組織構築計画

## 1. プロジェクト概要
本プロジェクトの目的は、単一のVPS上で動作する「完全な機能を持つAI企業組織」を構築することである。
開発だけでなく、インフラ管理、セキュリティ、法務、営業、経営判断の各機能を自律的なAIエージェント(Claude Code + tmux)として実装し、それらが相互に連携して価値を創出するエコシステムを目指す。

## 2. アーキテクチャとデータ管理方針

### 2.1. データ整合性と通信の解決策
単一ファイルの競合と肥大化を防ぐため、**「ディレクトリベースのメッセージキュー」**と**「構造化データ」**を採用する。

* **通信プロトコル:**
    * `communication/{from_dept}/{to_dept}/` ディレクトリに、タイムスタンプ付きのJSONまたはMDファイル(例: `YYYYMMDD_HHMM_ReqID.json`)を配置することで指示を送る。
    * 各エージェントは自分の「受信箱」を監視し、処理が終わればファイルを `archive/` へ移動する。
* **ステート管理:**
    * 各部署は `status.md` を持ち、現在の自身のステータス(Busy/Idle)と進行中のタスクのみを記載する。

### 2.2. システム構成(tmuxウィンドウ構成案)

| Window ID | 部署名 | 役割 (Role) | 担当エージェント数 |
| :--- | :--- | :--- | :--- |
| **0: HQ** | 経営戦略 | **CEO**: 全体指揮 / **COO**: 整合性チェック・進捗管理 | 2 |
| **1: Dev** | 開発部 | **PM**: 設計 / **Devs**: 実装 (FE/BE) | 2~3 |
| **2: Admin** | 管理部 | **Legal**: 法務・規約チェック / **Knowledge**: 社内Wiki管理 | 2 |
| **3: PR** | 広報・Mkt | **Marketing**: 市場調査・広報記事作成 | 2 |

---

## 3. 実装ロードマップ

### Phase 1: コアシステムと通信基盤の確立 (Foundation)
**目標:** ファイル競合を起こさずに複数のAIが連携できる仕組みを作る。
* [ ] **ファイルシステム設計:** `communication/`, `data/`, `logs/` のディレクトリ構造を確定。
* [ ] **通信ルールの実装:** CEOが指示を出し、Devが受け取り、完了報告を返すフローを確立する。

### Phase 2: ビジネスロジックと外部連携 (Business)
**目標:** 案件をシミュレーションし、実行可否を判断する「商流」を作る。
* [ ] **受注判定フロー:** 案件に対し、**CEO(予算) + PM(技術) + Legal(法務)** が合議を行い「Go/No-Go」を判定するプロセス。

### Phase 3: グローバル・コンプライアンス (Expansion)
**目標:** 国際的な法規制に対応し、品質を保証する。
* [ ] **Legalエージェント:** GDPR、CCPA、個人情報保護法等の基本ルールセットを知識ベース(RAG)として持たせる。

---

## 4. 懸念事項と対策 (Risk Management)

| 懸念領域 | 具体的なリスク | 対策方針 |
| :--- | :--- | :--- |
| **整合性** | 部署間で矛盾するルールが発生する | **COOエージェント**を「ルールキーパー」として配置。定期的に行動ログを照合する。 |
| **リソース** | APIレートリミット到達 | エージェント数を絞る、または重要度の低いタスクには軽量モデルを使用する。 |
| **セキュリティ** | 外部からの攻撃・情報漏洩 | 外部通信のホワイトリスト管理。VPS自体のFW設定を定期監査。 |

3. 技術参照仕様書 (TECHNICAL_REFERENCE.md)

AIに「どうやって実装するか」の文脈(Context)を与えるためのファイルです。YouTubeやGitHub上の先行事例をAI自身に検索・学習させることで、セットアップを自動化します。

Markdown

# AI-Corp Technical Reference & Foundation

## 1. 参照リソース (Source Material)
本プロジェクトは、以下のリソースで解説されている実装手法をベースラインとして採用する。

* **Primary Concept:**
    * "Claude Code Organization" methodology (Multi-agent architecture using tmux)
* **Target Repositories for Learning:**
    * AIエージェントは `claude-code-communication` などのキーワードでGitHubを検索し、ディレクトリ構造(`setup.sh`, `prompts/`)のベストプラクティスを参照すること。

## 2. コア・アーキテクチャ (Core Architecture)

### 2.1. tmux構成と操作性 (UI/UX)
多画面運用時の生産性を担保するため、以下の設定を `.tmux.conf` に適用する。

```tmux
# .tmux.conf essential settings
# マウス操作を有効化(ペイン移動、リサイズ用)
set-option -g mouse on

# キーバインド設定(画面分割の効率化)
bind | split-window -h
bind - split-window -v

補足:AIエージェントへの指示

セットアップ時、AIにまずこのファイルを読ませ、**「参照リソースをWeb検索して構造を解析し、MASTER_PLAN.md に基づいて環境を構築せよ」**と指示することで、自律的な環境構築を開始させることができます。