المستندات

اربط أدواتك بـ MeshPool

MeshPool منصة ذكاء اصطناعي للشركات بواجهة HTTP متوافقة مع OpenAI. مفتاح API شخصي واحد يستخدم النماذج والميزانيات وسجل التدقيق نفسها كمحادثة الشركة. وجّه Claude Code وCursor وAndroid Studio وOpenCode وOpenWork وOpenClaw وHermes Agent وOpen WebUI وContinue وaider أو أي حزمة OpenAI إلى بوابة MeshPool — دون مفاتيح المختبرات على الأجهزة المحمولة.

نظرة عامة

MeshPool هو شبكة الذكاء الاصطناعي للشركة بين أدواتك وكتالوج النماذج. يعرض واجهة HTTP متوافقة مع OpenAI ومسار Anthropic Messages لـ Claude Code. يرسل المحرر أو النص طلبًا إلى بوابة MeshPool. يصادق MeshPool على المفتاح، ويطبّق ميزانية مساحة العمل وسياسة النماذج، ثم يعيد الإكمال. يقع الاستخدام على المقعد والفاتورة نفسيهما كالمحادثة.

احصل على مفتاح

أنشئ المفاتيح في MeshPool chat. هذا هو المسار الأساسي. لا تحتاج صلاحيات مسؤول. كل موظف له مقعد يستطيع إصدار مفتاح لأدواته.

في المحادثة (موصى به)

  1. سجّل الدخول إلى محادثة MeshPool.
  2. في الشريط الجانبي، انقر أيقونة المفتاح. أو افتح قائمة الحساب واختر API keys.
  3. امنح المفتاح اسمًا يبيّن أين سيُستخدم، مثل Claude Code — work laptop أو CI — release pipeline. هذا الاسم هو ما ستراه عندما تلغيه لاحقًا.
  4. أنشئ المفتاح وانسخه فورًا. يُعرض السر مرة واحدة فقط. يخزّن MeshPool الأحرف الأربعة الأخيرة فقط، فلا يستطيع أحد — بمن فيهم الدعم — استعادته.

في لوحة التحكم

يمكنك أيضًا إنشاء المفاتيح في Account → API keys في لوحة الشركة. تعرض اللوحة كل اسم مستعار يجوز لمساحة العمل استدعاؤه، وتتضمن جولات Cursor وAndroid Studio وOpenCode وOpenWork وOpenClaw وHermes Agent وOpen WebUI.

تفاصيل الاتصال

استبدل القيم الحية أدناه في أداتك. المصادقة دائمًا Authorization: Bearer sk-…. تبدأ المفاتيح بـ sk- ثم سلسلة مبهمة.

الإعدادالقيمة
عنوان OpenAI الأساسيhttps://llm.meshpool.ai/v1
عنوان Anthropic الأساسيhttps://llm.meshpool.ai — لـ Claude Code فقط؛ دون /v1
المصادقةAuthorization: Bearer sk-…

المسارات المدعومة:

المسارالغرض
POST /v1/chat/completionsالمسار الذي تستخدمه كل أداة تقريبًا. البث مدعوم.
POST /v1/completionsإكمال نصي قديم.
POST /v1/messagesواجهة Anthropic Messages — Claude Code.
POST /v1/messages/count_tokensعدّ الرموز لمسار Anthropic.
POST /v1/responsesواجهة OpenAI Responses.
POST /v1/embeddingsالتضمينات.
POST /v1/rerankإعادة الترتيب.
GET /v1/modelsيسرد النماذج التي يجوز لمفتاحك استدعاؤها بالضبط.

المسارات الأخرى تعيد 404. هذا مقصود: مسارات الاستدلال وحدها عامة.

Claude Code

يتحدث Claude Code إلى واجهة Anthropic Messages. وجّهه إلى عنوان الأساس دون /v1، واستخدم ANTHROPIC_AUTH_TOKEN — وليس ANTHROPIC_API_KEY، لأن الأخير يسلك مسار مصادقة مختلفاً.

  1. أنشئ مفتاحاً شخصياً في المحادثة (انظر الحصول على مفتاح) وانسخ السر sk-….
  2. صدّر متغيرات البيئة أدناه في الصدفة التي تشغّل فيها claude. لجعلها دائمة، أضف الأسطر نفسها إلى ~/.zshrc أو ~/.bashrc. لقصرها على مشروع واحد، ضعها في .envrc واستخدم direnv.
  3. اضبط ANTHROPIC_MODEL على اسم مستعار في MeshPool. ابدأ بـ meshpool-max للاستدلال الصعب، أو باسم مستعار فعّلته مساحة عملك.
  4. وجّه النموذج السريع الخلفي إلى meshpool-fast حتى لا يستهلك التلخيص وما يشبهه الطبقة الأعلى تكلفة.
  5. يمكنك ضبط CLAUDE_CODE_MAX_CONTEXT_TOKENS. لا يتعرّف Claude Code على أسماء MeshPool المستعارة، فيطبع تنبيه unrecognized_model ويفترض نافذة من 200 ألف رمز. كل شيء يعمل؛ هذا المتغير يمنع الضغط التلقائي من أن يبدأ أبكر مما يلزم عندما يكون النموذج الأساسي أكبر.
Shell
export ANTHROPIC_BASE_URL="https://llm.meshpool.ai"
export ANTHROPIC_AUTH_TOKEN="sk-…"
export ANTHROPIC_MODEL="meshpool-max"
export ANTHROPIC_SMALL_FAST_MODEL="meshpool-fast"
export CLAUDE_CODE_MAX_CONTEXT_TOKENS=1000000

claude

تحقق من الاتصال:

Shell
claude -p "reply with exactly: connected"

