Issue #139 Cloud Architecture View v2 2026-04-01

MNML システム構成図

組織アーキテクチャをクラウドインフラ構成図の用語で再表現する — ネットワーク境界・外部サービス・通信プロトコル明示版

システム構成図

Administrator (CEO) Slack UI INTERNAL NETWORK — Mac mini (常時稼働サーバー) Physical Host: Mac mini M2 · macOS · ~/Dev/mnml/agents/ INGRESS LAYER API Gateway bot.py (Bolt) Request Router IF (Sonnet) Rate Limiter / Quota Task Scheduler cron / launchd STATE STORE tasks.json agents.json worker_status.json file I/O ORCHESTRATOR SERVICES (M層 — Domain Controllers) Application Controllers (VDU — 1線) shift Opus the-botch Opus web Opus events Opus ... Business Process Service (BO — 2線) BA Controller 経理 法務 調達 HR 総務 (Opus) Batch Pipelines (ops/ — Scheduler 駆動) 経費 請求書 報告書 メール 予定 ニュース メール振り分け subprocess COMPUTE FLEET (W層 — Serverless Worker Nodes) researcher Sonnet architect Opus coder Opus reviewer Opus tester Sonnet docs Sonnet legal-rev. Opus tax Opus PJM Opus 都度起動 → 完了 → 消滅(Serverless) ロール注入: CLAUDE.md + knowledge/ subprocess stdout LLM ENGINE (AI Compute) Claude CLI subprocess (Max Plan) Anthropic API Haiku (バッチ評価) Config Store (IaC) CLAUDE.md + knowledge/ + .env subprocess OBSERVABILITY & GOVERNANCE Policy-as-Code Audit / Logging Resource Governor Health Check Dashboard audit trail (file I/O) FIREWALL EXTERNAL SERVICES インターネット経由 Slack API WebSocket (Socket Mode) Bot通信 + CEO UI GitHub API HTTPS REST Issue管理 / コード操作 Anthropic Claude API HTTPS REST LLMエンジン (Haiku/Sonnet/Opus) Microsoft Graph API HTTPS REST + OAuth2 Outlook / OneDrive / SharePoint Calendar / Mail Cloudflare Pages HTTPS REST HTMLデプロイ / 公開 RSS / Webフィード HTTPS GET (XML/JSON) ニューススキャン用ソース MFクラウド API HTTPS REST 経費 / 請求書 WebSocket HTTPS REST HTTPS HTTPS+OAuth2 HTTPS POST HTTPS GET HTTPS REST 凡例(Legend) 同期通信(subprocess / file I/O) 外部API通信(HTTPS / WebSocket) 監査ログ / 非同期通知 双方向通信 ネットワーク境界(Internal) ファイアウォール境界

凡例(Legend)

線の種類と意味

線の種類意味プロトコル例
実線(灰色)■ #64748b内部コンポーネント間の同期通信subprocess, stdout, file I/O
実線(赤)■ #dc2626ファイアウォールを越える外部API通信HTTPS REST, WebSocket, OAuth2
破線(橙)■ #ea580c監査ログ・非同期通知(パッシブ)file I/O(ログ書き込み)
破線(赤/薄)■ #dc2626 (dashed)外部への読み取り専用(Pull型)HTTPS GET(RSS取得等)

矢印の方向

矢印意味
→(単方向)リクエスト送信側 → 受信側Worker → Cloudflare Pages(デプロイ)
⇄(双方向)リクエスト/レスポンスの両方向API Gateway ⇄ Slack API(メッセージ送受信)

ネットワーク区画

区画枠線の色含まれるもの
Internal Network(Mac mini内)■ 青緑(破線)bot.py, IF層, M層, W層, LLM Engine, State Store, Governance
External Services(インターネット経由)■ 赤(実線)Slack API, GitHub API, Anthropic API, MS Graph, Cloudflare Pages, RSS, MFクラウド
Firewall 境界■ 赤(破線・縦)Internal ↔ External の通信は全てこの境界を通過する

用語マッピングテーブル

