ノートPCのローカルの Ollama を、コマンド1つで Entity Enricher に接続できます。すでにお持ちのモデルを利用し、特定の入力はご自身のマシンに保持したまま、アクセスを即座に無効化できます。すべては単一のアウトバウンド HTTPS 接続で行われます。
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合成ホスト名 ollama.<org-slug>.tunnel は DNS で解決されることはありません。Entity Enricher プロセス内のカスタムトランスポートが *.tunnel へのリクエストをインターセプトし、一致するアクティブな WebSocket 経由でルーティングします。
ラップトップにすでにプルされているオープンウェイトモデル(Llama 3、Qwen、DeepSeek、Mistral、…)に対して、サーバー上で再ダウンロードすることなくエンリッチメントを実行します。
機密性の高いpromptについては、特定のenrichmentをご自身のGPU経由でルーティングできます。プラットフォームは引き続きコスト、トークン、メタデータを記録します — 推論そのものだけがローカルにとどまります。
ラップトップで `ollama pull` を使ってモデルをプルし、Discover Models をクリックすると、実際のコンテキスト長と機能を備えたモデルが Entity Enricher のセレクターに表示されます。
ホスト型providerによってレート制限された場合、batchの残りの処理はtunnel接続したローカルmodelにフェイルオーバーします。
ラップトップで2つのコマンド、ブラウザで1クリック。全体のフローは約1分で完了します。
API Keys → Ollama Tunnels を開き、New Ollama Tunnel をクリックします。後でこのデバイスを識別できるようにラベルを入力してください(例: 「Anthony's MacBook」)。
これをターミナルに貼り付けてください。スクリプトはインストール前にcosign署名を検証します。
curl -fsSL https://entityenricher.ai/install.sh | sh
インストーラーは実行しようとしている内容(ダウンロード URL、署名、インストールパス)を表示し、Ctrl+C を押す猶予として 5 秒間一時停止します。ソースコードは TOT-Concept/ee-tunnel(MIT)にあります。Windows ユーザーは代わりに install.ps1 を使用してください。
ee-tunnel pair を実行します。/tunnel/connect で6文字のコードとともにブラウザタブが開きます。デバイスラベルを確認し、Connect をクリックします。
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...
トークンをコピー&ペーストすることは一切ありません。ブラウザはtunnelのメタデータのみを参照し、CLIは独自のポーリングチャネル経由で認証情報を受け取ります。
ee-tunnel を実行します。Tunnelsタブのステータスピルが数秒以内に Connected に切り替わります。次に Models & Pricing のOllamaプロバイダーで Discover Models をクリックすると、ローカルにインストールされたすべてのチャットモデルが自動インポートされます。
ペアリングはOAuthスタイルのデバイスコードフロー(RFC 8628形式)を使用します。ユーザーはトークンをコピー&ペーストする代わりに、ブラウザに短いコードを入力します。ブラウザはトンネルのメタデータのみを参照し、CLIは独自のポーリングチャネルを介してリフレッシュトークンを直接受け取ります(一度限りの引き換え)。
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 │ │接続が完了すると、トンネル経由の Ollama はプラットフォームの他の部分から見れば単なる LLM プロバイダーの1つになります。マルチ専門領域、フュージョン、バッチ — すべてがそのまま動作します。
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実行中の複数のエンリッチメントが1つのトンネルWebSocketを共有します。各リクエストにはUUIDが付与され、フレームは両端でIDによって逆多重化されるため、並行呼び出し(例:複数専門領域)が自然に機能します。
ストリーミング応答(Ollama の stream=true)は response_chunk フレームの連なりとして送られるため、トンネル経由でもトークン単位の UI 更新が逐次的に行われます。
組織のオーナーが「New Ollama Tunnel」をクリックし、ラベルを入力して確定します。プラットフォームが認証情報を割り当てます。
お使いのノートPCで、1行のインストーラーと `ee-tunnel pair` を実行します。ブラウザのタブが開くので、同じ Entity Enricher アカウントで確認します。
`ee-tunnel` を実行します。CLIは単一のアウトバウンドHTTPS WebSocketを開きます。新しいプロバイダーは数秒以内にモデルリストに表示されます。
「Discover Models」をクリックすると、ローカルの Ollama にあるすべてのモデルが、実際のコンテキスト長と機能とともに自動的にインポートされます。あとは通常どおりエンリッチメントを実行してください。
UI で1回クリックするだけで WebSocket が切断され、認証情報が即座に無効化されます。
トンネルは、攻撃対象領域をできる限り増やさないように設計されています。この機能の初期案では新しいポートでパブリックなSSHサーバーを使用していましたが、SSHの攻撃対象領域を完全に排除するため、これをインプロセスのWebSocketマルチプレクサーに置き換えました。
すべては既存の :443 イングレス(ウェブアプリと同じTLSエンドポイント)を経由します。SSHサーバーも、公開されたOllamaポートもありません。
CLIがWebSocketを開始します。ラップトップがインバウンド接続を受け入れることはないため、自宅ネットワークのファイアウォールを変更する必要はありません。
トンネルは単一の組織に紐付けられます。プラットフォーム上の他のテナントは、それを閲覧、選択、呼び出すことはできません。システム管理者は設計上、組織横断的な可視性を持ちます。
取り消すと、認証情報がデータベースから削除されます。次のリクエストは401で失敗します。アクティブなWebSocketは約1秒以内に切断されます。
ブラウザOAuthフローは、認証情報をエンドツーエンドで処理します。ブラウザがリフレッシュトークンを見ることはなく、CLIがポーリングチャネルを通じて直接受け取ります。
デフォルトで組織あたり5つのアクティブなトンネル、受信 WebSocket フレームの上限は16 MB、クォータ超過時には構造化された402エラーを返します。
SSRFガード。 tunnel機能は既存のギャップも塞ぎます。Ollama providerのspecific_endpointフィールドは許可リストの正規表現で検証されるようになり、プライベートIP、ループバック、Docker composeのサービス名をprovider URLとして使用することはできません。
| コマンド | 機能内容 |
|---|---|
| ee-tunnel pair --server URL | ブラウザーOAuthペアリング。検証URLを自動的に開きます。 |
| ee-tunnel pair --server URL <token> | UIからコピーしたリフレッシュトークンによる手動ペアリング(ヘッドレス環境向けのフォールバック)。 |
| ee-tunnel | 接続して提供します。一時的な切断時には、指数バックオフ(1 秒 → 30 秒)で再接続します。 |
| ee-tunnel status | ペアリング状態、サーバー URL、設定済みの Ollama URL、ラベルを表示します。 |
| ee-tunnel disconnect | ローカルの認証情報を破棄します。サーバー側では取り消されません。それにはUIをご利用ください。 |
| ee-tunnel version | 印刷版。 |
Ollamaが別のポートでリッスンしている場合、EE_TUNNEL_OLLAMA_URLを設定するか、ペアリング時に--ollama URLを渡してください。
macOS · ~/Library/Application Support/ee-tunnel/
Linux · ~/.config/ee-tunnel/
Windows · %APPDATA%\ee-tunnel\
| organizationごとの有効なtunnel | 5(デフォルト) |
| リフレッシュトークンのTTL | 365日間 |
| アクセストークンのTTL | 15分 |
| ペアリング TTL | 10分 |
| 受信 WebSocket フレーム最大サイズ | 16 MB |
| 送信チャンクサイズ(CLI) | 16 KB |
| ハートビート間隔 | 30秒 |
いいえ。CLIはアウトバウンドのWebSocketを開始します。お使いのノートPCがインバウンド接続を受け付けることはなく、Ollamaのポートはlocalhostにバインドされたままです。
CLIは切断時に正常に終了します。ラップトップを再開してee-tunnelを再実行すると、既存の認証情報で再接続します。トンネルがダウンしている間に実行中のエンリッチメントは、クリーンなConnectErrorで失敗します。
いいえ。各tunnelは1つのorganizationに紐付けられています。プラットフォーム上の他のテナントはそれを閲覧、選択、呼び出しすることはできません。システム管理者は仕様上すべてのtunnelを閲覧できます(グローバルAPIキーと同様です)。
ほとんどの場合可能です — 必要なのはアウトバウンドの :443 のみです。Webアプリが使用するものと同じ経路です。
「Tunnels」タブで「Rotate token」をクリックします。古いトークンは即座に無効化され、モーダルにはお使いのノートパソコン用の新しい pair コマンドが表示されます。
はい — CLI は任意の HTTP を転送します。EE_TUNNEL_OLLAMA_URL に任意のローカルの OpenAI 互換エンドポイントを設定してください。Ollama の /v1/chat/completions または /api/tags に対応するものであれば何でも動作します。
CLIとインストーラーはMITライセンスであり、パブリックリポジトリで公開されているため、誰でも自分のマシン上で実行されるものを監査できます。
ソース: github.com/TOT-Concept/ee-tunnel
リリース: github.com/TOT-Concept/ee-tunnel/releases — 各バイナリは公開前に cosign で署名されています。
インストーラーを監査する: curl -fsSL https://entityenricher.ai/install.sh | less