Tunnels Ollama - Documentation Entity Enricher

Tunnels Ollama

Connectez l'Ollama local de votre ordinateur portable à Entity Enricher en une seule commande. Utilisez les modèles que vous avez déjà, gardez certaines entrées sur votre machine et révoquez l'accès instantanément — le tout via une seule connexion HTTPS sortante.

            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

Le nom d'hôte synthétique ollama.<org-slug>.tunnel n'est jamais résolu par DNS. Un transport personnalisé au sein du processus Entity Enricher intercepte les requêtes vers *.tunnel et les achemine via le WebSocket actif correspondant.

Pourquoi utiliser un tunnel ?

Utilisez les modèles que vous possédez déjà

Exécutez des enrichissements avec des modèles open-weight déjà téléchargés sur votre ordinateur portable (Llama 3, Qwen, DeepSeek, Mistral, …) sans les retélécharger sur le serveur.

Conservez certaines entrées sur votre machine

Pour les prompts sensibles, faites transiter certains enrichissements par votre propre GPU. La plateforme enregistre toujours le coût, les tokens et les métadonnées — seule l'inférence elle-même reste locale.

Essayez un nouveau modèle en 30 secondes

Récupérez un modèle avec `ollama pull` sur votre ordinateur portable, cliquez sur Découvrir les modèles, et il apparaît dans le sélecteur Entity Enricher avec sa longueur de contexte et ses capacités réelles.

Déchargez les pics de charge

Lorsqu'un fournisseur hébergé vous limite en débit, basculez vers un modèle local via tunnel pour le reste d'un traitement par lot.

Démarrage rapide

