Przegląd architektury
Sercem OpenClaw jest scentralizowany system Gateway, który zarządza wszystkimi platformami komunikacyjnymi — WhatsApp, Telegram, Slack, Discord, Signal, iMessage, WebChat — przez jednego demona. Klienci control-plane i węzły (Nodes) łączą się przez WebSocket na skonfigurowanym hoście (domyślnie 127.0.0.1:18789).
Kluczowe komponenty
Gateway (demon)
Gateway utrzymuje połączenia z providerami kanałów, udostępnia typowane API WebSocket, waliduje ramki względem schematu JSON Schema i emituje zdarzenia: agent, chat, presence, health, heartbeat i sygnały cron.
Klienci
Aplikacje takie jak macOS app, CLI i panel webowy (web admin) utrzymują indywidualne połączenia WebSocket, wysyłając żądania i subskrybując zdarzenia. Każdy klient identyfikuje się urządzeniem podczas połączenia.
Węzły (Nodes)
Urządzenia — macOS, iOS, Android, headless — łączą się z rolą node, dostarczając tożsamość urządzenia i uzyskując dostęp do poleceń typu canvas.*, camera.*, screen.record, location.get.
Protokół połączeń
Protokół przewodowy używa WebSocket z ładunkami JSON. Pierwsza ramka musi być ramką connect. Kolejna komunikacja odbywa się w formacie żądanie-odpowiedź:
// Żądanie
{ "type": "req", "id": "abc123", "method": "agent", "params": {...} }
// Odpowiedź
{ "type": "res", "id": "abc123", "ok": true, "payload": {...} }
Uwierzytelnianie
System wspiera kilka metod uwierzytelniania:
- Token współdzielony (shared secret)
- Weryfikacja tożsamości Tailscale
- Nagłówki zaufanego proxy — zależnie od konfiguracji
Bezpieczeństwo i parowanie urządzeń
Wszystkie klienty dołączają tożsamość urządzenia podczas połączenia. Nowe urządzenia wymagają zatwierdzenia parowania przed otrzymaniem tokenu urządzenia. Połączenia lokalne (loopback) mogą być zatwierdzane automatycznie, podczas gdy połączenia zdalne wymagają jawnego zatwierdzenia. System przypina metadane parowania i wymaga ponownego parowania, jeśli zmieni się platforma lub rodzina urządzenia.
Dostęp zdalny
Preferowane metody dostępu zdalnego to Tailscale lub VPN. Obsługiwane jest również tunelowanie SSH:
ssh -N -L 18789:127.0.0.1:18789 user@host
Uruchamianie i monitoring
Gateway uruchamia się poleceniem openclaw gateway. Monitorowanie stanu odbywa się metodą WebSocket health. Automatyczny restart można skonfigurować przez launchd (macOS) lub systemd (Linux).