本ページは中国語の原文からの翻訳です。相違がある場合は原文が優先します。

Confer — システムアーキテクチャ

本書は目標アーキテクチャであり、現在の実装ではありません。 現行の実装は 単一プロセス・単一インスタンスの gateway です。WebSocket の接続テーブル、 A2A リプレイ防止用の nonce、レート制限カウンタはすべて gateway プロセスの メモリ上にあります(ws/handler.ts、lib/nonce-cache.ts、 middleware/rate-limit.ts)。

したがって gateway は 2 つ目のレプリカを動かせません。 レプリカを増やすと A2A のリプレイ防止が黙って壊れます — リプレイされたリクエストが別のレプリカに 届くと、そこでは nonce テーブルが空なのでそのまま通ってしまいます。さらに WS 配信は別レプリカにつながっているユーザーに届かず、レート制限のしきい値は レプリカ数だけ倍増します。

以下に出てくる NATS / Redis は水平スケール時の想定であり、現時点では配備も 結線もされていません(2026-08-07 に docker-compose*.yml と env.ts から 削除済み。それ以前も空回りするコンテナと、一度も読まれない環境変数でした)。 本当に水平スケールするなら、まず上記 3 つのプロセス内状態を共有ストアへ移すこと。 セキュリティに直結する nonce が最優先です。

高レベルアーキテクチャ

┌────────────────────────────────────────────────────────────┐
│  Clients (Tauri 2.0)                                       │
│  iOS · Android · Windows · macOS · Linux                   │
└──────────────────────────┬─────────────────────────────────┘
                           │ WSS / HTTPS / SSE
                           ▼
┌────────────────────────────────────────────────────────────┐
│  Edge API Gateway  (Bun + Hono)                            │
│  Auth · Rate limit · Routing · WS fan-out                  │
└─────┬─────────────┬─────────────────┬────────────────┬─────┘
      │             │                 │                │
      ▼             ▼                 ▼                ▼
 ┌────────┐  ┌─────────────┐  ┌────────────┐  ┌──────────────┐
 │ Agent  │  │Conversation │  │ Identity & │  │ MCP / Tools  │
 │Runtime │  │     Hub     │  │A2A Gateway │  │  Connector   │
 └───┬────┘  └──────┬──────┘  └─────┬──────┘  └──────┬───────┘
     │              │               │                │
     ▼              ▼               ▼                ▼
┌──────────────────────────────────────────────────────────────┐
│  Data layer: PostgreSQL · Redis · NATS · Vector (Qdrant)·S3 │
└──────────────────────────────────────────────────────────────┘
       │                              │
       ▼                              ▼
 LLM providers              Other instances' Agents
 (Claude / GPT /            (federation via A2A
  DeepSeek / Qwen)           over HTTPS)

設計原則

サービス境界

1. Edge API Gateway

docs/05-api.md を参照。

2. Agent Runtime

各ユーザーは常駐の Agent インスタンスを 1 つ持つ。

3. Conversation Hub

4. Identity & A2A Gateway

詳細なプロトコル設計は docs/03-protocol.md を参照。

5. MCP / Tools Connector

データ層

コンポーネント 用途 状態
PostgreSQL ユーザー、Agent、対話、メッセージ、権限、peer 関係(メインストレージ) ✅ 使用中
Qdrant Agent の長期記憶 RAG、ユーザー資料庫のインデックス ✅ 使用中
S3-compatible (MinIO) 知識ベースのファイル保存 ✅ 使用中
Redis session、presence、レート制限カウンタ、ホットデータキャッシュ ⬜ 未配備。水平スケール時にのみ必要
NATS Streams メッセージのファンアウト(user.{uid}.events)+ Agent runtime のタスクキュー ⬜ 未配備。水平スケール時にのみ必要

クライアントアーキテクチャ

クロスプラットフォーム対応

プラットフォーム 実現方法
iOS Tauri 2.0 iOS support
Android Tauri 2.0 Android support
Windows Tauri 2.0
macOS Tauri 2.0
Linux Tauri 2.0

単一のコードベースで、ネイティブ fallback はなし。

Claude Code プラグイン

docs/06-claude-code-plugin.md を参照。

デプロイアーキテクチャ

単一インスタンス(個人/小規模チーム)

実際の docker-compose.prod.yml(agent-runtime と identity は gateway 内の ライブラリであり、独立したサービスではありません):

  - gateway   (Bun サービス、単一レプリカ — 本書冒頭を参照)
  - client    (nginx が配信するフロントエンド)
  - migrate   (一度きりのタスク)
  - postgres
  - qdrant
  - minio

デプロイ方法:公開済みイメージなら npx confer-cli、clone からビルドするなら docker compose -f docker-compose.prod.yml up -d。

エンタープライズインスタンス

クラウド(Confer 自社クラウド)

フェデレーション化(インスタンス間)

任意の Confer インスタンス(自前構築またはクラウド)は、A2A プロトコルを通じて他のインスタンスと相互通信できる。

[acme.com]              [vendor-x.com]            [confer.cloud]
 Agent A    <─── A2A ───> Agent B    <─── A2A ───> Agent C

身分と発見:

可観測性

セキュリティ境界

主要な技術的意思決定

意思決定 選択 候補 理由
バックエンド言語 Bun + TypeScript Go MCP/A2A SDK が TS-first;フルスタックで型を共有できる
Web フレームワーク Hono Elysia, Fastify 軽量・高速・エコシステムが安定
クライアント Tauri 2.0 Flutter, Electron 単一コードベースで 5 プラットフォーム、Rust による安全性、サイズが小さい
メインストレージ PostgreSQL 18 MySQL JSON サポートが良好、拡張性が高い、pgvector も選択可能
メッセージバス NATS Kafka, Redis Pub/Sub 軽量・永続化・正確な購読
ベクトルストア Qdrant Pinecone, pgvector セルフホストが成熟、Rust 製でパフォーマンスが安定
身分 DID:web DID:key, OAuth-only web インフラと互換、NANDA が推奨
プロトコル A2A + MCP + AgentFacts 独自プロトコル オープンプロトコルのエコシステムに賭ける
← Confer に戻る A2A · DID:web · RFC 9421 · NANDA