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 connectionDer 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.
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.
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.
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.
Wenn ein gehosteter Provider Sie durch Ratenbegrenzung ausbremst, wechseln Sie für den Rest eines Batches auf ein getunneltes lokales Modell.
Zwei Befehle auf Ihrem Laptop, ein Klick im Browser. Der gesamte Ablauf dauert etwa eine Minute.
Ö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“).
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.
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...
Sie kopieren nie ein Token. Der Browser sieht nur Tunnel-Metadaten; die CLI erhält ihre Anmeldedaten über ihren eigenen Polling-Kanal.
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.
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 │ │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 recordMehrere 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.
Ein Organisationsinhaber klickt auf „New Ollama Tunnel“, gibt eine Bezeichnung ein und bestätigt. Die Plattform weist die Anmeldedaten zu.
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.
Führen Sie `ee-tunnel` aus. Die CLI öffnet einen einzelnen ausgehenden HTTPS-WebSocket. Der neue Provider erscheint innerhalb von Sekunden in Ihrer Modellliste.
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.
Ein Klick in der Benutzeroberfläche baut den WebSocket ab und macht die Zugangsdaten sofort ungültig.
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.
Alles läuft über den bestehenden :443-Ingress — denselben TLS-Endpunkt wie die Web-App. Kein SSH-Server, kein offener Ollama-Port.
Die CLI initiiert den WebSocket. Ihr Laptop akzeptiert niemals eingehende Verbindungen — die Firewall Ihres Heimnetzwerks muss nicht geändert werden.
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.
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.
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.
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.
| Befehl | Was es tut |
|---|---|
| ee-tunnel pair --server URL | Browser-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-tunnel | Verbinden und bereitstellen. Stellt bei kurzzeitigen Abbrüchen die Verbindung mit exponentiellem Backoff (1s → 30s) wieder her. |
| ee-tunnel status | Pairing-Status, Server-URL, konfigurierte Ollama-URL und Label anzeigen. |
| ee-tunnel disconnect | Lokale Anmeldedaten vergessen. Widerruft nicht serverseitig; verwenden Sie dafür die Benutzeroberfläche. |
| ee-tunnel version | Druckversion. |
Wenn Ihr Ollama auf einem anderen Port lauscht, setzen Sie EE_TUNNEL_OLLAMA_URL oder übergeben Sie beim Pairing --ollama URL.
macOS · ~/Library/Application Support/ee-tunnel/
Linux · ~/.config/ee-tunnel/
Windows · %APPDATA%\ee-tunnel\
| Aktive Tunnel pro Organisation | 5 (Standard) |
| Refresh-Token-TTL | 365 Tage |
| TTL des Zugriffstokens | 15 Minuten |
| Kopplungs-TTL | 10 Minuten |
| Max. eingehende WebSocket-Frame-Größe | 16 MB |
| Ausgehende Chunk-Größe (CLI) | 16 KB |
| Heartbeat-Intervall | 30 Sekunden |
Nein. Die CLI initiiert einen ausgehenden WebSocket. Ihr Laptop akzeptiert niemals eingehende Verbindungen, und Ihr Ollama-Port bleibt an localhost gebunden.
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.
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).
Fast immer – es wird nur ausgehender :443 benötigt. Derselbe Pfad, den die Web-App verwendet.
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.
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.
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