إذا توقف الأمر أو ظهر خطأ، نفّذ فحص curl أولاً. يفصل ذلك بين مشكلة المفتاح وإعداد Claude Code.

Cursor

يتحدث Cursor عبر OpenAI Chat Completions. استخدم عنوان /v1 وأضف كل اسم مستعار من MeshPool تريده في القائمة. لا يستورد Cursor /v1/models إلى قائمته — إذا تخطيت هذه الخطوة فلن يظهر الاسم المستعار.

  1. افتح Cursor Settings بـ ⌘⇧J (macOS) أو Ctrl+Shift+J (Windows / Linux)، ثم انتقل إلى Models.
  2. الصق مفتاح MeshPool في OpenAI API Key وفعّل المفتاح. اترك مفاتيح Anthropic وGoogle في Cursor فارغة لحركة MeshPool — يُقدَّم Claude وGemini على MeshPool عبر المسار المتوافق مع OpenAI.
  3. فعّل Override OpenAI Base URL واضبطه على https://llm.meshpool.ai/v1. أبقِ /v1. لا تُلحق /chat/completions.
  4. في Add or search model اكتب اسم MeshPool المستعار كما هو ثم انقر Add Custom Model وفعّله. كرّر ذلك لكل نموذج تريده. ابدأ بالأوضاع — فهي لا تتعارض مع قائمة Cursor المدمجة — ثم أضف الأسماء المستعارة. انسخ قائمة المحادثة كاملة:
    Aliases
    meshpool-fast
    meshpool-balanced
    meshpool-max
    kimi-k3
    glm-5.2
    kimi-k2.6
    deepseek-v4-pro
    deepseek-v4-flash
    gpt-5.6-sol
    gpt-6-astra
    gpt-6-sol
    gpt-6.1-sol
    gpt-5.4
    gpt-6-luna
    grok-4.6
    grok-4.7
    mistral-medium-3-5
    phi-4
    claude-opus-5
    claude-opus-5.5
    claude-sonnet-5
    claude-sonnet-5.5
    claude-haiku-4.5
    gpt-5.6-terra
    gpt-5.6-luna
    gpt-oss-120b
    gemini-3.7-flash
    glm-5.3
    glm-4.7
    qwen-3-8-max
    deepseek-v4.1-flash
    glm-5.3-flash
    qwen-3-8-27b
    claude-fable-5
    claude-fable-5.1
  5. اضغط Verify. في المحادثة اختر الاسم المستعار من قائمة النماذج. تجنّب Auto — فهو يبقى على موجّه Cursor نفسه.

لا يمكن استخدام أسماء الصور المستعارة مثل nano-banana وgpt-image-2 و grok-imagine في محادثة Cursor — انظر نماذج الصور.

Android Studio

يمكن لـ Gemini في Android Studio استدعاء MeshPool كمزوّد بعيد من طرف ثالث. يتحدث عبر OpenAI Chat Completions، لذا استخدم عنوان /v1 ومفتاح MeshPool sk-…. بخلاف Cursor، يستورد Android Studio GET /v1/models بعد النقر على Refresh — لا تكتب الأسماء المستعارة يدوياً.

  1. أنشئ مفتاحاً شخصياً في المحادثة (انظر الحصول على مفتاح) وانسخ السر sk-….
  2. افتح إعدادات Android Studio: Android Studio → Settings على macOS، أو File → Settings على Windows / Linux. وسّع Tools → AI واختر Model Providers.
  3. انقر Add واختر Third-Party Remote Provider. إذا غابت هذه القائمة، حدّث Android Studio إلى إصدار يتضمن Tools → AI → Model Providers.
  4. املأ بيانات المزوّد:
    • Description — أي تسمية، مثل MeshPool.
    • URL — https://llm.meshpool.ai/v1. أبقِ /v1. لا تُلحق /chat/completions، ولا تستخدم مضيف Anthropic (هذا المسار لـ Claude Code فقط).
    • API key — الصق سر MeshPool.
    إذا طلب النموذج مخطط عنوان أو نوع واجهة، اختر المتوافق مع OpenAI.
  5. انقر Refresh ليحمّل Android Studio الأسماء المستعارة التي يجوز لهذا المفتاح استدعاؤها. فعّل ما تريده — ابدأ بـ meshpool-fast وmeshpool-balanced وmeshpool-max — ثم OK.
  6. افتح محادثة الذكاء الاصطناعي أو لوحة الوكيل واختر اسماً مستعاراً من MeshPool. أبقِ Gemini المدمج من Google فقط للميزات التي لا تغطيها نماذج الطرف الثالث.

OpenCode

يتحدث OpenCode عبر OpenAI Chat Completions. استخدم عنوان /v1 والصق الإعداد أدناه. مثل Cursor، OpenCode لا يستورد /v1/models — كل اسم محادثة مستعار مذكور في opencode.json. لا يستطيع مفتاحك استدعاء إلا النماذج التي فعّلتها مساحة العمل؛ الأسماء الزائدة في الملف تعيد 403.

  1. أنشئ مفتاحًا شخصيًا في المحادثة (انظر احصل على مفتاح) وانسخ السر sk-….
  2. في OpenCode، نفّذ /connect، واختر Other، واضبط معرّف المزوّد على meshpool، والصق المفتاح. ذلك يخزّن الاعتماد فقط — ما زلت تحتاج ملف الإعداد بعد ذلك.
  3. أنشئ أو حدّث ~/.config/opencode/opencode.json (عام) أو opencode.json في جذر المشروع. يجب أن يطابق معرّف المزوّد meshpool تمامًا. أبقِ /v1 على العنوان الأساسي. لا تُلحق /chat/completions.
  4. أعد تشغيل OpenCode، ونفّذ /models، واختر اسمًا مستعارًا من MeshPool (مثل meshpool/meshpool-max أو meshpool/claude-opus-5).
