mit einem Klick
openclaw-relay
// OpenClaw session relay: prompts/posts via local/remote acpx over SSH.
// OpenClaw session relay: prompts/posts via local/remote acpx over SSH.
Twilio SMS CLI: buy/list/keep numbers, send/check messages, credential routing.
Add a redacted agent transcript section to GitHub PR or issue bodies during OpenClaw agent-created PR/issue workflows.
Wrangler CLI: Workers, KV, tail, deploy, account routing.
Audit Codex/OpenClaw skills: loaded roots, duplicate skills, unused skills, prompt-budget costs, compact descriptions.
macOS app release: Sparkle, notarization, GitHub Release, Homebrew, closeout.
1Password/op: service-account first, targeted secret read/store/inject, tmux.
| name | openclaw-relay |
| description | OpenClaw session relay: prompts/posts via local/remote acpx over SSH. |
Use this when the job is:
One skill. Two transports:
localsshDefault to local for direct telephone-game work from the current OpenClaw checkout. Use ssh when the target agent/session lives on another machine.
For Peter's setup, Molty normally lives on the Mac Studio gateway, reached as steipete@steipete-macstudio.local; avoid the mac-studio SSH alias for one-shot relay work because that alias auto-attaches tmux.
Script path: scripts/openclaw_relay.py
Target aliases file: config/session_aliases.json
Choose local when:
acpxChoose ssh when:
The script avoids baked-in personal paths. Override with env or flags when needed.
local<cwd>/extensions/acpxsteipete@steipete-macstudio.local<remote-home>/clawdbot<remote-home>/Projects/oss/acpx<home>/.openclaw/gateway.tokencodex-bridgeconfig/session_aliases.jsonUseful env vars:
OPENCLAW_RELAY_TRANSPORTOPENCLAW_RELAY_HOSTOPENCLAW_RELAY_CWDOPENCLAW_RELAY_ACPX_REPOOPENCLAW_RELAY_GATEWAY_URLOPENCLAW_RELAY_GATEWAY_TOKEN_FILEOPENCLAW_RELAY_SESSIONOPENCLAW_RELAY_TARGETS_FILEHealth check:
python3 scripts/openclaw_relay.py doctor
List known target aliases:
python3 scripts/openclaw_relay.py targets
Resolve a target alias:
python3 scripts/openclaw_relay.py resolve --target maintainers
Ask a target session a question privately:
python3 scripts/openclaw_relay.py ask \
--target maintainers \
--message "Summarize the current vibe in this channel."
Force-send text to the resolved target:
python3 scripts/openclaw_relay.py force-send \
--target maintainers \
--text "Deploy is done."
For multiline posts, use --text-file <path> or --text-file - instead of
shell-quoting the message.
Force-send media when the user explicitly wants a channel post:
python3 scripts/openclaw_relay.py force-send \
--transport ssh \
--host steipete@steipete-macstudio.local \
--target maintainers \
--text "Demo video." \
--media /tmp/demo.mp4
Use the persistent control session:
python3 scripts/openclaw_relay.py ensure
python3 scripts/openclaw_relay.py send --message "Reply with exactly OK."
python3 scripts/openclaw_relay.py show
Remote host example:
python3 scripts/openclaw_relay.py doctor --transport ssh --host steipete@steipete-macstudio.local
python3 scripts/openclaw_relay.py send \
--transport ssh \
--host steipete@steipete-macstudio.local \
--message "Reply with exactly OK."
Queue work and poll the same control session:
python3 scripts/openclaw_relay.py start --message "Work on X and reply when done."
python3 scripts/openclaw_relay.py wait --after-seq <last-seq>
python3 scripts/openclaw_relay.py show
config/session_aliases.json ships with placeholders. Replace them with real values for your setup.
Example shape:
{
"main": "agent:<agentId>:main",
"maintainers": "agent:<agentId>:discord:channel:<channelId>"
}
Use these rules when choosing a command:
askpublishforce-sendsendstart, then wait and showcancelIf relay work fails:
doctor.status.show.cancel, then ensure, then retry.If route discovery is uncertain:
Return the actual assistant text or delivery result, not shell noise.
For relay tasks, report: