# コンパニオンアプリ ## コンパニオンアプリとは何ですか? コンパニオンアプリとは、iOS、Android、macOS向けのネイティブアプリケーションで、**ノード**としてGatewayに接続します。ノードはデバイスの機能, , カメラ、キャンバス、画面録画、位置情報、音声、システム実行, , をエージェントに提供します。 わかりやすく言えば、GatewayはAI(頭脳)であり、コンパニオンアプリはデバイス上の手と目です。 ## ノードの仕組み 1. **接続**, コンパニオンアプリがWebSocketを通じてGatewayに接続します 2. **ペアリング**, 新しいデバイスはペアリング承認プロセスを経ます 3. **機能の登録**, アプリはGatewayに自分ができること(カメラ、キャンバス、位置情報など)を通知します 4. **エージェントによる呼び出し**, 会話中に、エージェントはノードに写真撮影、画面録画、キャンバスのレンダリングなどを要求できます ノードはGatewayではありません, , 独自のAIを実行しません。エージェントができることを拡張する周辺デバイスです。 ## macOSコンパニオンアプリ macOSアプリはメニューバーに常駐し、コンパニオンノードとGatewayマネージャーの両方として機能します。 ### 機能 - **キャンバス**, ネイティブウィンドウでインタラクティブなWebコンテンツをレンダリング - **カメラ**, 写真と動画クリップの撮影(前面/背面) - **画面録画**, 全画面またはアプリ別の録画 - **システム実行**, Macでシェルコマンドを実行(実行承認によるゲーティング) - **通知**, 優先度オプション付きのmacOSネイティブ通知を送信 - **位置情報**, 利用可能な場合はGPS ### 追加機能 - **Gateway管理**, GatewayのStart、Stop、モニタリング - **権限の所有**, macOS TCC権限(通知、アクセシビリティ、画面録画、マイク、音声認識、AppleScript)を管理 - **ディープリンク**, パラメーター付きでエージェントを起動するための`neotask://` URLスキーム - **CLIインストール**, `neotask`コマンドラインツールをインストール ## iOSアプリ iOSアプリはGatewayにノードとして接続し、エージェントにモバイル機能を提供します。 ### 機能 - **キャンバス**, SwiftUIベースのインタラクティブコンテンツレンダリング - **カメラ**, 写真と動画クリップ(前面/背面カメラ) - **音声録音**, マイクによるキャプチャ - **位置情報**, 精度選択付きGPS - **通知**, iOSネイティブプッシュ通知 ### 特徴 - **ディスカバリー**, Bonjour(LAN)、Tailscale(VPN)、または手動入力でGatewayを検出 - **ペアリング**, GatewayからApprovalを受けた上での安全なデバイスペアリング - **ボイスウェイク**, ハンズフリー操作のためのウェイクワードアクティベーション - **トークモード**, 継続的な音声会話 - **共有拡張機能**, 他のアプリからエージェントへ直接コンテンツを共有 - **A2UI**, デバイスのキャンバスでのエージェント駆動UIレンダリング ### 制限事項 - フォアグラウンド優先設計(iOSはバックグラウンドでWebSocket接続を一時停止) - 厳格なバックグラウンドコマンド制限 - 現在、内部プレビュー段階 ## Androidアプリ AndroidアプリはiOSと同様の機能を持つノードとして接続します。 ### 機能 - **キャンバス**, Jetpack ComposeベースのUIレンダリング - **カメラ**, 写真と動画(前面/背面、権限によるゲーティング) - **画面録画**, システム画面キャプチャ(Android 10以降) - **位置情報**, 精度モード付きGPS - **SMS送信**, テレフォニーサポートを持つデバイス上 - **チャット履歴**, デバイス上での会話履歴の表示 ### 特徴 - **フォアグラウンドサービス**, 永続的な通知で接続を維持 - **共有セッション**, 接続されたすべてのノード間で同じセッション - **モダンAndroid**, Android 12以降(API 31)が必要 ## ヘッドレスノードホスト UIなしでノードを実行, , ビルドサーバー、リモートマシン、またはヘッドレスLinuxボックスに最適。 ### 機能 - **システム実行**, ノードホストでコマンドを実行 - **コマンド許可リスト**, ノードが実行できるコマンドを設定 - **永続サービス**, launchd/systemdサービスとしてインストール ### ユースケース - CI/CDビルドエージェント, AIエージェントにリモートサーバーでのビルドをトリガーさせる - ホームラボ自動化, Raspberry PiやホームサーバーでコマンドをRun - マルチマシンオーケストレーション, 複数のマシン間でタスクを調整 ## デバイスペアリング ### ペアリングフロー 1. コンパニオンアプリがデバイスIDを提示(フィンガープリント + 公開鍵) 2. Gatewayがペアリング承認リクエストを発行 3. デスクトップアプリまたはダッシュボードでデバイスを承認 4. Gatewayが将来の接続のためのデバイストークンを発行 ### トラストモデル - **ローカルデバイス**(ループバック)は利便性のために自動承認 - **ローカル以外のデバイス**は明示的な承認が必要 - デバイストークンはローカルに保存され、再接続時に再利用 ## 実行承認 システムコマンドを実行できるノード(macOS、ヘッドレスホスト)に対して、実行承認は許可されるものを制御します: - **許可リストモード**, 事前承認されたコマンドのみ実行可能 - **質問モード**, 不明なコマンドは承認を求める - **フルモード**, 制限なし(慎重に使用) 各デバイスができることを正確に制御するために、ノードごとの許可リストを設定します。