JSON
{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "meshpool": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "MeshPool",
      "options": {
        "baseURL": "https://llm.meshpool.ai/v1"
      },
      "models": {
        "meshpool-fast": { "name": "MeshPool Fast" },
        "meshpool-balanced": { "name": "MeshPool Balanced" },
        "meshpool-max": { "name": "MeshPool Max" },
        "kimi-k3": { "name": "Kimi K3" },
        "glm-5.2": { "name": "GLM 5.2" },
        "kimi-k2.6": { "name": "Kimi K2.6" },
        "deepseek-v4-pro": { "name": "DeepSeek-V4-Pro" },
        "deepseek-v4-flash": { "name": "DeepSeek-V4-Flash" },
        "gpt-5.6-sol": { "name": "GPT-5.6 Sol" },
        "gpt-6-astra": { "name": "GPT-6 Astra" },
        "gpt-6-sol": { "name": "GPT-6 Sol" },
        "gpt-6.1-sol": { "name": "GPT-6.1 Sol" },
        "gpt-5.4": { "name": "GPT-5.4" },
        "gpt-6-luna": { "name": "GPT-6 Luna" },
        "grok-4.6": { "name": "Grok 4.6" },
        "grok-4.7": { "name": "Grok 4.7" },
        "mistral-medium-3-5": { "name": "Mistral Medium 3.5" },
        "phi-4": { "name": "Phi-4" },
        "claude-opus-5": { "name": "Claude Opus 5" },
        "claude-opus-5.5": { "name": "Claude Opus 5.5" },
        "claude-sonnet-5": { "name": "Claude Sonnet 5" },
        "claude-sonnet-5.5": { "name": "Claude Sonnet 5.5" },
        "claude-haiku-4.5": { "name": "Claude Haiku 4.5" },
        "gpt-5.6-terra": { "name": "GPT-5.6 Terra" },
        "gpt-5.6-luna": { "name": "GPT-5.6 Luna" },
        "gpt-oss-120b": { "name": "GPT-OSS 120B" },
        "gemini-3.7-flash": { "name": "Gemini 3.7 Flash" },
        "glm-5.3": { "name": "GLM 5.3" },
        "glm-4.7": { "name": "GLM 4.7" },
        "qwen-3-8-max": { "name": "Qwen 3.8 Max" },
        "deepseek-v4.1-flash": { "name": "DeepSeek-V4.1-Flash" },
        "glm-5.3-flash": { "name": "GLM 5.3 Flash" },
        "qwen-3-8-27b": { "name": "Qwen3.8 27B" },
        "claude-fable-5": { "name": "Claude Fable 5" },
        "claude-fable-5.1": { "name": "Claude Fable 5.1" }
      }
    }
  }
}

خطوات المزوّد المخصص الرسمية: OpenCode providers.

OpenWork

OpenWork وكيل سطح مكتب مفتوح المصدر مبني على أساسيات OpenCode. استخدم عنوان /v1 ومفتاحًا شخصيًا sk-…. مثل OpenCode، هو لا يستورد /v1/models — تسمّي الأسماء المستعارة عند ربط المزوّد.

ثبّته من ملف README للمشروع أو من صفحة التنزيل الرسمية:

من التطبيق

  1. أنشئ مفتاحًا شخصيًا (انظر احصل على مفتاح) وانسخ السر sk-….
  2. افتح Settings → AI → Connect provider.
  3. اختر Add custom provider في أسفل القائمة.
  4. اضبط Name على MeshPool، وID على meshpool، وBase URL على https://llm.meshpool.ai/v1. أبقِ /v1؛ ولا تُلحق /chat/completions. الصق مفتاح MeshPool في API key. في Model IDs ابدأ بـ meshpool-fast وmeshpool-balanced وmeshpool-max. أضف الأسماء المسماة من خريطة models في OpenCode إذا أردتها في القائمة.
  5. انقر Add provider. يكتب OpenWork ملف مساحة العمل opencode.jsonc وتظهر الأسماء المستعارة في قائمة النماذج.

من ملف الإعداد

يفضّل OpenWork ملفًا داخل مساحة العمل على إعداد OpenCode العام: <workspace>/.config/opencode/opencode.json. الصق كتلة مزوّد MeshPool نفسها كما في OpenCode. يجب أن يكون معرّف المزوّد meshpool.

