Zum Inhalt springen

Offline & Datenschutz ​

iRoof.top bewahrt deine Chats auf deinem Computer auf. Mit einem Modell, das ebenfalls auf deinem Computer läuft, muss nichts ihn verlassen. Der Offline-Modus macht das zu einer Regel, die die App durchsetzt, statt zu einer Gewohnheit.

Was lokal passiert ​

SchrittWo es läuftNetzwerk
Import, Parsen, das Stilprofildein Computerkeins
SpeicherungJSON-Dateien und Medien im Datenverzeichniskeins
Suche im Verlauf, Share-Link-PINs, Medienbibliothekdein Computerkeins
Fotos, Sticker, GIFs, Videos beschreibendas Medienmodell, nur wenn du Mit KI beschreiben drücksteine Anfrage pro Element an den Modell-Endpunkt
Sprache transkribierendas Medienmodell, wenn du bei einer Sprachnachricht Mit KI beschreiben drückst oder eine aufnimmsteine Anfrage an den Modell-Endpunkt
Eine Antwortdas Chatmodell, wenn du eine Nachricht sendest (oder ein Besucher)Anfragen an den Modell-Endpunkt
Einen langen Verlauf verdichtendas Chatmodell, als Teil einer Antwort, wenn der Verlauf das Budget überschreiteteine zusätzliche Anfrage an den Modell-Endpunkt

Import ruft nie ein Modell auf. Der erste Aufruf passiert, wenn du eine Nachricht sendest, Beschreiben drückst oder eine Sprachnachricht aufnimmst. Eine Antwort schickt dem Modell deinen exportierten Verlauf (bis zum Verlaufsbudget), das Stilprofil und die Medienbeschreibungen. Wo das Modell läuft, entscheidet also, wohin dein Chat geht: Ein Cloud-Endpunkt bekommt ihn, ein Modell auf deinem Computer nicht.

Nur offline betreiben ​

  1. Installiere Ollama oder LM Studio, oder starte llama.cpps llama-server.
  2. Lade ein Chatmodell mit Tool-Unterstützung und, falls du Fotos und Sticker beschrieben haben willst, ein Vision-Modell herunter.
  3. Wähle in den Einstellungen Endpunkt und Modell und schalte dann Offline ein:
ServerBasis-URL
Ollamahttp://localhost:11434/v1
LM Studiohttp://localhost:1234/v1
llama.cpp llama-serverhttp://localhost:8081/v1 (sein Standardport 8080 gehört iRoof.top: starte es mit llama-server --port 8081)
  1. Drück Testen. Es sendet eine winzige Anfrage und zeigt das Modell und den Host, die geantwortet haben. Du kannst das Netzwerk abschalten und weiter chatten.

Die Desktop-App wird in den Einstellungen eingerichtet. Sie liest weder deine Shell noch eine .env-Datei (siehe Desktop-App), respektiert aber ROOFTOP_OFFLINE und OPENAI_*, falls diese in der Umgebung stehen, mit der sie gestartet wurde. Ein Server liest die Umgebung (und .env):

sh
# --offline ist dasselbe wie 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

In Docker ist localhost der Container selbst, also verwende host.docker.internal (die Option --add-host ist nur unter Linux nötig). Wenn Ollama die Verbindung ablehnt, lass es auf allen Schnittstellen lauschen (OLLAMA_HOST=0.0.0.0).

Was der Offline-Modus durchsetzt ​

Offline-Modus
Chat, Verlaufszusammenfassung, Medienbeschreibung, Sprachtranskriptionabgelehnt, außer der Endpunkt ist lokal
MCP-Server über HTTPabgelehnt, außer lokal; wird in den Einstellungen als Fehler angezeigt
Teilen über das Internet (<name>.iroof.top)aus: der Relay-Client startet nicht, und der Schalter ist gesperrt
Telegram-Bot, eigener oder geteilterwird nicht gestartet
GIFs per URLdie KI kann kein GIF von einer nicht-lokalen URL senden
Share-Links im WLANfunktionieren

Eine abgelehnte Anfrage scheitert, bevor überhaupt eine Verbindung aufgebaut wird, und die Meldung sagt warum: Offline-Modus: https://openrouter.ai ist kein lokaler Endpunkt. Auch eine Weiterleitung von einem lokalen Endpunkt auf einen anderen Host wird abgelehnt. Ein kleines Offline- Abzeichen sitzt im Seitenleisten-Kopf, solange der Modus aktiv ist. Die Einstellung wird gespeichert. --offline / ROOFTOP_OFFLINE=1 schalten ihn unabhängig von den Einstellungen ein, und die Einstellungen können ihn nicht ausschalten.

Lokal bedeutet ​

