Ollama Tunnels – Entity Enricher Dokumentation

Ollama-Tunnel

Verbinden Sie das lokale Ollama Ihres Laptops mit nur einem Befehl mit Entity Enricher. Nutzen Sie die Modelle, die Sie bereits haben, behalten Sie bestimmte Eingaben auf Ihrem Rechner und widerrufen Sie den Zugriff sofort – alles über eine einzige ausgehende HTTPS-Verbindung.

            Production (Hetzner)          Your Laptop / your server
        ┌─────────────────────────┐         ┌────────────────────┐
        │  Org enrichment         │         │  ee-tunnel CLI     │
        │     │                   │         │     │              │
        │     ▼                   │         │     ▼              │
        │  Ollama provider URL:   │         │  Ollama :11434     │
        │  http://ollama.<org>    │         │  ┌──────────────┐  │
        │       .tunnel/v1/chat   │         │  │ qwen3:36b    │  │
        │     │                   │         │  │ llama3:70b   │  │
        │     ▼                   │         │  │ ...          │  │
        │  WebSocket bridge       │◀───────▶│  └──────────────┘  │
        └─────────────────────────┘         └────────────────────┘
                                  one outbound :443/wss connection

Der synthetische Hostname ollama.<org-slug>.tunnel wird niemals über DNS aufgelöst. Ein benutzerdefinierter Transport im Entity Enricher-Prozess fängt Anfragen für *.tunnel ab und leitet sie über das passende aktive WebSocket weiter.

Warum einen Tunnel verwenden?

Verwenden Sie Modelle, die Sie bereits haben

Führen Sie Anreicherungen gegen Open-Weight-Modelle aus, die bereits auf Ihren Laptop geladen wurden (Llama 3, Qwen, DeepSeek, Mistral, …), ohne sie erneut auf den Server herunterzuladen.

Bestimmte Eingaben auf Ihrem Rechner behalten

Leiten Sie bei sensiblen Prompts bestimmte Anreicherungen über Ihre eigene GPU. Die Plattform erfasst weiterhin Kosten, Tokens und Metadaten – nur die Inferenz selbst bleibt lokal.

Testen Sie ein neues Modell in 30 Sekunden

Ziehen Sie ein Modell mit `ollama pull` auf Ihrem Laptop, klicken Sie auf „Modelle entdecken“, und es erscheint im Entity-Enricher-Selektor mit echter Kontextlänge und echten Fähigkeiten.

Lastspitzen auslagern

Wenn ein gehosteter Provider Sie durch Ratenbegrenzung ausbremst, wechseln Sie für den Rest eines Batches auf ein getunneltes lokales Modell.

Schnellstart

Zwei Befehle auf Ihrem Laptop, ein Klick im Browser. Der gesamte Ablauf dauert etwa eine Minute.

  1. 1

    Einen Tunnel in der UI erstellen

    Öffnen Sie API Keys → Ollama Tunnels und klicken Sie auf New Ollama Tunnel. Vergeben Sie eine Bezeichnung, damit Sie dieses Gerät später wiedererkennen (z. B. „Anthonys MacBook“).

    [Screenshot-Platzhalter — Tunnels-Tab mit hervorgehobener Schaltfläche „New Ollama Tunnel“]
  2. 2

    Installieren Sie die CLI auf Ihrem Laptop

    Fügen Sie dies in ein Terminal ein. Das Skript überprüft eine cosign-Signatur vor der Installation.

    curl -fsSL https://entityenricher.ai/install.sh | sh

    Der Installer zeigt an, was er als Nächstes tun wird (Download-URL, Signatur, Installationspfad), und pausiert 5 Sekunden, damit Sie ein Zeitfenster für Strg+C haben. Der Quellcode befindet sich unter TOT-Concept/ee-tunnel (MIT). Windows-Benutzer verwenden stattdessen install.ps1.

  3. 3

    Über Ihren Browser koppeln

    Führen Sie ee-tunnel pair aus. Ein Browser-Tab öffnet sich unter /tunnel/connect mit einem 6-stelligen Code. Bestätigen Sie die Gerätebezeichnung und klicken Sie auf Verbinden.

    ee-tunnel pair --server https://entityenricher.ai
    
    Open this URL in your browser to confirm pairing:
       https://entityenricher.ai/tunnel/connect?code=9KV-DU6
    
      Code: 9KV-DU6
    
    Waiting for confirmation...
    [Screenshot-Platzhalter — /tunnel/connect Bestätigungsseite mit Gerätecode]

    Sie kopieren nie ein Token. Der Browser sieht nur Tunnel-Metadaten; die CLI erhält ihre Anmeldedaten über ihren eigenen Polling-Kanal.

  4. 4

    Verbinden und Modelle entdecken

    Führen Sie ee-tunnel aus. Die Status-Anzeige im Tab „Tunnel“ wechselt innerhalb von Sekunden zu Verbunden. Klicken Sie dann beim Ollama-Provider unter Modelle & Preise auf Modelle erkennen, um jedes lokal installierte Chat-Modell automatisch zu importieren.

    [Video-Platzhalter — Discover Models importiert 4 lokale Ollama-Modelle in die Plattform]

So funktioniert das Pairing

Die Kopplung verwendet einen OAuth-ähnlichen Device-Code-Flow (nach RFC 8628). Der Benutzer gibt einen kurzen Code im Browser ein, anstatt ein Token zu kopieren. Der Browser sieht nur Tunnel-Metadaten; die CLI erhält ihr Refresh-Token direkt über ihren eigenen Polling-Kanal – einmalige Einlösung.

 laptop                  entity-enricher                  browser
   │                          │                              │
   │── ee-tunnel pair ──────▶ │                              │
   │   --server URL           │                              │
   │                          │                              │
   │  POST /api/tunnel/       │                              │
   │       device-code        │                              │
   │ ───────────────────────▶ │                              │
   │ ◀── { device_code,       │                              │
   │     user_code='9KV-DU6', │                              │
   │     verification_uri }   │                              │
   │                          │                              │
   │  prints URL, opens       │                              │
   │  browser at /tunnel/     │                              │
   │  connect?code=… ──────────────────────────────────────▶│
   │                          │                              │
   │                          │  POST /api/tunnel/confirm/   │
   │                          │       {user_code}            │
   │                          │  body: { label }             │
   │                          │  Authorization: Bearer       │
   │                          │   <user JWT, role=owner>     │
   │                          │ ◀──────────────────────────── │
   │                          │  • create tunnel_credentials │
   │                          │  • mark device_code complete │
   │                          │    with refresh_token        │
   │                          │ ────────────────────────────▶│
   │                          │  200 { tunnel metadata }     │
   │                          │                              │
   │  POST /api/tunnel/poll   │                              │
   │ ───────────────────────▶ │                              │
   │ ◀── { status:'ok',       │                              │
   │     refresh_token,       │                              │
   │     server_url,          │                              │
   │     tunnel_id }          │                              │
   │                          │                              │
   │  persist token mode 0600 │                              │
   │  ✓ Paired                │                              │

Wie eine Anfrage durch den Tunnel läuft

Nach der Verbindung ist Ihr getunnelter Ollama für den Rest der Plattform einfach ein weiterer LLM-Provider. Multi-Fachbereich, Fusion, Batch – alles funktioniert unverändert.

  enrichment job
       │
       ▼
  agent_factory  →  Ollama provider, base_url=http://ollama.acme.tunnel
       │
       ▼
  custom httpx transport  ← intercepts *.tunnel hosts
       │
       ▼
  TunnelSession (one per laptop)
       │ frames request: { id, method, path, headers, body_b64 }
       ▼
  WebSocket  ──────────────────────▶  ee-tunnel CLI
                                          │
                                          ▼
                                     localhost:11434
                                     (your local Ollama)
                                          │
                          response_start, response_chunk, ...
       ◀──────────────────────────────────┘
       │
       ▼
  pydantic_ai consumes streaming body  →  enrichment record

Multiplexing

Mehrere laufende Anreicherungen teilen sich einen einzigen Tunnel-WebSocket. Jede Anfrage erhält eine UUID; Frames werden an beiden Enden anhand der id demultiplext, sodass gleichzeitige Aufrufe (z. B. Multi-Fachbereich) natürlich funktionieren.

Streaming-Antworten (Ollamas stream=true) werden als Folge von response_chunk-Frames übertragen, sodass Token-für-Token-UI-Aktualisierungen selbst über den Tunnel inkrementell bleiben.

Lebenszyklus

01

Erstellen

Ein Organisationsinhaber klickt auf „New Ollama Tunnel“, gibt eine Bezeichnung ein und bestätigt. Die Plattform weist die Anmeldedaten zu.

02

Koppeln

Führen Sie auf Ihrem Laptop den Einzeiler-Installer und `ee-tunnel pair` aus. Es öffnet sich ein Browser-Tab – bestätigen Sie mit demselben Entity Enricher Konto.

03

Verbinden

Führen Sie `ee-tunnel` aus. Die CLI öffnet einen einzelnen ausgehenden HTTPS-WebSocket. Der neue Provider erscheint innerhalb von Sekunden in Ihrer Modellliste.

04

Verwenden

Klicken Sie auf „Modelle entdecken“ – jedes Modell in Ihrem lokalen Ollama wird automatisch mit tatsächlicher Kontextlänge und Fähigkeiten importiert. Reichern Sie wie gewohnt an.

05

Widerrufen

Ein Klick in der Benutzeroberfläche baut den WebSocket ab und macht die Zugangsdaten sofort ungültig.

Sicherheit

Der Tunnel wurde so konzipiert, dass er möglichst wenig Angriffsfläche hinzufügt. Ein früherer Entwurf der Funktion nutzte einen öffentlichen SSH-Server auf einem neuen Port; wir haben diesen durch den In-Process-WebSocket-Multiplexer ersetzt, um die SSH-Angriffsfläche vollständig zu eliminieren.

Keine neuen öffentlichen Ports

Alles läuft über den bestehenden :443-Ingress — denselben TLS-Endpunkt wie die Web-App. Kein SSH-Server, kein offener Ollama-Port.

Nur ausgehend

Die CLI initiiert den WebSocket. Ihr Laptop akzeptiert niemals eingehende Verbindungen — die Firewall Ihres Heimnetzwerks muss nicht geändert werden.

Org-bezogen

Ein Tunnel ist an eine einzelne Organisation gebunden. Andere Mandanten auf der Plattform können ihn nicht sehen, auswählen oder aufrufen. Systemadministratoren verfügen absichtlich über organisationsübergreifende Sichtbarkeit.

Sofort widerrufbar

Beim Widerrufen werden die Anmeldedaten aus der Datenbank entfernt. Die nächste Anfrage schlägt mit 401 fehl. Die aktive WebSocket-Verbindung wird innerhalb von ca. 1 Sekunde getrennt.

Keine kopierten und eingefügten Geheimnisse

Der Browser-OAuth-Flow verwaltet die Anmeldedaten durchgängig. Der Browser sieht Ihren Refresh-Token nie; die CLI erhält ihn direkt über ihren Polling-Kanal.

Kontingent & Frame-Limits

Standardmäßig 5 aktive Tunnel pro Organisation; Obergrenze von 16 MB für eingehende WebSocket-Frames; strukturierte 402-Fehler bei Überschreitung des Kontingents.

SSRF-Schutz. Die Tunnel-Funktion schließt außerdem eine bereits bestehende Lücke: Das Feld specific_endpoint bei Ollama-Anbietern wird nun anhand eines Allowlist-Regex validiert, sodass private IPs, Loopback-Adressen und Docker-Compose-Dienstnamen niemals als Anbieter-URL verwendet werden können.

CLI-Referenz

BefehlWas es tut
ee-tunnel pair --server URLBrowser-OAuth-Kopplung. Öffnet die Verifizierungs-URL automatisch.
ee-tunnel pair --server URL <token>Manuelle Kopplung mit einem aus der UI kopierten Refresh-Token (Fallback für Headless-Umgebungen).
ee-tunnelVerbinden und bereitstellen. Stellt bei kurzzeitigen Abbrüchen die Verbindung mit exponentiellem Backoff (1s → 30s) wieder her.
ee-tunnel statusPairing-Status, Server-URL, konfigurierte Ollama-URL und Label anzeigen.
ee-tunnel disconnectLokale Anmeldedaten vergessen. Widerruft nicht serverseitig; verwenden Sie dafür die Benutzeroberfläche.
ee-tunnel versionDruckversion.

Benutzerdefinierte Ollama-URL

Wenn Ihr Ollama auf einem anderen Port lauscht, setzen Sie EE_TUNNEL_OLLAMA_URL oder übergeben Sie beim Pairing --ollama URL.

Wo Dateien gespeichert sind

macOS · ~/Library/Application Support/ee-tunnel/
Linux · ~/.config/ee-tunnel/
Windows · %APPDATA%\ee-tunnel\

Limits und Zeitplanung

Aktive Tunnel pro Organisation5 (Standard)
Refresh-Token-TTL365 Tage
TTL des Zugriffstokens15 Minuten
Kopplungs-TTL10 Minuten
Max. eingehende WebSocket-Frame-Größe16 MB
Ausgehende Chunk-Größe (CLI)16 KB
Heartbeat-Intervall30 Sekunden

Häufige Fragen

Ist mein Ollama dem Internet ausgesetzt?

Nein. Die CLI initiiert einen ausgehenden WebSocket. Ihr Laptop akzeptiert niemals eingehende Verbindungen, und Ihr Ollama-Port bleibt an localhost gebunden.

Was passiert, wenn mein Laptop in den Ruhezustand geht?

Die CLI beendet sich bei einer Trennung sauber. Wenn Sie den Laptop wieder aufwecken und ee-tunnel erneut ausführen, wird die Verbindung mit den bestehenden Anmeldedaten wiederhergestellt. Anreicherungen, die während der Tunnel-Ausfallzeit laufen, schlagen mit einem sauberen ConnectError fehl.

Können andere Organisationen meinen Tunnel verwenden?

Nein. Jeder Tunnel ist an eine Organization gebunden. Andere Mandanten auf der Plattform können ihn weder sehen noch auswählen oder aufrufen. Systemadministratoren können konzeptbedingt alle Tunnel sehen (wie bei globalen API-Schlüsseln).

Funktioniert das hinter einer Unternehmens-Firewall?

Fast immer – es wird nur ausgehender :443 benötigt. Derselbe Pfad, den die Web-App verwendet.

Wie rotiere ich Anmeldedaten?

Klicken Sie im Tab „Tunnels“ auf „Token rotieren“. Das alte Token wird sofort ungültig; das Modal zeigt einen neuen pair-Befehl für Ihren Laptop.

Kann ich das ohne Ollama verwenden?

Ja – die CLI leitet beliebiges HTTP weiter. Setzen Sie EE_TUNNEL_OLLAMA_URL auf einen beliebigen lokalen, OpenAI-kompatiblen Endpunkt. Alles, was Ollamas /v1/chat/completions oder /api/tags spricht, funktioniert.

Open Source

Die CLI und der Installer sind MIT-lizenziert und befinden sich in einem öffentlichen Repository, sodass jeder überprüfen kann, was auf seinem Rechner ausgeführt wird.

Quelle: github.com/TOT-Concept/ee-tunnel

Releases: github.com/TOT-Concept/ee-tunnel/releases — jede Binärdatei wird vor der Veröffentlichung mit cosign signiert.

Installer prüfen: curl -fsSL https://entityenricher.ai/install.sh | less