Các nút
Một node là một thiết bị đồng hành (macOS/iOS/Android/headless) kết nối tới WebSocket của Gateway (cùng cổng với operators) vớirole: "node" và cung cấp bề mặt lệnh (ví dụ: canvas.*, camera.*, system.*) thông qua node.invoke. Chi tiết giao thức: Gateway protocol.
Vận chuyển cũ: Bridge protocol (TCP JSONL; đã lỗi thời/loại bỏ cho các node hiện tại).
macOS cũng có thể chạy ở node mode: ứng dụng menubar kết nối tới máy chủ WS của Gateway và mở các lệnh canvas/camera cục bộ của nó như một node (vì vậy openclaw nodes … hoạt động với máy Mac này).
Ghi chú:
- Nodes là thiết bị ngoại vi, không phải gateway. Chúng không chạy dịch vụ gateway.
- Tin nhắn Telegram/WhatsApp/v.v. đi vào gateway, không vào node.
- Runbook xử lý sự cố: /nodes/troubleshooting
Ghép cặp + trạng thái
WS nodes sử dụng ghép cặp thiết bị. Nodes trình bày danh tính thiết bị trong quá trìnhconnect; Gateway tạo yêu cầu ghép cặp thiết bị cho role: node. Phê duyệt qua CLI (hoặc UI) của thiết bị.
CLI nhanh:
nodes statusđánh dấu một node là đã ghép cặp khi vai trò ghép cặp thiết bị của nó bao gồmnode.node.pair.*(CLI:openclaw nodes pending/approve/reject) là một kho ghép cặp node riêng do gateway sở hữu; nó không chặn bắt tay WSconnect.
Máy chủ node từ xa (system.run)
Sử dụng node host khi Gateway của bạn chạy trên một máy và bạn muốn các lệnh được thực thi trên máy khác. Mô hình vẫn giao tiếp với gateway; gateway chuyển tiếp các lệnhexec tới node host khi chọn host=node.
Cái gì chạy ở đâu
- Gateway host: nhận tin nhắn, chạy mô hình, định tuyến các lời gọi công cụ.
- Node host: thực thi
system.run/system.whichtrên máy node. - Phê duyệt: được áp dụng trên node host thông qua
~/.openclaw/exec-approvals.json.
Khởi động node host (foreground)
Trên máy node:Gateway từ xa qua đường hầm SSH (ràng buộc loopback)
Nếu Gateway bind vào loopback (gateway.bind=loopback, mặc định ở chế độ local), các node host từ xa không thể kết nối trực tiếp. Tạo một đường hầm SSH và trỏ node host tới đầu cục bộ của đường hầm.
Ví dụ (node host -> gateway host):
- Token là
gateway.auth.tokentừ cấu hình gateway (~/.openclaw/openclaw.jsontrên gateway host). openclaw node runđọcOPENCLAW_GATEWAY_TOKENđể xác thực.
Khởi động node host (dịch vụ)
Ghép cặp + đặt tên
Trên gateway host:--display-nametrênopenclaw node run/openclaw node install(lưu trong~/.openclaw/node.jsontrên node).openclaw nodes rename --node <id|name|ip> --name "Build Node"(ghi đè từ gateway).
Cho phép danh sách lệnh
Phê duyệt exec là theo từng node host. Add allowlist entries from the gateway:~/.openclaw/exec-approvals.json.
Trỏ exec tới node
Cấu hình mặc định (cấu hình gateway):exec với host=node sẽ chạy trên node host (tuân theo
allowlist/phê duyệt của node).
Liên quan:
Gọi lệnh
Mức thấp (RPC thô):Ảnh chụp màn hình (canvas snapshots)
Nếu node đang hiển thị Canvas (WebView),canvas.snapshot trả về { format, base64 }.
Trợ giúp CLI (ghi ra tệp tạm và in MEDIA:<path>):
Điều khiển Canvas
canvas presentchấp nhận URL hoặc đường dẫn tệp cục bộ (--target), kèm--x/--y/--width/--heighttùy chọn để định vị.canvas evalchấp nhận JS nội tuyến (--js) hoặc một đối số vị trí.
A2UI (Canvas)
- Chỉ hỗ trợ A2UI v0.8 JSONL (v0.9/createSurface bị từ chối).
Ảnh + video (camera node)
Ảnh (jpg):
mp4):
- Node phải ở foreground để
canvas.*vàcamera.*hoạt động (gọi nền trả vềNODE_BACKGROUND_UNAVAILABLE). - Thời lượng clip bị giới hạn (hiện tại
<= 60s) để tránh payload base64 quá lớn. - Android sẽ yêu cầu quyền
CAMERA/RECORD_AUDIOkhi có thể; nếu bị từ chối sẽ thất bại với*_PERMISSION_REQUIRED.
Ghi màn hình (nodes)
Nodes cung cấpscreen.record (mp4). Ví dụ:
screen.recordyêu cầu ứng dụng node ở foreground.- Android sẽ hiển thị lời nhắc hệ thống chụp màn hình trước khi ghi.
- Ghi màn hình bị giới hạn ở
<= 60s. --no-audiotắt thu mic (hỗ trợ trên iOS/Android; macOS dùng âm thanh ghi hệ thống).- Dùng
--screen <index>để chọn màn hình khi có nhiều màn hình.
Vị trí (nodes)
Nodes cung cấplocation.get khi Location được bật trong cài đặt.
Trợ giúp CLI:
- Location tắt theo mặc định.
- “Always” yêu cầu quyền hệ thống; lấy nền là best-effort.
- Phản hồi bao gồm lat/lon, độ chính xác (mét) và dấu thời gian.
SMS (Android nodes)
Node Android có thể cung cấpsms.send khi người dùng cấp quyền SMS và thiết bị hỗ trợ thoại.
Gọi mức thấp:
- Lời nhắc quyền phải được chấp nhận trên thiết bị Android trước khi khả năng được quảng bá.
- Thiết bị chỉ Wi‑Fi không có thoại sẽ không quảng bá
sms.send.
Lệnh hệ thống (node host / mac node)
Node macOS cung cấpsystem.run, system.notify, và system.execApprovals.get/set.
Node host headless cung cấp system.run, system.which, và system.execApprovals.get/set.
Ví dụ:
system.runtrả về stdout/stderr/mã thoát trong payload.system.notifytuân theo trạng thái quyền thông báo trên ứng dụng macOS.system.runhỗ trợ--cwd,--env KEY=VAL,--command-timeout, và--needs-screen-recording.system.notifyhỗ trợ--priority <passive|active|timeSensitive>và--delivery <system|overlay|auto>.- Các node host bỏ qua các ghi đè
PATH. Nếu bạn cần thêm các mục PATH, hãy cấu hình môi trường dịch vụ node host (hoặc cài đặt công cụ ở các vị trí tiêu chuẩn) thay vì truyềnPATHqua--env. - Ở chế độ node macOS,
system.runbị kiểm soát bởi phê duyệt exec trong ứng dụng macOS (Settings → Exec approvals). Ask/allowlist/full hoạt động giống như node host headless; các prompt bị từ chối trả vềSYSTEM_RUN_DENIED. - Trên node host headless,
system.runbị chặn bởi phê duyệt exec (~/.openclaw/exec-approvals.json).
Ràng buộc exec với node
Khi có nhiều node khả dụng, bạn có thể ràng buộc exec với một node cụ thể. Điều này đặt node mặc định choexec host=node (và có thể bị ghi đè theo từng agent).
Mặc định toàn cục:
Bản đồ quyền
Nodes có thể bao gồm một bản đồpermissions trong node.list / node.describe, được khóa theo tên quyền (ví dụ: screenRecording, accessibility) với giá trị boolean (true = đã cấp).
Node host headless (đa nền tảng)
OpenClaw có thể chạy một headless node host (không UI) kết nối tới WebSocket của Gateway và cung cấpsystem.run / system.which. This is useful on Linux/Windows
or for running a minimal node alongside a server.
Khởi động:
- Vẫn cần ghép cặp (Gateway sẽ hiển thị lời nhắc phê duyệt node).
- Node host lưu node id, token, tên hiển thị và thông tin kết nối gateway trong
~/.openclaw/node.json. - Phê duyệt exec được áp dụng cục bộ qua
~/.openclaw/exec-approvals.json(xem Exec approvals). - Trên macOS, headless node host ưu tiên exec host của ứng dụng đồng hành khi có thể kết nối và sẽ chuyển sang thực thi cục bộ nếu ứng dụng không khả dụng. Đặt
OPENCLAW_NODE_EXEC_HOST=appđể yêu cầu ứng dụng, hoặcOPENCLAW_NODE_EXEC_FALLBACK=0để vô hiệu hóa fallback. - Thêm
--tls/--tls-fingerprintkhi Gateway WS dùng TLS.
Chế độ node macOS
- Ứng dụng menubar macOS kết nối tới máy chủ WS của Gateway như một node (vì vậy
openclaw nodes …hoạt động với máy Mac này). - Ở chế độ từ xa, ứng dụng mở một đường hầm SSH cho cổng Gateway và kết nối tới
localhost.