johnson7788/MultiUserClaw
目前OpenClaw和NanoBot都是用于个人的,不太支持多用户,基于多用户重新修改Bot,没有对Openclaw进行任何更改,原生能力封装
MultiUserClaw – Hermes Agent を基盤とするマルチテナントAI SaaSプラットフォーム
何であるか
- 同じサーバー上で複数の独立したAIアシスタント(エージェント)を運用できる完全なWebベースのSaaSフレームワーク。
- 各ユーザーは独自のDockerコンテナを取得し、HermesベースのAIエージェントランタイムを実行。コンテナはオンデマンドで作成され、アイドル時は一時停止され、数週間の非アクティブ後にはアーカイブ可能。
- プラットフォームは既製のフロントエンド、FastAPIゲートウェイ、PostgreSQLストア、および即時利用可能な機能群(知識ベース、スキルストア、cronジョブ、マルチチャネルボット、APIトークンなど)を提供。
主要コンポーネント
| コンポーネント | 役割 |
|---|---|
| フロントエンド (Vite + React) | ユーザーが操作するSPA – ログイン、チャット、スキルストア、管理者ページ。 |
| プラットフォームゲートウェイ (FastAPI) | 認証(JWT)、Dockerコンテナ管理、LLMプロキシ(APIキーを挿入)、クォータトラッキング、旧OpenClaw APIとの互換性レイヤー。 |
| Hermesエージェントコンテナ (Python) | 実際のAIエージェントを実行。セッション、ツール呼び出し、スキル、ファイルワークスペースなどを処理するHTTP + SSE API(ポート18080)を公開。 |
| PostgreSQL | ユーザーアカウント、コンテナメタデータ、使用ログ、クォータを格納。 |
| Docker Compose | サービスをオーケストレーションし、ユーザーごとに個別のコンテナを起動。 |
メッセージの流れ
- ユーザーがブラウザで入力 → フロントエンドが
/api/...にWebSocketリクエストを送信。 - ゲートウェイがJWTを認証し、ユーザーのコンテナを検索/起動し、WebSocketをそのコンテナ内のHermes APIにプロキシ。
- Hermesがメッセージを処理し、ツールやスキルを呼び出す可能性がある。言語モデルが必要な場合は、ゲートウェイの
/llm/v1/chat/completionsエンドポイントを呼び出す。 - ゲートウェイはユーザーのトークンクォータを確認し、モデル名に基づいて適切なプロバイダー(OpenAI、Anthropic、DashScopeなど)を選択。プロバイダーのAPIキー(ゲートウェイのenv内にのみ保持)を挿入し、リクエストを転送。トークン使用量を記録し、レスポンスをHermes → フロントエンドにストリーミング。
主な機能
- マルチテナントの分離 – 各ユーザーは独自のDockerコンテナ(2 GB RAM、4 CPU)で実行され、ファイルとチャット履歴のプライベートボリュームを保有。
- エージェント管理 – 作成、名前変更、絵文字/アイコン設定、詳細表示、削除。
- リアルタイムチャット – WebSocket、markdownレンダリング、コードハイライト、音声入力、ファイル/画像アップロード。
- cronジョブ – 定期的またはワンタイムのタスクをスケジュール、有効/無効、即時実行、通知オプション。
- 知識ベース – エージェントごとのファイルストア(テキスト、PDF、JSON、コード)でプレビュー、ダウンロード、削除可能。
- スキルストア –
skills.shからスキルをインストール、有効/無効、ユーザーがアップロードしたカスタムスキルも可能。 - マルチチャネルボット – Telegram、Discord、メール、WhatsApp Web、Signal、Slack、iMessageなど、組み込みアダプタを備える。
- APIアクセス – トークンを生成し、CLIや他のサービスからエージェントを呼び出し、セッションを再利用可能。
- 複数のモデルプロバイダー – OpenAI、Anthropic、DashScope、DeepSeek、AiHubMix、Evolink、OpenRouterなど、数十種類のLLMをサポート。モデル名セレクタで簡単選択。
- ダッシュボード – エージェント、セッション、スキル、システム全体の健全性に関する統計を即時確認。
- セキュリティ – APIキーはユーザーコンテナに渡らない;JWT → コンテナトークンチェーン;リソース制限;監査ログ。
プラットフォームの起動方法
- Docker と Docker‑Compose をインストール。
- リポジトリのルートに
.envファイルを作成し、少なくとも1つのLLMプロバイダーのキーを追加(例:OPENAI_API_KEY=sk‑…)。 - 基本イメージをビルド:
python prepare.py && bash build_base_image.sh。 - Docker Composeでデプロイ:
python deploy_docker.py --rebuild hermes,gateway,frontend(または単にdocker compose up -d)。 http://localhost:3080でUIにアクセスし、登録してチャットを開始 – ゲートウェイが自動的に専用のHermesコンテナを起動する。
一般的な利用シーン
- クライアントごとにカスタムAIアシスタントを提供したいSaaS企業(インフラから構築しなくてもよい)。
- チームごとに独立したエージェントとプライベート知識ベース、スケジュールされたジョブが必要な社内ツール。
- マルチモデルLLM、ツールコール、スキル拡張を実験したい開発者。
制限事項/注意点
- プラットフォームはDockerに依存しており、アクティブユーザー1人あたりのコンテナを実行できる十分なCPU/RAMを備えたホストが必要。
- すべてのLLM呼び出しはゲートウェイ経由でプロキシされるため、プロバイダーのAPIキー制限や遅延がすべてのユーザーに影響する。
- デフォルトのリソース制限(2 GB RAM、4 CPU)は、重いワークロードでは調整が必要。
- READMEには多数のデプロイスクリプトが記載されているが、プロダクションレベルの強化(TLS終端、シークレット管理、モニタリング)は運用者に任されている。
詳細情報の入手先
- 詳細ドキュメントはREADMEにリンク(例:channel‑config wiki)。
- UIのスクリーンショットとログは
doc/フォルダに格納。 deploy_copy/ディレクトリには、初回起動時に新しいコンテナにコピーされる例として事前構成済みエージェント(HR、研究者、プログラマー)が含まれる。
上記のすべての情報はリポジトリのREADMEから直接取得;外部の仮定は一切追加されていません。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト