OpenClaw

Self-hosted шлюз OpenClaw через AITUNNEL: custom provider, ключ в рублях, VPN не нужен.

OpenClaw — шлюз для AI-агентов: один Gateway на вашей машине, чат из Telegram, Discord, WhatsApp, Control UI и узлов. Через AITUNNEL это custom provider, протокол openai-completions на https://api.aitunnel.ru/v1.

Зачем через AITUNNEL

  • Из России без VPN. Запросы идут на api.aitunnel.ru. Зарубежный аккаунт провайдера не нужен.
  • Оплата в рублях, бюджет на ключе, расход в панели.
  • Один baseUrl на каталог. Claude, GPT, Gemini, Kimi — id как на странице моделей. Слаг со слешем уходит в OpenRouter.
  • Запасные модели. Если апстрим не ответил — fallback AITUNNEL и цепочка agents.defaults.model.fallbacks в OpenClaw.

Быстрый старт

Самый удобный путь: поставить CLI без мастера, положить ~/.openclaw/openclaw.json, затем дать онбордингу проверить живой completion. Он подхватит уже прописанный провайдер.

  1. Установка

    Рекомендуемый установщик ставит Node при необходимости (нужны 22.22.3+, 24.15+ или 25.9+; по умолчанию Node 26). --no-onboard пропускает мастер. npm — запасной путь: пакет openclaw@latest, не @openclaw/cli. На npm 12 / 11.16+ нужен --allow-scripts=openclaw. Install.

    curl -fsSL https://openclaw.ai/install.sh | bash -s -- --no-onboard
    Проверка
    openclaw --version
  2. Ключ

    Создайте ключ в панели ключей. Экспортируйте его — OpenClaw подставляет ${AITUNNEL_API_KEY} из окружения. Не кладите ключ в JSON: auth читает профили → env → models.providers.*.apiKey.

    Окружение
    export AITUNNEL_API_KEY="sk-aitunnel-xxx"

    Чтобы переменная жила между сессиями, добавьте её в ~/.zshrc / ~/.bashrc.

  3. Файл ~/.openclaw/openclaw.json

    apiopenai-completions, baseUrl — с /v1. Модель в агенте — провайдер/id, id как в каталоге. Реф режется по первому /: aitunnel/claude-sonnet-4.6.

    openclaw.json
    {
      "models": {
        "mode": "merge",
        "providers": {
          "aitunnel": {
            "baseUrl": "https://api.aitunnel.ru/v1",
            "apiKey": "${AITUNNEL_API_KEY}",
            "api": "openai-completions",
            "models": [
              {
                "id": "claude-sonnet-4.6",
                "name": "Claude Sonnet 4.6",
                "reasoning": true,
                "input": ["text", "image"]
              },
              {
                "id": "gemini-3.7-flash",
                "name": "Gemini 3.7 Flash",
                "input": ["text", "image"]
              }
            ]
          }
        }
      },
      "agents": {
        "defaults": {
          "model": {
            "primary": "aitunnel/claude-sonnet-4.6",
            "fallbacks": ["aitunnel/gemini-3.7-flash"]
          },
          "utilityModel": "aitunnel/gemini-3.7-flash"
        }
      }
    }

    models.providers.*.models[] регистрирует модель. agents.defaults.models — только алиасы и параметры. Для картинок у модели укажите ["text", "image"] в input.

  4. Онбординг и Gateway

    Терминал
    openclaw doctor
    openclaw onboard --install-daemon
    openclaw gateway status
    openclaw dashboard

    Онбординг сначала ищет уже настроенные модели и ключи в env, гоняет живой completion и только потом ставит workspace, Gateway и daemon. Control UI по умолчанию — http://127.0.0.1:18789/. Каналы (быстрее всего Telegram) — после этого: openclaw channels add или openclaw configure.

Custom Provider в мастере

Если конфиг ещё не писали: openclaw onboard --classic → Model/Auth → Custom Provider → OpenAI-compatible → https://api.aitunnel.ru/v1 → ключ → id claude-sonnet-4.6.

Classic wizard
openclaw onboard --classic

Ключ в auth-профиле

Вместо apiKey в JSON можно сохранить ключ в store провайдера:

auth profile
printf '%s\n' "$AITUNNEL_API_KEY" | openclaw models auth paste-api-key --provider aitunnel

Модели и fallback

Сменить основную без правки JSON:

models
openclaw models set aitunnel/claude-sonnet-4.6
openclaw models fallbacks add aitunnel/gemini-3.7-flash
openclaw models status
openclaw models list --provider aitunnel

В чате — /model, /model list, /model aitunnel/claude-sonnet-4.6. Пользовательский /model строгий: если модель недоступна, сессия не уйдёт в fallback. Цепочка fallbacks работает для дефолта из конфига.

utilityModel — дешёвая модель для заголовков сессий и коротких служебных задач. Удобный кандидат — gemini-3.7-flash. Если не задать, OpenClaw возьмёт small-model провайдера или основную.

Каналы живут в channels.telegram, channels.discord и т.д. Отдельная модель на мессенджер — второй агент и bindings, не корневые ключи telegram / discord.

Команды

openclaw doctor, openclaw doctor --fix, openclaw gateway status|start|stop|restart, openclaw dashboard, openclaw models status|list|set, openclaw channels add, openclaw configure.

Устранение неполадок

  • No API key found for provider 'aitunnel'. Есть AITUNNEL_API_KEY в shell, либо apiKey / auth-профиль. openclaw models status, openclaw models auth list --provider aitunnel.
  • 401 / 403. Ключ живой в панели ключей, баланс положительный, baseUrlhttps://api.aitunnel.ru/v1 /v1, без слеша в конце).
  • Model not found / not allowed. Id как в каталоге: claude-sonnet-4.6, не anthropic/claude-sonnet-4.6. Реф агента — aitunnel/claude-sonnet-4.6. Модель должна быть в models.providers.aitunnel.models[]. Если задан agents.defaults.modelPolicy.allow — добавьте реф или aitunnel/*.
  • Онбординг уводит в OpenAI / OpenRouter. Выбран не Custom Provider. Допишите openclaw.json и снова openclaw onboard, либо --classic.
  • Gateway не стартует. Конфиг строго валидируется. openclaw doctor, при необходимости openclaw doctor --fix.
  • Запросы не в панели. primary указывает не на aitunnel/…. openclaw models status.
  • openclaw не в PATH. После установщика откройте новый терминал. Для npm — глобальный bin в PATH.
  • Приватность. AITUNNEL не логирует исходный код промптов. Не коммитьте openclaw.json с ключом.

Смотрите также