JSON
{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "meshpool": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "MeshPool",
      "options": {
        "baseURL": "https://llm.meshpool.ai/v1"
      },
      "models": {
        "meshpool-fast": { "name": "MeshPool Fast" },
        "meshpool-balanced": { "name": "MeshPool Balanced" },
        "meshpool-max": { "name": "MeshPool Max" },
        "kimi-k3": { "name": "Kimi K3" },
        "glm-5.2": { "name": "GLM 5.2" },
        "kimi-k2.6": { "name": "Kimi K2.6" },
        "deepseek-v4-pro": { "name": "DeepSeek-V4-Pro" },
        "deepseek-v4-flash": { "name": "DeepSeek-V4-Flash" },
        "gpt-5.6-sol": { "name": "GPT-5.6 Sol" },
        "gpt-6-astra": { "name": "GPT-6 Astra" },
        "gpt-6-sol": { "name": "GPT-6 Sol" },
        "gpt-6.1-sol": { "name": "GPT-6.1 Sol" },
        "gpt-5.4": { "name": "GPT-5.4" },
        "gpt-6-luna": { "name": "GPT-6 Luna" },
        "grok-4.6": { "name": "Grok 4.6" },
        "grok-4.7": { "name": "Grok 4.7" },
        "mistral-medium-3-5": { "name": "Mistral Medium 3.5" },
        "phi-4": { "name": "Phi-4" },
        "claude-opus-5": { "name": "Claude Opus 5" },
        "claude-opus-5.5": { "name": "Claude Opus 5.5" },
        "claude-sonnet-5": { "name": "Claude Sonnet 5" },
        "claude-sonnet-5.5": { "name": "Claude Sonnet 5.5" },
        "claude-haiku-4.5": { "name": "Claude Haiku 4.5" },
        "gpt-5.6-terra": { "name": "GPT-5.6 Terra" },
        "gpt-5.6-luna": { "name": "GPT-5.6 Luna" },
        "gpt-oss-120b": { "name": "GPT-OSS 120B" },
        "gemini-3.7-flash": { "name": "Gemini 3.7 Flash" },
        "glm-5.3": { "name": "GLM 5.3" },
        "glm-4.7": { "name": "GLM 4.7" },
        "qwen-3-8-max": { "name": "Qwen 3.8 Max" },
        "deepseek-v4.1-flash": { "name": "DeepSeek-V4.1-Flash" },
        "glm-5.3-flash": { "name": "GLM 5.3 Flash" },
        "qwen-3-8-27b": { "name": "Qwen3.8 27B" },
        "claude-fable-5": { "name": "Claude Fable 5" },
        "claude-fable-5.1": { "name": "Claude Fable 5.1" }
      }
    }
  }
}

OpenClaw

OpenClaw وكيل شخصي يتحدث عبر OpenAI Chat Completions من خلال مزوّد مخصص. استخدم عنوان /v1 ومفتاحًا شخصيًا sk-…. مثل OpenCode، هو لا يستورد /v1/models — تسمّي الأسماء المستعارة تحت models.providers.meshpool.

ثبّته من المستندات الرسمية، ثم أضف MeshPool:

من ملف الإعداد

ادمج الكتلة أدناه في ~/.openclaw/openclaw.json. أبقِ /v1 في العنوان الأساسي. لا تُلحق /chat/completions. مراجع النماذج هي meshpool/<alias>.

JSON
{
  "agents": {
    "defaults": {
      "model": {
        "primary": "meshpool/meshpool-max"
      }
    }
  },
  "models": {
    "mode": "merge",
    "providers": {
      "meshpool": {
        "baseUrl": "https://llm.meshpool.ai/v1",
        "apiKey": "${MESHPOOL_API_KEY}",
        "api": "openai-completions",
        "models": [
          {
            "id": "meshpool-fast",
            "name": "MeshPool Fast"
          },
          {
            "id": "meshpool-balanced",
            "name": "MeshPool Balanced"
          },
          {
            "id": "meshpool-max",
            "name": "MeshPool Max"
          },
          {
            "id": "kimi-k3",
            "name": "Kimi K3"
          },
          {
            "id": "glm-5.2",
            "name": "GLM 5.2"
          },
          {
            "id": "kimi-k2.6",
            "name": "Kimi K2.6"
          },
          {
            "id": "deepseek-v4-pro",
            "name": "DeepSeek-V4-Pro"
          },
          {
            "id": "deepseek-v4-flash",
            "name": "DeepSeek-V4-Flash"
          },
          {
            "id": "gpt-5.6-sol",
            "name": "GPT-5.6 Sol"
          },
          {
            "id": "gpt-6-astra",
            "name": "GPT-6 Astra"
          },
          {
            "id": "gpt-6-sol",
            "name": "GPT-6 Sol"
          },
          {
            "id": "gpt-6.1-sol",
            "name": "GPT-6.1 Sol"
          },
          {
            "id": "gpt-5.4",
            "name": "GPT-5.4"
          },
          {
            "id": "gpt-6-luna",
            "name": "GPT-6 Luna"
          },
          {
            "id": "grok-4.6",
            "name": "Grok 4.6"
          },
          {
            "id": "grok-4.7",
            "name": "Grok 4.7"
          },
          {
            "id": "mistral-medium-3-5",
            "name": "Mistral Medium 3.5"
          },
          {
            "id": "phi-4",
            "name": "Phi-4"
          },
          {
            "id": "claude-opus-5",
            "name": "Claude Opus 5"
          },
          {
            "id": "claude-opus-5.5",
            "name": "Claude Opus 5.5"
          },
          {
            "id": "claude-sonnet-5",
            "name": "Claude Sonnet 5"
          },
          {
            "id": "claude-sonnet-5.5",
            "name": "Claude Sonnet 5.5"
          },
          {
            "id": "claude-haiku-4.5",
            "name": "Claude Haiku 4.5"
          },
          {
            "id": "gpt-5.6-terra",
            "name": "GPT-5.6 Terra"
          },
          {
            "id": "gpt-5.6-luna",
            "name": "GPT-5.6 Luna"
          },
          {
            "id": "gpt-oss-120b",
            "name": "GPT-OSS 120B"
          },
          {
            "id": "gemini-3.7-flash",
            "name": "Gemini 3.7 Flash"
          },
          {
            "id": "glm-5.3",
            "name": "GLM 5.3"
          },
          {
            "id": "glm-4.7",
            "name": "GLM 4.7"
          },
          {
            "id": "qwen-3-8-max",
            "name": "Qwen 3.8 Max"
          },
          {
            "id": "deepseek-v4.1-flash",
            "name": "DeepSeek-V4.1-Flash"
          },
          {
            "id": "glm-5.3-flash",
            "name": "GLM 5.3 Flash"
          },
          {
            "id": "qwen-3-8-27b",
            "name": "Qwen3.8 27B"
          },
          {
            "id": "claude-fable-5",
            "name": "Claude Fable 5"
          },
          {
            "id": "claude-fable-5.1",
            "name": "Claude Fable 5.1"
          }
        ]
      }
    }
  }
}

