本文へ移動

オフラインとプライバシー ​

iRoof.top はチャットをあなたのコンピュータに保存します。コンピュータ上で動くモデルを使えば、何もコンピュータの外に出る必要はありません。 オフラインモードは、それを習慣ではなく、アプリが強制するルールにします。

ローカルで起きること ​

処理実行場所ネットワーク
インポート、解析、スタイルプロファイルあなたのコンピュータなし
保存データフォルダ内の JSON ファイルとメディアなし
履歴の検索、共有リンクの PIN、メディアライブラリあなたのコンピュータなし
写真、スタンプ、GIF、動画の説明メディアモデル。AI で説明を押したときだけ項目ごとに 1 回、モデルのエンドポイントへ
音声の文字起こしメディアモデル。ボイスメッセージでAI で説明を押したとき、または録音したとき1 回、モデルのエンドポイントへ
返信チャットモデル。メッセージを送ったとき(または訪問者が送ったとき)モデルのエンドポイントへのリクエスト
長い履歴の圧縮チャットモデルが返信の一部として。履歴が予算を超えたときモデルのエンドポイントへの追加の 1 回

インポートでモデルが呼ばれることはありません。最初の呼び出しは、メッセージを送るとき、説明を押すとき、またはボイスメッセージを録音するときに発生します。返信では、エクスポートした履歴(履歴の予算まで)、スタイルプロファイル、メディアの説明がモデルに送られます。つまり、モデルがどこで動くかで、チャットの行き先が決まります。クラウドのエンドポイントならチャットは送られ、コンピュータ上のモデルなら送られません。

完全にオフラインで動かす ​

  1. Ollama または LM Studio をインストールするか、llama.cpp の llama-server を実行します。
  2. ツール呼び出しに対応したチャットモデルをダウンロードします。写真やスタンプの説明も必要なら、ビジョンモデルもダウンロードします。
  3. 設定でエンドポイントとモデルを選び、オフラインをオンにします。
サーバーベース URL
Ollamahttp://localhost:11434/v1
LM Studiohttp://localhost:1234/v1
llama.cpp の llama-serverhttp://localhost:8081/v1(既定のポート 8080 は iRoof.top が使うので、llama-server --port 8081 で起動します)
  1. テストを押します。小さなリクエストを送り、応答したモデルとホストを表示します。ネットワークを切ったままでもチャットを続けられます。

デスクトップアプリは設定で構成します。アプリはシェルや .env ファイルを読みません(デスクトップアプリを参照)が、起動された環境に ROOFTOP_OFFLINE と OPENAI_* があれば、それに従います。サーバーは環境(と .env)を読みます。

sh
# --offline は ROOFTOP_OFFLINE=1 と同じ
OPENAI_BASE_URL=http://localhost:11434/v1 OPENAI_MODEL=llama3.1 rooftop --offline
sh
docker run -p 8080:8080 -v rooftop-data:/data \
  --add-host=host.docker.internal:host-gateway \
  -e ROOFTOP_OFFLINE=1 \
  -e OPENAI_BASE_URL=http://host.docker.internal:11434/v1 -e OPENAI_MODEL=llama3.1 \
  ghcr.io/irooftop/rooftop

Docker では localhost はコンテナ自身を指すので、host.docker.internal を使ってください(--add-host オプションは Linux でのみ必要です)。 Ollama が接続を拒否する場合は、すべてのインターフェースで待ち受けるように設定してください(OLLAMA_HOST=0.0.0.0)。

オフラインモードが強制すること ​

オフラインモード
チャット、履歴の要約、メディアの説明、音声の文字起こしエンドポイントがローカルでない限り拒否
HTTP で接続する MCP サーバーローカルでない限り拒否。設定にエラーとして表示
インターネット共有(<名前>.iroof.top)オフ:リレークライアントは起動せず、スイッチはロック
Telegram ボット(自分のものも共有のものも)起動しない
URL 経由の GIFローカルでない URL からは AI は GIF を送れない
Wi‑Fi 共有リンク動作する

拒否されたリクエストは、接続が作られる前に失敗し、理由がメッセージに出ます。例えば オフラインモード:https://openrouter.ai はローカルのエンドポイントではありません。ローカルのエンドポイントから別のホストへのリダイレクトも拒否されます。モードがオンの間、サイドバーのヘッダーに小さなオフラインバッジが表示されます。この設定は保存されます。--offline / ROOFTOP_OFFLINE=1 は設定に関係なくモードをオンにし、設定からはオフにできません。