マッピングの方針
組織アーキテクチャの各要素を、AWS / GCP / Kubernetes などで馴染みのあるインフラ用語に1:1で対応させた。
組織用語 システム用語 実体 ライフサイクル
CEO Administrator / Root Account 人間(内山)
Platform VPC (Virtual Private Cloud) agents リポジトリ全体 常時稼働
Gateway API Gateway / Application Server bot.py (Bolt + Socket Mode) 常駐デーモン
IF(Orchestrator) Request Router / Ingress Controller Claude CLI (Sonnet) リクエスト毎に起動→消滅
Scheduler Task Scheduler / Cron Service bot/scheduler.py + launchd 常駐デーモン
M層(Domain Experts) Orchestrator Services / Domain Controllers Claude CLI (Opus) 常駐セッション 常駐(自動復帰)
VDU(事業M層) Application Controller リポジトリ単位のOrchestrator オンデマンド → 常駐化
BA(管理M層) Business Process Service 経理・法務・総務の統合Controller 常駐
W層(Skill Pool) Compute Fleet / Serverless Workers Claude CLI subprocess(ロール注入) 都度起動→完了→消滅
W層ロール注入 Container Image / Config Injection CLAUDE.md + knowledge/ 起動時に注入
Policy Engine Policy-as-Code / Config Management CLAUDE.md + pre-commit hooks + ruff イベント駆動
Audit Engine Audit / Logging Service agents/ai-ops/monitor/ 常駐デーモン
Resource Governor Resource Manager / Rate Limiter Gateway内蔵(トークンクォータ管理) Gateway に同居
Self-Monitor Health Check / Watchdog launchd KeepAlive + 死活監視 常駐デーモン
TaskTracker State Store tasks.json / agents.json ファイルベース永続化
Dashboard Observability Dashboard HTTP + SSE(組織図・ステータス) Gateway に同居
External(Slack等) External APIs / Client Interface Slack, GitHub, MS Graph, MFクラウド 外部サービス
Claude CLI LLM Engine / AI Compute subprocess (Max Plan) タスク単位
PJM Coordinator Node(有期) Claude CLI (Opus, --resume) PJ期間中常駐
Generator / Critic Worker Role(生成 / 検証) ロール注入パターンの分類

コンポーネント詳細

Ingress Layer(入口層)

API Gateway
全ての外部通信を仲介する単一エントリポイント。Slack Bolt (Socket Mode) で常駐。 Rate Limiter / Resource Governor を内蔵し、同時実行数・トークンクォータを制御する。

実装: bot/app.py, bot/claude_runner.py
プロトコル: WebSocket (Slack), HTTP (Dashboard)
Request Router (IF)
受信メッセージを解析し、適切なOrchestrator Serviceにルーティングする。 Sonnetモデルをリクエスト単位で起動→消滅(ステートレス)。

実装: agents/if/
判断: ルーティングテーブルに基づく振り分け + direct応答
Task Scheduler
定期タスク(経費処理、ニュース巡回等)をcron的に発火する。 launchd (macOS) で管理。

実装: bot/scheduler.py
トリガー: 時刻ベース(毎朝7時等)

Orchestrator Services(制御層)

Application Controllers (VDU)
リポジトリ単位のドメインコントローラ。判断のみ行い、実行はCompute Fleetに委譲する。

インスタンス: shift, the-botch, web, events, spotify
モデル: Opus(常駐セッション)
起動: CEO確認後にオンデマンド起動 → 常駐化
Business Process Service (BA)
経理・法務・調達・HR・総務を統合管理するController。 Batch Pipelines(ops/)と連携し、定型業務を自動処理する。

モデル: Opus(常駐)
配下ツール: 経費, 請求書, 報告書, メール, 予定, ニュース

Compute Fleet(実行層)

Serverlessモデル
Worker Nodeは固定インスタンスではなく、ロール(CLAUDE.md + knowledge/)を注入されたエフェメラルなコンテナとして起動する。 特定のOrchestratorに紐付かない共有プール。M層がGateway経由でdispatchし、完了後に自動消滅する。
NodeRoleModelPattern
researcher技術調査・コード分析SonnetGenerator
architect設計・IF定義OpusGenerator
coderコード実装OpusGenerator
reviewerコード/設計レビューOpusCritic
testerテスト作成・実行SonnetCritic
docsドキュメント作成SonnetGenerator
legal-rev.契約書レビュー・法務調査OpusCritic
tax税務調査・計算OpusGenerator
PJMPJ管理(有期Coordinator)OpusCoordinator

External Services(外部サービス)

サービスプロトコル方向接続元(内部)用途
Slack APIWebSocket (Socket Mode)双方向API Gateway (bot.py)CEO↔Botのメッセージ送受信
GitHub APIHTTPS REST双方向Worker Nodes (coder等)Issue管理・コード操作・PR
Anthropic Claude APIHTTPS REST双方向LLM EngineLLM推論(Haiku/Sonnet/Opus)
Microsoft Graph APIHTTPS REST + OAuth2双方向Batch Pipelines (ops/)Outlook・OneDrive・SharePoint・Calendar
Cloudflare PagesHTTPS REST (POST)単方向→Worker Nodes (architect等)HTML設計書のデプロイ・公開
RSS / WebフィードHTTPS GET (XML/JSON)単方向←Batch Pipeline (ニュース)AIニューススキャン用ソース取得
MFクラウド APIHTTPS REST双方向Batch Pipelines (経費/請求書)経費精算・請求書発行

Observability & Governance(統制層)

