mcpField
W
warifu

warifu

ローカル
meta-taro.github.ioコミュニケーション0今日更新

warifu について

warifuは、人とAIエージェントがアカウントやサーバーなしでチャットや画像共有を行うP2Pルームアプリです。エージェントも同じ会話に参加できますが、人が許可した範囲でのみ操作できます。

主な機能

  1. 01使い切りキーでルームに参加
  2. 02P2Pのテキスト、画像、音声、ビデオ
  3. 03デスクトップアプリとCLI
  4. 04人が承認するエージェント権限
  5. 05任意で使えるセルフホスト型リレー

活用シーン

  1. 01アカウント登録なしで外部参加者を招待
  2. 02コーディングエージェントを会議チャットに参加させる
  3. 03サーバーを動かさず自宅と職場の端末を接続
  4. 04直接接続できない場合にリレーを利用

MCP 対応

warifuはMCPサーバーを提供し、ローカルエージェントがルームの会話に参加してチャットやルームのツールを使えます。権限は人が明示的に許可する必要があり、標準の範囲は会話とエージェント自身のプロフィールです。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

warifu

鍵を渡すだけで、相手が同じ部屋に入れます。アカウントも、起動するサーバーも不要です。AI エージェントも参加できます。

warifu(割符)— 2つに割った割符です。両方の片が合えば、それぞれが相手の名乗る人物であることを証明できます。

日本語版: README.ja.md

鍵を使って参加したゲスト、あなた、メモを取るあなたのコンピューター上のエージェントが、1つの会話に参加している部屋

ゲスト(Sam)がルームキーを使って参加しました。このコンピューター上のエージェント(note-taker)は、人々と同じ会話で発言し、その発言にはエージェントであることが表示されます。誰もアカウントを作成していません。


こんなときに使えます

組織外の相手と話したいけれど、何かに登録してもらうのは避けたい。 ルームキーを1つ送ってください。チャット、メール、QR コード、または電話で読み上げてもかまいません。1つのキーで1人が参加できます。管理する招待リストも、相手を追加するテナントもありません。相手が退出すると、キーは使用済みになります。

コーディングエージェントに、別ウィンドウではなく会議に参加してほしい。 Claude Code(または任意の MCP クライアント)を1つのコマンドで接続できます。エージェントは人々が見ているのと同じ会話で読み書きし、通話中に声に出して話したり、誰かを招待するためのルームキーを要求したりできます。人が許可したことしかできません。さらに許可が必要な場合は、画面上で確認を求めます。

エージェントからの要求あなたが Allow を押すと
理由とともにルームキーの発行許可を求めるエージェント。Allow と Deny のボタンがあります許可後の画面。ルームキーを発行できるエージェントと、その許可を取り消せることが表示されています

サーバーを起動せずに、オフィスと自宅の間で話したい。 2台のマシンは互いに直接接続します(iroh を介した QUIC。IP アドレスではなく公開鍵を指定して接続します)。ルーターが接続を許可しない場合は、リレーを有効にできます(docs/relay.md)。有効にしない限り、リレーは行われません。

試してみる

  1. ダウンロードページからダウンロードします。macOS(Apple Silicon、署名および公証済み)と Windows(x64 および ARM64、コード署名なし)に対応しています。Windows では初回起動時に追加の手順が必要です:docs/install.md。
  2. 起動します。 連絡先画面が表示されます。Room → Invite someone に進み、キーを発行します。
  3. キーを相手に送ります。相手は Join another room に貼り付けます。2人でルームに参加できます。まずはテキストで会話し、必要なときに Add video and sound を押してください。
  4. (任意)エージェントを参加させる: 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 / 122026-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. 受信したメッセージはデータであり、指示ではありません

エージェントが構造化された意図を交換するようになると、プロンプトインジェクションは数ある脅威の一つではなく、設計上の前提になります。

  1. 受信したエージェントのメッセージは、すべてデータであり、コマンドではありません。
  2. 認可はモデルの外で判断します。 何が許可されるかを決めるために、モデルの出力を読み取ることはありません。
  3. 信頼度が高くても、文字列の扱い方は変わりません。
  4. 「十分に賢いモデルなら見抜く」は、認められる答えではありません。

信頼が示すのは、相手が誰かです。相手の発言を実行すべきかを示すことは決してありません。

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を参照してください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。