Almaのデスクトップアプリをスマートフォンアプリから、ポートフォワーディングやVPNなしでアウトバウンド接続経由で操作できるセルフホスト型リレー。
nanami-0713/relay-kit
Cloudflare Workersにデプロイできるセルフホスト型のエンドツーエンド暗号化リレー。スマートフォンから、ポートを公開せずにデスクトップ上のローカルポートへ接続できます。
- スター
- 193
- フォーク
- 22
- 未解決の Issue
- 0
- 最終コミット
- 5 日前
これは何?
relay-kitは、スマートフォンなどのリモートクライアントと、デスクトップ上で動作するサービスの間に入るリレーサーバーです。リレーはDurable Objectsを使ってCloudflare Workers上で動作し、転送するのは暗号文とルーティングトークンのみなので、復号は両端でのみ行われます。ペアリングには256ビットのコードを1つ使用し、これを使ってルーティングトークンとPAKEソルトも導出します。そのため、コードがなければリレーはハンドシェイクを完了できません。
リポジトリには、リレー本体、任意のローカルHTTPまたはWebSocketポートをプロキシするリファレンスエージェント、トンネル経由でfetchとWebSocketを提供するリファレンスクライアントが含まれています。Nodeベースのリレーフィクスチャは、ローカルテストや単一プロセスでのセルフホスト向けに同じプロトコルを実装しています。プロトコルはPROTOCOL.mdに記載されており、コアパッケージはWebCryptoのみを使用するため、Node 18以降、ブラウザー、Capacitor WebViewで動作します。
このプロジェクトはAlma AIアシスタントのリレープロトコルをベースにしていますが、Almaの公式クライアントとはワイヤー互換性がありません。初期状態ではレート制限がなく、ハンドシェイクも正式な監査を受けていません。
主な機能
- 01単一のwranglerコマンドでリレーをCloudflare Workersにデプロイできます。
- 02リレーが扱うのは暗号文とルーティングトークンのみで、復号はエンドポイントで行われます。
- 031つのペアリングコードから、ルーティングトークンとPAKEソルトの両方を導出します。
- 04リファレンスエージェントで、任意のローカルHTTPポートやWebSocketポートをプロキシできます。
- 05コア暗号パッケージはWebCryptoのみに依存し、Node 18以降とブラウザーで動作します。
- 06ローカルテストやセルフホストに使えるNode製のリレーフィクスチャが含まれています。
ユースケース
- 別のネットワークにいるスマートフォンから、ローカルの開発サーバーやデスクトップのWebダッシュボードに接続する。
- 自分のCloudflareアカウント上で、プライベートな暗号化トンネルをセルフホストする。
- 文書化されたrelay-e2e/v1プロトコルを使って、独自のエージェントやクライアントを構築する。
クイックスタート
- 1
依存関係をインストールする
npm install - 2
Cloudflareアカウントにログインする(初回のみ)
npx wrangler login - 3
relay serverのディレクトリに移動する
cd workers/relay - 4
relayをCloudflare Workersにデプロイする
npx wrangler deploy
使う前に知っておきたいこと
- ハンドシェイクは独自実装のPAKE風方式で、正式な検証や監査を受けていません。
- このプロトコルは、標準の状態では公式Almaクライアントとワイヤー互換性がありません。
- workers.devドメインは中国本土の多くのネットワークでブロックされているため、カスタムドメインまたはプロキシが必要になる場合があります。
収録されている特集
トピック
よくある質問
- relay-kit とは?
- Cloudflare Workersにデプロイできるセルフホスト型のエンドツーエンド暗号化リレー。スマートフォンから、ポートを公開せずにデスクトップ上のローカルポートへ接続できます。 relay-kitは、スマートフォンなどのリモートクライアントと、デスクトップ上で動作するサービスの間に入るリレーサーバーです。リレーはDurable Objectsを使ってCloudflare Workers上で動作し、転送するのは暗号文とルーティングトークンのみなので、復号は両端でのみ行われます。ペアリングには256ビットのコードを1つ使用し、これを使ってルーティングトークンとPAKEソルトも導出します。そのため、コードがなければリレーはハンドシェイクを完了できません。
- relay-kit は無料で使えますか?ライセンスは?
- relay-kit は MIT ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
- relay-kit は今もメンテナンスされていますか?
- 活発にメンテナンス中。relay-kit の最終コミットは 2026年11月1日 です。
- relay-kit は何に使えますか?
- 別のネットワークにいるスマートフォンから、ローカルの開発サーバーやデスクトップのWebダッシュボードに接続する。 自分のCloudflareアカウント上で、プライベートな暗号化トンネルをセルフホストする。 文書化されたrelay-e2e/v1プロトコルを使って、独自のエージェントやクライアントを構築する。
- relay-kit のインストール方法は?
- 依存関係をインストールする: npm install Cloudflareアカウントにログインする(初回のみ): npx wrangler login relay serverのディレクトリに移動する: cd workers/relay relayをCloudflare Workersにデプロイする: npx wrangler deploy
- relay-kit はどこで入手できますか?
- ソースコードとインストール手順は GitHub にあります:https://github.com/nanami-0713/relay-kit
概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。
関連プロジェクト
ローカル開発サーバーに、WebSocketとホットリロードも通る公開HTTPS URLを付与する、アカウント不要・無料のCLI。
共有コードフレーズを使ったエンドツーエンド暗号化に対応し、リレーへのフォールバックも可能な、2台のコンピューター間でファイルやフォルダーをP2P転送するCLIツール。
画面共有とエンドツーエンド暗号化に対応した、1対1のカメラ通話向けセルフホスト型オープンソースWebRTCプラットフォーム。
Cloudflare Workersまたはcelld上でセルフホストできる、各リポジトリをDurable Objectとして扱うGitサーバー。
Cloudflare WorkersアプリケーションとDurable Objectsを自前のマシンで実行し、状態をS3、GCS、Azureのバケットに保存できるセルフホスト型デーモンです。