CLI commands

Gateway

Gateway adalah server WebSocket OpenClaw (channel, node, sesi, hook). Subperintah di halaman ini berada di bawah openclaw gateway ….

Jalankan Gateway

Jalankan proses Gateway lokal:

openclaw gateway

Alias latar depan:

openclaw gateway run
Startup behavior
  • Secara default, Gateway menolak memulai kecuali gateway.mode=local ditetapkan di ~/.openclaw/openclaw.json. Gunakan --allow-unconfigured untuk proses ad-hoc/dev.
  • openclaw onboard --mode local dan openclaw setup diharapkan menulis gateway.mode=local. Jika file ada tetapi gateway.mode hilang, perlakukan itu sebagai konfigurasi rusak atau tertimpa dan perbaiki, bukan mengasumsikan mode lokal secara implisit.
  • Jika file ada dan gateway.mode hilang, Gateway memperlakukan itu sebagai kerusakan konfigurasi yang mencurigakan dan menolak untuk "menebak lokal" untuk Anda.
  • Binding di luar loopback tanpa auth diblokir (pagar pengaman).
  • SIGUSR1 memicu restart dalam proses saat diotorisasi (commands.restart diaktifkan secara default; tetapkan commands.restart: false untuk memblokir restart manual, sementara alat gateway/konfigurasi apply/update tetap diizinkan).
  • Handler SIGINT/SIGTERM menghentikan 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
"--auth

OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tdG9rZW4gPHRva2Vu " type="string"> Override token (juga menetapkan OPENCLAW_GATEWAY_TOKEN untuk proses).

"--password
"--tailscale
--tailscale-reset-on-exitboolean

Reset konfigurasi serve/funnel Tailscale saat shutdown.

--allow-unconfiguredboolean

Izinkan gateway memulai tanpa gateway.mode=local dalam konfigurasi. Hanya melewati guard startup untuk bootstrap ad-hoc/dev; tidak menulis atau memperbaiki file konfigurasi.

--devboolean

Buat konfigurasi dev + workspace jika tidak ada (melewati BOOTSTRAP.md).

--resetboolean

Reset konfigurasi dev + kredensial + sesi + workspace (memerlukan --dev).

--forceboolean

Matikan listener yang sudah ada pada port yang dipilih sebelum memulai.

--verboseboolean

Log verbose.

--cli-backend-logsboolean

Hanya tampilkan log backend CLI di konsol (dan aktifkan stdout/stderr).

"--ws-log
--compactboolean

Alias untuk --ws-log compact.

--raw-streamboolean

Catat 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=1 untuk mencatat timing fase selama startup Gateway, termasuk delay eventLoopMax per fase dan timing lookup-table Plugin untuk installed-index, registry manifes, perencanaan startup, dan pekerjaan owner-map.
  • Tetapkan OPENCLAW_DIAGNOSTICS=timeline dengan OPENCLAW_DIAGNOSTICS_TIMELINE_PATH=<path> untuk menulis timeline diagnostik startup JSONL best-effort bagi harness QA eksternal. Anda juga dapat mengaktifkan flag dengan diagnostics.flags: ["timeline"] dalam konfigurasi; path tetap diberikan melalui env. Tambahkan OPENCLAW_DIAGNOSTICS_EVENT_LOOP=1 untuk menyertakan sampel event-loop.
  • Jalankan pnpm test:startup:gateway -- --runs 5 --warmup 1 untuk 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 (atau NO_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]string

Baca 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.

--exportboolean

Tulis 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: false untuk 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-*.json saat perekam memiliki event. Periksa bundle terbaru dengan openclaw gateway stability --bundle latest; --limit, --type, dan --since-seq juga 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-bundleboolean

Lewati pencarian bundle stabilitas tersimpan.

--jsonboolean

Cetak 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-probeboolean

Lewati probe konektivitas (tampilan khusus layanan).

--deepboolean

Pindai juga layanan tingkat sistem.

--require-rpcboolean

