Open WebUI и n8n с OpenClaw: как да ги свържеш
Три програми, три различни роли: Open WebUI е чат прозорецът, n8n е машината за работни процеси, OpenClaw е асистентът, който действа. Тук виждаш кой с кого и по кой вход може да говори — по официалните документации, не по предположения.
/api/messages и команда openclaw message send --to. В документацията на OpenClaw такъв адрес няма, а командата приема --target. Истинските входове са три: OpenAI-съвместим адрес /v1/chat/completions, входящи куки (webhooks) /hooks/agent и /hooks/wake, и командата openclaw message send. Всички са изключени по подразбиране.Open WebUI → OpenClaw вече има официален наръчник: добавя се като връзка към
/v1, не чрез „функции“. В n8n няма „Nextcloud Trigger“ — Nextcloud възелът има само действия. Примерът с JSON за импорт е махнат: той съдържаше ключ за достъп и не беше пускан. Добавени са още: ключове в сейф, не в кода; 200 от кука не значи „готово“; защо връзката към /v1 е пълен достъп./v1/chat/completions от n8n (по формата на OpenAI), доставката през кука от OpenClaw към n8n и поведението на възела „Execute Command“ в n8n 2.x. Маркирани са с ⚠️.01Какво ще научиш
- Каква е ролята на Open WebUI, на n8n и на OpenClaw — и защо не са едно и също.
- Кои са входовете на OpenClaw според документацията и с какъв ключ се ползва всеки.
- Как да пуснеш OpenClaw като „модел“ в Open WebUI и да си говориш с него.
- Как n8n да събуди агента с HTTP заявка — и как да вземе отговора му обратно.
- Как OpenClaw да изпрати резултат към n8n (обратната посока).
- Какво са Инструментите на Open WebUI и кога те са по-добрият вход.
- Как да го пазиш безопасно: ключове, обхват, „данните са данни“, човек в цикъла.
02Преди да започнеш
- Имаш работещ OpenClaw с Gateway (провери с
openclaw gateway status) — виж DevStation, Обучение 3. Нужен е Node.js 24.16+ или 26.1+. - Имаш Open WebUI 🔒 локално — към 31.08.2026 най-новата версия в дневника на промените е 0.11.3. Ако е в Docker, помни, че от контейнера хостът се вижда като
host.docker.internal, не катоlocalhost. - Имаш n8n 2.x 🔒 локално (виж същия урок от DevStation).
- Знаеш къде се пази конфигурацията на OpenClaw и можеш да я редактираш; след промяна се пуска
openclaw config validateиopenclaw gateway restart. - Имаш сейф за ключове (мениджър на пароли или тайните на n8n). Никой ключ не се пише в тялото на заявка, в работен процес за споделяне или в страница като тази.
/v1 е пълен достъп до агента03Стъпки
-
Кой с кого говори
Първо картата. Защо? Защото най-честата грешка е да търсиш „един адрес на OpenClaw“ — а те са няколко и всеки върши друго.
Посока Вход Ключ Връща отговор? Човек в Open WebUI → OpenClaw OpenAI-съвместим /v1(моделopenclaw/default)ключ на Gateway да, като чат n8n → OpenClaw (пусни задача) кука /hooks/agent(или/hooks/wake)отделен ключ за куките не — само „приета“; отговорът отива в канал n8n → OpenClaw (вземи отговор) /v1/chat/completionsключ на Gateway да, в отговора на заявката OpenClaw → n8n автоматизация с --webhookкъм Webhook възелключ за доставка към куката на n8n n8n получава резултата Open WebUI → n8n Инструмент на Open WebUI, който вика Webhook на n8n твой (от сейфа) да, през Инструмента Трите програми се допълват, не се заместват: Open WebUI за разговор, n8n за повтарящи се процеси, OpenClaw за действия с инструменти.
-
Включи OpenAI-съвместимия адрес на OpenClaw
По подразбиране е изключен. Добави в конфигурацията (слива се със съществуващата), валидирай и рестартирай Gateway. Защо отделно включване? Защото е пълен достъп (виж предупреждението горе) — OpenClaw не го отваря без твое решение.
json5 · конфигурация на OpenClaw{ gateway: { http: { endpoints: { chatCompletions: { enabled: true }, }, }, }, }bashopenclaw config validate openclaw gateway restartGateway иска ключ. В режим
tokenтой се задава вgateway.auth.tokenили в променливатаOPENCLAW_GATEWAY_TOKEN; държи го в сейфа. Провери, че адресът отговаря:bashcurl -s http://<ХОСТ>:<ПОРТ_НА_GATEWAY>/v1/models \ -H "Authorization: Bearer <GATEWAY_КЛЮЧ>"В списъка трябва да видиш
openclaw,openclaw/defaultиopenclaw/<име-на-агент>. Това са агенти, не модели на доставчик — полето „model“ в заявката избира към кой агент да отиде. -
Свържи Open WebUI с OpenClaw
Open WebUI говори с всеки сървър, който следва OpenAI Chat Completions протокола — това е основната му идея, затова не са нужни добавки. В документацията на Open WebUI има отделен наръчник „Connect an Agent → OpenClaw“. Стъпките:
- Отвори Settings → Admin → Connections и в „Manage OpenAI API Connections“ натисни ➕ Add Connection.
- URL:
http://<ХОСТ>:<ПОРТ_НА_GATEWAY>/v1. Ако Open WebUI е в Docker — хостhost.docker.internal. - API ключ: ключът на Gateway (от сейфа).
- Провери връзката и запази. В падащия списък с модели трябва да се появи
openclaw/default.
Без
/v1в края откриването на модели не работи. Ако проверката минава, а моделите не се зареждат — виж точния адрес; ако „connection refused“ — проверка на порта и наopenclaw gateway status.💡Без памет между заявките — освен ако…Адресът е без състояние по подразбиране: всяка заявка е нова сесия. Ако заявката носи полеuser, Gateway извежда стабилна сесия от него и разговорът се пази. За чат в Open WebUI това е удобно; за n8n — решавай съзнателно.⚠️Кой още стига до агентаЩом връзката е в Admin → Connections, всеки потребител на Open WebUI, който вижда този модел, говори с агента с неговите инструменти. Това е нашето четене на документацията, не цитат от нея: ограничи кой вижда модела и дай на агента само инструментите, които му трябват.🧩Open WebUI може и направо към Ollama — без агентАко искаш само да си говориш с локален модел (без инструментите на OpenClaw), свържи Open WebUI директно с Ollama: в Settings → Admin → Connections → Manage Ollama API Connections адресът еhttp://host.docker.internal:11434, когато Open WebUI е в Docker, а Ollama — на хоста (или при стартиране — променливатаOLLAMA_BASE_URL). Docker примерът от документацията:docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data -e WEBUI_SECRET_KEY=<ТАЙНА> --name open-webui ghcr.io/open-webui/open-webui:main— после Open WebUI е наhttp://localhost:3000. Двете връзки (Ollama и OpenClaw) могат да стоят една до друга: моделите на Ollama за бърз разговор,openclaw/default— когато трябва агентът да действа.Има и втори, общностен начин — приставка „Channels“, която прави бота участник в канали на Open WebUI. Тя не се поддържа нито от Open WebUI, нито от OpenClaw и тук не я разглеждаме.
-
От n8n към OpenClaw: куката
/hooks/agentИскаш един работен процес в n8n да „събуди“ агента със задача. Защо кука, а не
/v1? Защото има собствен, по-тесен ключ и собствен списък с разрешени агенти. Включи я (и я дръж изключена, докато не ти трябва):json5 · конфигурация на OpenClaw{ hooks: { enabled: true, token: "<ДЪЛГ-СЛУЧАЕН-НИЗ-САМО-ЗА-КУКИТЕ>", path: "/hooks", allowedAgentIds: ["main"], allowRequestSessionKey: false, }, }Ключът на куките е различен от ключа на Gateway. Рестартирай, после пробвай от терминала:
bashcurl --include http://<ХОСТ>:<ПОРТ_НА_GATEWAY>/hooks/agent \ -H "Authorization: Bearer <КЛЮЧ_ЗА_КУКИ>" \ -H "Content-Type: application/json" \ -H "Idempotency-Key: test-001" \ --data '{"message":"Обобщи в едно изречение: примерният внос приключи.","name":"Проба","agentId":"main","deliver":false}'Очакваш HTTP
200и{"ok":true,"runId":"…"}. Това значи само, че задачата е приета — не че моделът е приключил или че нещо е изпратено. Отговорът на модела не се връща в тази заявка; с"waitForCompletion": trueполучаваш само състоянието на изпълнението. Разгледай резултата в дневника:openclaw logs --follow.В n8n използвай възела HTTP Request:
- Метод
POST, URLhttp://host.docker.internal:<ПОРТ_НА_GATEWAY>/hooks/agent(n8n е в контейнер, OpenClaw — на хоста). - Удостоверяване: Generic Credential Type → Header Auth, име
Authorization, стойностBearer <КЛЮЧ_ЗА_КУКИ>. Ключът живее в удостоверенията на n8n, не в полето на възела. - Тяло — JSON (виж стъпка 6). Куките приемат само
POST; ключ в адреса (?token=…) се отхвърля.
Код при грешка:
401— грешен ключ (не този на Gateway);404— куките не са включени или пътят е различен;429— твърде много грешни опита. - Метод
-
От n8n към OpenClaw — когато ти трябва отговорът
Ако следващият възел в n8n трябва да ползва отговора на агента, куката не върши работа. Извикай OpenAI-съвместимия адрес с HTTP Request:
POST …/v1/chat/completions, ключ на Gateway, тяло във формата на OpenAI (model: "openclaw/default",messages: […]). Пробвай първо от терминала:bashcurl -s http://<ХОСТ>:<ПОРТ_НА_GATEWAY>/v1/chat/completions \ -H "Authorization: Bearer <GATEWAY_КЛЮЧ>" \ -H "Content-Type: application/json" \ -d '{"model":"openclaw/default","messages":[{"role":"user","content":"Отговори с една дума: здравей."}]}'⚠️ От n8n не сме го пускали; формата е стандартният на OpenAI. Помни и обратното на стъпка 3: това е пълен достъп — не подавай на агента непроверено съдържание от външния свят с включени опасни инструменти. Един „мозък“ на процес: n8n има и собствен възел „AI Agent“ със свой модел; не връзвай агент в агент, ако не ти е нужно.
-
Примерен процес: външно събитие → кратко известие
Задача: когато някоя система съобщи „нов файл“, агентът да обобщи и да пише в чат канал. Тригер: възелът Webhook на n8n — той има два адреса, тестов (докато слушаш) и производствен (след публикуване на процеса). Защити го: в „Authentication“ избери Header auth (или JWT), по желание и „IP(s) Allowlist“.
⚠️Няма „Nextcloud Trigger“Nextcloud възелът в n8n умее файлове, папки и потребители — но няма тригер за събития. За „нов файл“ имаш два пътя: система, която сама вика твоя Webhook (⚠️ дали и как го прави Nextcloud в твоята версия не сме проверявали), или Schedule Trigger на всеки няколко минути + Nextcloud „Return the contents of a folder“ и сравнение със запомнения списък.Следващият възел — Code — прави заявката за агента:
javascript · Code възел// n8n · Code node · Run Once for All Items // Вход: тялото, което е изпратила външната система към Webhook възела const b = $input.first().json.body; const event = `Нов файл: ${b.name} (папка: ${b.folder})`; return [{ json: { message: `Обобщи накратко за екипа това събитие и кажи дали иска действие: ${event}`, name: 'Нов файл', }, }];И накрая HTTP Request към
/hooks/agent. За да пише агентът директно в чат канал, трябват и двете —channelиto; ако е само едното, заявката пада с400.json · тяло на HTTP Request{ "message": "{{ $json.message }}", "name": "{{ $json.name }}", "agentId": "main", "deliver": true, "channel": "<КАНАЛ>", "to": "<ЦЕЛ_В_КАНАЛА>" }Формат на целта зависи от канала (напр. за Discord —
channel:<id>); виж „openclaw message“ в документацията. Ако искаш само да изпратиш готово съобщение, без агент, има и команда:bashopenclaw message send --channel discord --target channel:<ID_НА_КАНАЛА> --message "Готово."Тя е на хоста на OpenClaw — от контейнера на n8n не е достъпна директно. ⚠️ Възелът „Execute Command“ в n8n 2.x е, доколкото знаем, изключен по подразбиране; предпочети куката.
-
Обратната посока: OpenClaw към n8n
OpenClaw може да изпрати завършен резултат на автоматизация към HTTP адрес. Създай график и сочи към производствения адрес на Webhook възела:
bashopenclaw automations create "0 18 * * 1-5" \ "Обобщи днешните промени като JSON." \ --name "Дневен преглед" \ --webhook "https://<АДРЕС_НА_N8N>/webhook/<ПЪТ>"Доставката с
--webhookсе ползва вместо чат доставка, не заедно. Ключът за доставката еcron.webhookToken(праща се катоAuthorization: Bearer …) — задай го от сейфа и същото изискване сложи на Webhook възела в n8n. Адрес в частна мрежа се блокира от строгата защита; за доверен локален приемник се добавя изключение вcron.webhookSsrfPolicy(тясно, по име на хост). ⚠️ Тази посока не е пускана от нас. -
Open WebUI → n8n: Инструмент
Open WebUI има няколко вида „инструменти“: вградени функции, Workspace Tools (Python, изпълняван в самия Open WebUI), външни сървъри по MCP и OpenAPI. Най-простият начин моделът да пусне работен процес в n8n е малък Workspace Tool, който вика Webhook:
python · Workspace Tool (по модела на документацията)import requests class Tools: def start_workflow(self, text: str) -> str: """Пуска работен процес в n8n и връща отговора му.""" r = requests.post( "https://<АДРЕС_НА_N8N>/webhook/<ПЪТ>", json={"text": text}, headers={"<ИМЕ_НА_ЗАГЛАВИЕ>": "<СТОЙНОСТ_ОТ_СЕЙФА>"}, timeout=30, ) return r.text🔐Workspace Tools са код на сървъраДокументацията на Open WebUI предупреждава: Инструментите изпълняват произволен Python на сървъра; правото да ги създава или внася е като право на команден ред. Давай го само на доверени администратори и преглеждай кода преди внос. Ключа дръж в самия Инструмент (сървърна страна), не в чата.Освен Инструменти, Open WebUI има Функции (добавки като „pipe“, „filter“, „action“) и отделни Pipelines. За връзка с OpenClaw не са нужни — там стига обикновената връзка от стъпка 3.
-
Сигурност: правилата на тази връзка
🔐Запомни• Два ключа, две роли: ключ на Gateway (пълен достъп) и отделен ключ за куките.
• Всички ключове — в сейф или удостоверенията на n8n; никога в JSON за споделяне, в скрийншот или в кода на Инструмента, който не е твой.
• СамоallowedAgentIdsс един нужен агент;allowRequestSessionKey: false.
• Гласът на външния свят е данни: агентът се пази от вмъкнати указания, но опаковката не маха инструментите му. За недоверено съдържание ползвай агент с ограничени инструменти.
• Локален, частен или през HTTPS с доверен посредник — никога гол достъп от интернет.
• За действия с реален ефект (пари, изтриване, съобщения навън) — човек потвърждава.
04Проверка
Чеклист
openclaw gateway statusе наред;/v1/modelsвръщаopenclaw/default.- В Open WebUI връзката е проверена, а моделът
openclaw/defaultотговаря в чат. - Куката връща
200сrunId, а вopenclaw logs --followвиждаш изпълнението. - Ключът на куките е различен от ключа на Gateway и стои в удостоверенията на n8n.
- Webhook възелът на n8n е с удостоверяване; използваш производствения адрес след публикуване.
- Знаеш дали ти трябва отговорът в n8n (тогава
/v1) или само задача (кука). - В Open WebUI е ограничено кой вижда модела на агента.
Тест
1. Кой адрес слагаш в връзка на Open WebUI, за да говориш с OpenClaw?
2. n8n трябва да вземе ОТГОВОРА на агента и да го ползва в следващ възел. Кой вход е подходящ?
3. Какво означава HTTP 200 от /hooks/agent?
4. Къде е правилно да стои ключът за куките?
05Какво следва
06Източници
- OpenClaw: OpenAI chat completions — изключен по подразбиране, модел = цел-агент, граница на сигурност, ключ.
- OpenClaw: входящи куки —
/hooks/agent,/hooks/wake, ключ, кодове, предупреждения. - OpenClaw: управление на автоматизации —
--webhook,cron.webhookToken, политика за изходящи адреси. - OpenClaw:
openclaw message—send,--target, формати на цел. - Open WebUI: свързване с OpenClaw · OpenAI-съвместими връзки — Admin → Connections,
/v1. - Open WebUI: Инструменти — Workspace Tools, MCP, OpenAPI, предупреждение за сигурност · дневник на промените.
- n8n: Webhook възел — тестов и производствен адрес, удостоверяване, IP списък · n8n: Nextcloud възел — само действия.