Ollama-tunnels - Entity Enricher-documentatie

Ollama-tunnels

Verbind de lokale Ollama op je laptop met Entity Enricher via één commando. Gebruik de modellen die je al hebt, houd bepaalde invoer op je eigen machine en trek toegang direct in — allemaal via één uitgaande HTTPS-verbinding.

            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

De synthetische hostnaam ollama.<org-slug>.tunnel wordt nooit door DNS omgezet. Een aangepast transport in het Entity Enricher-proces onderschept verzoeken voor *.tunnel en routeert ze via de bijbehorende actieve WebSocket.

Waarom een tunnel gebruiken?

Gebruik modellen die je al hebt

Voer verrijkingen uit tegen open-weight-modellen die al op je laptop zijn opgehaald (Llama 3, Qwen, DeepSeek, Mistral, …) zonder ze opnieuw te downloaden op de server.

Bepaalde invoer op je machine houden

Voor gevoelige prompts kun je specifieke enrichments via je eigen GPU laten lopen. Het platform registreert nog steeds kosten, tokens en metadata — alleen de inferentie zelf blijft lokaal.

Probeer een nieuw model in 30 seconden

Haal een model op met `ollama pull` op je laptop, klik op Modellen ontdekken, en het verschijnt in de Entity Enricher-selector met echte contextlengte en mogelijkheden.

Piekwerk uitbesteden

Wanneer een gehoste provider je snelheid begrenst, schakel je over naar een getunneld lokaal model voor de rest van een batch.

Snel aan de slag

Twee commando's op je laptop, één klik in de browser. De hele flow duurt ongeveer een minuut.

  1. 1

    Maak een tunnel aan in de UI

    Open API Keys → Ollama Tunnels en klik op New Ollama Tunnel. Typ een label zodat je dit apparaat later herkent (bijv. "Anthony's MacBook").

    [Screenshot-tijdelijke aanduiding — tabblad Tunnels met de knop "Nieuwe Ollama-tunnel" gemarkeerd]
  2. 2

    Installeer de CLI op je laptop

    Plak dit in een terminal. Het script verifieert een cosign-handtekening voordat het installeert.

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

    Het installatieprogramma toont wat het gaat doen (download-URL, handtekening, installatiepad) en pauzeert 5 seconden zodat je een Ctrl+C-venster hebt. De broncode staat op TOT-Concept/ee-tunnel (MIT). Windows-gebruikers gebruiken in plaats daarvan install.ps1.

  3. 3

    Koppelen via je browser

    Voer ee-tunnel pair uit. Er opent een browsertabblad op /tunnel/connect met een code van 6 tekens. Bevestig het apparaatlabel en klik op 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-tijdelijke aanduiding — /tunnel/connect bevestigingspagina met apparaatcode]

    Je kopieert en plakt nooit een token. De browser ziet alleen tunnelmetadata; de CLI ontvangt zijn inloggegevens via zijn eigen pollingkanaal.

  4. 4

    Verbinden en modellen ontdekken

    Voer ee-tunnel uit. De statusindicator op het tabblad Tunnels springt binnen enkele seconden naar Verbonden. Klik daarna op Modellen ontdekken bij de Ollama-provider in Modellen & prijzen om elk lokaal geïnstalleerd chatmodel automatisch te importeren.

    [Video-tijdelijke aanduiding — Modellen ontdekken haalt 4 lokale Ollama-modellen naar het platform]

Hoe koppelen werkt

Koppelen gebruikt een OAuth-achtige device-code-flow (vorm van RFC 8628). De gebruiker typt een korte code in een browser in plaats van een token te kopiëren en plakken. De browser ziet alleen tunnelmetadata; de CLI ontvangt zijn refresh-token rechtstreeks via zijn eigen pollingkanaal — eenmalige inwisseling.

 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                │                              │

Hoe een verzoek door de tunnel stroomt

Zodra de verbinding tot stand is gebracht, is je getunnelde Ollama gewoon nog een LLM-provider voor de rest van het platform. Multi-expertise, fusie, batch — alles werkt ongewijzigd.

  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

Meerdere lopende enrichments delen één tunnel-WebSocket. Elk verzoek krijgt een UUID; frames worden aan beide kanten op id gedemultiplext, zodat gelijktijdige aanroepen (bijv. multi-expertise) vanzelf werken.

Streamingantwoorden (Ollama's stream=true) worden verzonden als een reeks response_chunk-frames, zodat token-voor-token UI-updates incrementeel blijven, zelfs via de tunnel.

Levenscyclus

01

Aanmaken

Een organisatie-eigenaar klikt op "Nieuwe Ollama-tunnel", typt een label en bevestigt. Het platform wijst de inloggegevens toe.

02

Koppelen

Voer op je laptop de installer van één regel uit en `ee-tunnel pair`. Er opent een browsertabblad — bevestig met hetzelfde Entity Enricher-account.

03

Verbinden

Voer `ee-tunnel` uit. De CLI opent één uitgaande HTTPS-WebSocket. De nieuwe provider verschijnt binnen enkele seconden in je modellenlijst.

04

Gebruiken

Klik op Discover Models — elk model in je lokale Ollama wordt automatisch geïmporteerd met echte contextlengte en mogelijkheden. Verrijk zoals gewoonlijk.

05

Intrekken

Eén klik in de UI breekt de WebSocket af en maakt de inloggegevens onmiddellijk ongeldig.

Beveiliging

De tunnel is ontworpen om zo min mogelijk aanvalsoppervlak toe te voegen. De eerdere versie van de functie gebruikte een openbare SSH-server op een nieuwe poort; die hebben we vervangen door de in-process WebSocket-multiplexer om het SSH-aanvalsoppervlak volledig te elimineren.

Geen nieuwe openbare poorten

Alles loopt via de bestaande :443-ingress — hetzelfde TLS-eindpunt als de webapp. Geen SSH-server, geen blootgestelde Ollama-poort.

Alleen uitgaand

De CLI initieert de WebSocket. Je laptop accepteert nooit inkomende verbindingen — de firewall van je thuisnetwerk hoeft niet te veranderen.

Org-scope

Een tunnel is gebonden aan één organisatie. Andere tenants op het platform kunnen hem niet zien, selecteren of aanroepen. Systeembeheerders hebben opzettelijk zicht op alle organisaties.

Direct intrekbaar

Intrekken verwijdert de inloggegevens uit de database. Het volgende verzoek mislukt met 401. De actieve WebSocket wordt binnen ~1 seconde verwijderd.

Geen gekopieerde en geplakte geheimen

De browser-OAuth-flow verwerkt de inloggegevens end-to-end. De browser ziet je refresh-token nooit; de CLI ontvangt het rechtstreeks via zijn polling-kanaal.

Quota- en framelimieten

Standaard 5 actieve tunnels per organisatie; limiet van 16 MB voor inkomende WebSocket-frames; gestructureerde 402-fouten bij overschrijding van het quotum.

SSRF-bescherming. De tunnel-functie dicht ook een bestaand gat: het veld specific_endpoint op Ollama-providers wordt nu gevalideerd tegen een allowlist-regex, zodat privé-IP's, loopback en Docker compose-servicenamen nooit als provider-URL kunnen worden gebruikt.

CLI-referentie

OpdrachtWat het doet
ee-tunnel pair --server URLBrowser-OAuth-koppeling. Opent automatisch de verificatie-URL.
ee-tunnel pair --server URL <token>Handmatig koppelen met een refresh-token die je uit de UI kopieert (fallback voor headless-omgevingen).
ee-tunnelVerbind en bedien. Maakt opnieuw verbinding met exponentiële backoff (1s → 30s) bij tijdelijke onderbrekingen.
ee-tunnel statusToon koppelingsstatus, server-URL, geconfigureerde Ollama-URL, label.
ee-tunnel disconnectLokale inloggegevens vergeten. Trekt niets in aan de serverzijde; gebruik daarvoor de UI.
ee-tunnel versionAfdrukversie.

Aangepaste Ollama-URL

Als je Ollama op een andere poort luistert, stel dan EE_TUNNEL_OLLAMA_URL in of geef --ollama URL mee bij het koppelen.

Waar bestanden zich bevinden

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

Limieten en timing

Actieve tunnels per organisatie5 (standaard)
Refresh-token-TTL365 dagen
TTL van access-token15 minuten
Koppeling-TTL10 minuten
Max. inkomend WebSocket-frame16 MB
Uitgaande chunkgrootte (CLI)16 KB
Heartbeat-interval30 seconden

Veelgestelde vragen

Is mijn Ollama toegankelijk vanaf het internet?

Nee. De CLI start een uitgaande WebSocket. Je laptop accepteert nooit inkomende verbindingen en je Ollama-poort blijft gebonden aan localhost.

Wat gebeurt er als mijn laptop in slaapstand gaat?

De CLI sluit netjes af bij een verbroken verbinding. Als je de laptop hervat en ee-tunnel opnieuw uitvoert, wordt de verbinding hersteld met de bestaande inloggegevens. Verrijkingen die lopen terwijl de tunnel uit staat, mislukken met een nette ConnectError.

Kunnen andere organisaties mijn tunnel gebruiken?

Nee. Elke tunnel is gekoppeld aan één organisatie. Andere tenants op het platform kunnen hem niet zien, selecteren of aanroepen. Systeembeheerders kunnen standaard alle tunnels zien (net als globale API-sleutels).

Werkt dit achter een bedrijfsfirewall?

Bijna altijd — alleen uitgaande :443 is nodig. Hetzelfde pad dat de webapp gebruikt.

Hoe roteer ik mijn inloggegevens?

Klik op "Token roteren" op het tabblad Tunnels. Het oude token wordt onmiddellijk ongeldig; de modal toont een nieuw pair-commando voor je laptop.

Kan ik dit gebruiken zonder Ollama?

Ja — de CLI stuurt willekeurige HTTP door. Stel EE_TUNNEL_OLLAMA_URL in op elk lokaal OpenAI-compatibel endpoint. Alles wat Ollama's /v1/chat/completions of /api/tags spreekt, werkt.

Open source

De CLI en installer zijn MIT-gelicentieerd en staan in een openbare repository, zodat iedereen kan controleren wat er op zijn machine draait.

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

Releases: github.com/TOT-Concept/ee-tunnel/releases — elke binary wordt vóór publicatie ondertekend met cosign.

Controleer het installatieprogramma: curl -fsSL https://entityenricher.ai/install.sh | less