Cursio について
Cursioは、信頼済みの個人デバイスをLAN上で接続し、アプリを元のホストで動かしたまま入力、ウィンドウ、クリップボード、音声、ファイルを共有します。複数のマシンで作業する人向けで、中央サーバーやハブを必要としません。
主な機能
- 01デバイス間でマウスとキーボードを共有
- 02アプリのウィンドウを別マシンへ転送
- 03クリップボードとアプリ別音声を共有
- 04ピアのディスクをオンデマンドでマウント
- 05USB、画面、ファイルを共有
- 06AndroidデバイスとAirPlayに対応
活用シーン
- 01複数のコンピューターで入力機器を共用
- 02別マシンで動作中のアプリを表示
- 03ピアのディスクやUSBデバイスをマウント
- 04デバイスのウィンドウをDiscordやOBSに提供
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Cursio
信頼できる個人デバイス間で、暗号化され、中断後に再開できるセッションを共有する、LAN 専用のメッシュです。
入力、オーディオ、クリップボード、ウィンドウ転送、ファイル共有は、これらのセッション上で動作するモジュールであり、個別の製品ではありません。アプリケーションが移行することはなく、リンクを通過するのはピクセル、サンプル、イベント、ファイル要求だけです。
目標はシンプルです。アプリケーションをどのマシンで起動したかを気にせずに済むことです。
できること
- すべてのマシンでマウスとキーボードを共有し、カーソルを画面の端から押し出してマシン間を移動する
- アプリを元のホストで実行したまま、個別のアプリケーションウィンドウを別のマシンにストリーミングする
- 書式や画像をそのまま保って、クリップボードをマシン間で共有する
- オーディオをアプリケーションごとにルーティングし、各リモートアプリをこちらで名前付きのノードとして表示する
- 必要に応じて、ピアのディスクをローカルにマウントする
- ピアの USB デバイスを、こちらに接続されているかのように使用する(USB/IP)
- ピアのウィンドウやモニターを、こちらの Discord、OBS、ブラウザー通話で利用できるようにする。こちらのデスクトップには表示しない
- メッシュ全体の AirPlay 受信先として、iPhone/iPad の画面ミラーリングを受信する
- Android スマートフォンを完全なピアとして接続する。通知を現在いる場所で受け取り、SMS を利用し、パソコンの音声で通話する(Cursio が Bluetooth 経由のハンズフリー端末になります)。サウンドとマイク、ストレージとギャラリー、さらにマウスで操作できるウィンドウ内の画面全体も利用できます。ADB を使わない scrcpy のようなものです
- 自動更新する。信頼するマシンから提供された署名済みビルドをサイドバイサイドでインストールし、起動しない場合はロールバックする
できないこと
- リモートデスクトップではありません。ピア上で作業するには、カーソルをそのマシン自身の画面に移動します。ウィンドウや画面がリンクを通過するのは画像としてのみです
- アプリケーションやプロセスの移行ではありません。アプリがホストから離れることはありません
- 仮想化ではありません
- インターネットや NAT トラバーサル向けには作られていません(v0.x では LAN 専用です)
- ミキサーの代替ではありません。Cursio が置き換えるのはネットワークの中継部分であり、VoiceMeeter や Carla ではありません
対応プラットフォーム
| 入力 | クリップボード | ウィンドウホスト | ウィンドウ表示 | リモート画面 | オーディオ | ファイル | USB | AirPlay | |
|---|---|---|---|---|---|---|---|---|---|
| Linux (Wayland, X11) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Windows 11 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| macOS 13+ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | 提供のみ | ❌ | ✅ |
| Android (arm64) | タッチパッド | 共有シート | 画面 | ❌ | ❌ | ✅ | 提供のみ | ❌ | ❌ |
- Linux: キャプチャは、Wayland では
InputCaptureポータルと libei、X11 では evdev を経由します。ウィンドウキャプチャには ScreenCast ポータルを使用するため、利用できる機能はコンポジターによって異なります。GNOME でドラッグによる転送を行うには、同梱の Shell 拡張機能が必要です。オーディオには PipeWire、ファイルのマウントには FUSE、USB にはusbip-hostが必要です。Ubuntu 24.04 および 25.10 でテスト済みです。ビルドはリンク時に使用した FFmpeg に対してのみ実行されるため、それぞれ個別にビルドします(cargo xtask stage ubuntu24)。 - Windows: マウントには WinFsp、USB には
usbipd-win、オーディオエンドポイントには同梱のドライバー(native/cursio-vad)が必要です。昇格されたウィンドウへの入力注入は Windows が通知なく破棄するため、Cursio の起動時に UAC を要求します。拒否しても、その他の機能はすべて動作します。 - macOS: Mac はウィンドウをホストできますが、ピアのウィンドウを表示することはまだできません。また、ピアからのリモート画面要求を拒否し、自身のボリュームは提供できますが、ピアのボリュームをマウントすることはできません。入力にはアクセシビリティ権限、ウィンドウキャプチャには画面収録権限が必要です。
- Android(API 28 以降): アプリは
app/にあり、ノードがリンクされており、connectedDeviceフォアグラウンドサービスとして起動状態が維持されます。ピアの音声を再生し、自身の音声とマイク(AAudio)を提供します。共有ストレージとギャラリーを提供し、選択したコンピューターに画面を表示します。最初に表示されるのは、直前に操作していたコンピューターです。そこで一度有効にしたアクセシビリティサービスを通じて操作します。通知が届くのは現在操作中のコンピューターのみです。SMS はコンピューターから読み取り、送信できます。通話はそのコンピューターで着信し、Linux では音声も扱います。その際、Cursio を電話の Bluetooth ハンズフリーユニット兼スピーカーとして使用します(cursio bluetooth install)。ネットワークが切断されても、Bluetooth 経由で接続を維持します。バッテリーとネットワークの状態を報告しますが、ウィンドウの表示、ディスクのマウント、USB の共有には対応していません。
コアコンセプト
サーバーもハブもありません。 すべてのノードは、ピアからの着信接続を待ち受けると同時に、オフラインの既知のピアに接続を試みます。ノードが停止しても、ほかのノードがその存在を忘れることはありません。オフラインとして記録して互いに動作を続け、ノードが復帰すると再接続します。
マシンは、辺の名前ではなくグリッド上に配置します。 --at 1,0 は 0,0 のマシンの右隣に 1 台配置することを意味します。4 台を横一列に並べる場合は 0,0 1,0 2,0 3,0 です。単位はピクセルではなくセルです。各マシンの画面幅を知る必要はありません。辺では順序を表せず、中央のマシンを指定すると、そのマシンが起動していることにすべてのマシンが依存してしまいます。それを避けるためにメッシュが存在します。
1 つのセッションに、独立した 4 つの伝送レーン。 ピアの各ペアは、インタラクティブ通信、オーディオ、ビデオ、一括データ用に、それぞれ独立した暗号化 TCP 接続を使用します。6 つの優先度クラスは、Control > Input > Audio > Video > Metadata > Bulk の順です。ファイル接続が詰まっても入力はブロックされません。キューにはバイト数の上限とバックプレッシャーが設定され、一括通信はインタラクティブ通信の RTT に合わせて調整され、ビデオエンコーダーは適応型の帯域予算を共有します。モジュールを再作成せずに接続を置き換えられます。トランスポート設計を参照してください。
入力は相対値です。 マウスの動きは絶対位置ではなく dx/dy として送信されます。絶対位置を使うとカーソルが瞬間移動し、生の入力を読み取るゲームが正しく動作しなくなるためです。キーも同様に送信されるため、ピアを操作している間は、そのピア側のショートカット(Alt+Tab を含む)が機能します。
ウィンドウ転送を開始するには、ドラッグする必要があります。 転送用のフラグはないため、誤って転送されることはありません。受信側は常に受動的で、ピアのウィンドウは必ず届きます。
クイックスタート
CLI をビルドします。
cargo build -p cursio-core
2 台のマシンで同じパスワードを使い、両方で 同じ コマンドを実行してペアリングします。
cargo run -p cursio-core -- mesh --pair
次に、使いたいモジュールを指定してメッシュを実行します。
cursio mesh --at 0,0 --send-input --clipboard
ペアリング
ペアリングでは、入力したパスワードは画面に表示されません。「リッスン」と「参加」に分かれた側はありません。メッシュノードは最初からリッスンとダイヤルを同時に行い、どちらが発信するかは両端で決定します。--pair は、まだ接続したことのないマシンからの呼び出しを許可する 10 分間のウィンドウを開くだけです。
初回の接続では、双方が対称モードで SPAKE2 ペアリングを実行します。パスワードがネットワーク上を流れることはありません。導出されたキーを確認し、互いを記憶して、セッションを確立します。パスワードが間違っていてもエラーにはならず、双方で異なるキーが導出されるため、続いて明示的なキー確認が行われます。ピアが保存されるのは、この確認が済んでからです。次回以降の実行ではペアリングがスキップされ(peer already trusted)、mesh だけで十分です。
ノードの実行中に cursio pair を実行すると、パスワードなしでペアリングできます。ワンタイムコードが表示され、5 分以内にもう一方のマシンで cursio pair <CODE> を実行するか、アプリにコードを入力すると完了します。
ID と信頼済みピアは、プラットフォームの設定ディレクトリに保存されます(Linux では ~/.config/cursio、Windows では %APPDATA%\cursio\cursio\config、macOS では ~/Library/Application Support/dev.cursio.cursio)。
CLI
cursio mesh # run as a mesh node — this is how everything runs
cursio status # what the running node is doing: peers, modules, latency, problems
cursio pair [CODE] # pair through the running node with a one-time code
cursio forget <NAME> # remove a paired machine and its key
cursio wake <NAME> # wake a paired machine that is asleep (Wake-on-LAN)
cursio peers # list peers discovered on the LAN, then exit
cursio config # print the config `mesh` would run with, and where it lives
cursio update ... # install, switch and roll back versions
cursio portal install # (Linux) make Cursio the ScreenCast portal for --remote-screen
mesh の実行内容は config.toml に記述されています(cursio config でパスを表示できます)。各フラグは、その実行時に限り設定ファイルの内容を上書きするため、モジュールの切り替えには --audio / --no-audio のように、オンとオフの両方の指定が用意されています。ノードの実行中に変更した設定は、稼働中のリンクで再ネゴシエーションされます。再ネゴシエーションできない一部の設定は、次回の再起動まで保留中であることが通知されます。
| フラグ | 効果 |
|---|---|
--at X,Y | このマシンのグリッド上の位置です。デフォルトは 0,0 で、どの方向にも隣接するものがなく、Ctrl+Alt+G だけで切り替えられます。負のセルも指定できます(--at -1,0)。 |
--send-input | このマシンのマウスとキーボードの入力をキャプチャし、ピアと共有します |
--clipboard | クリップボードを共有します(テキスト、画像、その他の形式) |
--audio | アプリケーションごとに音声を共有します |
--files | ディスクを双方向に共有します。ピアのボリュームは ~/Cursio/<peer>/ 以下に表示されます |
--files-share <PATH[:ro]> | すべてのディスクの代わりに、このルートだけを共有します。複数指定できます。:ro を付けると変更を拒否します |
--usb | このマシンの USB デバイスを共有し、ピアの USB デバイスを使用します |
--remote-screen | このマシンの画面共有アプリに、ピアのウィンドウとモニターを表示できるようにします。--no-screen-host を指定すると、このマシンの画面に対するピアからの要求を拒否します |
--pair | ペアリングウィンドウを開きます(両方のマシンで実行してください) |
--pair-addr <HOST:PORT> | mDNS が使えない場合に、ペアリングするマシンを指定します。この場合、こちら側から発信します |
--port <n> | リッスンするポートです。デフォルトは 46073 で、意図的に固定されています。mDNS の応答が遅い場合、ピアは再接続できるよう最後に使ったアドレスをキャッシュします。再起動のたびにポートが変わると、キャッシュが応答のないポートを指してしまうためです。0 を指定すると、一時ポートが割り当てられます。 |
--mac-modifiers <SPEC> | Mac で修飾キーを割り当てる位置です(下記参照) |
--files は読み書き可能な状態でマウントされるため、どちらかのマシンからアクセスできるものは、もう一方から変更できます。Linux では FUSE、Windows では WinFsp を使ってマウントします。
カーソルの切り替え
ピアに面した端からカーソルを押し出すと、ピアに切り替わります。アイドル状態のマシンからカーソルを戻すには、Ctrl+Alt+G を押します。
ホットキーは wire のキー名前空間(Linux evdev)で定義されているため、Mac では --mac-modifiers によって割り当てが変わります。positional(デフォルト)では Control+Option+G、swapped では Command+Option+G です。起動ログには物理キーが表示されます。ホットキーの位置が知らないうちに変わると、見つけられなくなるためです。
--mac-modifiers にはプリセット(positional、swapped)か、rightalt=globe のような from=to の組み合わせを指定します。swapped にすると、PC キーボードの Ctrl+C で Mac 上のコピー操作ができます。
AirPlay
cursio mesh では、メッシュ全体で 1 台の AirPlay レシーバーを利用します。名前はシンプルに Cursio です。コントロールセンターを開き、「画面ミラーリング」から選択してください。メッシュは、制御ポートが空いているホストを選び、ハードウェア H.264 デコーダーを搭載したホストを優先します。そのホストが利用できなくなると、残りのノードが配置を再計算し、別のノードが引き継ぎます。
| フラグ | 効果 |
|---|---|
--airplay <MODE> | on/control(デフォルト)では参加します。1440p:30fps などのプロファイルを指定すると、メッシュの品質要求が引き上げられます。off ではホストから外れます |
--airplay-window | 別のノードがレシーバーをホストしている場合でも、このマシンにミラーリング画面を表示します |
--airplay-port <port> | 制御ポートを変更します |
--airplay-interface <addr> | 指定したアドレスの LAN インターフェースに AirPlay の mDNS を固定します |
--share-airplay | ホスト時に、ウィンドウを要求しているノードだけでなく、すべてのピアにミラーリング画面を提供します |
映像は、開始した場所に表示されます。ホストのピアは、通常のウィンドウ経路を通じて H.264 をそのまま転送するため、途中で再エンコードされることはありません。
現在の対応範囲は、画面ミラーリング、一時的な AirPlay ペアリング、FairPlay セッションのセットアップ、暗号化された H.264 転送、ハードウェアを利用した表示です。ミラーリングに伴う音声は、まだデコードされません。任意のファイル転送は AirPlay の機能ではありません。その用途には Cursio 独自の暗号化ファイルチャネルを使用します。
プラットフォーム別の映像要件
- macOS — ネイティブの AppKit/AVFoundation ヘルパーと Apple のハードウェアデコーダーがバンドルされます。GStreamer は不要です
- Linux — ハードウェア H.264 デコーダー(
vah264dec、nvh264dec、vaapih264decのいずれか)と、互換性のある Wayland/GL シンクを備えた GStreamer 1.x が必要です - Windows —
d3d11h264decとd3d11videosinkを備えた GStreamer 1.x が必要です
ソフトウェアデコードは、黙って使用するのではなく拒否されます。起動時に CLI が映像経路とポートの利用可否を確認します。その結果はメッシュのあいさつメッセージで共有されるため、すべてのノードが同じ配置を計算します。
ビルドとインストール
プロジェクトの自動化は cargo xtask にまとめられており、各ビルドに必要な環境変数やターゲットトリプルを設定します。
cargo xtask build # release build of supported binaries for this host
cargo xtask install # build + copy cursio, clipd, cursio-app to ~/.local/bin
cargo xtask run # build and run `cursio mesh --send-input --clipboard`, restarting on crash
cargo xtask windows # cross-compile the .exe(s) from Linux (MSVC)
cargo xtask macos # build on a Mac
cargo xtask android # the phone app as an arm64 APK (needs ANDROID_HOME, ANDROID_NDK_HOME, bun)
cargo xtask stage ubuntu24 # an Ubuntu 24.04 build, in docker
cargo xtask publish # stage host + Windows + Ubuntu 24.04, sign, offer to the mesh
cargo xtask logs --follow # print the log dir and tail the current log
ビルドはユーザーごとのルート配下に並行してインストールされ、current ポインターとロールバックに対応しています(docs/update-design.md)。マシンがメッシュからビルドを取得するのは、そのビルドを作成したマシンを信頼している場合のみです(cursio update trust-builder)。また、[update] policy = "auto" | "ask" | "never" に従って適用します。
cargo xtask deploy と cargo xtask live-test は、ssh 経由で実際の Windows ピアを操作します(docs/live-test.md)。そのピアの場所はチェックアウトのルートにある .env に記載されています。このファイルは git の無視対象です。.env.example をコピーして、内容を記入してください。
install は ~/.local/share/applications に .desktop ファイルも書き込みます。まだ設定されていない場合は、~/.local/bin を PATH に追加してください。clipd は Linux 専用のため、macOS では cursio と cursio-app をビルドします。
Cargo の対象をパッケージに限定してください。
--workspaceは macOS では失敗します。apps/clipdに GTK4/libadwaita が必要であり、gdk-pixbuf-sysには macOS 用の pkg-config が含まれていないためです。
ネイティブ Linux ビルドでは OPUS_TARGET=ubuntu-24.04_x86_64 が必要です。cargo xtask は自動で設定しますが、通常の cargo build では設定されません。Windows のクロスビルドでは libopus をソースからコンパイルするため、この設定は不要です。ただし、GStreamer の MSVC 開発用パッケージをビルドホストに展開し、GSTREAMER_WINDOWS_SYSROOT でその場所(lib/pkgconfig を含むプレフィックス。通常は .../1.0/msvc_x86_64)を指定する必要があります。
テストを実行します。
cargo test -p cursio-protocol -p cursio-transport -p cursio-core
複数のクレートには、実際のハードウェアを調べる examples/(capture_probe、wasapi_loopback_probe、grab_cycle、encode_bench)が含まれています。テスト対象の動作にコンポジター、GPU、または iPhone が必要なためです。
cargo run -p <pkg> --example <name>
ログ記録
すべてのバイナリは、コンソールとローテーションするファイルの両方にログを記録します。
- コンソール(stderr):色付き、デフォルトは
info - ファイル:プレーンテキスト、デフォルトは
debug、毎日ローテーションされ、プラットフォームのデータ ディレクトリに保存されます。Linux では~/.local/share/cursio/logs/、 Windows では%APPDATA%\cursio\cursio\data\logs、 macOS では~/Library/Application Support/dev.cursio.cursio/logs
ログレベルを変更するには、次のようにします。
RUST_LOG=debug— 両方の出力先のログレベルを上げますCURSIO_LOG_FILE=trace— コンソールの出力を静かなままにして、ファイルのログレベルのみを上げます
RUST_LOG=cursio_airplay=debug,info cargo run -p cursio-core -- mesh
cargo xtask logs --follow
プロジェクト構成
Cursio は Cargo ワークスペースで、protocol → transport → core →
プラットフォーム別クレート → バイナリのレイヤー構成です。
crates/protocol— ワイヤープロトコルの語彙と長さプレフィックス付きフレーミング。I/O は行いませんcrates/transport— ディスカバリー、パスワードによるペアリング(SPAKE2 + 鍵確認 + 信頼ストア)、Noise、優先度スケジューリングcrates/core— ID、リンクの確立、メッシュの監視、セッションループ、 モジュールの実装、cursioCLIcrates/input— プラットフォームごとのキャプチャと注入crates/window— ウィンドウのキャプチャ、エンコード、代理ウィンドウcrates/audio— PipeWire および WASAPI バックエンドcrates/files— ボリュームの提供とピアのボリュームのマウントcrates/usb— USB/IP のエクスポートとインポート、デバイスの使用者の管理crates/clipboard-core—clipdと共有するクリップボードバックエンドcrates/android— スマートフォンのノードと JNI エントリーポイント、および Kotlin サービス、プラグイン、バックエンド(plugin/)crates/bluetooth— スマートフォンのハンズフリーユニットおよび A2DP スピーカーとしての Cursio、 メッシュの Bluetooth チャネルcrates/airplay— メッシュの外部に意図的に配置された AirPlay レシーバー。 ベンダー提供の FairPlay C はnative/playfairにありますcrates/logging— すべてのバイナリで共有するコンソールおよびローテーションファイルへのログ記録crates/xtask— ビルド、インストール、クロスコンパイルの自動化app— Tauri UI:デスクトップウィンドウとトレイ、およびスマートフォンアプリ全体apps/clipd— Linux 用のスタンドアロンのクリップボード履歴ポップアップ(GTK4/libadwaita)native/— Windows オーディオドライバーと GNOME 拡張機能(ドラッグ 検出とクイック設定タイル)
プラットフォーム別クレートは仕組みを担い、core 内の対応する*_session.rsは
ポリシーを担います。機能はモジュールとして追加し、CLI 内で分岐させることはありません。
各サブシステムの信頼できる情報源はdocs/*.mdです:メッシュ、
プラットフォーム、入力、
オーディオ、クリップボード、
ウィンドウ転送、USB、
メッセージ、通話、
メディア、ギャラリー、
更新、実機テスト。
制限事項(v0.x)
- DRM/保護された画面はキャプチャできない場合があります
- 全画面アプリケーションとゲームは実験的な機能です
- Wayland コンポジターにはキャプチャとウィンドウ制御の制限があります。GNOME でドラッグを検出するには、 同梱の Shell 拡張機能が必要です
- レイテンシーはネットワークとハードウェアに依存します
ロードマップ
完了 — 暗号化メッシュ、入力プロキシ、ドラッグによるウィンドウの画面端への転送、アプリケーションごとのオーディオ、クリップボード、ファイル共有、USB 共有、画面共有アプリ向けのリモート画面、AirPlay レシーバー、署名付きの自己アップデート、完全なピアとしてのスマートフォン(オーディオ、マイク、ストレージ、ギャラリー、通知、SMS、通話、メディア操作、パソコンから操作する画面、Bluetooth フォールバック)。
次に対応 — macOS でのピアのウィンドウ表示、macOS のオーディオ、サービスとしての Windows オーディオドライバー、Windows での通話音声、バックグラウンドでのスマートフォンのクリップボード、VideoToolbox エンコーディング、コンポジターとの統合。
macOS でのピアのディスクのマウント — FUSE 経由ではなく、Cursio 内の localhost NFSv3 サーバーを介し、システム標準の NFS クライアントでマウントします。インストール不要、カーネル拡張不要、すべての macOS バージョンに対応します。FUSE 経由の方法は現状どれも劣ります。fuser は macOS でテストされておらず、macFUSE 5.3 ではマウントパスが失われました。macFUSE の kext を使うには、Apple Silicon でリカバリから Reduced Security を設定する必要があります。kext を使わない FSKit バックエンドは FUSE デバイス fd を公開せず(まだ変更が続いている MFMount.framework のみ)、マウント先は /Volumes に限られ、速度も遅くなります。FUSE-T は fd を公開するのではなく libfuse を置き換えるもので、無料で使えるのは個人利用のみです。localhost エクスポートを mount_nfs で root 以外のユーザーがマウントする方法は、Hugging Face の hf-mount と rclone nfsmount がすでに採用しています。サーバー側には nfs3_server を使います(CI は macOS arm64 を対象としています)。ただし修正が必要な箇所が 2 つあります。FSSTAT と PATHCONF が定数(空き容量 1 TiB、大文字と小文字を区別)になっているため、それぞれにフックを追加する変更を upstream に提案しつつ、修正済みのコピーをベンダー管理します。NFS には open/close がないため、アダプターはファイル ID ごとにピアのハンドルを保持し、削除や名前変更の前に閉じます。そうしないと Windows のピアが操作を拒否します。マウントオプションは vers=3,tcp, noresvport,locallocks(nolocks では flock が ENOTSUP で失敗します)、クラッシュしたノードによって呼び出し元が停止しないようにする intr と deadtimeout、および rsize/wsize は 1 MiB です。
貢献
CONTRIBUTING.md を参照してください。セキュリティ上の問題は、公開の issue ではなく SECURITY.md に従って報告してください。
ライセンス
Cursio はフリーソフトウェアです。GNU General Public License バージョン 3、または(希望する場合は)それ以降のバージョンの条件に従って、再配布および改変できます。有用であることを願って配布していますが、いかなる保証もありません。
GPL は、コードに付け加えられた単なる希望ではありません。iPhone に必要な FairPlay のセットアップと、Windows のマウントに必要な WinFsp バインディングは、どちらも GPL-3.0 であるため、すべてのデスクトップバイナリはすでに GPL に従っています。THIRD-PARTY.md に、ベンダー管理しているコードとそのライセンスを記載しています。native/cursio-vad の Windows オーディオドライバーは別プログラムとして、Microsoft の MS-PL に従います。
AirPlay と FairPlay は Apple Inc. の商標です。Cursio は Apple と提携しておらず、Apple による推奨も受けていません。相互運用性のため、プロトコルのレシーバー側を実装しています。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。