プラットフォーム
プラットフォームとエージェントシステム
サービス境界と責務、インタラクションモード、そして横断的関心事 — デプロイ、セキュリティ、コードマップ、設計原則。
プラットフォームの形状とエージェントシステム。上部の全画面ボタンをご利用いただくか、プラットフォーム図を新しいタブで開く ↗。
システム境界
LifeOSAIはクロスプラットフォームのエージェントオペレーティングシステムです。同じプロダクトモデルが2つのデプロイモードで動作します。
- クラウドモード: ブラウザトラフィックがクラウドサービスで処理され、エージェントランタイムはクラウドインフラで動作します。
- ローカルモード: Tauriデスクトップアプリがローカルサイドカーを起動し、ローカルファイルとローカルデータストアを使用します。
高位のサービス境界は以下の通りです。
apps/web または外部チャネルトランスポートapps/user-managementapps/apipackages/agent ランタイムアダプタapps/user-management はブラウザ向けのルーティングハブです。ユーザーセッションを検証し、プロダクトリクエストを正しいバックエンドサービスに転送します。エージェント実行は apps/api、特にオーケストレーションエンジンとランタイムインボーカが所有します。
サービス責務
| レイヤー | 所有者 | 責務 |
|---|---|---|
| プロダクトエントリ | apps/web | LifeOSAIチャット、企業、アプリ、ファイル、設定、静的エクスポート対応シェル |
| デスクトップシェル | apps/tauri | ローカルデスクトップラッパー、アップデータ、サイドカープロセス管理 |
| ルーティングハブ | apps/user-management | ユーザー認証APIゲートウェイ、セッションリーダー、オーケストレーションプロキシ、ファイルプロキシ |
| エージェントAPI | apps/api | エージェントランタイムAPI、企業オーケストレーション、ウェイクアップ、スケジューラ、チャネル、シークレット |
| ランタイムSDK | packages/agent | ランタイム抽象化、Claude Codeアダプタ、Pi Agentアダプタ、正規化されたストリーミングイベント |
| 共有契約 | packages/shared | オーケストレーション型、ライブイベント定数、環境変数正規化、バリデータ |
| 永続データ | Prisma DB | 企業、エージェント、課題、実行、ルーチン、アクティビティ、シークレット、チャネル状態 |
| ワークスペースデータ | ファイルシステムまたはマウントボリューム | チャットワークスペース、企業プロジェクトファイル、アーティファクト、スキル、ログ |
LifeOSAIエージェントシステム
エージェントシステムは通常のチャット、企業エージェントとのダイレクトチャット、ライブ実行トランスクリプトを担います。企業タスクオーケストレーションとは意図的に分離されていますが、両者は同じランタイムアダプタを使えます。
エージェントインタラクションモード
| モード | 説明 | 主要な状態 |
|---|---|---|
| LifeOSAIチャット | ユーザーが企業タスクの外で選択ランタイムとチャット | チャットセッションID、ランタイム、モデル |
| 企業エージェントとのダイレクトチャット | ユーザーが企業エージェントと直接対話 | 企業ID、エージェントID、記憶されたセッションID |
| ライブ実行トランスクリプト | UIがアクティブなオーケストレーション実行を追跡 | 実行ID、セッションID、ランタイムログストリーム |
| 完了済みトランスクリプト再生 | UIが過去の実行/セッションを読む | 保存済みセッションメッセージ |
| チャネル会話 | WhatsApp、Telegram、その他のトランスポートがエージェントと対話 | チャネルセッションキー、チャネルメタデータ、ランタイムセッションID |
フロントエンドはこれらのモードを異なる形で提示するかもしれませんが、バックエンドの契約は同じ考え方です: セッションがランタイムに紐付き、ランタイムがイベントをストリームし、それらのイベントがトランスクリプトレコードまたはライブ実行イベントになります。
エージェント機能
LifeOSAIエージェントは以下によって拡張できます。
- スキル: バンドル、企業スコープ、またはユーザーアップロードの機能フォルダ
- プラグイン: インストールされたランタイム拡張とツールバンドル
- コネクタ: 外部アカウントまたはサービス統合
- MCPサーバー: チャネル、ブラウザ、Slack、カスタムツールなどのツールサーバー
- ファイル: 許可されたワークスペースルートと企業/プロジェクトファイルルート
- チャネル: トランスポート固有の受信メッセージと送信応答
ランタイムプロセスは、以下の組み合わせによってこれらの機能を受け取ります。
apps/apiから渡されるランタイムオプション- 起動前に組み立てられる環境変数
- MCPサーバー定義
- 追加スキルディレクトリ
- アダプタ固有のコマンドまたはSDKオプション
チャットセッションフロー
apps/webapps/user-management セッション/チャットルートapps/api またはランタイムハンドラpackages/agent ランタイムセッション発見とセッションメッセージ参照は別の関心事です。セッションリストは既知のLifeOSAIルートに限定し続けるべきです。メッセージ参照は、実行/セッションが既知の企業エージェントトランスクリプトパスを指している場合、それを解決できます。
ローカルとクラウドのデプロイ
ローカルモード
ローカルモードはTauriアプリとサイドカーサービスを中心に構築されています。
| ポート | サービス |
|---|---|
| 3000 | apps/web |
| 3001 | apps/user-management |
| 3002 | apps/auth |
| 4000 | apps/api |
重要なローカルルート:
~/LIFEOSAI~/.lifeosai/companies- ローカルデータベース(モードに応じて通常SQLiteまたはローカルPostgres)
クラウドモード
クラウドモードはGCPとCI/CDを使用します。
- GCPプロジェクト:
lifeosai-481608 - リージョン:
asia-south-1 - Artifact Registryリポジトリ:
docker-images - Cloud Runサービス: web, auth, user-management
- エージェント実行用のCompute Engineまたはランタイムコンテナ
- ワークスペースルート:
/workspace/LIFEOSAI
プロダクトAPIサーフェスはローカルとクラウドで同一に保たれるべきです。変化するのは実行ロケール、ファイルシステムルート、バッキングサービスのみです。
セキュリティ境界
| 境界 | 強制 |
|---|---|
| ユーザーセッション | apps/user-management がブラウザ/デスクトップリクエストを検証 |
| 企業アクセス | オーケストレーションサービスが読み取り/書き込み前に企業アクセスを確認 |
| エージェント実行API | 実行スコープのベアラートークンが企業、エージェント、実行を検証 |
| シークレット | 企業スコープのシークレット参照は書き込み時に検証され、呼び出し時に解決 |
| ファイル | セッションおよびファイルリーダーは既知のLifeOSAIルートのみを許可 |
| ログ | シークレットに紐づく環境変数は永続化前に秘匿化 |
| チャネル | トランスポートプラグインとチャネルセッションが受信メッセージを既知の企業/エージェントコンテキストにマップ |
コードマップ
| 領域 | 主要ファイル |
|---|---|
| ランタイムインターフェース | packages/agent/src/runtimes/types.ts |
| Claude Codeランタイム | packages/agent/src/runtimes/claude-code-runtime.ts |
| Pi Agentランタイム | packages/agent/src/runtimes/pi-agent-runtime.ts |
| ランタイムイベント正規化 | packages/agent/src/runtimes/event-normalizer.ts |
| エージェントインボーカ | apps/api/src/orchestration/engine/agent-invoker.ts |
| ウェイクアップキュー | apps/api/src/orchestration/engine/wakeup.ts |
| ハートビートスケジューラ | apps/api/src/orchestration/engine/heartbeat.ts |
| ルーチンスケジューラ | apps/api/src/orchestration/engine/routine-scheduler.ts |
| イベントバス | apps/api/src/orchestration/engine/event-bus.ts |
| 実行認証 | apps/api/src/orchestration/auth/run-token.ts |
| エージェントAPIガード | apps/api/src/orchestration/routes/middleware.ts |
| 課題 | apps/api/src/orchestration/services/issues.ts |
| エージェント | apps/api/src/orchestration/services/agents.ts |
| プロジェクト | apps/api/src/orchestration/services/projects.ts |
| ルーチン | apps/api/src/orchestration/services/routines.ts |
| アクティビティ | apps/api/src/orchestration/services/activity-log.ts |
| シークレット | apps/api/src/orchestration/services/secrets.ts |
| 環境変数設定 | packages/shared/src/orchestration/env-config.ts |
| ライブイベント型 | packages/shared/src/orchestration/types/live.ts |
| チャネルディスパッチ | apps/api/src/channels/dispatch.ts |
| チャネルメッセージツール | apps/api/src/channels/message-tool.ts |
| WhatsAppチャネル | apps/api/src/channels/plugins/whatsapp.ts |
| Telegramチャネル | apps/api/src/channels/plugins/telegram.ts |
| セッションリーダー | apps/user-management/src/sessions/reader.ts |