Relay prompts or posts through OpenClaw sessions. One skill; two transports: direct local acpx or 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.
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/acpxmac-studio<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."
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 mac-studio
python3 scripts/openclaw_relay.py send \
--transport ssh \
--host mac-studio \
--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: