CLI commands
Gateway
Gateway คือเซิร์ฟเวอร์ WebSocket ของ OpenClaw (ช่องทาง, โหนด, เซสชัน, ฮุก) คำสั่งย่อยในหน้านี้อยู่ภายใต้ openclaw gateway …
การตั้งค่า mDNS ภายในเครื่อง + DNS-SD แบบพื้นที่กว้าง
วิธีที่ OpenClaw ประกาศและค้นหาเกตเวย์
คีย์การกำหนดค่าเกตเวย์ระดับบนสุด
เรียกใช้ Gateway
เรียกใช้กระบวนการ Gateway ในเครื่อง:
openclaw gateway
นามแฝงโหมด foreground:
openclaw gateway run
พฤติกรรมการเริ่มทำงาน
- โดยค่าเริ่มต้น Gateway จะปฏิเสธการเริ่มทำงาน เว้นแต่จะตั้งค่า
gateway.mode=localใน~/.openclaw/openclaw.jsonใช้--allow-unconfiguredสำหรับการเรียกใช้แบบเฉพาะกิจ/พัฒนา openclaw onboard --mode localและopenclaw setupคาดว่าจะเขียนgateway.mode=localหากไฟล์มีอยู่แต่ไม่มีgateway.modeให้ถือว่าเป็นการกำหนดค่าที่เสียหายหรือถูกเขียนทับ และซ่อมแซมแทนการสันนิษฐานโหมด local โดยนัย- หากไฟล์มีอยู่และไม่มี
gateway.modeGateway จะถือว่าเป็นความเสียหายของการกำหนดค่าที่น่าสงสัย และจะปฏิเสธการ "เดาเป็น local" ให้คุณ - การ bind นอกเหนือจาก loopback โดยไม่มีการยืนยันตัวตนจะถูกบล็อก (ราวกั้นความปลอดภัย)
SIGUSR1จะทริกเกอร์การรีสตาร์ทภายในกระบวนการเมื่อได้รับอนุญาต (commands.restartเปิดใช้งานตามค่าเริ่มต้น; ตั้งค่าcommands.restart: falseเพื่อบล็อกการรีสตาร์ทด้วยตนเอง ขณะที่การใช้/อัปเดตเครื่องมือ/การกำหนดค่า gateway ยังคงอนุญาต)- ตัวจัดการ
SIGINT/SIGTERMจะหยุดกระบวนการ gateway แต่จะไม่คืนค่าสถานะเทอร์มินัลแบบกำหนดเองใด ๆ หากคุณห่อ CLI ด้วย TUI หรืออินพุตแบบ raw-mode ให้คืนค่าเทอร์มินัลก่อนออก
ตัวเลือก
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tcG9ydCA8cG9ydA
" type="number">
พอร์ต WebSocket (ค่าเริ่มต้นมาจาก config/env; โดยปกติคือ 18789)
"--bind"--authOPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tdG9rZW4gPHRva2Vu
" type="string">
การแทนที่โทเค็น (ยังตั้งค่า OPENCLAW_GATEWAY_TOKEN สำหรับกระบวนการด้วย)
"--password"--tailscale--tailscale-reset-on-exitbooleanรีเซ็ตการกำหนดค่า serve/funnel ของ Tailscale เมื่อปิด
--allow-unconfiguredbooleanอนุญาตให้ gateway เริ่มทำงานโดยไม่มี gateway.mode=local ในการกำหนดค่า ข้าม guard การเริ่มทำงานสำหรับ bootstrap แบบเฉพาะกิจ/พัฒนาเท่านั้น; ไม่เขียนหรือซ่อมแซมไฟล์การกำหนดค่า
--devbooleanสร้าง config สำหรับ dev + workspace หากไม่มี (ข้าม BOOTSTRAP.md)
--resetbooleanรีเซ็ต config สำหรับ dev + ข้อมูลประจำตัว + เซสชัน + workspace (ต้องใช้ --dev)
--forcebooleanฆ่า listener ที่มีอยู่บนพอร์ตที่เลือกก่อนเริ่มทำงาน
--verbosebooleanล็อกแบบละเอียด
--cli-backend-logsbooleanแสดงเฉพาะล็อก backend ของ CLI ในคอนโซล (และเปิดใช้งาน stdout/stderr)
"--ws-log--compactbooleanนามแฝงสำหรับ --ws-log compact
--raw-streambooleanบันทึกเหตุการณ์สตรีมโมเดลดิบลง jsonl
รีสตาร์ท Gateway
openclaw gateway restart
openclaw gateway restart --safe
openclaw gateway restart --force
openclaw gateway restart --safe จะขอให้ Gateway ที่กำลังทำงานตรวจล่วงหน้างาน OpenClaw ที่ยัง active ก่อนรีสตาร์ท หากมีการดำเนินการในคิว การส่งคำตอบ การเรียกใช้แบบฝัง หรือ task runs ที่ยัง active อยู่ Gateway จะรายงานตัวบล็อก รวมคำขอรีสตาร์ทแบบปลอดภัยที่ซ้ำกัน และรีสตาร์ทเมื่อ active work ระบายหมดแล้ว restart แบบธรรมดาจะคงพฤติกรรม service-manager เดิมเพื่อความเข้ากันได้ ใช้ --force เฉพาะเมื่อคุณต้องการเส้นทางแทนที่ทันทีอย่างชัดเจนเท่านั้น
การทำโปรไฟล์การเริ่มทำงาน
- ตั้งค่า
OPENCLAW_GATEWAY_STARTUP_TRACE=1เพื่อบันทึก timing ของแต่ละ phase ระหว่างการเริ่มทำงานของ Gateway รวมถึงดีเลย์eventLoopMaxต่อ phase และ timing ของตารางค้นหา plugin สำหรับ installed-index, manifest registry, startup planning และงาน owner-map - ตั้งค่า
OPENCLAW_DIAGNOSTICS=timelineพร้อมOPENCLAW_DIAGNOSTICS_TIMELINE_PATH=<path>เพื่อเขียน timeline การวินิจฉัยการเริ่มทำงานแบบ JSONL ที่ทำแบบ best-effort สำหรับ harness QA ภายนอก คุณยังสามารถเปิดใช้ flag ด้วยdiagnostics.flags: ["timeline"]ใน config; path ยังคงมาจาก env เพิ่มOPENCLAW_DIAGNOSTICS_EVENT_LOOP=1เพื่อรวมตัวอย่าง event-loop - เรียกใช้
pnpm test:startup:gateway -- --runs 5 --warmup 1เพื่อ benchmark การเริ่มทำงานของ Gateway benchmark จะบันทึกเอาต์พุตกระบวนการแรก,/healthz,/readyz, timing ของ startup trace, ดีเลย์ของ event-loop และรายละเอียด timing ของตารางค้นหา plugin
Query Gateway ที่กำลังทำงาน
คำสั่ง query ทั้งหมดใช้ WebSocket RPC
โหมดเอาต์พุต
- ค่าเริ่มต้น: อ่านได้โดยมนุษย์ (มีสีใน TTY)
--json: JSON ที่เครื่องอ่านได้ (ไม่มี styling/spinner)--no-color(หรือNO_COLOR=1): ปิดใช้งาน ANSI ขณะที่ยังคง layout สำหรับมนุษย์
ตัวเลือกที่ใช้ร่วมกัน
--url <url>: URL WebSocket ของ Gateway--token <token>: โทเค็น Gateway--password <password>: รหัสผ่าน Gateway--timeout <ms>: timeout/budget (แตกต่างกันตามคำสั่ง)--expect-final: รอคำตอบ "final" (agent calls)
gateway health
openclaw gateway health --url ws://127.0.0.1:18789
endpoint HTTP /healthz เป็น liveness probe: จะส่งคืนเมื่อเซิร์ฟเวอร์สามารถตอบ HTTP ได้ endpoint HTTP /readyz เข้มงวดกว่า และยังคงเป็นสีแดงขณะที่ startup plugin sidecars, channels หรือ hooks ที่กำหนดค่าไว้ยังอยู่ระหว่างเข้าที่ การตอบกลับ readiness แบบละเอียดภายในเครื่องหรือที่ยืนยันตัวตนแล้วจะรวมบล็อกการวินิจฉัย eventLoop พร้อมดีเลย์ event-loop, การใช้งาน event-loop, อัตราส่วนคอร์ CPU และ flag degraded
gateway usage-cost
ดึงสรุป usage-cost จากล็อกเซสชัน
openclaw gateway usage-cost
openclaw gateway usage-cost --days 7
openclaw gateway usage-cost --json
"--days gateway stability
ดึงตัวบันทึกความเสถียรการวินิจฉัยล่าสุดจาก Gateway ที่กำลังทำงาน
openclaw gateway stability
openclaw gateway stability --type payload.large
openclaw gateway stability --bundle latest
openclaw gateway stability --bundle latest --export
openclaw gateway stability --json
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tbGltaXQgPGxpbWl0
" type="number" default="25">
จำนวนเหตุการณ์ล่าสุดสูงสุดที่จะรวม (สูงสุด 1000)
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tdHlwZSA8dHlwZQ
" type="string">
กรองตามประเภทเหตุการณ์การวินิจฉัย เช่น payload.large หรือ diagnostic.memory.pressure
"--since-seq--bundle [path]stringอ่าน stability bundle ที่คงไว้แทนการเรียก Gateway ที่กำลังทำงาน ใช้ --bundle latest (หรือแค่ --bundle) สำหรับ bundle ใหม่ล่าสุดใต้ไดเรกทอรี state หรือส่งพาธ JSON ของ bundle โดยตรง
--exportbooleanเขียน zip การวินิจฉัยสำหรับ support ที่แชร์ได้แทนการพิมพ์รายละเอียดความเสถียร
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tb3V0cHV0IDxwYXRo
" type="string">
พาธเอาต์พุตสำหรับ --export
ความเป็นส่วนตัวและพฤติกรรม bundle
- ระเบียนจะเก็บ metadata เชิงปฏิบัติการ: ชื่อเหตุการณ์ จำนวน ขนาดไบต์ ค่าอ่านหน่วยความจำ สถานะคิว/เซสชัน ชื่อ channel/plugin และสรุปเซสชันที่ redacted แล้ว ระเบียนจะไม่เก็บข้อความแชต, webhook bodies, เอาต์พุตเครื่องมือ, raw request หรือ response bodies, tokens, cookies, secret values, hostnames หรือ raw session ids ตั้งค่า
diagnostics.enabled: falseเพื่อปิดใช้งาน recorder ทั้งหมด - เมื่อ Gateway ออกแบบ fatal, shutdown timeouts และความล้มเหลวของการเริ่มทำงานหลัง restart, OpenClaw จะเขียน snapshot การวินิจฉัยเดียวกันไปยัง
~/.openclaw/logs/stability/openclaw-stability-*.jsonเมื่อ recorder มีเหตุการณ์ ตรวจสอบ bundle ใหม่ล่าสุดด้วยopenclaw gateway stability --bundle latest;--limit,--typeและ--since-seqยังใช้กับเอาต์พุต bundle ด้วย
gateway diagnostics export
เขียน diagnostics zip ภายในเครื่องที่ออกแบบมาเพื่อแนบกับรายงานบั๊ก สำหรับโมเดลความเป็นส่วนตัวและเนื้อหา bundle โปรดดู Diagnostics Export
openclaw gateway diagnostics export
openclaw gateway diagnostics export --output openclaw-diagnostics.zip
openclaw gateway diagnostics export --json
"--log-lines"--log-bytes"--url"--token"--password"--timeout--no-stability-bundlebooleanข้ามการค้นหา stability bundle ที่คงไว้
--jsonbooleanพิมพ์พาธที่เขียน ขนาด และ manifest เป็น JSON
export ประกอบด้วย manifest, สรุป Markdown, รูปทรง config, รายละเอียด config ที่ sanitized แล้ว, สรุปล็อกที่ sanitized แล้ว, snapshot status/health ของ Gateway ที่ sanitized แล้ว และ stability bundle ใหม่ล่าสุดเมื่อมีอยู่
ออกแบบมาเพื่อแชร์ โดยเก็บรายละเอียดเชิงปฏิบัติการที่ช่วยในการ debugging เช่น ฟิลด์ล็อก OpenClaw ที่ปลอดภัย, ชื่อ subsystem, status codes, durations, configured modes, ports, plugin ids, provider ids, การตั้งค่าฟีเจอร์ที่ไม่ใช่ความลับ และข้อความล็อกเชิงปฏิบัติการที่ redacted แล้ว โดยจะละเว้นหรือ redact ข้อความแชต, webhook bodies, เอาต์พุตเครื่องมือ, credentials, cookies, account/message identifiers, ข้อความ prompt/instruction, hostnames และ secret values เมื่อข้อความแบบ LogTape ดูเหมือนข้อความ payload ของ user/chat/tool, export จะเก็บไว้เพียงว่าข้อความถูกละเว้นพร้อมจำนวนไบต์ของข้อความนั้น
gateway status
gateway status แสดงบริการ Gateway (launchd/systemd/schtasks) พร้อม probe ทางเลือกของความสามารถ connectivity/auth
openclaw gateway status
openclaw gateway status --json
openclaw gateway status --require-rpc
"--url"--token"--password"--timeout--no-probebooleanข้ามการ probe การเชื่อมต่อ (มุมมองเฉพาะบริการ)
--deepbooleanสแกนบริการระดับระบบด้วย
--require-rpcbooleanยกระดับการ probe การเชื่อมต่อเริ่มต้นให้เป็นการ probe แบบอ่าน และออกด้วยสถานะไม่เป็นศูนย์เมื่อการ probe แบบอ่านนั้นล้มเหลว ใช้ร่วมกับ --no-probe ไม่ได้
ความหมายของสถานะ
gateway statusยังคงพร้อมใช้งานสำหรับการวินิจฉัย แม้เมื่อการกำหนดค่า CLI ในเครื่องหายไปหรือไม่ถูกต้องgateway statusเริ่มต้นพิสูจน์สถานะบริการ การเชื่อมต่อ WebSocket และความสามารถด้านการยืนยันตัวตนที่มองเห็นได้ในเวลาจับมือ ไม่ได้พิสูจน์การดำเนินการอ่าน/เขียน/ผู้ดูแลระบบ- การ probe เพื่อวินิจฉัยไม่เปลี่ยนแปลงข้อมูลสำหรับการยืนยันตัวตนอุปกรณ์ครั้งแรก: จะใช้ device token ที่แคชไว้เดิมเมื่อมีอยู่ แต่จะไม่สร้างตัวตนอุปกรณ์ CLI ใหม่หรือบันทึกการจับคู่อุปกรณ์แบบอ่านอย่างเดียวเพียงเพื่อตรวจสอบสถานะ
gateway statusจะแปลง SecretRefs ด้านการยืนยันตัวตนที่กำหนดค่าไว้เพื่อใช้ยืนยันตัวตนการ probe เมื่อทำได้- หาก SecretRef ด้านการยืนยันตัวตนที่จำเป็นไม่สามารถแปลงได้ในเส้นทางคำสั่งนี้
gateway status --jsonจะรายงานrpc.authWarningเมื่อการเชื่อมต่อ/การยืนยันตัวตนของการ probe ล้มเหลว; ส่ง--token/--passwordโดยตรง หรือแปลงแหล่ง secret ให้เรียบร้อยก่อน - หากการ probe สำเร็จ คำเตือน auth-ref ที่แปลงไม่ได้จะถูกระงับเพื่อหลีกเลี่ยงผลบวกลวง
- ใช้
--require-rpcในสคริปต์และระบบอัตโนมัติเมื่อบริการที่กำลังฟังพอร์ตยังไม่เพียงพอ และคุณต้องการให้การเรียก RPC ขอบเขตการอ่านมีสถานะสมบูรณ์ด้วย --deepเพิ่มการสแกนแบบพยายามให้ดีที่สุดเพื่อหาอินสแตนซ์ launchd/systemd/schtasks เพิ่มเติม เมื่อพบบริการที่คล้าย Gateway หลายรายการ เอาต์พุตสำหรับมนุษย์จะพิมพ์คำแนะนำการล้างข้อมูลและเตือนว่าการตั้งค่าส่วนใหญ่ควรรัน Gateway หนึ่งรายการต่อเครื่อง--deepยังรายงานการส่งต่อการรีสตาร์ตของตัวควบคุม Gateway ล่าสุด เมื่อกระบวนการบริการออกอย่างเรียบร้อยเพื่อให้ตัวควบคุมภายนอกรีสตาร์ต- เอาต์พุตสำหรับมนุษย์รวมพาธไฟล์ log ที่แปลงแล้ว พร้อมสแนปช็อตพาธ/ความถูกต้องของการกำหนดค่า CLI เทียบกับบริการ เพื่อช่วยวินิจฉัย drift ของ profile หรือ state-dir
การตรวจสอบ auth-drift ของ Linux systemd
- บนการติดตั้ง Linux systemd การตรวจสอบ drift ของการยืนยันตัวตนบริการจะอ่านทั้งค่า
Environment=และEnvironmentFile=จาก unit (รวมถึง%h, พาธที่ใส่เครื่องหมายคำพูด, หลายไฟล์ และไฟล์-แบบไม่บังคับ) - การตรวจสอบ drift จะแปลง SecretRefs ของ
gateway.auth.tokenโดยใช้ runtime env ที่รวมแล้ว (env ของคำสั่งบริการก่อน จากนั้น fallback เป็น process env) - หากการยืนยันตัวตนด้วย token ไม่ได้เปิดใช้งานจริง (ตั้ง
gateway.auth.modeเป็นpassword/none/trusted-proxyอย่างชัดเจน หรือไม่ได้ตั้ง mode โดยที่ password สามารถชนะได้และไม่มีตัวเลือก token ใดชนะได้) การตรวจสอบ token-drift จะข้ามการแปลง token จากการกำหนดค่า
gateway probe
gateway probe คือคำสั่ง "ดีบักทุกอย่าง" คำสั่งนี้จะ probe เสมอ:
- Gateway ระยะไกลที่คุณกำหนดค่าไว้ (หากตั้งไว้), และ
- localhost (loopback) แม้จะกำหนดค่า remote ไว้แล้วก็ตาม
หากคุณส่ง --url เป้าหมายที่ระบุชัดเจนนั้นจะถูกเพิ่มไว้ก่อนทั้งสองรายการ เอาต์พุตสำหรับมนุษย์จะติดป้ายกำกับเป้าหมายเป็น:
URL (explicit)Remote (configured)หรือRemote (configured, inactive)Local loopback
openclaw gateway probe
openclaw gateway probe --json
การตีความ
Reachable: yesหมายความว่ามีเป้าหมายอย่างน้อยหนึ่งรายการยอมรับการเชื่อมต่อ WebSocketCapability: read-only|write-capable|admin-capable|pairing-pending|connect-onlyรายงานสิ่งที่การ probe พิสูจน์ได้เกี่ยวกับการยืนยันตัวตน ซึ่งแยกจากความสามารถในการเข้าถึงRead probe: okหมายความว่าการเรียก RPC รายละเอียดขอบเขตการอ่าน (health/status/system-presence/config.get) สำเร็จด้วยRead probe: limited - missing scope: operator.readหมายความว่าเชื่อมต่อสำเร็จ แต่ RPC ขอบเขตการอ่านถูกจำกัด รายการนี้ถูกรายงานเป็นความสามารถในการเข้าถึงที่ เสื่อมคุณภาพ ไม่ใช่ความล้มเหลวเต็มรูปแบบRead probe: failedหลังจากConnect: okหมายความว่า Gateway ยอมรับการเชื่อมต่อ WebSocket แล้ว แต่การวินิจฉัยการอ่านที่ตามมาหมดเวลาหรือล้มเหลว รายการนี้ก็เป็นความสามารถในการเข้าถึงที่ เสื่อมคุณภาพ เช่นกัน ไม่ใช่ Gateway ที่เข้าถึงไม่ได้- เช่นเดียวกับ
gateway statusการ probe จะใช้การยืนยันตัวตนอุปกรณ์ที่แคชไว้เดิม แต่จะไม่สร้างตัวตนอุปกรณ์ครั้งแรกหรือสถานะการจับคู่ - Exit code จะไม่เป็นศูนย์เฉพาะเมื่อไม่มีเป้าหมายที่ถูก probe ใดเข้าถึงได้
เอาต์พุต JSON
ระดับบนสุด:
ok: มีเป้าหมายอย่างน้อยหนึ่งรายการที่เข้าถึงได้degraded: มีเป้าหมายอย่างน้อยหนึ่งรายการยอมรับการเชื่อมต่อ แต่ทำการวินิจฉัย RPC รายละเอียดเต็มรูปแบบไม่สำเร็จcapability: ความสามารถที่ดีที่สุดที่พบในเป้าหมายที่เข้าถึงได้ (read_only,write_capable,admin_capable,pairing_pending,connected_no_operator_scope, หรือunknown)primaryTargetId: เป้าหมายที่ดีที่สุดที่จะถือเป็นผู้ชนะที่ใช้งานอยู่ตามลำดับนี้: URL ที่ระบุชัดเจน, SSH tunnel, remote ที่กำหนดค่าไว้, จากนั้น local loopbackwarnings[]: ระเบียนคำเตือนแบบพยายามให้ดีที่สุด พร้อมcode,message, และtargetIdsแบบไม่บังคับnetwork: คำใบ้ URL ของ local loopback/tailnet ที่ได้จากการกำหนดค่าปัจจุบันและระบบเครือข่ายของโฮสต์discovery.timeoutMsและdiscovery.count: งบเวลาการค้นพบ/จำนวนผลลัพธ์จริงที่ใช้สำหรับรอบการ probe นี้
ต่อเป้าหมาย (targets[].connect):
ok: ความสามารถในการเข้าถึงหลังจากจัดประเภท connect + degraded แล้วrpcOk: RPC รายละเอียดเต็มรูปแบบสำเร็จscopeLimited: RPC รายละเอียดล้มเหลวเนื่องจากขาดขอบเขต operator
ต่อเป้าหมาย (targets[].auth):
role: บทบาทการยืนยันตัวตนที่รายงานในhello-okเมื่อมีscopes: ขอบเขตที่ได้รับสิทธิ์ซึ่งรายงานในhello-okเมื่อมีcapability: การจัดประเภทความสามารถด้านการยืนยันตัวตนที่แสดงสำหรับเป้าหมายนั้น
รหัสคำเตือนที่พบบ่อย
ssh_tunnel_failed: การตั้งค่า SSH tunnel ล้มเหลว; คำสั่ง fallback ไปใช้การ probe โดยตรงmultiple_gateways: มีเป้าหมายมากกว่าหนึ่งรายการที่เข้าถึงได้; สิ่งนี้ไม่ปกติ เว้นแต่คุณตั้งใจรัน profiles ที่แยกกัน เช่น บอตกู้คืนauth_secretref_unresolved: SecretRef ด้านการยืนยันตัวตนที่กำหนดค่าไว้ไม่สามารถแปลงได้สำหรับเป้าหมายที่ล้มเหลวprobe_scope_limited: การเชื่อมต่อ WebSocket สำเร็จ แต่การ probe แบบอ่านถูกจำกัดเพราะขาดoperator.read
Remote ผ่าน SSH (ความเทียบเท่ากับแอป Mac)
โหมด "Remote over SSH" ของแอป macOS ใช้การส่งต่อพอร์ตในเครื่องเพื่อให้ Gateway ระยะไกล (ซึ่งอาจผูกกับ loopback เท่านั้น) เข้าถึงได้ที่ ws://127.0.0.1:<port>
สิ่งที่เทียบเท่าใน CLI:
openclaw gateway probe --ssh user@gateway-host
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tc3NoIDx0YXJnZXQ
" type="string">
user@host หรือ user@host:port (ค่าเริ่มต้นของ port คือ 22)
--ssh-autobooleanเลือกโฮสต์ Gateway แรกที่ค้นพบเป็นเป้าหมาย SSH จาก endpoint การค้นพบที่แปลงแล้ว (local. บวกกับโดเมน wide-area ที่กำหนดค่าไว้ หากมี) คำใบ้แบบ TXT-only จะถูกละเว้น
การกำหนดค่า (ไม่บังคับ, ใช้เป็นค่าเริ่มต้น):
gateway.remote.sshTargetgateway.remote.sshIdentity
gateway call <method>
ตัวช่วย RPC ระดับต่ำ
openclaw gateway call status
openclaw gateway call logs.tail --params '{"sinceMs": 60000}'
"--params"--url"--token"--password"--timeout--expect-finalbooleanใช้เป็นหลักสำหรับ RPC แบบ agent ที่สตรีมเหตุการณ์ระหว่างทางก่อน payload สุดท้าย
--jsonbooleanเอาต์พุต JSON ที่เครื่องอ่านได้
จัดการบริการ Gateway
openclaw gateway install
openclaw gateway start
openclaw gateway stop
openclaw gateway restart
openclaw gateway uninstall
ติดตั้งด้วย wrapper
ใช้ --wrapper เมื่อบริการที่จัดการต้องเริ่มผ่าน executable อื่น เช่น
shim ของตัวจัดการ secrets หรือตัวช่วย run-as wrapper จะรับ args ปกติของ Gateway และ
รับผิดชอบในการ exec openclaw หรือ Node พร้อม args เหล่านั้นในท้ายที่สุด
cat > ~/.local/bin/openclaw-doppler <<'EOF'
#!/usr/bin/env bash
set -euo pipefail
exec doppler run --project my-project --config production -- openclaw "$@"
EOF
chmod +x ~/.local/bin/openclaw-doppler
openclaw gateway install --wrapper ~/.local/bin/openclaw-doppler --force
openclaw gateway restart
คุณยังสามารถตั้งค่า wrapper ผ่าน environment ได้ gateway install จะตรวจสอบว่าพาธเป็น
ไฟล์ executable เขียน wrapper ลงใน ProgramArguments ของบริการ และคงค่า
OPENCLAW_WRAPPER ไว้ใน environment ของบริการสำหรับการติดตั้งใหม่แบบบังคับ การอัปเดต และการซ่อมแซมของ doctor ภายหลัง
OPENCLAW_WRAPPER="$HOME/.local/bin/openclaw-doppler" openclaw gateway install --force
openclaw doctor
หากต้องการลบ wrapper ที่คงไว้ ให้ล้าง OPENCLAW_WRAPPER ระหว่างติดตั้งใหม่:
OPENCLAW_WRAPPER= openclaw gateway install --force
openclaw gateway restart
ตัวเลือกคำสั่ง
gateway status:--url,--token,--password,--timeout,--no-probe,--require-rpc,--deep,--jsongateway install:--port,--runtime <node|bun>,--token,--wrapper <path>,--force,--jsongateway restart:--safe,--force,--wait <duration>,--jsongateway uninstall|start|stop:--json
พฤติกรรม lifecycle
- ใช้
gateway restartเพื่อรีสตาร์ตบริการที่จัดการ อย่าต่อgateway stopกับgateway startเป็นวิธีแทนการรีสตาร์ต; บน macOS,gateway stopตั้งใจปิดใช้งาน LaunchAgent ก่อนหยุด gateway restart --safeขอให้ Gateway ที่กำลังรัน preflight งาน OpenClaw ที่ใช้งานอยู่และเลื่อนการรีสตาร์ตจนกว่าการส่งคำตอบ, embedded runs, และ task runs จะ drain เสร็จ--safeใช้ร่วมกับ--forceหรือ--waitไม่ได้gateway restart --wait 30sแทนที่งบเวลา drain การรีสตาร์ตที่กำหนดค่าไว้สำหรับการรีสตาร์ตครั้งนั้น ตัวเลขล้วนคือมิลลิวินาที; รองรับหน่วยเช่นs,m, และh--wait 0จะรอไม่มีกำหนดgateway restart --forceข้ามการ drain งานที่ใช้งานอยู่และรีสตาร์ตทันที ใช้เมื่อ operator ตรวจสอบตัวขัดขวาง task ที่ระบุไว้แล้วและต้องการให้ Gateway กลับมาเดี๋ยวนี้- คำสั่ง lifecycle รับ
--jsonสำหรับการเขียนสคริปต์
การยืนยันตัวตนและ SecretRefs ขณะติดตั้ง
- เมื่อการยืนยันตัวตนด้วยโทเค็นต้องใช้โทเค็นและ
gateway.auth.tokenจัดการโดย SecretRef,gateway installจะตรวจสอบว่า SecretRef สามารถแก้ค่าได้ แต่จะไม่บันทึกโทเค็นที่แก้ค่าแล้วลงในเมทาดาทาสภาพแวดล้อมของบริการ - หากการยืนยันตัวตนด้วยโทเค็นต้องใช้โทเค็นและ SecretRef ของโทเค็นที่กำหนดค่าไว้ยังแก้ค่าไม่ได้ การติดตั้งจะล้มเหลวแบบปิด แทนที่จะบันทึกข้อความธรรมดาสำรอง
- สำหรับการยืนยันตัวตนด้วยรหัสผ่านบน
gateway runให้เลือกใช้OPENCLAW_GATEWAY_PASSWORD,--password-fileหรือgateway.auth.passwordที่มี SecretRef รองรับ แทน--passwordแบบอินไลน์ - ในโหมดการยืนยันตัวตนที่อนุมานได้
OPENCLAW_GATEWAY_PASSWORDที่มีเฉพาะในเชลล์จะไม่ผ่อนปรนข้อกำหนดโทเค็นสำหรับการติดตั้ง ให้ใช้การกำหนดค่าที่คงทน (gateway.auth.passwordหรือ configenv) เมื่อติดตั้งบริการที่มีการจัดการ - หากกำหนดค่าทั้ง
gateway.auth.tokenและgateway.auth.passwordและไม่ได้ตั้งค่าgateway.auth.modeการติดตั้งจะถูกบล็อกจนกว่าจะตั้งค่าโหมดอย่างชัดเจน
ค้นหา gateway (Bonjour)
gateway discover สแกนหา beacon ของ Gateway (_openclaw-gw._tcp)
- Multicast DNS-SD:
local. - Unicast DNS-SD (Wide-Area Bonjour): เลือกโดเมน (ตัวอย่าง:
openclaw.internal.) และตั้งค่า split DNS + เซิร์ฟเวอร์ DNS ดู Bonjour
เฉพาะ gateway ที่เปิดใช้การค้นพบด้วย Bonjour (ค่าเริ่มต้น) เท่านั้นที่จะประกาศ beacon
ระเบียนการค้นพบแบบ Wide-Area มีรายการต่อไปนี้ (TXT):
role(คำใบ้บทบาทของ gateway)transport(คำใบ้ transport เช่นgateway)gatewayPort(พอร์ต WebSocket โดยปกติคือ18789)sshPort(ไม่บังคับ; ไคลเอนต์จะใช้เป้าหมาย SSH เริ่มต้นเป็น22เมื่อไม่มีค่านี้)tailnetDns(ชื่อโฮสต์ MagicDNS เมื่อมี)gatewayTls/gatewayTlsSha256(เปิดใช้ TLS + ลายนิ้วมือใบรับรอง)cliPath(คำใบ้การติดตั้งระยะไกลที่เขียนไปยังโซน wide-area)
gateway discover
openclaw gateway discover
"--timeout--jsonbooleanเอาต์พุตที่เครื่องอ่านได้ (และปิดการจัดรูปแบบ/สปินเนอร์ด้วย)
ตัวอย่าง:
openclaw gateway discover --timeout 4000
openclaw gateway discover --json | jq '.beacons[].wsUrl'