Tingkatkan 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 status tetap tersedia untuk diagnostik meskipun konfigurasi CLI lokal hilang atau tidak valid.
  • gateway status default 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 status menyelesaikan SecretRefs autentikasi yang dikonfigurasi untuk autentikasi probe jika memungkinkan.
  • Jika SecretRef autentikasi yang diperlukan tidak terselesaikan di jalur perintah ini, gateway status --json melaporkan rpc.authWarning saat konektivitas/autentikasi probe gagal; teruskan --token/--password secara eksplisit atau selesaikan sumber secret terlebih dahulu.
  • Jika probe berhasil, peringatan auth-ref yang tidak terselesaikan disembunyikan untuk menghindari positif palsu.
  • Gunakan --require-rpc dalam skrip dan otomatisasi ketika layanan yang mendengarkan saja tidak cukup dan Anda juga memerlukan panggilan RPC cakupan baca dalam keadaan sehat.
  • --deep menambahkan 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.
  • --deep juga 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= dan EnvironmentFile= dari unit (termasuk %h, path yang dikutip, beberapa file, dan file - opsional).
  • Pemeriksaan drift menyelesaikan SecretRefs gateway.auth.token menggunakan env runtime gabungan (env perintah layanan terlebih dahulu, lalu fallback env proses).
  • Jika autentikasi token tidak aktif secara efektif (gateway.auth.mode eksplisit bernilai password/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) atau Remote (dikonfigurasi, tidak aktif)
  • Local loopback
openclaw gateway probe
openclaw gateway probe --json
Interpretasi
  • Reachable: yes berarti setidaknya satu target menerima koneksi WebSocket.
  • Capability: read-only|write-capable|admin-capable|pairing-pending|connect-only melaporkan apa yang dapat dibuktikan probe tentang autentikasi. Ini terpisah dari keterjangkauan.
  • Read probe: ok berarti panggilan RPC detail cakupan baca (health/status/system-presence/config.get) juga berhasil.
  • Read probe: limited - missing scope: operator.read berarti koneksi berhasil tetapi RPC cakupan baca terbatas. Ini dilaporkan sebagai keterjangkauan terdegradasi, bukan kegagalan penuh.
  • Read probe: failed setelah Connect: ok berarti 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, atau unknown).
  • 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 dengan code, message, dan targetIds opsional.
  • network: petunjuk URL local loopback/tailnet yang diturunkan dari konfigurasi saat ini dan jaringan host.
  • discovery.timeoutMs dan discovery.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 dalam hello-ok jika tersedia.
  • scopes: cakupan yang diberikan yang dilaporkan dalam hello-ok jika 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 oleh operator.read yang 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-autoboolean

Pilih 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.sshTarget
  • gateway.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-finalboolean

Terutama untuk RPC bergaya agen yang mengalirkan peristiwa antara sebelum payload akhir.

--jsonboolean

Output 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, --json
  • gateway install: --port, --runtime <node|bun>, --token, --wrapper <path>, --force, --json
  • gateway restart: --safe, --force, --wait <duration>, --json
  • gateway uninstall|start|stop: --json
Perilaku siklus hidup
  • Gunakan gateway restart untuk memulai ulang layanan terkelola. Jangan merangkai gateway stop dan gateway start sebagai pengganti restart; di macOS, gateway stop sengaja menonaktifkan LaunchAgent sebelum menghentikannya.
  • gateway restart --safe meminta Gateway yang sedang berjalan untuk melakukan preflight pekerjaan OpenClaw aktif dan menunda restart hingga pengiriman balasan, run tertanam, dan run tugas selesai terkuras. --safe tidak dapat digabungkan dengan --force atau --wait.
  • gateway restart --wait 30s menimpa anggaran drain restart yang dikonfigurasi untuk restart tersebut. Angka tanpa satuan adalah milidetik; satuan seperti s, m, dan h diterima. --wait 0 menunggu tanpa batas.
  • gateway restart --force melewati 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 --json untuk scripting.
Autentikasi dan SecretRefs saat instalasi
  • Saat autentikasi token memerlukan token dan gateway.auth.token dikelola SecretRef, gateway install memvalidasi 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, pilih OPENCLAW_GATEWAY_PASSWORD, --password-file, atau gateway.auth.password berbasis SecretRef daripada --password inline.
  • Dalam mode autentikasi terinferensi, OPENCLAW_GATEWAY_PASSWORD yang hanya ada di shell tidak melonggarkan persyaratan token instalasi; gunakan konfigurasi yang tahan lama (gateway.auth.password atau konfigurasi env) saat menginstal layanan terkelola.
  • Jika gateway.auth.token dan gateway.auth.password sama-sama dikonfigurasi dan gateway.auth.mode belum 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, biasanya 18789)
  • sshPort (opsional; klien menetapkan target SSH default ke 22 saat 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
--jsonboolean

Output yang dapat dibaca mesin (juga menonaktifkan styling/spinner).

Contoh:

openclaw gateway discover --timeout 4000
openclaw gateway discover --json | jq '.beacons[].wsUrl'

Terkait