Gateway
Gatewayとは何ですか?
GatewayはNeotaskの中核, , すべてのエージェントセッション、メッセージングチャンネル、ツール実行、デバイス接続を管理する単一の長期実行サービスです。すべてのものがGatewayを通じて流れます。
クライアント(デスクトップアプリ、モバイルアプリ、Webダッシュボード)からの接続を受け入れ、AIアシスタントのライフサイクル全体を管理するWebSocketサーバーです。
アーキテクチャ
コンポーネント
- WebSocketサーバー, クライアント接続を受け入れます(デフォルトポート18789)
- HTTPサーバー, コントロールUI、キャンバスホスト、ヘルスエンドポイントを提供
- チャンネルアダプター, メッセージングプラットフォーム(WhatsApp、Telegram、Discordなど)への接続を維持
- セッションマネージャー, エージェントの会話状態を永続化・管理
- CronスケジューラZ, スケジュールされたジョブとハートビートウェイクアップを実行
- プラグインランタイム, プラグインのライフサイクルを読み込み・管理
- ブラウザサービス, Web自動化のためのChromiumインスタンスを制御
バインディングモード
| モード | 説明 |
|---|---|
| ループバック | デフォルト。localhost(127.0.0.1)からのみアクセス可能 |
| LAN | ローカルネットワーク上でアクセス可能。Bonjour/mDNSで自動ディスカバリー |
| Tailnet | MagicDNS付きTailscale VPN経由でアクセス可能 |
| カスタム | 特定のアドレスにバインド |
認証
| 方法 | 説明 |
|---|---|
| トークン | WebSocketベアラートークン(UUIDまたはカスタム文字列) |
| パスワード | パスワードベースの認証(bcryptハッシュ) |
| 信頼されたプロキシ | 事前認証ヘッダーを持つリバースプロキシ向け |
| ローカルトラスト | ループバック接続は自動承認 |
設定
GatewayはJSON5形式のneotask.jsonで設定します。主要なセクション:
| セクション | 制御内容 |
|---|---|
agents |
エージェントリスト、デフォルト、ワークスペース |
gateway |
ポート、バインドモード、認証、リロード動作 |
channels |
チャンネルごとの設定と認証情報 |
tools |
ツールの権限、プロファイル、セキュリティ |
plugins |
プラグインの読み込み、有効化、プラグインごとの設定 |
models |
プロバイダー認証、フォールバック、プロバイダー設定 |
skills |
スキルディレクトリ、スキルごとの設定 |
browser |
ブラウザプロファイル、ポート、ヘッドレスモード |
cron |
スケジューラー設定 |
session |
リセットルール、コンパクションしきい値 |
messages |
TTS設定、メディアポリシー |
memory |
メモリインデックス設定 |
security |
サンドボックス化、エレベーテッドモード、承認 |
ホットリロード
設定変更は再起動なしで適用できます:
| モード | 動作 |
|---|---|
| ハイブリッド(デフォルト) | 安全な変更はホット適用、その他は再起動 |
| ホット | ホット安全な変更のみ適用、その他は無視 |
| 再起動 | リロードが必要な変更があれば再起動 |
| オフ | 自動リロードなし |
リモートアクセス
Tailscale(推奨)
Tailscaleは安全なゼロ設定のリモートアクセスを提供します:
- GatewayをTailnetにバインド
- 同じTailscaleネットワーク上のどのデバイスからもアクセス可能
- MagicDNSによる自動DNS
- Tailscale ServeはダッシュボードをHTTPSで公開可能
SSHトンネル
SSHでGatewayポートを転送:
- シンプルで安全、設定変更不要
- SSH対応のどのマシンでも動作
- 完全なWebSocketプロトコルとコントロールUIをサポート
セキュリティルール
- ループバック + SSH/Tailscaleが最も安全な組み合わせ
- ループバック以外のバインドには認証トークンの設定が必要
- 追加のセキュリティのためのTLSフィンガープリントピン留めが利用可能
- ブラウザ制御はデフォルトでリモート接続には無効
ヘルスモニタリング
ヘルスエンドポイント
/health HTTPエンドポイントが返すもの:
- Gatewayの状態
- RPCの生存確認
- チャンネルごとのヘルス(接続状態、認証状態、アカウント数)
- ブラウザの準備状態
- アクティブなエージェントと接続済みノード
- アップタイム
プローブ
- RPC生存確認, WebSocket接続 + エコーテスト
- チャンネルヘルス, 認証チェック + チャンネルごとのAPIping
- ブラウザ準備状態, ポートチェック、プロセスチェック
- ノード接続性, 最後のハートビートタイムスタンプ
ディスカバリー
Bonjour/mDNS
LANにバインドされると、GatewayはマルチキャストDNSで自身を通知します:
- サービスタイプ:
_neotask-gw._tcp - ポート、トランスポート、TLS状態、Tailscale DNS情報を含む
- コンパニオンアプリがGatewayを自動的に検出
ワイドエリアディスカバリー
設定可能なタイムアウトでネットワーク全体のGatewayを検出します。ローカルBonjourとTailscale DNSディスカバリーの両方をサポート。
複数のGateway
同じマシンでプロファイルを使用して複数のGatewayインスタンスを実行できます:
- 各プロファイルは別々の設定、ワークスペース、セッション、状態を持ちます
- Gatewayごとに異なるポート
- 分離(個人 vs 仕事)やテストに便利
診断
Doctor
組み込みの診断ツールが確認するもの:
- 設定の有効性
- ファイルの権限
- チャンネル接続性
- モデルの認証状態
- Node.jsバージョンの互換性
- よくある設定ミス
許可を与えると多くの問題を自動的に修正できます。
ロギング
Gatewayのログは日次JSONLファイルに書き込まれます:
- 完了ごとのトークン使用量の追跡
- チャンネルイベントログ
- 構造化されたコンテキスト付きのエラーロギング
- 設定可能なログレベル