CLI commands
Gateway
Gateway سرور WebSocket در OpenClaw است (کانالها، گرهها، نشستها، hookها). زیردستورهای این صفحه زیر openclaw gateway … قرار دارند.
راهاندازی mDNS محلی + DNS-SD گسترده.
OpenClaw چگونه Gatewayها را اعلام و پیدا میکند.
کلیدهای پیکربندی Gateway در سطح بالا.
اجرای Gateway
یک فرایند Gateway محلی را اجرا کنید:
openclaw gatewayنام مستعار پیشزمینه:
openclaw gateway runStartup behavior
- بهطور پیشفرض، Gateway شروع به کار نمیکند مگر اینکه
gateway.mode=localدر~/.openclaw/openclaw.jsonتنظیم شده باشد. برای اجراهای موقت/توسعهای از--allow-unconfiguredاستفاده کنید. - انتظار میرود
openclaw onboard --mode localوopenclaw setupمقدارgateway.mode=localرا بنویسند. اگر فایل وجود دارد اماgateway.modeدر آن نیست، آن را بهعنوان پیکربندی خراب یا بازنویسیشده در نظر بگیرید و بهجای فرض ضمنی حالت محلی، آن را تعمیر کنید. - اگر فایل وجود دارد و
gateway.modeدر آن نیست، Gateway این را آسیب مشکوک به پیکربندی تلقی میکند و برای شما «حالت محلی را حدس» نمیزند. - اتصال فراتر از loopback بدون احراز هویت مسدود میشود (حفاظ ایمنی).
lan،tailnetوcustomدر حال حاضر از مسیرهای BYOH فقط IPv4 حل میشوند.- BYOH فقط IPv6 امروز بهصورت بومی در این مسیر پشتیبانی نمیشود. اگر خود میزبان فقط IPv6 است، از یک sidecar یا proxy مبتنی بر IPv4 استفاده کنید.
SIGUSR1در صورت مجاز بودن، بازراهاندازی درونفرایندی را فعال میکند (commands.restartبهطور پیشفرض فعال است؛ برای مسدود کردن بازراهاندازی دستی،commands.restart: falseرا تنظیم کنید، در حالی که اعمال/بهروزرسانی ابزار/پیکربندی Gateway همچنان مجاز میماند).- handlerهای
SIGINT/SIGTERMفرایند Gateway را متوقف میکنند، اما هیچ وضعیت سفارشی ترمینال را بازیابی نمیکنند. اگر CLI را با TUI یا ورودی raw-mode پوشش میدهید، پیش از خروج ترمینال را بازیابی کنید.
گزینهها
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tcG9ydCA8cG9ydA
" type="number">
پورت WebSocket (پیشفرض از پیکربندی/env میآید؛ معمولاً 18789).
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tYmluZCA8bG9vcGJhY2t8bGFufHRhaWxuZXR8YXV0b3xjdXN0b20
" type="string">
حالت bind شنونده. lan، tailnet و custom در حال حاضر از مسیرهای فقط IPv4 حل میشوند.
"--authOPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tdG9rZW4gPHRva2Vu
" type="string">
بازنویسی توکن (همچنین OPENCLAW_GATEWAY_TOKEN را برای فرایند تنظیم میکند).
"--password"--tailscale--tailscale-reset-on-exitbooleanپیکربندی serve/funnel مربوط به Tailscale را هنگام خاموشی بازنشانی کنید.
--bind custom + gateway.customBindHoststringامروز انتظار یک نشانی IPv4 دارد. برای BYOH فقط IPv6، یک sidecar یا proxy مبتنی بر IPv4 جلوی Gateway قرار دهید و OpenClaw را به آن endpoint مبتنی بر IPv4 اشاره دهید.
--allow-unconfiguredbooleanاجازه میدهد Gateway بدون gateway.mode=local در پیکربندی شروع شود. فقط برای راهاندازی موقت/توسعهای از حفاظ شروع به کار عبور میکند؛ فایل پیکربندی را نمینویسد یا تعمیر نمیکند.
--devbooleanاگر موجود نباشد، پیکربندی توسعه + workspace بسازید (BOOTSTRAP.md را رد میکند).
--resetbooleanپیکربندی توسعه + اعتبارنامهها + نشستها + workspace را بازنشانی کنید (به --dev نیاز دارد).
--forcebooleanپیش از شروع، هر شنونده موجود روی پورت انتخابشده را خاتمه دهید.
--verbosebooleanلاگهای مفصل.
--cli-backend-logsbooleanفقط لاگهای backend مربوط به CLI را در کنسول نشان دهید (و stdout/stderr را فعال کنید).
"--ws-log--compactbooleanنام مستعار برای --ws-log compact.
--raw-streambooleanرویدادهای خام جریان مدل را در jsonl لاگ کنید.
بازراهاندازی Gateway
openclaw gateway restartopenclaw gateway restart --safeopenclaw gateway restart --safe --skip-deferralopenclaw gateway restart --forceopenclaw gateway restart --safe از Gateway در حال اجرا میخواهد کار فعال را پیشبررسی کند و پس از تخلیه کار فعال، یک بازراهاندازی ادغامشده زمانبندی کند. بازراهاندازی امن پیشفرض تا سقف gateway.reload.deferralTimeoutMs پیکربندیشده برای کار فعال منتظر میماند (پیشفرض ۵ دقیقه)؛ وقتی این بودجه تمام شود، بازراهاندازی اجباری میشود. برای انتظار امن نامحدود که هرگز اجبار نمیکند، gateway.reload.deferralTimeoutMs را روی 0 تنظیم کنید. restart ساده رفتار موجود service-manager را نگه میدارد؛ --force همچنان مسیر بازنویسی فوری است.
openclaw gateway restart --safe --skip-deferral همان بازراهاندازی هماهنگ و آگاه از OpenClaw را مانند --safe اجرا میکند، اما از gate تعویق کار فعال عبور میکند تا Gateway حتی وقتی مسدودکنندهها گزارش شدهاند، بازراهاندازی را فوراً منتشر کند. وقتی یک تعویق توسط اجرای کار گیرکرده ثابت مانده و --safe بهتنهایی ممکن است با gateway.reload.deferralTimeoutMs محدود شود، از آن بهعنوان مسیر خروج اضطراری operator استفاده کنید. --skip-deferral به --safe نیاز دارد.
پروفایلگیری Gateway
OPENCLAW_GATEWAY_STARTUP_TRACE=1را تنظیم کنید تا زمانبندی فازها هنگام شروع Gateway لاگ شود، از جمله تأخیرeventLoopMaxبرای هر فاز و زمانبندیهای جدول lookup مربوط به Plugin برای installed-index، رجیستری manifest، برنامهریزی شروع، و کار owner-map.OPENCLAW_GATEWAY_RESTART_TRACE=1را تنظیم کنید تا خطهایrestart trace:محدود به بازراهاندازی برای مدیریت سیگنال بازراهاندازی، تخلیه کار فعال، فازهای خاموشی، شروع بعدی، زمان آمادهبودن، و معیارهای حافظه لاگ شوند.OPENCLAW_DIAGNOSTICS=timelineرا همراه باOPENCLAW_DIAGNOSTICS_TIMELINE_PATH=<path>تنظیم کنید تا یک timeline تشخیصی JSONL بهصورت best-effort برای شروع، مخصوص harnessهای QA خارجی نوشته شود. همچنین میتوانید flag را باdiagnostics.flags: ["timeline"]در پیکربندی فعال کنید؛ مسیر همچنان از env فراهم میشود. برای گنجاندن نمونههای event-loop،OPENCLAW_DIAGNOSTICS_EVENT_LOOP=1را اضافه کنید.- ابتدا
pnpm buildرا اجرا کنید، سپسpnpm test:startup:gateway -- --runs 5 --warmup 1را اجرا کنید تا شروع Gateway را در برابر entry ساختهشده CLI benchmark کنید. benchmark نخستین خروجی فرایند،/healthz،/readyz، زمانبندیهای startup trace، تأخیر event-loop و جزئیات زمانبندی جدول lookup مربوط به Plugin را ثبت میکند. - ابتدا
pnpm buildرا اجرا کنید، سپسpnpm test:restart:gateway -- --case skipChannels --runs 1 --restarts 5را اجرا کنید تا بازراهاندازی درونفرایندی Gateway را در برابر entry ساختهشده CLI روی macOS یا Linux benchmark کنید. benchmark بازراهاندازی از SIGUSR1 استفاده میکند، هر دو trace شروع و بازراهاندازی را در فرایند فرزند فعال میکند، و/healthzبعدی،/readyzبعدی، downtime، زمان آمادهبودن، CPU، RSS و معیارهای restart trace را ثبت میکند. /healthzرا بهعنوان liveness و/readyzرا بهعنوان آمادگی قابل استفاده در نظر بگیرید. خطهای trace و خروجی benchmark برای انتساب مالکیت هستند؛ یک span از trace یا یک نمونه را نتیجه کامل عملکردی تلقی نکنید.
پرسوجو از Gateway در حال اجرا
همه دستورهای پرسوجو از WebSocket RPC استفاده میکنند.
Output modes
- پیشفرض: خوانا برای انسان (رنگی در TTY).
--json: JSON قابل خواندن توسط ماشین (بدون styling/spinner).--no-color(یاNO_COLOR=1): ANSI را غیرفعال میکند و چیدمان انسانی را حفظ میکند.
Shared options
--url <url>: URL مربوط به WebSocket در Gateway.--token <token>: توکن Gateway.--password <password>: گذرواژه Gateway.--timeout <ms>: timeout/بودجه (بسته به دستور متفاوت است).--expect-final: منتظر پاسخ «final» بمانید (فراخوانیهای agent).
gateway health
openclaw gateway health --url ws://127.0.0.1:18789openclaw gateway health --port 18789endpoint HTTP به نام /healthz یک probe برای liveness است: وقتی سرور بتواند به HTTP پاسخ دهد، برمیگردد. endpoint HTTP به نام /readyz سختگیرانهتر است و تا زمانی که sidecarهای Plugin شروع، کانالها، یا hookهای پیکربندیشده هنوز در حال تثبیت هستند، قرمز میماند. پاسخهای readiness محلی یا احراز هویتشده و جزئی شامل یک بلوک تشخیصی eventLoop با تأخیر event-loop، بهرهبرداری event-loop، نسبت هسته CPU، و flag به نام degraded هستند.
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tcG9ydCA8cG9ydA
" type="number">
یک Gateway مبتنی بر local loopback را روی این پورت هدف بگیرید. این مقدار OPENCLAW_GATEWAY_URL و OPENCLAW_GATEWAY_PORT را برای فراخوانی health بازنویسی میکند.
gateway usage-cost
خلاصههای هزینه مصرف را از لاگهای نشست دریافت کنید.
openclaw gateway usage-costopenclaw gateway usage-cost --days 7openclaw gateway usage-cost --agent work --jsonopenclaw gateway usage-cost --all-agentsopenclaw gateway usage-cost --json"--days"--agent--all-agentsbooleanخلاصه هزینه را در همه عاملهای پیکربندیشده تجمیع کنید. نمیتواند با --agent ترکیب شود.
gateway stability
ضبطکننده پایداری تشخیصی اخیر را از یک Gateway در حال اجرا دریافت کنید.
openclaw gateway stabilityopenclaw gateway stability --type payload.largeopenclaw gateway stability --bundle latestopenclaw gateway stability --bundle latest --exportopenclaw gateway stability --jsonOPENCLAW_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بهجای فراخوانی Gateway در حال اجرا، یک bundle پایداری پایدارشده را بخوانید. از --bundle latest (یا فقط --bundle) برای جدیدترین bundle زیر دایرکتوری state استفاده کنید، یا مستقیماً مسیر JSON مربوط به bundle را پاس دهید.
--exportbooleanبهجای چاپ جزئیات پایداری، یک فایل zip تشخیصی پشتیبانی قابل اشتراکگذاری بنویسید.
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tb3V0cHV0IDxwYXRo
" type="string">
مسیر خروجی برای --export.
Privacy and bundle behavior
- رکوردها metadata عملیاتی را نگه میدارند: نام رویدادها، شمارشها، اندازههای byte، خوانشهای حافظه، وضعیت queue/session، idهای تأیید، نامهای channel/Plugin، و خلاصههای نشست redacted. آنها متن chat، بدنههای webhook، خروجیهای ابزار، بدنههای خام request یا response، توکنها، cookieها، مقادیر secret، hostnameها، یا idهای خام نشست را نگه نمیدارند. برای غیرفعال کردن کامل ضبطکننده،
diagnostics.enabled: falseرا تنظیم کنید. - هنگام خروجهای fatal از Gateway، timeoutهای خاموشی، و شکستهای شروع پس از بازراهاندازی، OpenClaw وقتی ضبطکننده رویداد دارد همان snapshot تشخیصی را در
~/.openclaw/logs/stability/openclaw-stability-*.jsonمینویسد. جدیدترین bundle را باopenclaw gateway stability --bundle latestبررسی کنید؛--limit،--typeو--since-seqنیز روی خروجی bundle اعمال میشوند.
gateway diagnostics export
یک فایل zip تشخیصی محلی بنویسید که برای پیوست کردن به گزارشهای bug طراحی شده است. برای مدل حریم خصوصی و محتوای bundle، Diagnostics Export را ببینید.
openclaw gateway diagnostics exportopenclaw gateway diagnostics export --output openclaw-diagnostics.zipopenclaw gateway diagnostics export --json"--log-lines"--log-bytes"--url"--token"--password"--timeout--no-stability-bundlebooleanجستوجوی بستهٔ پایداری ذخیرهشده را رد کنید.
--jsonbooleanمسیر نوشتهشده، اندازه و manifest را به صورت JSON چاپ کنید.
خروجی شامل یک manifest، خلاصهٔ Markdown، شکل پیکربندی، جزئیات پیکربندی پاکسازیشده، خلاصههای گزارش پاکسازیشده، snapshotهای وضعیت/سلامت پاکسازیشدهٔ Gateway، و تازهترین بستهٔ پایداری در صورت وجود است.
این خروجی برای اشتراکگذاری در نظر گرفته شده است. جزئیات عملیاتی کمککننده به اشکالزدایی را نگه میدارد، مانند فیلدهای امن گزارش OpenClaw، نام زیرسامانهها، کدهای وضعیت، مدتزمانها، حالتهای پیکربندیشده، پورتها، شناسههای plugin، شناسههای provider، تنظیمات غیرمحرمانهٔ ویژگیها، و پیامهای گزارش عملیاتی ویرایششده. متن چت، بدنههای Webhook، خروجیهای ابزار، اعتبارنامهها، کوکیها، شناسههای حساب/پیام، متن prompt/دستورالعمل، نام میزبانها و مقادیر محرمانه را حذف یا ویرایش میکند. وقتی یک پیام به سبک LogTape شبیه متن payload کاربر/چت/ابزار باشد، خروجی فقط این را نگه میدارد که پیامی حذف شده است، بههمراه تعداد بایت آن.
gateway status
gateway status سرویس Gateway (launchd/systemd/schtasks) را بههمراه یک probe اختیاری برای قابلیت اتصال/احراز هویت نشان میدهد.
openclaw gateway statusopenclaw gateway status --jsonopenclaw gateway status --require-rpc"--url"--token"--password"--timeout--no-probebooleanprobe اتصال را رد کنید (نمای فقط سرویس).
--deepbooleanسرویسهای سطح سیستم را هم اسکن کنید.
--require-rpcbooleanprobe اتصال پیشفرض را به یک probe خواندن ارتقا دهید و وقتی آن probe خواندن شکست میخورد با مقدار غیرصفر خارج شوید. نمیتواند با --no-probe ترکیب شود.
معنای وضعیت
gateway statusحتی وقتی پیکربندی CLI محلی موجود نیست یا نامعتبر است، برای diagnostics در دسترس میماند.gateway statusپیشفرض وضعیت سرویس، اتصال WebSocket، و قابلیت احراز هویت قابل مشاهده در زمان handshake را اثبات میکند. عملیات خواندن/نوشتن/admin را اثبات نمیکند.- probeهای diagnostic برای احراز هویت دستگاه در اولین استفاده، غیرتغییردهنده هستند: وقتی توکن دستگاه cacheشدهٔ موجودی وجود داشته باشد، از آن دوباره استفاده میکنند، اما فقط برای بررسی وضعیت، هویت دستگاه CLI جدید یا رکورد pairing دستگاه فقطخواندنی ایجاد نمیکنند.
gateway statusدر صورت امکان SecretRefs احراز هویت پیکربندیشده را برای احراز هویت probe resolve میکند.- اگر یک SecretRef احراز هویت الزامی در این مسیر فرمان resolve نشده باشد، وقتی اتصال/احراز هویت probe شکست بخورد،
gateway status --jsonمقدارrpc.authWarningرا گزارش میکند؛--token/--passwordرا صریحاً بدهید یا ابتدا منبع secret را resolve کنید. - اگر probe موفق شود، هشدارهای auth-ref resolveنشده برای جلوگیری از مثبت کاذب سرکوب میشوند.
- وقتی probing فعال باشد، خروجی JSON شامل
gateway.versionاست، اگر Gateway در حال اجرا آن را گزارش کند؛ اگر probe handshake بعدی نتواند metadata نسخه را فراهم کند،--require-rpcمیتواند به payload RPC مربوط بهstatus.runtimeVersionبازگردد. - وقتی یک سرویس در حال گوشدادن کافی نیست و لازم است فراخوانیهای RPC با دامنهٔ خواندن هم سالم باشند، از
--require-rpcدر scriptها و automation استفاده کنید. --deepیک اسکن best-effort برای نصبهای اضافی launchd/systemd/schtasks اضافه میکند. وقتی چند سرویس شبیه gateway شناسایی شوند، خروجی انسانی راهنمای پاکسازی چاپ میکند و هشدار میدهد که بیشتر setupها باید یک gateway برای هر ماشین اجرا کنند.--deepهمچنین handoff اخیر restart سرپرست Gateway را گزارش میکند، وقتی process سرویس برای restart سرپرست خارجی بهصورت clean خارج شده باشد.--deepاعتبارسنجی پیکربندی را در حالت آگاه از plugin اجرا میکند (pluginValidation: "full") و هشدارهای manifest مربوط به pluginهای پیکربندیشده را نمایش میدهد (برای مثال metadata پیکربندی channel که موجود نیست) تا smoke checkهای نصب و بهروزرسانی آنها را بگیرند.gateway statusپیشفرض مسیر سریع فقطخواندنی را نگه میدارد که اعتبارسنجی plugin را رد میکند.- خروجی انسانی مسیر فایل گزارش resolveشده و snapshot مسیرها/اعتبار پیکربندی CLI-در-برابر-سرویس را شامل میشود تا به تشخیص drift در profile یا state-dir کمک کند.
بررسیهای auth-drift در Linux systemd
- در نصبهای Linux systemd، بررسیهای drift احراز هویت هر دو مقدار
Environment=وEnvironmentFile=را از unit میخوانند (شامل%h، مسیرهای quoted، چند فایل، و فایلهای اختیاری-). - بررسیهای drift مقدار SecretRefهای
gateway.auth.tokenرا با استفاده از env زمان اجرای mergeشده resolve میکنند (ابتدا env فرمان سرویس، سپس process env بهعنوان fallback). - اگر احراز هویت توکنی عملاً فعال نباشد (
gateway.auth.modeصریح برابر باpassword/none/trusted-proxy، یا mode تنظیم نشده باشد جایی که password میتواند برنده شود و هیچ token candidate نتواند برنده شود)، بررسیهای token-drift از resolve کردن توکن پیکربندی رد میشوند.
gateway probe
gateway probe فرمان «اشکالزدایی همهچیز» است. همیشه این موارد را probe میکند:
- gateway remote پیکربندیشدهٔ شما (اگر تنظیم شده باشد)، و
- localhost (loopback) حتی اگر remote پیکربندی شده باشد.
اگر --url را بدهید، آن هدف صریح جلوتر از هر دو اضافه میشود. خروجی انسانی برچسب هدفها را اینگونه نشان میدهد:
URL (explicit)Remote (configured)یاRemote (configured, inactive)Local loopback
openclaw gateway probeopenclaw gateway probe --jsonopenclaw gateway probe --port 18789OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tcG9ydCA8cG9ydA
" type="number">
از این پورت برای هدف probe مربوط به local loopback و پورت remote تونل SSH استفاده کنید. بدون --url، این گزینه هدف local loopback را بهجای نشانی gateway environment پیکربندیشده، پورت environment، یا هدفهای remote انتخاب میکند.
تفسیر
Reachable: yesیعنی دستکم یک هدف اتصال WebSocket را پذیرفته است.Capability: 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 با دامنهٔ خواندن محدود است. این بهصورت قابل دسترسی degraded گزارش میشود، نه شکست کامل.Read probe: failedبعد ازConnect: okیعنی Gateway اتصال WebSocket را پذیرفته، اما diagnostics خواندن بعدی timeout شده یا شکست خورده است. این هم قابل دسترسی degraded است، نه Gateway غیرقابل دسترس.- مانند
gateway status، probe از احراز هویت دستگاه cacheشدهٔ موجود دوباره استفاده میکند اما هویت دستگاه یا وضعیت pairing اولین استفاده را ایجاد نمیکند. - exit code فقط وقتی غیرصفر است که هیچ هدف probeشدهای قابل دسترس نباشد.
خروجی JSON
سطح بالا:
ok: دستکم یک هدف قابل دسترس است.degraded: دستکم یک هدف اتصال را پذیرفته اما diagnostics کامل جزئیات RPC را کامل نکرده است.capability: بهترین قابلیت دیدهشده در میان هدفهای قابل دسترس (read_only،write_capable،admin_capable،pairing_pending،connected_no_operator_scope، یاunknown).primaryTargetId: بهترین هدف برای در نظر گرفتن بهعنوان برندهٔ فعال با این ترتیب: URL صریح، تونل SSH، remote پیکربندیشده، سپس local loopback.warnings[]: رکوردهای هشدار best-effort باcode،message، وtargetIdsاختیاری.network: راهنماییهای URL مربوط به local loopback/tailnet که از پیکربندی فعلی و شبکهٔ میزبان به دست آمدهاند.discovery.timeoutMsوdiscovery.count: بودجه/تعداد نتیجهٔ واقعی discovery که برای این عبور probe استفاده شده است.
برای هر هدف (targets[].connect):
ok: قابل دسترس بودن پس از connect + طبقهبندی degraded.rpcOk: موفقیت کامل RPC جزئیات.scopeLimited: شکست RPC جزئیات به دلیل نبود operator scope.
برای هر هدف (targets[].auth):
role: نقش احراز هویت گزارششده درhello-ok، وقتی موجود باشد.scopes: دامنههای اعطاشدهٔ گزارششده درhello-ok، وقتی موجود باشد.capability: طبقهبندی قابلیت احراز هویت نمایشدادهشده برای آن هدف.
کدهای هشدار رایج
ssh_tunnel_failed: راهاندازی تونل SSH شکست خورد؛ فرمان به probeهای مستقیم fallback کرد.multiple_gateways: هویتهای متمایز gateway قابل دسترس بودند، یا OpenClaw نتوانست اثبات کند هدفهای قابل دسترس همان gateway هستند. یک تونل SSH، URL proxy، یا URL remote پیکربندیشده به همان gateway این هشدار را فعال نمیکند.auth_secretref_unresolved: یک SecretRef احراز هویت پیکربندیشده برای هدف شکستخورده resolve نشد.probe_scope_limited: اتصال WebSocket موفق شد، اما probe خواندن به دلیل نبودoperator.readمحدود شد.
Remote از طریق SSH (همارزی برنامهٔ Mac)
حالت «Remote over SSH» در برنامهٔ macOS از یک port-forward محلی استفاده میکند تا gateway remote (که ممکن است فقط به loopback bind شده باشد) در ws://127.0.0.1:<port> قابل دسترس شود.
معادل CLI:
openclaw gateway probe --ssh user@gateway-hostOPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Ii0tc3NoIDx0YXJnZXQ
" type="string">
user@host یا user@host:port (پورت پیشفرض 22 است).
--ssh-autobooleanنخستین میزبان gateway کشفشده را از endpoint کشف resolveشده (local. بهعلاوهٔ domain گستردهٔ پیکربندیشده، در صورت وجود) بهعنوان هدف SSH انتخاب کنید. راهنماییهای فقط TXT نادیده گرفته میشوند.
پیکربندی (اختیاری، استفادهشده بهعنوان پیشفرض):
gateway.remote.sshTargetgateway.remote.sshIdentity
gateway call <method>
کمککنندهٔ RPC سطح پایین.
openclaw gateway call statusopenclaw gateway call logs.tail --params '{"sinceMs": 60000}'"--params"--url"--token"--password"--timeout--expect-finalbooleanعمدتاً برای RPCهای سبک agent که رویدادهای میانی را پیش از payload نهایی stream میکنند.
--jsonbooleanخروجی JSON قابل خواندن توسط ماشین.
مدیریت سرویس Gateway
openclaw gateway installopenclaw gateway startopenclaw gateway stopopenclaw gateway restartopenclaw gateway uninstallنصب با یک wrapper
زمانی از --wrapper استفاده کنید که سرویس مدیریتشده باید از طریق یک فایل اجرایی دیگر شروع شود، برای نمونه یک
shim مدیر اسرار یا یک ابزار run-as. wrapper آرگومانهای عادی Gateway را دریافت میکند و
مسئول است در نهایت openclaw یا Node را با همان آرگومانها exec کند.
cat > ~/.local/bin/openclaw-doppler <<'EOF'#!/usr/bin/env bashset -euo pipefailexec doppler run --project my-project --config production -- openclaw "$@"EOFchmod +x ~/.local/bin/openclaw-doppler openclaw gateway install --wrapper ~/.local/bin/openclaw-doppler --forceopenclaw gateway restartهمچنین میتوانید wrapper را از طریق محیط تنظیم کنید. gateway install اعتبارسنجی میکند که مسیر
یک فایل اجرایی است، wrapper را در ProgramArguments سرویس مینویسد، و
OPENCLAW_WRAPPER را در محیط سرویس برای نصبهای اجباری دوباره، بهروزرسانیها، و تعمیرهای doctor
بعدی پایدار میکند.
OPENCLAW_WRAPPER="$HOME/.local/bin/openclaw-doppler" openclaw gateway install --forceopenclaw doctorبرای حذف یک wrapper پایدارشده، هنگام نصب دوباره OPENCLAW_WRAPPER را پاک کنید:
OPENCLAW_WRAPPER= openclaw gateway install --forceopenclaw 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,--skip-deferral,--force,--wait <duration>,--jsongateway uninstall|start:--jsongateway stop:--disable,--json
رفتار چرخه عمر
- برای راهاندازی دوباره یک سرویس مدیریتشده از
gateway restartاستفاده کنید.gateway stopوgateway startرا بهعنوان جایگزین restart زنجیره نکنید. - در macOS،
gateway stopبهطور پیشفرض ازlaunchctl bootoutاستفاده میکند، که LaunchAgent را بدون پایدار کردن غیرفعالسازی از نشست بوت فعلی حذف میکند — بازیابی خودکار KeepAlive برای خرابیهای آینده فعال میماند وgateway startبدون نیاز بهlaunchctl enableدستی دوباره بهصورت تمیز فعال میشود. برای سرکوب پایدار KeepAlive و RunAtLoad،--disableرا پاس دهید تا gateway تاgateway startصریح بعدی دوباره اجرا نشود؛ از این گزینه زمانی استفاده کنید که توقف دستی باید پس از reboot یا راهاندازی دوباره سیستم هم باقی بماند. gateway restart --safeاز Gateway در حال اجرا میخواهد کار فعال را پیشپرواز کند و پس از تخلیه کار فعال، یک restart ادغامشده زمانبندی کند. restart ایمن پیشفرض تا سقفgateway.reload.deferralTimeoutMsپیکربندیشده (پیشفرض ۵ دقیقه) منتظر کار فعال میماند؛ وقتی این بودجه تمام شود restart اجباری میشود. برای انتظار ایمن نامحدود که هرگز اجباری نمیشود،gateway.reload.deferralTimeoutMsرا روی0تنظیم کنید.--safeنمیتواند با--forceیا--waitترکیب شود.gateway restart --wait 30sبودجه تخلیه restart پیکربندیشده را برای همان restart بازنویسی میکند. عددهای بدون واحد میلیثانیه هستند؛ واحدهایی مانندs،m، وhپذیرفته میشوند.--wait 0بهطور نامحدود منتظر میماند.gateway restart --safe --skip-deferralrestart ایمن آگاه از OpenClaw را اجرا میکند اما دروازه defer را دور میزند تا Gateway حتی وقتی blocker گزارش شدهاند restart را بیدرنگ منتشر کند. راه گریز اپراتور برای deferهای اجرای task گیرکرده؛ به--safeنیاز دارد.gateway restart --forceتخلیه کار فعال را نادیده میگیرد و بیدرنگ restart میکند. زمانی از آن استفاده کنید که اپراتور blockerهای task فهرستشده را از قبل بررسی کرده و میخواهد gateway همین حالا برگردد.- فرمانهای چرخه عمر برای اسکریپتنویسی
--jsonرا میپذیرند.
Auth و SecretRefs در زمان نصب
- وقتی احراز هویت token به token نیاز دارد و
gateway.auth.tokenبا SecretRef مدیریت میشود،gateway installاعتبارسنجی میکند که SecretRef قابل resolve است، اما token resolveشده را در فراداده محیط سرویس پایدار نمیکند. - اگر احراز هویت token به token نیاز داشته باشد و SecretRef پیکربندیشده token resolve نشده باشد، نصب بهجای پایدار کردن متن ساده fallback بهصورت fail-closed شکست میخورد.
- برای احراز هویت password در
gateway run،OPENCLAW_GATEWAY_PASSWORD،--password-file، یاgateway.auth.passwordپشتیبانیشده با SecretRef را به--passwordدرونخطی ترجیح دهید. - در حالت احراز هویت استنباطشده،
OPENCLAW_GATEWAY_PASSWORDفقط در shell الزامات token نصب را آسانتر نمیکند؛ هنگام نصب یک سرویس مدیریتشده از پیکربندی بادوام (gateway.auth.passwordیاenvپیکربندی) استفاده کنید. - اگر هم
gateway.auth.tokenو همgateway.auth.passwordپیکربندی شده باشند وgateway.auth.modeتنظیم نشده باشد، نصب تا زمانی که 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 را advertise میکنند.
رکوردهای کشف wide-area میتوانند این راهنماییهای TXT را شامل شوند:
role(راهنمای نقش gateway)transport(راهنمای transport، مثلgateway)gatewayPort(پورت WebSocket، معمولا18789)sshPort(فقط حالت کشف کامل؛ وقتی غایب باشد، کلاینتها مقصدهای SSH را بهطور پیشفرض روی22میگذارند)tailnetDns(نام میزبان MagicDNS، وقتی موجود باشد)gatewayTls/gatewayTlsSha256(TLS فعال + اثرانگشت گواهی)cliPath(فقط حالت کشف کامل)
gateway discover
openclaw gateway discover"--timeout--jsonbooleanخروجی قابلخواندن برای ماشین (همچنین styling/spinner را غیرفعال میکند).
مثالها:
openclaw gateway discover --timeout 4000openclaw gateway discover --json | jq '.beacons[].wsUrl'