Deux commandes sur votre ordinateur portable, un clic dans le navigateur. L'ensemble du processus prend environ une minute.

  1. 1

    Créer un tunnel dans l'interface

    Ouvrez Clés API → Tunnels Ollama et cliquez sur Nouveau tunnel Ollama. Saisissez un libellé pour reconnaître cet appareil plus tard (p. ex. « MacBook d'Anthony »).

    [Emplacement de capture d'écran — onglet Tunnels avec le bouton "Nouveau tunnel Ollama" mis en évidence]
  2. 2

    Installez la CLI sur votre ordinateur portable

    Collez ceci dans un terminal. Le script vérifie une signature cosign avant l'installation.

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

    L'installateur affiche ce qu'il s'apprête à faire (URL de téléchargement, signature, chemin d'installation) et marque une pause de 5 secondes pour vous laisser le temps d'appuyer sur Ctrl+C. Le code source se trouve sur TOT-Concept/ee-tunnel (MIT). Sous Windows, utilisez install.ps1.

  3. 3

    Appairer via votre navigateur

    Exécutez ee-tunnel pair. Un onglet de navigateur s'ouvre sur /tunnel/connect avec un code à 6 caractères. Confirmez le libellé de l'appareil et cliquez sur Connecter.

    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...
    [Emplacement de capture d'écran — page de confirmation /tunnel/connect avec le code d'appareil]

    Vous ne copiez-collez jamais de jeton. Le navigateur ne voit que les métadonnées du tunnel ; le CLI reçoit ses identifiants via son propre canal d'interrogation.

  4. 4

    Connecter et découvrir les modèles

    Exécutez ee-tunnel. La pastille de statut dans l'onglet Tunnels passe à Connecté en quelques secondes. Cliquez ensuite sur Découvrir les modèles sur le fournisseur Ollama dans Modèles et tarifs pour importer automatiquement chaque modèle de chat installé localement.

    [Emplacement de vidéo — Découverte des modèles important 4 modèles Ollama locaux dans la plateforme]

Fonctionnement de l'appariement

L'appairage utilise un flux de code d'appareil de type OAuth (au format RFC 8628). L'utilisateur saisit un code court dans un navigateur au lieu de copier-coller un jeton. Le navigateur ne voit que les métadonnées du tunnel ; la CLI reçoit son jeton de rafraîchissement directement via son propre canal d'interrogation — échange à usage unique.

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

Comment une requête traverse le tunnel

Une fois connecté, votre Ollama tunnelisé n'est qu'un fournisseur LLM comme un autre pour le reste de la plateforme. Multi-expertise, fusion, traitement par lot — tout fonctionne sans changement.

  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

Multiplexage

Plusieurs enrichissements simultanés partagent une seule WebSocket de tunnel. Chaque requête reçoit un UUID ; les trames sont démultiplexées par id des deux côtés, de sorte que les appels concurrents (p. ex. multi-expertise) fonctionnent naturellement.

Les réponses en streaming (stream=true d'Ollama) transitent sous forme d'une séquence de trames response_chunk, de sorte que les mises à jour de l'interface token par token restent incrémentales, même via le tunnel.

Cycle de vie

01

Créer

Un propriétaire d'organisation clique sur « Nouveau tunnel Ollama », saisit un libellé et confirme. La plateforme alloue les identifiants.

02

Appairer

Sur votre ordinateur portable, exécutez l'installateur en une ligne puis `ee-tunnel pair`. Un onglet de navigateur s'ouvre — confirmez avec le même compte Entity Enricher.

03

Connecter

Exécutez `ee-tunnel`. La CLI ouvre un unique WebSocket HTTPS sortant. Le nouveau fournisseur apparaît dans votre liste de modèles en quelques secondes.

04

Utiliser

Cliquez sur Découvrir les modèles — chaque modèle de votre Ollama local est importé automatiquement avec sa longueur de contexte et ses capacités réelles. Enrichissez comme d'habitude.

05

Révoquer

Un clic dans l'interface ferme le WebSocket et invalide immédiatement les identifiants.

Sécurité

Le tunnel a été conçu pour ajouter le moins de surface d'attaque possible. La première version de la fonctionnalité utilisait un serveur SSH public sur un nouveau port ; nous l'avons remplacé par le multiplexeur WebSocket intégré au processus afin d'éliminer entièrement la surface d'attaque SSH.

Aucun nouveau port public

Tout passe par l'ingress :443 existant — le même point de terminaison TLS que l'application web. Pas de serveur SSH, pas de port Ollama exposé.

Sortant uniquement

Le CLI initie la connexion WebSocket. Votre ordinateur portable n'accepte jamais de connexions entrantes — le pare-feu de votre réseau domestique n'a pas besoin d'être modifié.

Limité à l'organisation

Un tunnel est lié à une seule organisation. Les autres locataires de la plateforme ne peuvent ni le voir, ni le sélectionner, ni l'invoquer. Les administrateurs système disposent, par conception, d'une visibilité inter-organisations.

Révocable instantanément

La révocation supprime les identifiants de la base de données. La requête suivante échoue avec une erreur 401. Le WebSocket actif est déconnecté en ~1 seconde.

Aucun secret copié-collé

Le flux OAuth via navigateur gère les identifiants de bout en bout. Le navigateur ne voit jamais votre jeton de rafraîchissement ; le CLI le reçoit directement par son canal d'interrogation.

Quota et plafonds de trames

5 tunnels actifs par organisation par défaut ; limite de 16 Mo par trame WebSocket entrante ; erreurs 402 structurées en cas de dépassement de quota.

Protection SSRF. La fonctionnalité de tunnel comble aussi une faille préexistante : le champ specific_endpoint des fournisseurs Ollama est désormais validé par une regex de liste d'autorisation, de sorte que les IP privées, les adresses de bouclage et les noms de services Docker compose ne peuvent jamais servir d'URL de fournisseur.

Référence CLI

CommandeCe que cela fait
ee-tunnel pair --server URLAppairage OAuth via navigateur. Ouvre automatiquement l'URL de vérification.
ee-tunnel pair --server URL <token>Appairage manuel avec un jeton de rafraîchissement copié depuis l'interface (solution de repli pour les environnements sans interface graphique).
ee-tunnelConnexion et mise à disposition. Reconnexion avec backoff exponentiel (1 s → 30 s) en cas de coupures transitoires.
ee-tunnel statusAfficher l'état d'appairage, l'URL du serveur, l'URL Ollama configurée et le libellé.
ee-tunnel disconnectOublier les identifiants locaux. Ne révoque pas côté serveur ; utilisez l'interface pour cela.
ee-tunnel versionVersion imprimable.

URL Ollama personnalisée

Si votre Ollama écoute sur un autre port, définissez EE_TUNNEL_OLLAMA_URL ou passez --ollama URL au moment de l'appairage.

Où sont stockés les fichiers

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

Limites et délais

Tunnels actifs par organisation5 (par défaut)
TTL du jeton de rafraîchissement365 jours
TTL du jeton d'accès15 minutes
TTL d'appairage10 minutes
Taille max des trames WebSocket entrantes16 Mo
Taille des blocs sortants (CLI)16 Ko
Intervalle de heartbeat30 secondes

Questions fréquentes

Mon Ollama est-il exposé à Internet ?

Non. La CLI initie une connexion WebSocket sortante. Votre ordinateur portable n'accepte jamais de connexions entrantes, et votre port Ollama reste lié à localhost.

Que se passe-t-il quand mon ordinateur portable se met en veille ?

Le CLI se ferme proprement en cas de déconnexion. Au réveil de l'ordinateur portable, relancer ee-tunnel rétablit la connexion avec les identifiants existants. Les enrichissements en cours pendant l'indisponibilité du tunnel échouent avec une erreur ConnectError propre.

D'autres organisations peuvent-elles utiliser mon tunnel ?

Non. Chaque tunnel est lié à une seule organisation. Les autres locataires de la plateforme ne peuvent ni le voir, ni le sélectionner, ni l'invoquer. Par conception, les administrateurs système peuvent voir tous les tunnels (comme pour les clés API globales).

Cela fonctionne-t-il derrière un pare-feu d'entreprise ?

Presque toujours — seul le port :443 sortant est nécessaire. Le même chemin que celui utilisé par l'application web.

Comment effectuer la rotation des identifiants ?

Cliquez sur « Renouveler le jeton » dans l'onglet Tunnels. L'ancien jeton est invalidé immédiatement ; la fenêtre modale affiche une nouvelle commande d'appairage pour votre ordinateur portable.

Puis-je l'utiliser sans Ollama ?

Oui — la CLI transfère du HTTP arbitraire. Définissez EE_TUNNEL_OLLAMA_URL sur n'importe quel endpoint local compatible OpenAI. Tout ce qui parle le /v1/chat/completions ou /api/tags d'Ollama fonctionnera.

Open source

Le CLI et l'installateur sont sous licence MIT et hébergés dans un dépôt public, afin que chacun puisse auditer ce qui s'exécute sur sa machine.

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

Versions : github.com/TOT-Concept/ee-tunnel/releases — chaque binaire est signé avec cosign avant publication.

Auditez le script d'installation : curl -fsSL https://entityenricher.ai/install.sh | less