من سطر الأوامر أو واجهة التحكم

  1. بعد وجود المزوّد، اضبط النموذج الأساسي: openclaw models set meshpool/meshpool-max
  2. تأكد بـ openclaw models list.
  3. أو افتح واجهة التحكم واستخدم Settings → Model Providers لربط مفتاح MeshPool والأسماء المستعارة نفسها.

Hermes Agent

Hermes Agent وكيل البرمجة من Nous Research. يتحدث عبر OpenAI Chat Completions على نقطة وصول مخصصة. استخدم عنوان /v1 ومفتاحًا شخصيًا sk-…. بخلاف OpenCode، هو يستعلم GET /v1/models عندما يكون discover_models مفعّلًا.

ثبّته من موقع المشروع، ثم أضف MeshPool:

من سطر الأوامر (المفضّل)

  1. أنشئ مفتاحًا شخصيًا (انظر احصل على مفتاح) وانسخ السر sk-….
  2. خارج جلسة محادثة، شغّل hermes model.
  3. اختر Custom endpoint (self-hosted / VLLM / etc.).
  4. اضبط العنوان الأساسي على https://llm.meshpool.ai/v1. أبقِ /v1. لا تُلحق /chat/completions. الصق مفتاح MeshPool. ابدأ بالنموذج meshpool-max (أو meshpool-fast / meshpool-balanced).

من ملف الإعداد

يخزّن Hermes الإعداد في ~/.hermes/config.yaml. المزوّد المسمّى أدناه يُبقي المفتاح في MESHPOOL_API_KEY بدل الملف.

YAML
model:
  provider: "custom:meshpool"
  default: meshpool-max

providers:
  meshpool:
    name: MeshPool
    api: https://llm.meshpool.ai/v1
    key_env: MESHPOOL_API_KEY
    transport: chat_completions
    default_model: meshpool-max
    discover_models: true

Open WebUI

Open WebUI واجهة محادثة مستضافة ذاتيًا تتحدث عبر OpenAI Chat Completions. استخدم عنوان /v1 ومفتاحًا شخصيًا sk-…. بخلاف Cursor، هي تستورد GET /v1/models — تمتلئ القائمة بما يجوز لهذا المفتاح استدعاؤه. لا تحتاج مشغّل نماذج محليًا.

ثبّته من ملف README للمشروع أو دليل البدء الرسمي:

Docker

واجهة متوافقة مع OpenAI فقط. بعد التشغيل، افتح http://localhost:3000. أبقِ /v1 في العنوان الأساسي.

Shell
docker run -d -p 3000:8080 \
  -e OPENAI_API_BASE_URL="https://llm.meshpool.ai/v1" \
  -e OPENAI_API_KEY="sk-…" \
  -v open-webui:/app/backend/data \
  --name open-webui --restart always \
  ghcr.io/open-webui/open-webui:main

pip

يتطلب Python 3.11. يخدم http://localhost:8080.

Shell
pip install open-webui
OPENAI_API_BASE_URL="https://llm.meshpool.ai/v1" \
OPENAI_API_KEY="sk-…" \
open-webui serve

إذا كان يعمل بالفعل

  1. أنشئ مفتاحًا شخصيًا (انظر احصل على مفتاح) وانسخ السر sk-….
  2. سجّل الدخول بأول حساب في Open WebUI — ذلك المستخدم هو المسؤول.
  3. افتح Admin Panel → Settings → Connections.
  4. فعّل اتصال OpenAI. اضبط API Base URL على https://llm.meshpool.ai/v1. أبقِ /v1؛ لا تُلحق /chat/completions. الصق مفتاح MeshPool في API Key.
  5. احفظ، وحدّث قائمة النماذج، واختر اسم MeshPool مستعارًا (meshpool-fast, meshpool-balanced, meshpool-max، أو اسمًا مسمّى).

Continue

Continue عميل متوافق مع OpenAI. الصق قائمة النماذج في ~/.continue/config.json (أو إعداد مشروعك) مع عنوان /v1 الأساسي. يتضمن المقتطف كل اسم محادثة مستعار؛ احذف الصفوف التي لا تريدها. نماذج الصور غير مضمّنة.

  1. أنشئ مفتاحًا شخصيًا وانسخ السر sk-….
  2. افتح ~/.continue/config.json.
  3. أضف مدخل نموذج مع provider مضبوطًا على openai, apiBase مضبوطًا على https://llm.meshpool.ai/v1, و model مضبوطًا على اسم MeshPool مستعار — وليس openai/….
