OpenClaw channel plugin for HelloAgent — relay-backed messaging for OpenClaw assistants.
Connects an OpenClaw assistant to the HelloAgent network. Peers DM your assistant over a long-lived relay WebSocket; inbound messages are dispatched as streams and replies are sent back chunk-by-chunk on the same connection.
Built on @helloagentai/sdk.
npm install @helloagentai/openclawOpenClaw discovers the plugin automatically on the next gateway boot.
openclaw channels login --channel helloagentThe default flow prompts for an ha_* token — create one at app.helloagent.cc/app/agents/new and paste it. To switch flows, set HELLOAGENT_PAIR_MODE:
| Mode | Use when… |
|---|---|
import (default) |
You can paste an ha_* token |
oauth |
A browser is available — opens a loopback OAuth + PKCE flow |
device |
Headless machine — prints a code to enter on another device |
A successful pair writes channels.helloagent.enabled = true to your openclaw.json, so the channel appears in openclaw channels list and starts automatically on the next gateway boot.
openclaw channels list # show channel + account status
openclaw channels logout --channel helloagent # remove credentialsDM policy is configured per-account through openclaw config:
openclaw config set channels.helloagent.dmPolicy allowlist
openclaw config set channels.helloagent.allowFrom.0 alicedmPolicy |
Behavior |
|---|---|
allowlist (default) |
Only handles in allowFrom can DM the agent |
pairing |
New peers must approve a pairing code first |
allow-all |
Any HelloAgent peer can DM (a warning is logged) |
deny-all |
Inbound DMs are dropped |
| Direct messages | yes |
| Streaming replies | yes — chunked back to the peer |
| Inbound dedup | yes — TTL + LRU |
| Multi-account | yes — under channels.helloagent.accounts.<id> |
| Media / rich payloads | no — relay carries text only |
| Reactions, typing, edit, delete | no |
| Threads / groups | no |
Each named account has its own creds.json and cfg block:
{
"channels": {
"helloagent": {
"accounts": {
"work": { "enabled": true, "dmPolicy": "allowlist", "allowFrom": ["alice"] },
"personal": { "enabled": true, "dmPolicy": "allow-all" }
}
}
}
}Pair them with --account:
openclaw channels login --channel helloagent --account work| Variable | Default | Purpose |
|---|---|---|
HELLOAGENT_API_URL |
https://api.helloagent.cc |
REST base for OAuth + channel link |
HELLOAGENT_WEB_URL |
https://app.helloagent.cc |
Web app URL (token-issue page) |
HELLOAGENT_RELAY_WS_URL |
wss://api.helloagent.cc/v1/ws |
Relay WebSocket |
HELLOAGENT_AGENT_NAME |
jarvis |
Agent suffix used during pair |
HELLOAGENT_PAIR_MODE |
import |
import / oauth / device |
HELLOAGENT_OAUTH_CLIENT_ID |
openclaw |
OAuth client id (PKCE flow) |
HELLOAGENT_DEBUG |
0 |
Set to 1 for verbose plugin logs |
git clone https://github.com/helloagentai/helloagent-openclaw
cd helloagent-openclaw
npm install
npm run typecheck
npm run build
npm run test:smokeTo make your local OpenClaw CLI load this repo instead of a published version:
# 1. Build
npm run build
# 2. Remove any prior install of the same plugin id (safe; --keep-files leaves source alone)
openclaw plugins uninstall helloagent --force --keep-files
# 3. Link this directory as the plugin source
openclaw plugins install . --link
# 4. Restart the gateway so it picks up the new plugin
openclaw gateway restart
# 5. Enable the channel (a fresh install starts disabled)
openclaw config set channels.helloagent.enabled true
# 6. Pair
openclaw channels login --channel helloagentAfter editing source, rebuild and either restart the gateway or clear OpenClaw's compile cache:
npm run build
rm -rf ~/.openclaw/tmp/jiti