Policy-as-Code
品質ルールをコードとして定義・自動適用する。
CLAUDE.md(エージェント行動規範)+ pre-commit hooks + ruff(リンター)+ 品質ゲート。
Audit / Logging
全エージェントの全アクションを自動記録する。ルール逸脱の自動検知。 CEOダッシュボードで可視化。
Health Check
全プロセスの死活監視。障害検知 → 自動復旧 → CEO通知。 launchd KeepAlive と連携。

データフロー

リクエスト処理フロー(同期)

Client (Slack)
    │ WebSocket (Socket Mode)
    ▼
┌─────────────── FIREWALL ───────────────┐
│                                         │
▼                                         │
┌─────────────────────────────────────────────────────────┐
│ API Gateway (bot.py)                     [Internal]      │
│                                                          │
│  1. メッセージ受信 ← Slack API (WebSocket)               │
│  2. Request Router (IF/Sonnet) 起動 (subprocess)          │
│     └→ ルーティング判断: direct / vdu-* / ba / platform   │
│  3. Orchestrator Service にディスパッチ (subprocess)       │
│     └→ State Store (tasks.json) に状態記録 (file I/O)    │
│  4. Orchestrator が Compute Fleet にタスク投入             │
│     └→ Rate Limiter でクォータチェック                    │
│     └→ Worker Node 起動(ロール注入, subprocess)         │
│  5. Worker Node 実行完了 → Orchestrator に結果返却 (stdout)│
│  6. Orchestrator レビュー                                  │
│     └→ NG: Worker に差し戻し(修正指示)                  │
│     └→ OK: CEO に報告 → Slack API (HTTPS POST)           │
│                                                          │
│  * 全ステップ → Audit / Logging に自動転送 (file I/O)    │
└─────────────────────────────────────────────────────────┘

バッチ処理フロー(非同期)

Task Scheduler (cron / launchd)
    │ 時刻トリガー (subprocess)
    ▼
┌─────────────────────────────────────────────────────────┐
│ Batch Pipeline (ops/)                    [Internal]      │
│                                                          │
│  1. Scheduler がパイプライン起動                           │
│  2. 各ステップ実行(External API 呼び出し)                │
│     ├→ MS Graph (HTTPS+OAuth2) → Outlook/OneDrive       │
│     ├→ MFクラウド (HTTPS REST) → 経費/請求書             │
│     ├→ RSS (HTTPS GET) → ニュースソース                  │
│     ├→ Anthropic API (HTTPS REST) → Haiku評価            │
│     └→ Cloudflare Pages (HTTPS POST) → HTMLデプロイ      │
│  3. 結果を BA Controller に通知                           │
│  4. BA が CEO に報告 → Slack API (WebSocket)              │
│                                                          │
│  * 全ステップ → Audit / Logging (file I/O)               │
└─────────────────────────────────────────────────────────┘

通信ルール(ネットワークポリシー)

原則: 全通信は API Gateway を経由する
コンポーネント間の直接通信は禁止。Kubernetes の Service Mesh における Sidecar Proxy のように、 API Gateway が全通信を仲介し、Audit / Logging に記録する。
FromTo経路プロトコル方向
Administrator API Gateway Slack → [Firewall] → API Gateway WebSocket (Socket Mode) 双方向
API Gateway Request Router Gateway → Router(内部) subprocess (claude CLI) → 単方向
Orchestrator Compute Fleet Orchestrator → API Gateway → Worker Node subprocess (claude CLI) → dispatch
Worker Node Orchestrator Worker → API Gateway → Orchestrator stdout / タグ解析 → result
API Gateway Slack API Gateway → [Firewall] → Slack WebSocket / HTTPS 双方向
Worker Node GitHub API Worker → [Firewall] → GitHub HTTPS REST 双方向
LLM Engine Anthropic API Engine → [Firewall] → Anthropic HTTPS REST 双方向
Batch Pipeline MS Graph API Pipeline → [Firewall] → Microsoft HTTPS REST + OAuth2 双方向
Worker Node Cloudflare Pages Worker → [Firewall] → Cloudflare HTTPS POST → 単方向
Batch Pipeline RSS/Webフィード Pipeline → [Firewall] → RSS Sources HTTPS GET → 単方向
Batch Pipeline MFクラウド API Pipeline → [Firewall] → MFクラウド HTTPS REST 双方向
Orchestrator Orchestrator 直接通信不可(Administrator 経由)
Worker Node Worker Node 直接通信不可(PJM / Orchestrator 経由)
全コンポーネント Audit / Logging 自動転送(パッシブ) file I/O → 単方向
全コンポーネント State Store Gateway経由(内部) file I/O 双方向
Task Scheduler Batch Pipeline Scheduler → Pipeline 直接起動(内部) subprocess → 単方向
MNML システム構成図 — Cloud Architecture View v2
Issue #139 · 2026-04-01