JSON
{
  "models": [
    { "title": "MeshPool Fast", "provider": "openai", "model": "meshpool-fast", "apiBase": "https://llm.meshpool.ai/v1", "apiKey": "sk-…" },
    { "title": "MeshPool Balanced", "provider": "openai", "model": "meshpool-balanced", "apiBase": "https://llm.meshpool.ai/v1", "apiKey": "sk-…" },
    { "title": "MeshPool Max", "provider": "openai", "model": "meshpool-max", "apiBase": "https://llm.meshpool.ai/v1", "apiKey": "sk-…" },
    { "title": "Kimi K3", "provider": "openai", "model": "kimi-k3", "apiBase": "https://llm.meshpool.ai/v1", "apiKey": "sk-…" },
    { "title": "GLM 5.2", "provider": "openai", "model": "glm-5.2", "apiBase": "https://llm.meshpool.ai/v1", "apiKey": "sk-…" },
    { "title": "Kimi K2.6", "provider": "openai", "model": "kimi-k2.6", "apiBase": "https://llm.meshpool.ai/v1", "apiKey": "sk-…" },
    { "title": "DeepSeek-V4-Pro", "provider": "openai", "model": "deepseek-v4-pro", "apiBase": "https://llm.meshpool.ai/v1", "apiKey": "sk-…" },
    { "title": "DeepSeek-V4-Flash", "provider": "openai", "model": "deepseek-v4-flash", "apiBase": "https://llm.meshpool.ai/v1", "apiKey": "sk-…" },
    { "title": "GPT-5.6 Sol", "provider": "openai", "model": "gpt-5.6-sol", "apiBase": "https://llm.meshpool.ai/v1", "apiKey": "sk-…" },
    { "title": "GPT-6 Astra", "provider": "openai", "model": "gpt-6-astra", "apiBase": "https://llm.meshpool.ai/v1", "apiKey": "sk-…" },
    { "title": "GPT-6 Sol", "provider": "openai", "model": "gpt-6-sol", "apiBase": "https://llm.meshpool.ai/v1", "apiKey": "sk-…" },
    { "title": "GPT-6.1 Sol", "provider": "openai", "model": "gpt-6.1-sol", "apiBase": "https://llm.meshpool.ai/v1", "apiKey": "sk-…" },
    { "title": "GPT-5.4", "provider": "openai", "model": "gpt-5.4", "apiBase": "https://llm.meshpool.ai/v1", "apiKey": "sk-…" },
    { "title": "GPT-6 Luna", "provider": "openai", "model": "gpt-6-luna", "apiBase": "https://llm.meshpool.ai/v1", "apiKey": "sk-…" },
    { "title": "Grok 4.6", "provider": "openai", "model": "grok-4.6", "apiBase": "https://llm.meshpool.ai/v1", "apiKey": "sk-…" },
    { "title": "Grok 4.7", "provider": "openai", "model": "grok-4.7", "apiBase": "https://llm.meshpool.ai/v1", "apiKey": "sk-…" },
    { "title": "Mistral Medium 3.5", "provider": "openai", "model": "mistral-medium-3-5", "apiBase": "https://llm.meshpool.ai/v1", "apiKey": "sk-…" },
    { "title": "Phi-4", "provider": "openai", "model": "phi-4", "apiBase": "https://llm.meshpool.ai/v1", "apiKey": "sk-…" },
    { "title": "Claude Opus 5", "provider": "openai", "model": "claude-opus-5", "apiBase": "https://llm.meshpool.ai/v1", "apiKey": "sk-…" },
    { "title": "Claude Opus 5.5", "provider": "openai", "model": "claude-opus-5.5", "apiBase": "https://llm.meshpool.ai/v1", "apiKey": "sk-…" },
    { "title": "Claude Sonnet 5", "provider": "openai", "model": "claude-sonnet-5", "apiBase": "https://llm.meshpool.ai/v1", "apiKey": "sk-…" },
    { "title": "Claude Sonnet 5.5", "provider": "openai", "model": "claude-sonnet-5.5", "apiBase": "https://llm.meshpool.ai/v1", "apiKey": "sk-…" },
    { "title": "Claude Haiku 4.5", "provider": "openai", "model": "claude-haiku-4.5", "apiBase": "https://llm.meshpool.ai/v1", "apiKey": "sk-…" },
    { "title": "GPT-5.6 Terra", "provider": "openai", "model": "gpt-5.6-terra", "apiBase": "https://llm.meshpool.ai/v1", "apiKey": "sk-…" },
    { "title": "GPT-5.6 Luna", "provider": "openai", "model": "gpt-5.6-luna", "apiBase": "https://llm.meshpool.ai/v1", "apiKey": "sk-…" },
    { "title": "GPT-OSS 120B", "provider": "openai", "model": "gpt-oss-120b", "apiBase": "https://llm.meshpool.ai/v1", "apiKey": "sk-…" },
    { "title": "Gemini 3.7 Flash", "provider": "openai", "model": "gemini-3.7-flash", "apiBase": "https://llm.meshpool.ai/v1", "apiKey": "sk-…" },
    { "title": "GLM 5.3", "provider": "openai", "model": "glm-5.3", "apiBase": "https://llm.meshpool.ai/v1", "apiKey": "sk-…" },
    { "title": "GLM 4.7", "provider": "openai", "model": "glm-4.7", "apiBase": "https://llm.meshpool.ai/v1", "apiKey": "sk-…" },
    { "title": "Qwen 3.8 Max", "provider": "openai", "model": "qwen-3-8-max", "apiBase": "https://llm.meshpool.ai/v1", "apiKey": "sk-…" },
    { "title": "DeepSeek-V4.1-Flash", "provider": "openai", "model": "deepseek-v4.1-flash", "apiBase": "https://llm.meshpool.ai/v1", "apiKey": "sk-…" },
    { "title": "GLM 5.3 Flash", "provider": "openai", "model": "glm-5.3-flash", "apiBase": "https://llm.meshpool.ai/v1", "apiKey": "sk-…" },
    { "title": "Qwen3.8 27B", "provider": "openai", "model": "qwen-3-8-27b", "apiBase": "https://llm.meshpool.ai/v1", "apiKey": "sk-…" },
    { "title": "Claude Fable 5", "provider": "openai", "model": "claude-fable-5", "apiBase": "https://llm.meshpool.ai/v1", "apiKey": "sk-…" },
    { "title": "Claude Fable 5.1", "provider": "openai", "model": "claude-fable-5.1", "apiBase": "https://llm.meshpool.ai/v1", "apiKey": "sk-…" }
  ]
}

aider

يستخدم aider المسار المتوافق مع OpenAI. صدّر العنوان الأساسي والمفتاح، ثم أسبق اسم MeshPool المستعار بـ openai/ حتى يعرف aider أي بروتوكول يستخدم.

  1. صدّر المتغيرين أدناه في الصدفة التي تشغّل فيها aider.
  2. شغّل aider بـ --model openai/meshpool-max أو اسم مسمى مثل --model openai/claude-opus-5. البادئة openai/ اسم مشغّل aider، وليست جزءًا من اسم MeshPool المستعار.