localhost, Loopback (127.0.0.0/8, ::1), private Netzwerkadressen (10/8, 172.16/12, 192.168/16, fc00::/7), Link-Local-Adressen und die Namen *.local und *.internal (etwa host.docker.internal). Ein Modell auf einem anderen Computer in deinem Heimnetz zählt als lokal, weil es dein Netzwerk nie verlässt. Namen werden nach ihrer Schreibweise beurteilt, sie werden nicht nachgeschlagen.

Was der Offline-Modus nicht prüfen kann ​

  • stdio-MCP-Server sind Programme auf deinem Computer. iRoof.top startet sie, kann aber nicht sehen, mit wem sie sich verbinden, also füge nur solche hinzu, denen du zutraust, lokal zu bleiben.
  • Sprachtranskription nutzt die Chat-API (ein input_audio-Teil), nicht die Whisper-API /audio/transcriptions. Dafür braucht es einen lokalen Server und ein Modell, die dort Audio annehmen. Wenn deins das nicht tut, wird die Sprachnachricht trotzdem gespeichert und gesendet, nur ihr Text fehlt.
  • Bild- und Sprachgenerierung gibt es nur als MCP-Tools. Verwende offline dafür einen lokalen MCP-Server.
  • Die Personen, mit denen du teilst, öffnen deine WLAN-Links in ihren eigenen Browsern. Der Offline-Modus regelt diese App, nicht ihre Geräte.

Sicher mit Freunden teilen ​

LinkWas passiert
WLAN http://<deine IP>:8737/s/<name>verlässt nie dein lokales Netzwerk
Internet https://<name>.iroof.top/s/<name>die App öffnet eine ausgehende WebSocket-Verbindung zum Hub, der darüber die HTTP-Anfragen des Besuchers und die Antworten deiner App weiterleitet

Bei einem Internet-Link bleiben dein Export, deine Chats und das Modell auf deinem Computer, und der Hub speichert keines davon. Der Hub behält nur einen Kontodatensatz: deinen Namen, einen Hash deines Geheimnisses und wann er dich zuletzt gesehen hat.

Sei dir klar, was das nicht leistet. Der Hub beendet TLS, also sieht er wie jeder Reverse-Proxy technisch den Datenverkehr, der durchläuft: was der Besucher eintippt, die Antworten der Person und den Verlauf, den der Link Besuchern zum Lesen erlaubt (Besucher können den Export lesen, Standard nichts). Er leitet nur die Besucherseiten weiter (/s/…, /api/s/…, Seiten-Assets) und verwirft Cookies in beide Richtungen; deine Eigentümeroberfläche und deine Einstellungen sind darüber nie erreichbar. Ist dir das zu viel Vertrauen, nutze WLAN-Links oder betreibe deinen eigenen Relay-Hub. Mehr zu Share-Links.

Mit dem Offline-Modus ist das iroof.top-Relay aus. WLAN-Links funktionieren weiter.

Der Telegram-Bot ​

Aus Telegram antworten postet in deine Gruppe:

  • neue Besucher-Nachrichten (Name, Link-Name, Text oder ein Medienlabel mit Beschreibung oder Transkript sowie eine kurze Vorschau der Nachricht, auf die geantwortet wurde), und die Antworten der KI;
  • nie den exportierten Verlauf. Alte Nachrichten werden nicht übertragen.

Bots haben keine Ende-zu-Ende-Verschlüsselung: Der Text läuft im Klartext über Telegram. Beim geteilten Bot läuft er auch über den Hub, der nur speichert, welche Gruppe zu welchem Konto gehört. Ein eigener Bot spricht direkt mit Telegram, ohne den Hub. Der Offline-Modus schaltet beides ab.

Wohin deine Daten gehen ​

DatenWohin sie gehen
Exporte, Chats, Einstellungen, API-Schlüsseldas Datenverzeichnis auf deinem Computer
Import und Stilprofilnirgendwohin
Verlauf, Stilprofil, deine Nachrichtender von dir gewählte Modell-Endpunkt, bei jeder Antwort
Fotos und Spracheder Medienmodell-Endpunkt, bei Beschreiben oder wenn du eine Sprachnachricht aufnimmst
Besucher-Nachrichten über einen WLAN-Linkdein Computer und dein Modell-Endpunkt
Besucher-Nachrichten über einen Internet-Linkder Hub (auf dem Weg), dein Computer, dein Modell-Endpunkt
Besucher-Nachrichten mit Telegramzusätzlich Telegram, und der Hub beim geteilten Bot
Offline-Modusnur lokaler Modell-Endpunkt, nur WLAN-Links, kein Telegram

Veröffentlicht unter der MIT-Lizenz.