CLI commands
Gateway
Gateway adalah server WebSocket OpenClaw (channel, node, sesi, hook). Subperintah di halaman ini berada di bawah openclaw gateway ….
Penyiapan mDNS lokal + DNS-SD area luas.
Cara OpenClaw mengiklankan dan menemukan gateway.
Kunci konfigurasi gateway tingkat atas.
Jalankan Gateway
Jalankan proses Gateway lokal:
openclaw gateway
Alias latar depan:
openclaw gateway run
Startup behavior
- Secara default, Gateway menolak memulai kecuali
gateway.mode=localditetapkan di~/.openclaw/openclaw.json. Gunakan--allow-unconfigureduntuk proses ad-hoc/dev. openclaw onboard --mode localdanopenclaw setupdiharapkan menulisgateway.mode=local. Jika file ada tetapigateway.modehilang, perlakukan itu sebagai konfigurasi rusak atau tertimpa dan perbaiki, bukan mengasumsikan mode lokal secara implisit.- Jika file ada dan
gateway.modehilang, Gateway memperlakukan itu sebagai kerusakan konfigurasi yang mencurigakan dan menolak untuk "menebak lokal" untuk Anda. - Binding di luar loopback tanpa auth diblokir (pagar pengaman).
SIGUSR1memicu restart dalam proses saat diotorisasi (commands.restartdiaktifkan secara default; tetapkancommands.restart: falseuntuk memblokir restart manual, sementara alat gateway/konfigurasi apply/update tetap diizinkan).- Handler
SIGINT/SIGTERMmenghentikan proses gateway, tetapi tidak memulihkan status terminal kustom apa pun. Jika Anda membungkus CLI dengan TUI atau input mode mentah, pulihkan terminal sebelum keluar.
Opsi
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tcG9ydCA8cG9ydA
" type="number">
Port WebSocket (default berasal dari konfigurasi/env; biasanya 18789).
"--bind"--authOPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tdG9rZW4gPHRva2Vu
" type="string">
Override token (juga menetapkan OPENCLAW_GATEWAY_TOKEN untuk proses).
"--password"--tailscale--tailscale-reset-on-exitbooleanReset konfigurasi serve/funnel Tailscale saat shutdown.
--allow-unconfiguredbooleanIzinkan gateway memulai tanpa gateway.mode=local dalam konfigurasi. Hanya melewati guard startup untuk bootstrap ad-hoc/dev; tidak menulis atau memperbaiki file konfigurasi.
--devbooleanBuat konfigurasi dev + workspace jika tidak ada (melewati BOOTSTRAP.md).
--resetbooleanReset konfigurasi dev + kredensial + sesi + workspace (memerlukan --dev).
--forcebooleanMatikan listener yang sudah ada pada port yang dipilih sebelum memulai.
--verbosebooleanLog verbose.
--cli-backend-logsbooleanHanya tampilkan log backend CLI di konsol (dan aktifkan stdout/stderr).
"--ws-log--compactbooleanAlias untuk --ws-log compact.
--raw-streambooleanCatat event stream model mentah ke jsonl.
Restart Gateway
openclaw gateway restart
openclaw gateway restart --safe
openclaw gateway restart --force
openclaw gateway restart --safe meminta Gateway yang sedang berjalan untuk melakukan preflight pada pekerjaan OpenClaw aktif sebelum restart. Jika operasi antrean, pengiriman balasan, run tertanam, atau task run aktif, Gateway melaporkan blocker, menggabungkan permintaan safe restart duplikat, dan restart setelah pekerjaan aktif selesai. restart biasa mempertahankan perilaku service-manager yang sudah ada untuk kompatibilitas. Gunakan --force hanya saat Anda secara eksplisit menginginkan jalur override langsung.
Profiling startup
- Tetapkan
OPENCLAW_GATEWAY_STARTUP_TRACE=1untuk mencatat timing fase selama startup Gateway, termasuk delayeventLoopMaxper fase dan timing lookup-table Plugin untuk installed-index, registry manifes, perencanaan startup, dan pekerjaan owner-map. - Tetapkan
OPENCLAW_DIAGNOSTICS=timelinedenganOPENCLAW_DIAGNOSTICS_TIMELINE_PATH=<path>untuk menulis timeline diagnostik startup JSONL best-effort bagi harness QA eksternal. Anda juga dapat mengaktifkan flag dengandiagnostics.flags: ["timeline"]dalam konfigurasi; path tetap diberikan melalui env. TambahkanOPENCLAW_DIAGNOSTICS_EVENT_LOOP=1untuk menyertakan sampel event-loop. - Jalankan
pnpm test:startup:gateway -- --runs 5 --warmup 1untuk benchmark startup Gateway. Benchmark merekam output proses pertama,/healthz,/readyz, timing startup trace, delay event-loop, dan detail timing lookup-table Plugin.
Kueri Gateway yang berjalan
Semua perintah kueri menggunakan RPC WebSocket.
Output modes
- Default: dapat dibaca manusia (berwarna di TTY).
--json: JSON yang dapat dibaca mesin (tanpa styling/spinner).--no-color(atauNO_COLOR=1): nonaktifkan ANSI sambil mempertahankan tata letak manusia.
Shared options
--url <url>: URL WebSocket Gateway.--token <token>: token Gateway.--password <password>: kata sandi Gateway.--timeout <ms>: timeout/budget (bervariasi per perintah).--expect-final: tunggu respons "final" (pemanggilan agen).
gateway health
openclaw gateway health --url ws://127.0.0.1:18789
Endpoint HTTP /healthz adalah probe liveness: endpoint ini mengembalikan respons setelah server dapat menjawab HTTP. Endpoint HTTP /readyz lebih ketat dan tetap merah sementara sidecar Plugin startup, channel, atau hook terkonfigurasi masih menstabilkan diri. Respons readiness detail lokal atau terautentikasi menyertakan blok diagnostik eventLoop dengan delay event-loop, utilisasi event-loop, rasio core CPU, dan flag degraded.
gateway usage-cost
Ambil ringkasan biaya penggunaan dari log sesi.
openclaw gateway usage-cost
openclaw gateway usage-cost --days 7
openclaw gateway usage-cost --json
"--days gateway stability
Ambil perekam stabilitas diagnostik terbaru dari Gateway yang berjalan.
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">
Jumlah maksimum event terbaru yang disertakan (maks 1000).
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tdHlwZSA8dHlwZQ
" type="string">
Filter berdasarkan jenis event diagnostik, seperti payload.large atau diagnostic.memory.pressure.
"--since-seq--bundle [path]stringBaca bundle stabilitas tersimpan, bukan memanggil Gateway yang berjalan. Gunakan --bundle latest (atau cukup --bundle) untuk bundle terbaru di bawah direktori state, atau berikan path JSON bundle secara langsung.
--exportbooleanTulis zip diagnostik dukungan yang dapat dibagikan, bukan mencetak detail stabilitas.
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tb3V0cHV0IDxwYXRo
" type="string">
Path output untuk --export.
Privacy and bundle behavior
- Rekaman menyimpan metadata operasional: nama event, jumlah, ukuran byte, pembacaan memori, status antrean/sesi, nama channel/Plugin, dan ringkasan sesi yang disamarkan. Rekaman tidak menyimpan teks chat, body Webhook, output alat, body permintaan atau respons mentah, token, cookie, nilai rahasia, hostname, atau id sesi mentah. Tetapkan
diagnostics.enabled: falseuntuk menonaktifkan perekam sepenuhnya. - Pada keluar fatal Gateway, timeout shutdown, dan kegagalan startup restart, OpenClaw menulis snapshot diagnostik yang sama ke
~/.openclaw/logs/stability/openclaw-stability-*.jsonsaat perekam memiliki event. Periksa bundle terbaru denganopenclaw gateway stability --bundle latest;--limit,--type, dan--since-seqjuga berlaku untuk output bundle.
gateway diagnostics export
Tulis zip diagnostik lokal yang dirancang untuk dilampirkan ke laporan bug. Untuk model privasi dan isi bundle, lihat Ekspor Diagnostik.
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-bundlebooleanLewati pencarian bundle stabilitas tersimpan.
--jsonbooleanCetak path, ukuran, dan manifes yang ditulis sebagai JSON.
Ekspor berisi manifes, ringkasan Markdown, bentuk konfigurasi, detail konfigurasi tersanitasi, ringkasan log tersanitasi, snapshot status/health Gateway tersanitasi, dan bundle stabilitas terbaru saat ada.
Ini dimaksudkan untuk dibagikan. Ekspor mempertahankan detail operasional yang membantu debugging, seperti field log OpenClaw yang aman, nama subsistem, kode status, durasi, mode terkonfigurasi, port, id Plugin, id provider, pengaturan fitur non-rahasia, dan pesan log operasional yang disamarkan. Ekspor menghilangkan atau menyamarkan teks chat, body Webhook, output alat, kredensial, cookie, identifier akun/pesan, teks prompt/instruksi, hostname, dan nilai rahasia. Saat pesan bergaya LogTape tampak seperti teks payload pengguna/chat/alat, ekspor hanya menyimpan bahwa pesan dihilangkan beserta jumlah byte-nya.
gateway status
gateway status menampilkan layanan Gateway (launchd/systemd/schtasks) plus probe opsional untuk kemampuan konektivitas/auth.
openclaw gateway status
openclaw gateway status --json
openclaw gateway status --require-rpc
"--url"--token"--password"--timeout--no-probebooleanLewati probe konektivitas (tampilan khusus layanan).
--deepbooleanPindai juga layanan tingkat sistem.
--require-rpcbooleanTingkatkan probe konektivitas default menjadi probe baca dan keluar dengan non-zero saat probe baca tersebut gagal. Tidak dapat digabungkan dengan --no-probe.
Semantik status
gateway statustetap tersedia untuk diagnostik meskipun konfigurasi CLI lokal hilang atau tidak valid.gateway statusdefault membuktikan status layanan, koneksi WebSocket, dan kapabilitas autentikasi yang terlihat saat handshake. Ini tidak membuktikan operasi baca/tulis/admin.- Probe diagnostik tidak melakukan mutasi untuk autentikasi perangkat pertama kali: probe menggunakan ulang token perangkat yang sudah di-cache ketika ada, tetapi tidak membuat identitas perangkat CLI baru atau catatan pairing perangkat read-only hanya untuk memeriksa status.
gateway statusmenyelesaikan SecretRefs autentikasi yang dikonfigurasi untuk autentikasi probe jika memungkinkan.- Jika SecretRef autentikasi yang diperlukan tidak terselesaikan di jalur perintah ini,
gateway status --jsonmelaporkanrpc.authWarningsaat konektivitas/autentikasi probe gagal; teruskan--token/--passwordsecara eksplisit atau selesaikan sumber secret terlebih dahulu. - Jika probe berhasil, peringatan auth-ref yang tidak terselesaikan disembunyikan untuk menghindari positif palsu.
- Gunakan
--require-rpcdalam skrip dan otomatisasi ketika layanan yang mendengarkan saja tidak cukup dan Anda juga memerlukan panggilan RPC cakupan baca dalam keadaan sehat. --deepmenambahkan pemindaian best-effort untuk instalasi launchd/systemd/schtasks tambahan. Ketika beberapa layanan mirip Gateway terdeteksi, output manusia mencetak petunjuk pembersihan dan memperingatkan bahwa sebagian besar penyiapan sebaiknya menjalankan satu gateway per mesin.--deepjuga melaporkan handoff restart supervisor Gateway terbaru ketika proses layanan keluar dengan bersih untuk restart supervisor eksternal.- Output manusia menyertakan path log file yang terselesaikan beserta snapshot path/validitas konfigurasi CLI-vs-service untuk membantu mendiagnosis drift profil atau state-dir.
Pemeriksaan drift autentikasi systemd Linux
- Pada instalasi systemd Linux, pemeriksaan drift autentikasi layanan membaca nilai
Environment=danEnvironmentFile=dari unit (termasuk%h, path yang dikutip, beberapa file, dan file-opsional). - Pemeriksaan drift menyelesaikan SecretRefs
gateway.auth.tokenmenggunakan env runtime gabungan (env perintah layanan terlebih dahulu, lalu fallback env proses). - Jika autentikasi token tidak aktif secara efektif (
gateway.auth.modeeksplisit bernilaipassword/none/trusted-proxy, atau mode tidak disetel ketika kata sandi dapat menang dan tidak ada kandidat token yang dapat menang), pemeriksaan token-drift melewati penyelesaian token konfigurasi.
gateway probe
gateway probe adalah perintah "debug semuanya". Perintah ini selalu memprobe:
- gateway remote yang Anda konfigurasi (jika disetel), dan
- localhost (loopback) meskipun remote dikonfigurasi.
Jika Anda meneruskan --url, target eksplisit tersebut ditambahkan sebelum keduanya. Output manusia melabeli target sebagai:
URL (eksplisit)Remote (dikonfigurasi)atauRemote (dikonfigurasi, tidak aktif)Local loopback
openclaw gateway probe
openclaw gateway probe --json
Interpretasi
Reachable: yesberarti setidaknya satu target menerima koneksi WebSocket.Capability: read-only|write-capable|admin-capable|pairing-pending|connect-onlymelaporkan apa yang dapat dibuktikan probe tentang autentikasi. Ini terpisah dari keterjangkauan.Read probe: okberarti panggilan RPC detail cakupan baca (health/status/system-presence/config.get) juga berhasil.Read probe: limited - missing scope: operator.readberarti koneksi berhasil tetapi RPC cakupan baca terbatas. Ini dilaporkan sebagai keterjangkauan terdegradasi, bukan kegagalan penuh.Read probe: failedsetelahConnect: okberarti Gateway menerima koneksi WebSocket, tetapi diagnostik baca lanjutan mengalami timeout atau gagal. Ini juga merupakan keterjangkauan terdegradasi, bukan Gateway yang tidak dapat dijangkau.- Seperti
gateway status, probe menggunakan ulang autentikasi perangkat yang sudah di-cache tetapi tidak membuat identitas perangkat pertama kali atau status pairing. - Kode keluar non-zero hanya ketika tidak ada target yang diprobe yang dapat dijangkau.
Output JSON
Tingkat atas:
ok: setidaknya satu target dapat dijangkau.degraded: setidaknya satu target menerima koneksi tetapi tidak menyelesaikan diagnostik RPC detail penuh.capability: kapabilitas terbaik yang terlihat di seluruh target yang dapat dijangkau (read_only,write_capable,admin_capable,pairing_pending,connected_no_operator_scope, atauunknown).primaryTargetId: target terbaik untuk diperlakukan sebagai pemenang aktif dalam urutan ini: URL eksplisit, tunnel SSH, remote yang dikonfigurasi, lalu local loopback.warnings[]: catatan peringatan best-effort dengancode,message, dantargetIdsopsional.network: petunjuk URL local loopback/tailnet yang diturunkan dari konfigurasi saat ini dan jaringan host.discovery.timeoutMsdandiscovery.count: anggaran discovery/jumlah hasil aktual yang digunakan untuk lintasan probe ini.
Per target (targets[].connect):
ok: keterjangkauan setelah klasifikasi koneksi + terdegradasi.rpcOk: keberhasilan RPC detail penuh.scopeLimited: RPC detail gagal karena cakupan operator hilang.
Per target (targets[].auth):
role: peran autentikasi yang dilaporkan dalamhello-okjika tersedia.scopes: cakupan yang diberikan yang dilaporkan dalamhello-okjika tersedia.capability: klasifikasi kapabilitas autentikasi yang ditampilkan untuk target tersebut.
Kode peringatan umum
ssh_tunnel_failed: penyiapan tunnel SSH gagal; perintah beralih kembali ke probe langsung.multiple_gateways: lebih dari satu target dapat dijangkau; ini tidak umum kecuali Anda sengaja menjalankan profil terisolasi, seperti bot penyelamat.auth_secretref_unresolved: SecretRef autentikasi yang dikonfigurasi tidak dapat diselesaikan untuk target yang gagal.probe_scope_limited: koneksi WebSocket berhasil, tetapi probe baca dibatasi olehoperator.readyang hilang.
Remote melalui SSH (paritas aplikasi Mac)
Mode "Remote melalui SSH" aplikasi macOS menggunakan port-forward lokal sehingga gateway remote (yang mungkin hanya terikat ke loopback) dapat dijangkau di ws://127.0.0.1:<port>.
Padanan CLI:
openclaw gateway probe --ssh user@gateway-host
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tc3NoIDx0YXJnZXQ
" type="string">
user@host atau user@host:port (port default ke 22).
--ssh-autobooleanPilih host gateway pertama yang ditemukan sebagai target SSH dari endpoint discovery yang terselesaikan (local. ditambah domain wide-area yang dikonfigurasi, jika ada). Petunjuk hanya TXT diabaikan.
Konfigurasi (opsional, digunakan sebagai default):
gateway.remote.sshTargetgateway.remote.sshIdentity
gateway call <method>
Helper RPC tingkat rendah.
openclaw gateway call status
openclaw gateway call logs.tail --params '{"sinceMs": 60000}'
"--params"--url"--token"--password"--timeout--expect-finalbooleanTerutama untuk RPC bergaya agen yang mengalirkan peristiwa antara sebelum payload akhir.
--jsonbooleanOutput JSON yang dapat dibaca mesin.
Kelola layanan Gateway
openclaw gateway install
openclaw gateway start
openclaw gateway stop
openclaw gateway restart
openclaw gateway uninstall
Instal dengan wrapper
Gunakan --wrapper ketika layanan terkelola harus dimulai melalui executable lain, misalnya shim pengelola secret atau helper run-as. Wrapper menerima argumen Gateway normal dan bertanggung jawab untuk pada akhirnya mengeksekusi openclaw atau Node dengan argumen tersebut.
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
Anda juga dapat menyetel wrapper melalui environment. gateway install memvalidasi bahwa path adalah file executable, menulis wrapper ke ProgramArguments layanan, dan mempertahankan OPENCLAW_WRAPPER di environment layanan untuk reinstalasi paksa, pembaruan, dan perbaikan doctor nanti.
OPENCLAW_WRAPPER="$HOME/.local/bin/openclaw-doppler" openclaw gateway install --force
openclaw doctor
Untuk menghapus wrapper yang dipertahankan, kosongkan OPENCLAW_WRAPPER saat menginstal ulang:
OPENCLAW_WRAPPER= openclaw gateway install --force
openclaw gateway restart
Opsi perintah
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
Perilaku siklus hidup
- Gunakan
gateway restartuntuk memulai ulang layanan terkelola. Jangan merangkaigateway stopdangateway startsebagai pengganti restart; di macOS,gateway stopsengaja menonaktifkan LaunchAgent sebelum menghentikannya. gateway restart --safememinta Gateway yang sedang berjalan untuk melakukan preflight pekerjaan OpenClaw aktif dan menunda restart hingga pengiriman balasan, run tertanam, dan run tugas selesai terkuras.--safetidak dapat digabungkan dengan--forceatau--wait.gateway restart --wait 30smenimpa anggaran drain restart yang dikonfigurasi untuk restart tersebut. Angka tanpa satuan adalah milidetik; satuan sepertis,m, danhditerima.--wait 0menunggu tanpa batas.gateway restart --forcemelewati drain pekerjaan aktif dan langsung memulai ulang. Gunakan ini ketika operator sudah memeriksa pemblokir tugas yang tercantum dan ingin gateway kembali sekarang.- Perintah siklus hidup menerima
--jsonuntuk scripting.
Autentikasi dan SecretRefs saat instalasi
- Saat autentikasi token memerlukan token dan
gateway.auth.tokendikelola SecretRef,gateway installmemvalidasi bahwa SecretRef dapat di-resolve tetapi tidak menyimpan token yang di-resolve ke dalam metadata lingkungan layanan. - Jika autentikasi token memerlukan token dan SecretRef token yang dikonfigurasi belum ter-resolve, instalasi gagal tertutup alih-alih menyimpan plaintext fallback.
- Untuk autentikasi kata sandi pada
gateway run, pilihOPENCLAW_GATEWAY_PASSWORD,--password-file, ataugateway.auth.passwordberbasis SecretRef daripada--passwordinline. - Dalam mode autentikasi terinferensi,
OPENCLAW_GATEWAY_PASSWORDyang hanya ada di shell tidak melonggarkan persyaratan token instalasi; gunakan konfigurasi yang tahan lama (gateway.auth.passwordatau konfigurasienv) saat menginstal layanan terkelola. - Jika
gateway.auth.tokendangateway.auth.passwordsama-sama dikonfigurasi dangateway.auth.modebelum disetel, instalasi diblokir hingga mode disetel secara eksplisit.
Temukan Gateway (Bonjour)
gateway discover memindai beacon Gateway (_openclaw-gw._tcp).
- Multicast DNS-SD:
local. - Unicast DNS-SD (Wide-Area Bonjour): pilih domain (contoh:
openclaw.internal.) dan siapkan split DNS + server DNS; lihat Bonjour.
Hanya Gateway dengan penemuan Bonjour yang diaktifkan (default) yang mengiklankan beacon.
Record penemuan Wide-Area menyertakan (TXT):
role(petunjuk peran gateway)transport(petunjuk transport, mis.gateway)gatewayPort(port WebSocket, biasanya18789)sshPort(opsional; klien menetapkan target SSH default ke22saat ini tidak ada)tailnetDns(hostname MagicDNS, saat tersedia)gatewayTls/gatewayTlsSha256(TLS diaktifkan + fingerprint sertifikat)cliPath(petunjuk instalasi jarak jauh yang ditulis ke zona wide-area)
gateway discover
openclaw gateway discover
"--timeout--jsonbooleanOutput yang dapat dibaca mesin (juga menonaktifkan styling/spinner).
Contoh:
openclaw gateway discover --timeout 4000
openclaw gateway discover --json | jq '.beacons[].wsUrl'