اربط Ollama المحلي على حاسوبك المحمول بـ 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، …) دون إعادة تنزيلها على الخادم.
بالنسبة إلى الموجّهات الحساسة، وجّه عمليات إثراء محددة عبر وحدة معالجة الرسومات الخاصة بك. لا تزال المنصة تسجّل التكلفة والرموز والبيانات الوصفية — الاستدلال نفسه فقط هو ما يبقى محلياً.
اسحب نموذجًا باستخدام `ollama pull` على حاسوبك المحمول، وانقر على «اكتشاف النماذج»، فيظهر في محدّد Entity Enricher بطول سياق وقدرات حقيقية.
عندما يفرض عليك مزوّد مُستضاف حدًّا للمعدّل، انتقل تلقائيًا إلى نموذج محلي عبر النفق لبقية الدفعة.
أمران على حاسوبك المحمول، ونقرة واحدة في المتصفح. تستغرق العملية بأكملها نحو دقيقة.
افتح مفاتيح API ← أنفاق Ollama وانقر على نفق Ollama جديد. اكتب تسمية لتتعرّف على هذا الجهاز لاحقًا (مثل "MacBook الخاص بأنطوني").
الصق هذا في الطرفية. يتحقق البرنامج النصي من توقيع cosign قبل التثبيت.
curl -fsSL https://entityenricher.ai/install.sh | sh
يطبع المُثبِّت ما هو على وشك القيام به (رابط التنزيل، والتوقيع، ومسار التثبيت) ويتوقّف مؤقتًا لمدة 5 ثوانٍ لتتيح لك نافذة للضغط على Ctrl+C. يوجد الكود المصدري في 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...
لا تنسخ رمزًا وتلصقه أبدًا. لا يرى المتصفح سوى بيانات التعريف الخاصة بالنفق؛ وتتلقى واجهة سطر الأوامر بيانات اعتمادها عبر قناة الاستقصاء الخاصة بها.
شغّل ee-tunnel. تتحوّل شارة الحالة في علامة تبويب الأنفاق إلى Connected خلال ثوانٍ. ثم انقر Discover Models على مزوّد Ollama في Models & Pricing لاستيراد كل نماذج المحادثة المثبَّتة محليًا تلقائيًا.
يستخدم الإقران تدفق رمز جهاز بأسلوب 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 آخر بالنسبة لبقية المنصة. تعدد مجالات الخبرة، والدمج، والدُفعات — كل شيء يعمل دون تغيير.
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تتشارك عدة عمليات إثراء جارية نفق WebSocket واحداً. يحصل كل طلب على UUID؛ وتُفصل الإطارات حسب المعرّف على الطرفين بحيث تعمل الاستدعاءات المتزامنة (مثل تعدد مجالات الخبرة) بشكل طبيعي.
تنتقل استجابات البث (stream=true في Ollama) كسلسلة من إطارات response_chunk، بحيث تظل تحديثات الواجهة رمزًا برمز تدريجية حتى عبر النفق.
ينقر مالك المؤسسة على «نفق Ollama جديد»، ويكتب تسمية، ثم يؤكد. تخصص المنصة بيانات الاعتماد.
على حاسوبك المحمول، شغّل المثبّت المكوّن من سطر واحد ثم `ee-tunnel pair`. ستُفتح علامة تبويب في المتصفح — أكّد باستخدام حساب Entity Enricher نفسه.
شغّل `ee-tunnel`. تفتح واجهة سطر الأوامر اتصال WebSocket صادرًا واحدًا عبر HTTPS. يظهر المزوّد الجديد في قائمة نماذجك خلال ثوانٍ.
انقر على "اكتشاف النماذج" — يُستورَد كل نموذج في Ollama المحلي لديك تلقائيًا مع طول السياق الفعلي والقدرات. أثرِ البيانات كالمعتاد.
نقرة واحدة في الواجهة تُنهي اتصال WebSocket وتُبطل بيانات الاعتماد فورًا.
صُمِّم النفق لإضافة أقل قدر ممكن من سطح الهجوم. استخدمت المسودة السابقة للميزة خادم SSH عامًا على منفذ جديد؛ استبدلناه بمُضاعِف WebSocket داخل العملية لإزالة سطح هجوم SSH بالكامل.
يمرّ كل شيء عبر مدخل :443 القائم — نقطة نهاية TLS نفسها الخاصة بتطبيق الويب. لا خادم SSH، ولا منفذ Ollama مكشوف.
يبدأ CLI اتصال WebSocket. لا يقبل حاسوبك المحمول أبدًا اتصالات واردة — لا حاجة لتغيير جدار الحماية لشبكتك المنزلية.
يرتبط النفق بمؤسسة واحدة. لا يمكن للمستأجرين الآخرين على المنصة رؤيته أو اختياره أو استدعاؤه. ويتمتع مسؤولو النظام برؤية عبر المؤسسات بحكم التصميم.
يؤدي الإبطال إلى إزالة بيانات الاعتماد من قاعدة البيانات. سيفشل الطلب التالي بالخطأ 401. ويُطرد اتصال WebSocket النشط خلال ثانية واحدة تقريبًا.
يتولى تدفق OAuth عبر المتصفح إدارة بيانات الاعتماد من البداية إلى النهاية. لا يرى المتصفح أبدًا رمز التحديث الخاص بك؛ إذ يستقبله CLI مباشرة عبر قناة الاستطلاع الخاصة به.
5 أنفاق نشطة لكل منظمة افتراضيًا؛ حد أقصى لإطار WebSocket الوارد يبلغ 16 ميجابايت؛ أخطاء 402 منظّمة عند تجاوز الحصة.
حماية من SSRF. تسدّ خاصية النفق (tunnel) أيضًا ثغرة قائمة مسبقًا: يُتحقَّق الآن من حقل specific_endpoint في مزوّدي Ollama مقابل تعبير نمطي لقائمة السماح، بحيث لا يمكن أبدًا استخدام عناوين IP الخاصة أو الاسترجاع الذاتي (loopback) أو أسماء خدمات Docker compose كعنوان URL لمزوّد.
| الأمر | ماذا يفعل |
|---|---|
| ee-tunnel pair --server URL | إقران المتصفح عبر OAuth. يفتح رابط التحقق تلقائيًا. |
| ee-tunnel pair --server URL <token> | إقران يدوي باستخدام رمز تحديث منسوخ من واجهة المستخدم (بديل للبيئات بلا واجهة). |
| ee-tunnel | اتصل وقدّم الخدمة. يعيد الاتصال بتراجع أُسّي (1 ثانية ← 30 ثانية) عند الانقطاعات العابرة. |
| ee-tunnel status | إظهار حالة الاقتران وعنوان URL للخادم وعنوان Ollama المُهيَّأ والتسمية. |
| ee-tunnel disconnect | نسيان بيانات الاعتماد المحلية. لا يُلغيها من جانب الخادم؛ استخدم الواجهة لذلك. |
| ee-tunnel version | نسخة للطباعة. |
إذا كان Ollama لديك يستمع على منفذ مختلف، فاضبط EE_TUNNEL_OLLAMA_URL أو مرّر --ollama URL عند الاقتران.
macOS · ~/Library/Application Support/ee-tunnel/
Linux · ~/.config/ee-tunnel/
Windows · %APPDATA%\ee-tunnel\
| الأنفاق النشطة لكل مؤسسة | 5 (افتراضي) |
| مدة بقاء رمز التحديث | 365 يومًا |
| مدة صلاحية رمز الوصول | 15 دقيقة |
| مدة صلاحية الإقران (TTL) | 10 دقائق |
| الحد الأقصى لإطار WebSocket الوارد | 16 ميغابايت |
| حجم الحزمة الصادرة (CLI) | 16 كيلوبايت |
| فترة نبضة القلب | 30 ثانية |
لا. تبدأ واجهة سطر الأوامر اتصال WebSocket صادرًا. لا يقبل حاسوبك المحمول أبدًا اتصالات واردة، ويظل منفذ Ollama مرتبطًا بـ localhost.
يخرج CLI بسلاسة عند قطع الاتصال. يؤدي استئناف الحاسوب المحمول وإعادة تشغيل ee-tunnel إلى إعادة الاتصال باستخدام بيانات الاعتماد الحالية. تفشل عمليات الإثراء الجارية أثناء تعطل النفق مع ظهور خطأ ConnectError واضح.
لا. يرتبط كل نفق بمؤسسة واحدة. لا يمكن للمستأجرين الآخرين على المنصة رؤيته أو تحديده أو استدعاءه. يمكن لمشرفي النظام رؤية جميع الأنفاق حسب التصميم (مثل مفاتيح API العامة).
في الغالب دائمًا — يلزم فقط المنفذ الصادر :443. نفس المسار الذي يستخدمه تطبيق الويب.
انقر على "تدوير الرمز" في علامة تبويب الأنفاق. يُبطَل الرمز القديم فورًا؛ تعرض النافذة أمر إقران جديدًا لجهازك المحمول.
نعم — تعيد واجهة سطر الأوامر (CLI) توجيه أي طلبات HTTP. عيّن EE_TUNNEL_OLLAMA_URL إلى أي نقطة نهاية محلية متوافقة مع OpenAI. سيعمل أي شيء يتحدث بلغة /v1/chat/completions أو /api/tags الخاصة بـ Ollama.
يخضع CLI والمُثبِّت لرخصة MIT ويوجدان في مستودع عام حتى يتمكن أي شخص من تدقيق ما يعمل على جهازه.
المصدر: github.com/TOT-Concept/ee-tunnel
الإصدارات: github.com/TOT-Concept/ee-tunnel/releases — يُوقَّع كل ملف ثنائي باستخدام cosign قبل النشر.
دقّق في المُثبِّت: curl -fsSL https://entityenricher.ai/install.sh | less