Shell
export OPENAI_API_BASE="https://llm.meshpool.ai/v1"
export OPENAI_API_KEY="sk-…"

aider --model openai/meshpool-max

حزم OpenAI

تأخذ الحزمتان الرسميتان base_url / baseURL. لا يتغير شيء آخر. يعمل البث واستدعاء الأدوات ووضع JSON كما مع OpenAI، بحسب ما يدعمه النموذج الأساسي.

Python

Python
from openai import OpenAI

client = OpenAI(
    api_key="sk-…",  # or os.environ["MESHPOOL_API_KEY"]
    base_url="https://llm.meshpool.ai/v1",
)

response = client.chat.completions.create(
    model="meshpool-balanced",
    messages=[{"role": "user", "content": "Say hello"}],
)
print(response.choices[0].message.content)

Node / TypeScript

TypeScript
import OpenAI from "openai";

const client = new OpenAI({
  apiKey: process.env.MESHPOOL_API_KEY,
  baseURL: "https://llm.meshpool.ai/v1",
});

const response = await client.chat.completions.create({
  model: "meshpool-balanced",
  messages: [{ role: "user", content: "Say hello" }],
});
console.log(response.choices[0].message.content);

تتبع LangChain وLlamaIndex والمكتبات المشابهة النمط نفسه: اضبط عنوان OpenAI الأساسي على https://llm.meshpool.ai/v1، والصق المفتاح حيث تطلب المكتبة مفتاح OpenAI، ومرّر اسم MeshPool المستعار كـ model.

curl

استخدم هذا كأول فحص كلما أساءت أداة السلوك. 200 هنا يعني أن المفتاح والعنوان والاسم المستعار سليمة — انظر إعداد العميل بعد ذلك.

Shell
curl -sS https://llm.meshpool.ai/v1/chat/completions \
  -H "Authorization: Bearer sk-…" \
  -H "Content-Type: application/json" \
  -d '{"model":"meshpool-fast","messages":[{"role":"user","content":"say ok"}]}'

اسرد كل اسم مستعار يجوز لهذا المفتاح استدعاؤه:

Shell
curl -s https://llm.meshpool.ai/v1/models \
  -H "Authorization: Bearer sk-…" | jq -r '.data[].id' | sort

الأوضاع والأسماء المسماة

حقل model يجب أن يكون اسمًا مستعارًا في MeshPool، وليس معرّف نموذج المورّد الخام. لا يستطيع مفتاحك استدعاء إلا الأسماء التي فعّلها المسؤول. 403 مع key_model_access_denied يعني أن الاسم حقيقي لكنه ليس في قائمة السماح لمساحة العمل. تفعيله تحت سياسة النماذج يسري على المفاتيح الحالية — لا تحتاج إلى إصدار مفتاح جديد.

ثلاثة أسماء مستعارة توجّه حسب الغرض بدل تسمية نموذج بعينه، فتبقى تعمل عندما يحدّث MeshPool الافتراضي خلف الطبقة:

الاسم المستعاريُستخدم لـ
meshpool-fastعمل كثيف وحساس لزمن الاستجابة. رخيص. افتراضي جيد للمهام الخلفية.
meshpool-balancedالبرمجة والاستدلال العام. العمل اليومي.
meshpool-maxالمسائل الصعبة حيث الجودة أهم من التكلفة.

الأسماء المسماة للمحادثة في مقتطفات OpenCode وOpenWork وOpenClaw وContinue وCursor أعلاه. يحمّل Open WebUI وHermes Agent القائمة نفسها من /v1/models. استخدم نموذجًا مسمى عندما يهمك سلوك ذلك النموذج؛ واستخدم وضعًا عندما تريد أن يختار MeshPool الافتراضي الحالي لتلك الطبقة. أسماء الصور المستعارة مذكورة على حدة تحت نماذج الصور.

اسأل المفتاح عما يستطيع الوصول إليه — تلك القائمة هي المرجع دائمًا:

Shell
curl -s https://llm.meshpool.ai/v1/models \
  -H "Authorization: Bearer sk-…" | jq -r '.data[].id' | sort

نماذج الصور

أسماء مثل nano-banana وgpt-image-2 وgrok-imagine لتوليد الصور وليست للمحادثة. تتحدث POST /v1/images/generations. لن تعمل كنموذج في محادثة Cursor أو الوكيل أو Composer أو محادثة Android Studio أو وكيله أو OpenCode أو OpenWork أو OpenClaw أو Hermes Agent أو محادثة Open WebUI أو Continue أو aider أو /v1/chat/completions.

الميزانيات والحدود والإلغاء

تُعامل الطلبات بمفتاح API كطلبات المحادثة:

  • تُحتسب على ميزانية مقعدك. استخدام المحادثة وAPI يشتركان في سقف شهري واحد. إنفاقه في Claude Code يعني أنك لا تستطيع إنفاقه في المحادثة.
  • إصدار مفاتيح أكثر لا يرفع ميزانيتك. عشرة مفاتيح تشترك في بدل واحد.
  • حدود معدلك تسري. سقوف الطلبات في الدقيقة والرموز في الدقيقة على مقعدك تسري على حركة API أيضًا.
  • يُنسب الاستخدام إليك. يظهر في تقارير استخدام مساحة العمل والفواتير تحت اسمك، إلى جانب المحادثة.
  • تسري سياسة نماذج مساحة العمل. لا يستطيع المفتاح استدعاء إلا النماذج التي فعّلها المسؤول.
  • تسري ضوابط الحماية والإقامة بالطريقة نفسها كما في المحادثة.