「ローカル」の意味 ​

localhost、ループバック(127.0.0.0/8、::1)、プライベートネットワークのアドレス(10/8、172.16/12、192.168/16、fc00::/7)、リンクローカルのアドレス、そして *.local と *.internal という名前(host.docker.internal など)です。家庭内ネットワークの別のコンピュータ上のモデルは、ネットワークの外に出ることがないため、ローカルとみなされます。名前は表記から判断され、名前解決はされません。

オフラインモードで確認できないこと ​

  • stdio の MCP サーバーは、あなたのコンピュータ上のプログラムです。iRoof.top はそれを起動しますが、どこに接続するかは見えないので、ローカルにとどまると信頼できるものだけを追加してください。
  • 音声の文字起こしは、Whisper の /audio/transcriptions API ではなく、チャット API(input_audio の部分)を使います。そこで音声を受け付けるローカルのサーバーとモデルが必要です。お使いのものが受け付けなくても、ボイスメッセージは保存されて送信されます。失われるのはテキストだけです。
  • 画像と音声の生成は、MCP ツールとしてのみ存在します。オフラインでは、そのためにローカルの MCP サーバーを使ってください。
  • 共有相手は、自分のブラウザであなたの Wi‑Fi リンクを開きます。オフラインモードが制御するのはこのアプリであり、相手のデバイスではありません。

友人と安全に共有する ​

リンク起きること
Wi‑Fi http://<あなたの IP>:8737/s/<名前>ローカルネットワークの外に出ることはない
インターネット https://<名前>.iroof.top/s/<名前>アプリはハブへの送信 WebSocket 接続を 1 つ開き、その接続を通じて訪問者の HTTP リクエストとアプリの応答を転送します

インターネットのリンクでも、エクスポート、チャット、モデルはあなたのコンピュータに残り、ハブはそのどれも保存しません。ハブが保存するのはアカウントの記録だけです。あなたの名前、秘密情報のハッシュ、最後にあなたを見た時刻です。

これで得られないもの についても明確にしておきます。ハブは TLS を終端するので、どのリバースプロキシと同じく、技術的には通過するトラフィックを見ることができます。訪問者が入力した内容、ペルソナの返信、そしてリンクが訪問者に読むことを許す履歴です(訪問者はエクスポートを読めます。既定はなし)。ハブが転送するのは訪問者向けのページ(/s/…、/api/s/…、ページのアセット)だけで、両方向の Cookie を破棄します。所有者の画面や設定には、ハブを通じてアクセスできることは決してありません。その程度の信頼でも不安なら、Wi‑Fi リンクを使うか、独自のリレーハブを運用してください。 共有リンクの詳細。

オフラインモードでは、iroof.top のリレーはオフになります。Wi‑Fi リンクは引き続き動作します。

Telegram ボット ​

Telegram から返信は、あなたのグループに次の内容を投稿します。

  • 新しい訪問者のメッセージ(名前、リンク名、テキスト、またはメディアのラベルと、その説明または文字起こし、そして返信先のメッセージの短いプレビュー)と、AI の返信。
  • エクスポートした履歴は決して投稿されません。古いメッセージは送信されません。

ボットにはエンドツーエンドの暗号化がありません。テキストは平文で Telegram を通ります。共有ボットでは、さらにハブも通ります。ハブが保存するのは、どのグループがどのアカウントのものかだけです。自分のボットは、ハブを介さずに Telegram と直接通信します。オフラインモードでは両方ともオフになります。

データの行き先 ​

データ行き先
エクスポート、チャット、設定、API キーあなたのコンピュータのデータフォルダ
インポートとスタイルプロファイルどこにも送られない
履歴、スタイルプロファイル、あなたのメッセージ選んだモデルのエンドポイント。返信のたびに
写真と音声メディアモデルのエンドポイント。説明を押したとき、またはボイスメッセージを録音したとき
Wi‑Fi リンク経由の訪問者のメッセージあなたのコンピュータとモデルのエンドポイント
インターネットリンク経由の訪問者のメッセージハブ(通信中)、あなたのコンピュータ、モデルのエンドポイント
Telegram 経由の訪問者のメッセージ加えて Telegram、共有ボットの場合はハブ
オフラインモードローカルのモデルエンドポイントのみ、Wi‑Fi リンクのみ、Telegram なし

MIT ライセンスで公開。