Collega l'Ollama locale del tuo laptop a Entity Enricher con un solo comando. Usa i modelli che hai già, mantieni determinati input sulla tua macchina e revoca l'accesso all'istante — tutto tramite un'unica connessione HTTPS in uscita.
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 connectionIl nome host sintetico ollama.<org-slug>.tunnel non viene mai risolto dal DNS. Un trasporto personalizzato nel processo di Entity Enricher intercetta le richieste per *.tunnel e le instrada attraverso il WebSocket attivo corrispondente.
Esegua arricchimenti su modelli open-weight già scaricati sul suo laptop (Llama 3, Qwen, DeepSeek, Mistral, …) senza riscaricarli sul server.
Per i prompt sensibili, indirizzate enrichment specifici tramite la vostra GPU. La piattaforma registra comunque costi, token e metadati — solo l'inferenza vera e propria rimane in locale.
Scaricate un modello con `ollama pull` sul vostro computer, fate clic su Scopri modelli e comparirà nel selettore di Entity Enricher con lunghezza di contesto e capacità reali.
Quando un provider ospitato applica un limite di frequenza, è possibile passare a un modello locale tramite tunnel per il resto del batch.
Due comandi sul vostro laptop, un clic nel browser. L'intero flusso richiede circa un minuto.
Aprite API Keys → Ollama Tunnels e fate clic su New Ollama Tunnel. Digitate un'etichetta per riconoscere questo dispositivo in seguito (es. "MacBook di Anthony").
Incolla questo in un terminale. Lo script verifica una firma cosign prima dell'installazione.
curl -fsSL https://entityenricher.ai/install.sh | sh
Il programma di installazione stampa ciò che sta per fare (URL di download, firma, percorso di installazione) e si mette in pausa per 5 secondi, lasciando una finestra per premere Ctrl+C. Il codice sorgente si trova su TOT-Concept/ee-tunnel (MIT). Gli utenti Windows utilizzano invece install.ps1.
Esegua ee-tunnel pair. Si apre una scheda del browser su /tunnel/connect con un codice di 6 caratteri. Confermi l'etichetta del dispositivo e faccia clic su Connetti.
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...
Non deve mai copiare e incollare un token. Il browser vede solo i metadati del tunnel; la CLI riceve le proprie credenziali tramite il suo canale di polling dedicato.
Esegua ee-tunnel. L'indicatore di stato nella scheda Tunnel passa a Connesso in pochi secondi. Quindi faccia clic su Rileva modelli sul provider Ollama in Modelli e prezzi per importare automaticamente ogni modello di chat installato localmente.
L'associazione utilizza un flusso device-code in stile OAuth (formato RFC 8628). L'utente digita un codice breve nel browser invece di copiare e incollare un token. Il browser vede solo i metadati del tunnel; la CLI riceve il proprio refresh token direttamente sul proprio canale di polling — riscatto una tantum.
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 │ │Una volta connesso, per il resto della piattaforma il vostro Ollama in tunnel è semplicemente un altro provider LLM. Multi-dominio di competenza, fusione, batch — tutto funziona senza variazioni.
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 recordPiù arricchimenti in corso condividono un unico WebSocket del tunnel. Ogni richiesta riceve un UUID; i frame vengono demultiplexati per id a entrambe le estremità, così le chiamate concorrenti (ad es. multi-competenza) funzionano in modo naturale.
Le risposte in streaming (stream=true di Ollama) viaggiano come una sequenza di frame response_chunk, così gli aggiornamenti token per token dell'interfaccia rimangono incrementali anche attraverso il tunnel.
Un proprietario dell'organizzazione fa clic su "Nuovo tunnel Ollama", digita un'etichetta e conferma. La piattaforma assegna le credenziali.
Sul portatile, eseguire l'installer a riga singola e `ee-tunnel pair`. Si apre una scheda del browser — confermare con lo stesso account Entity Enricher.
Esegua `ee-tunnel`. La CLI apre un singolo WebSocket HTTPS in uscita. Il nuovo provider compare nell'elenco dei modelli in pochi secondi.
Fai clic su Scopri modelli — ogni modello nel tuo Ollama locale viene importato automaticamente con lunghezza di contesto e funzionalità reali. Arricchisci come al solito.
Un clic nell'interfaccia chiude il WebSocket e invalida immediatamente le credenziali.
Il tunnel è stato progettato per aggiungere la minor superficie di attacco possibile. La precedente bozza della funzionalità utilizzava un server SSH pubblico su una nuova porta; l'abbiamo sostituita con il multiplexer WebSocket in-process per eliminare completamente la superficie di attacco SSH.
Tutto passa attraverso l'ingress :443 esistente — lo stesso endpoint TLS dell'applicazione web. Nessun server SSH, nessuna porta Ollama esposta.
La CLI avvia il WebSocket. Il proprio laptop non accetta mai connessioni in entrata — non è necessario modificare il firewall della propria rete domestica.
Un tunnel è associato a una singola organizzazione. Gli altri tenant della piattaforma non possono vederlo, selezionarlo o invocarlo. Gli amministratori di sistema hanno per progettazione visibilità tra le organizzazioni.
La revoca rimuove le credenziali dal database. La richiesta successiva fallisce con un errore 401. Il WebSocket attivo viene disconnesso entro circa 1 secondo.
Il flusso OAuth nel browser gestisce le credenziali end-to-end. Il browser non vede mai il proprio refresh token; la CLI lo riceve direttamente attraverso il proprio canale di polling.
5 tunnel attivi per organizzazione in modo predefinito; limite di 16 MB per i frame WebSocket in entrata; errori 402 strutturati in caso di superamento della quota.
Protezione SSRF. La funzionalità tunnel colma anche una lacuna preesistente: il campo specific_endpoint sui provider Ollama viene ora validato tramite un'espressione regolare di allowlist, così che indirizzi IP privati, loopback e nomi di servizio Docker compose non possano mai essere usati come URL di un provider.
| Comando | Che cosa fa |
|---|---|
| ee-tunnel pair --server URL | Abbinamento browser-OAuth. Apre automaticamente l'URL di verifica. |
| ee-tunnel pair --server URL <token> | Abbinamento manuale con un refresh token copiato dall'interfaccia (soluzione alternativa per ambienti headless). |
| ee-tunnel | Connetti e servi. Si riconnette con backoff esponenziale (1s → 30s) in caso di interruzioni temporanee. |
| ee-tunnel status | Mostra lo stato di associazione, l'URL del server, l'URL Ollama configurato, l'etichetta. |
| ee-tunnel disconnect | Dimentica le credenziali locali. Non revoca lato server; per questo utilizzate l'interfaccia. |
| ee-tunnel version | Versione per la stampa. |
Se il suo Ollama è in ascolto su una porta diversa, imposti EE_TUNNEL_OLLAMA_URL o passi --ollama URL al momento dell'abbinamento.
macOS · ~/Library/Application Support/ee-tunnel/
Linux · ~/.config/ee-tunnel/
Windows · %APPDATA%\ee-tunnel\
| Tunnel attivi per organizzazione | 5 (predefinito) |
| TTL del token di aggiornamento | 365 giorni |
| TTL del token di accesso | 15 minuti |
| TTL associazione | 10 minuti |
| Frame WebSocket in entrata max | 16 MB |
| Dimensione del chunk in uscita (CLI) | 16 KB |
| Intervallo di heartbeat | 30 secondi |
No. La CLI avvia un WebSocket in uscita. Il tuo laptop non accetta mai connessioni in entrata e la porta di Ollama resta associata a localhost.
La CLI si chiude in modo pulito alla disconnessione. Riattivando il laptop e rieseguendo ee-tunnel ci si riconnette con le credenziali esistenti. Gli arricchimenti in esecuzione mentre il tunnel è inattivo falliscono con un ConnectError pulito.
No. Ogni tunnel è vincolato a una sola organizzazione. Gli altri tenant della piattaforma non possono vederlo, selezionarlo o invocarlo. Gli amministratori di sistema possono vedere tutti i tunnel per progettazione (come per le chiavi API globali).
Quasi sempre — è necessaria solo la porta :443 in uscita. Lo stesso percorso utilizzato dall'app web.
Fai clic su "Ruota token" nella scheda Tunnel. Il vecchio token viene invalidato immediatamente; la finestra mostra un nuovo comando di associazione per il tuo laptop.
Sì — la CLI inoltra HTTP arbitrario. Imposta EE_TUNNEL_OLLAMA_URL su qualsiasi endpoint locale compatibile con OpenAI. Tutto ciò che parla il protocollo /v1/chat/completions o /api/tags di Ollama funzionerà.
La CLI e l'installer sono rilasciati con licenza MIT e si trovano in un repository pubblico, così chiunque può verificare ciò che viene eseguito sulla propria macchina.
Sorgente: github.com/TOT-Concept/ee-tunnel
Release: github.com/TOT-Concept/ee-tunnel/releases — ogni binario è firmato con cosign prima della pubblicazione.
Verifichi l'installer: curl -fsSL https://entityenricher.ai/install.sh | less