عندما تستنفد ميزانيتك تعيد البوابة 429. هذا ليس عطلًا في عميلك — اشحن الرصيد، أو اطلب من مسؤول رفع سقف مقعدك.

التدوير والإلغاء

ألغِ المفتاح من حوار مفاتيح API في المحادثة أو من Account → API keys. يتوقف فورًا، في كل مكان.

دوّر بإنشاء البديل أولًا، ثم تحديث أداتك، ثم إلغاء المفتاح القديم. لا غرامة على التداخل — كلاهما صالح حتى تلغي. ألغِ فورًا إذا أُدخل المفتاح في مستودع، أو لُصق في محادثة أو تذكرة، أو بقي على جهاز لم تعد تتحكم به. إلغاء مفتاح API لا يسجّل خروجك من المحادثة؛ هما اعتمادان منفصلان بالتصميم.

استكشاف الأخطاء

ابدأ من هنا. هذا الأمر الواحد يفصل المفتاح الخاطئ عن إعداد العميل الخاطئ:

Shell
curl -sS https://llm.meshpool.ai/v1/chat/completions \
  -H "Authorization: Bearer sk-…" \
  -H "Content-Type: application/json" \
  -d '{"model":"meshpool-fast","messages":[{"role":"user","content":"say ok"}]}'
العَرَضالسببالإصلاح
401 Unauthorizedالمفتاح خاطئ أو مُلغى أو فيه فراغ زائد.انسخه من جديد. تأكد أنك لم تلصق سطرًا فارغًا في النهاية.
400 يسمّي النموذج، أو 403 key_model_access_deniedالاسم المستعار مفقود أو ليس في قائمة المفتاح المسموحة.شغّل استدعاء /v1/models أعلاه واستخدم اسمًا منه، أو اطلب من مسؤول تفعيل الاسم المستعار.
429 مع رسالة ميزانيةنفدت ميزانية المقعد.أضف رصيدًا، أو اطلب من مسؤول رفع السقف.
429 دون رسالة ميزانيةبلغ سقف الطلبات أو الرموز في الدقيقة.انتظر وأعد المحاولة؛ اسأل مسؤولًا إذا استمر.
404 على مسار غير متوقعنقطة الوصول هذه غير معروضة على البوابة العامة.استخدم إحدى نقاط الوصول المدعومة.
Claude Code يعيد 404 في كل دورANTHROPIC_BASE_URL ينتهي بـ /v1، فتذهب الطلبات إلى /v1/v1/messages.احذف /v1؛ Claude Code يُلحق مساره.
يتوقف تحقق Cursorتوافق HTTP/2 مع العنوان الأساسي المخصص.اضبط Network → HTTP Compatibility Mode على HTTP/1.1.
قائمة Cursor تفتقد نموذجًالا يستورد Cursor /v1/models.أضف الاسم المستعار عبر Add Custom Model. فضّل meshpool-fast / meshpool-balanced / meshpool-max أولًا.
تحديث Android Studio فارغعنوان خاطئ، أو غياب /v1، أو المفتاح لا يستطيع سرد النماذج.استخدم https://llm.meshpool.ai/v1، وأعد لصق المفتاح، ثم حدّث مرة أخرى. تأكد أن استدعاء نماذج curl يعيد الأسماء المستعارة.
لا قائمة Model Providersإصدار Android Studio هذا لا يتضمن المزوّدين البعيدين.حدّث إلى Android Studio حديث يتضمن Tools → AI → Model Providers.
قائمة OpenCode تفتقد MeshPoolالمزوّدون المخصصون لا يستوردون /v1/models، أو معرّف المزوّد غير مطابق.اذكر كل اسم محادثة مستعار تحت models في opencode.json (المقتطف في هذه الصفحة). معرّف مزوّد /connect يجب أن يكون meshpool.
قائمة OpenWork تفتقد MeshPoolلم يُضف المزوّد المخصص، أو العنوان الأساسي يفتقد /v1، أو معرّف المزوّد غير مطابق.استخدم Settings → AI → Connect provider → Add custom provider بمعرّف meshpool وعنوان أساسي https://llm.meshpool.ai/v1، أو الصق خريطة models من OpenCode في <workspace>/.config/opencode/opencode.json.
لا يرى OpenClaw ‏MeshPoolغياب models.providers.meshpool، أو عنوان أساسي دون /v1، أو مرجع نموذج ليس meshpool/<alias>.الصق مقتطف هذه الصفحة في ~/.openclaw/openclaw.json، ثم شغّل openclaw models set meshpool/meshpool-max.
لا نماذج MeshPool في Hermes Agent/model استُخدم قبل hermes model، أو ضُبط OPENAI_BASE_URL بدل model.base_url.اخرج من الجلسة، وشغّل hermes model، واختر Custom endpoint، واضبط العنوان الأساسي على https://llm.meshpool.ai/v1.
قائمة نماذج Open WebUI فارغةغياب /v1، أو المفتاح لا يستطيع سرد النماذج، أو الاتصال ما زال يشير إلى مضيف OpenAI الافتراضي.اضبط OPENAI_API_BASE_URL / API Base URL على https://llm.meshpool.ai/v1، وأعد لصق المفتاح، ثم حدّث النماذج.
رُفض الاتصال أو فشل DNSمضيف البوابة لا يُحل من شبكتك.تأكد أنك تصل إلى https://llm.meshpool.ai. إذا فشل من شبكة الشركة، راسل support@meshpool.ai.

ما زلت عالقًا؟ راسل support@meshpool.ai، أو احجز عرضًا.

MeshPool API docs — Claude Code, Cursor, and OpenAI clients · MeshPool