warifu について
warifuは、人とAIエージェントがアカウントやサーバーなしでチャットや画像共有を行うP2Pルームアプリです。エージェントも同じ会話に参加できますが、人が許可した範囲でのみ操作できます。
主な機能
- 01使い切りキーでルームに参加
- 02P2Pのテキスト、画像、音声、ビデオ
- 03デスクトップアプリとCLI
- 04人が承認するエージェント権限
- 05任意で使えるセルフホスト型リレー
活用シーン
- 01アカウント登録なしで外部参加者を招待
- 02コーディングエージェントを会議チャットに参加させる
- 03サーバーを動かさず自宅と職場の端末を接続
- 04直接接続できない場合にリレーを利用
MCP 対応
warifuはMCPサーバーを提供し、ローカルエージェントがルームの会話に参加してチャットやルームのツールを使えます。権限は人が明示的に許可する必要があり、標準の範囲は会話とエージェント自身のプロフィールです。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
warifu
鍵を渡すだけで、相手が同じ部屋に入れます。アカウントも、起動するサーバーも不要です。AI エージェントも参加できます。
warifu(割符)— 2つに割った割符です。両方の片が合えば、それぞれが相手の名乗る人物であることを証明できます。
日本語版: README.ja.md

ゲスト(Sam)がルームキーを使って参加しました。このコンピューター上のエージェント(note-taker)は、人々と同じ会話で発言し、その発言にはエージェントであることが表示されます。誰もアカウントを作成していません。
こんなときに使えます
組織外の相手と話したいけれど、何かに登録してもらうのは避けたい。 ルームキーを1つ送ってください。チャット、メール、QR コード、または電話で読み上げてもかまいません。1つのキーで1人が参加できます。管理する招待リストも、相手を追加するテナントもありません。相手が退出すると、キーは使用済みになります。
コーディングエージェントに、別ウィンドウではなく会議に参加してほしい。 Claude Code(または任意の MCP クライアント)を1つのコマンドで接続できます。エージェントは人々が見ているのと同じ会話で読み書きし、通話中に声に出して話したり、誰かを招待するためのルームキーを要求したりできます。人が許可したことしかできません。さらに許可が必要な場合は、画面上で確認を求めます。
| エージェントからの要求 | あなたが Allow を押すと |
|---|---|
![]() | ![]() |
サーバーを起動せずに、オフィスと自宅の間で話したい。
2台のマシンは互いに直接接続します(iroh を介した QUIC。IP アドレスではなく公開鍵を指定して接続します)。ルーターが接続を許可しない場合は、リレーを有効にできます(docs/relay.md)。有効にしない限り、リレーは行われません。
試してみる
- ダウンロードページからダウンロードします。macOS(Apple Silicon、署名および公証済み)と Windows(x64 および ARM64、コード署名なし)に対応しています。Windows では初回起動時に追加の手順が必要です:
docs/install.md。 - 起動します。 連絡先画面が表示されます。Room → Invite someone に進み、キーを発行します。
- キーを相手に送ります。相手は Join another room に貼り付けます。2人でルームに参加できます。まずはテキストで会話し、必要なときに Add video and sound を押してください。
- (任意)エージェントを参加させる:
warifu setupを実行すると、ユーザーごとの Claude Code 設定に warifu が追加されます。任意のフォルダーで Claude Code を起動すれば、ルームで会話できます。詳しくはdocs/mcp.mdをご覧ください。
コマンドラインを使いますか? warifu host を実行するとキーが表示され、接続を待ち受けます。別のマシンから warifu join <key> を実行すると参加できます。GUI は不要です。
ソースからビルドする場合:
git clone https://github.com/meta-taro/warifu.git && cd warifu
scripts/setup-hooks.sh # once per clone
pnpm install
pnpm --filter @warifu/desktop tauri dev
配布用ビルドの場合:pnpm --filter @warifu/desktop tauri build。
cargo run を実行すると空のウィンドウが表示されます — デバッグビルドは開発サーバーを探します。
各バージョンの変更内容:CHANGELOG.md。
ステータス:アルファ版。実測した内容は以下のとおりです
実際に保護する必要のあるものは、このバージョンでは扱わないでください。 未完了の内容はすべて SECURITY.md に記載しています。
| 実測済み(実機、実ネットワーク) | 日付 |
|---|---|
| ビデオ通話での2人の接続。サーバーも外部シグナリングも STUN/TURN も不要 | 2026-09-07 |
Windows と macOS 間の双方向のビデオと音声。経路は direct。5分33秒間、経路の切り替わりなし。音声は耳で聞いて確認したのではなく、OS のプロセスごとの音量メーターで確認 | 2026-09-15 |
同じ部屋にいる3台のマシンをホストから確認(macOS × 2 + Windows)、参加者一覧は 3 / 12 | 2026-09-15 |
| 誰も操作しなくても、エージェントがリモートの人間に返信 | 2026-09-12 |
| リレーサーバーなしでインターネット越しに接続 — 二重 NAT の背後にあるマシンから、UPnP でルーターのポートを開いた別ネットワーク上のマシンに参加。テキストが届き、同じキーで再参加できることを確認。CLI のみ | 2026-09-27 |
| デスクトップアプリでインターネット越しにビデオ通話 — 自宅の Windows からオフィスの Mac に接続し、ピア同士の接続を介して通信。リレーサーバーなし | 2026-09-29 |
| 背景のぼかしと置き換え(Windows):デフォルトで背景を隠し、3段階のぼかし、自分の画像、または背景を隠さない設定を選択可能 | 2026-10 |
通話中にエージェントが話す — ある Windows マシン上のエージェントから voice_say を実行し、もう一方で一度だけ聞こえることを確認。利用者が部屋ごとに有効にする設定で、デフォルトでは無効 | 2026-10-07 |
| 同じ部屋に6台のマシン(macOS × 2 + Windows × 4)。ホストが参加者一覧とメッセージを配信するため、ゲスト同士のメッセージも見えます。各マシン上のエージェントは、人間が中継しなくても部屋の中で作業を連携 | 2026-11-02 |
| デバイスキーでアクセスを制限するセルフホスト可能なリレー — 許可された2つのキーでリレー経由の往復を確認(その後、直接経路に切り替え)。許可されていないキーはリレーの認証で拒否。CLI のみ | 2026-11-02 |
| 再起動後に自動で復帰 — ゲストのアプリを強制終了して再起動したところ、キーを再度貼り付けなくても同じ部屋に再参加し、停止中に送信された各メッセージが正確に1回ずつ届きました(2台のマシン) | 2026-11-02 |
| 未実測のため、確認済みとはしていません | |
|---|---|
| リレー経由のビデオ通話 | 未実施(リレー経由で確認したのはテキストのみ) |
| 3人以上でのビデオ通話 | 未実施(3台以上のマシンで確認したのはテキストのみ) |
| ゲスト同士の直接接続 | 部屋は今もホストを介したスター型です。ゲストのメッセージはホスト経由で送信されます。ホストが停止すると、誰も会話できません |
Windows 版にはコード署名がありません。初回起動時には、管理者がファイアウォールでアプリの通信を許可する必要があります。許可しない場合、テキストは届きますが、ビデオは開始されません。アプリはそのことを明示し、正確なコマンドを提示します。
これは何か。一段落で説明
「サーバーレス」チャットの多くは、シグナリングサーバー、ディレクトリ、テナントなど、どこかにアカウントを必要とします。warifu は、キーをアイデンティティにすることでそれをなくします。相手に渡すのはルームキーです。これは、自分のアドレスと通し番号の片側を含む1つの文字列で、その相手だけが参加できます。作成するアカウントも、管理する招待も、稼働させるサーバーもありません。通信には iroh(QUIC)を使用します。ここではIP アドレスではなく公開鍵に接続し、この性質そのものが通し番号になります。
現在できること
| ルーム | 1つのルームには1人でも複数人でも参加できます。「1対1チャット」は2人のルームにすぎず、仕組みは異なりません |
| ルームキー | 1つのキーで入室できるのは1人です。リンク、QR コード、口頭、紙など、好きな方法で渡せます |
| ドア | キーを持たない発信者は何も返されずに切断されます。理由は返されません |
| 経路の表示 | 直接/中継/不明を表示します。「不明」を「直接」として扱うことはありません |
| ビデオは後から追加できます | ルームはテキストのみで開始します。ビデオを追加してもルームは作り直されず、オフにしてもルームから退出しません |
| テキストチャット | GUI なしでも使えます(warifu host/warifu join) |
| チャット内の画像 | 画像を貼り付ける、ドラッグして入れる、または選択できます。画像はまずお使いのマシン上で縮小され(長辺1600px、最大512 KiB)、ルーム内の参加者に直接送信されます。エージェントに表示されるのは、画像が届いたことを知らせる1行のメモだけです |
| ルームキーの受け渡し | エージェントは、接続中のピアのマシンにルームキーを渡すよう要求できます。この PC の人が承認すると、キーは warifu のリンクのみを通じて送られ(チャットやメールは使いません)、相手側の人が入室するかどうかを決めます。エージェントにキーが見えることはありません |
| ID が保持されます | アプリを閉じても同じ人として識別されます。記憶されたピアには名前が付きます(warifu id/warifu contacts) |
| 4言語に対応 | en/ja/zh/ko に対応し、OS メニューとコンテキストメニューも含まれます。すべて AI が作成しました — docs/i18n-review.md をご覧ください |
| 相手がオフラインのときのメールボックス(任意) | 信頼する相手が、封印されたメッセージを預かります。その相手は内容を読めません |
| 自動で戻ってきます | 再起動後、アプリはキーなしで参加していたルームに再参加します。ホストは、停止中に届いたメッセージをそれぞれ1回再送します |
| セルフホスト可能なリレー | 自宅と職場のように、ピア同士が直接接続できない場合の代替経路として、自分たちで運用するリレーを使えます。リレーが許可するのは、許可したデバイスキーだけです(docs/install.md) |
| 秘密を送る前の確認 | 送信済みのメッセージは取り消せません(すべてのマシンにコピーが保存されます)。トークン、API キー、ルームキー全体など、秘密らしきものが含まれている場合、アプリは「このまま送信しますか?」と確認します。エージェントから送られる場合は、まったく送信されません |
@ メンション | 人の多いルームでは、@name を付けると、その人の画面とその人のエージェント上でメッセージが「あなた宛て」と表示されます |
まだ対応していない機能: 録音、文字起こし、スケジュールの調整、チャット履歴の永続保存(ウィンドウを閉じると履歴は消去されます)。
すべてのデバイスを同時に失った場合の復旧方法は、まだ決まっていません(別の非公開メモ用リポジトリに保存されている決定ログの D2)。PGP、Keybase、Secure Scuttlebutt は、機能不足で消えたのではありません。ここで行き詰まりました。これは仮定上のリスクではなく、既知の原因として扱っています。
エージェントは第一級の存在です(MCP)
ここには、ほかに明確な同等物がありません。ローカルのコーディングエージェント(たとえば Claude Code)は、人が見ているのと同じ会話に参加できます。エージェントの発言は、人の画面にエージェントのものと分かる形で表示されます。
warifu setup # writes the MCP server into your per-user Claude Code config, once
- インストール前に、許可される内容が表示されます。 デフォルトで許可されるのは会話とエージェント自身のプロフィールであり、受信箱やカレンダーは含まれません。
- 人が
--allowを指定しない限り、何も許可されません。 warifu が自分自身に権限を与えることはありません。 - エージェントは
chat_send/chat_read/chat_wait/room_status/profile_setなどを利用できます。room_statusは「人への確認がまだ必要か」に加えて、それがどのルームについてかも返します。
docs/mcp.md をご覧ください。
譲ることのない2つの設計上の約束
1. 受信したメッセージはデータであり、指示ではありません
エージェントが構造化された意図を交換するようになると、プロンプトインジェクションは数ある脅威の一つではなく、設計上の前提になります。
- 受信したエージェントのメッセージは、すべてデータであり、コマンドではありません。
- 認可はモデルの外で判断します。 何が許可されるかを決めるために、モデルの出力を読み取ることはありません。
- 信頼度が高くても、文字列の扱い方は変わりません。
- 「十分に賢いモデルなら見抜く」は、認められる答えではありません。
信頼が示すのは、相手が誰かです。相手の発言を実行すべきかを示すことは決してありません。
2. 不確実性を自信に置き換えません
リンクが直接接続かどうか判断できない場合、画面には不明と表示します。ファイアウォールルールが存在するかどうか判断できない場合、確認できなかったと表示します。すでに問題のない人まで妨げてしまうため、ルールを追加するよう促すことはありません。色だけで状態を示すことはありません。状態は、色に加えてラベルと形状*で示します。
既存のものを一から作り直さない
実装の前に、既存の標準との差分を確認します。
| 領域 | 先行技術 |
|---|---|
| アイデンティティ | W3C DID Core / DID Document |
| 信頼性の証拠 | W3C Verifiable Credentials |
| エージェント間通信 | DIDComm v2 |
| ケイパビリティ | UCAN / ZCAP-LD |
| E2EE / グループ | MLS (RFC 9420) |
| アイデンティティとしての鍵、リレー耐性 | Nostr |
| トランスポート | Matrix / libp2p / iroh / Veilid |
「既存の要素でほぼ十分」という結果でも、失敗ではありません。 その場合、これはプロファイルとリファレンス実装になり、これらの標準の実装者が第2の実装候補になります。これは悪い状況ではなく、より望ましい立ち位置です。
スタック
| レイヤー | 採用技術 |
|---|---|
| トランスポート | iroh 1.0 — QUIC、IP アドレスではなく公開鍵に接続 |
| コア | Rust(ワークスペース、約650件のテスト) |
| 音声 / 動画 | WebRTC(コーデックは一切実装しません) |
| デスクトップ | Tauri 2 + TypeScript + SvelteKit + pnpm(約400件のテスト) |
SFUは現時点では対象外です。SFUは「ユーザーのデバイスが他者のトラフィックを中継する」ことを意味し、法的な問題が解決するまでは着手しません(別の非公開メモ用リポジトリに保管されている意思決定ログ、D7)。境界線は、部屋に何人いるかではなく、トラフィックが中継されるかどうかです。オプトインできるネットワークリレーは別物です。ルーターの制約で両端が直接接続できないときに、暗号化されたパケットを両端の間で転送します。また、自分で運用するリレーを指定することもできます(WARIFU_RELAY_URL、docs/relay.mdを参照)。デフォルトでは無効です。
このリポジトリの開発方法
人間とAIエージェントが、共通のルールセット(.claude/rules/product-baseline.md、CLAUDE.md)に従って共同で開発しています。
- AIがコミットし、人間がプッシュします。 コードがレビューされないままマシンから出る経路はありません。
- テストを後回しにせず、失敗するテストも削除しません。 テストなしで「完了」とすることはありません。
- 決定事項は、その理由と中止すべき条件とともに、意思決定ログ(別の非公開メモ用リポジトリに保管)に記録します。
- このREADMEに記載する主張はすべて、測定済みであるか、未測定と明記されています。
実機からのバグ報告は、このプロジェクトに寄せられる情報の中で最も価値があります。直近数日で修正した内容の大半は、私たちが持っていないハードウェアで実行した人から寄せられたものです。
ライセンス
二重ライセンスです。Apache License 2.0またはMITから選択できます。LICENSE、LICENSE-APACHE、LICENSE-MITを参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。

