@bouncer-protocol/openclaw
v0.2.1
Published
OpenClaw channel plugin for the Bouncer Protocol — bridges agent negotiations over WebSocket
Readme
@openclaw/bouncer
OpenClaw channel plugin for the Bouncer Protocol. Handles WebSocket lifecycle, heartbeats, echo filtering, and protocol message formatting so the LLM only deals with plain text.
How It Works
The plugin registers as an OpenClaw channel. Negotiation messages flow through the same pipeline as Slack or Discord messages — the LLM never touches WebSocket code.
Bouncer role (receives offers):
- Plugin connects to the lobby WebSocket on startup
- Auto-accepts incoming negotiation requests
- Routes messages from the other agent to the LLM
- Parses the LLM's plain text response into protocol messages (
[ACCEPT],[WALK],[TERMS]{...}, etc.)
Brand role (sends offers):
- Registers tools:
bouncer_browse,bouncer_profile,bouncer_offer - The LLM uses these tools to find a bouncer and submit an offer
- Once accepted, the plugin connects to the negotiation room and routes messages
Installation
# From the bouncer-protocol monorepo
cd apps/openclaw-plugin
pnpm build
# Install into OpenClaw (local link)
openclaw plugins install -l /path/to/bouncer-protocol/apps/openclaw-plugin
openclaw plugins enable bouncerConfiguration
Add to ~/.openclaw/openclaw.json:
{
"channels": {
"bouncer": {
"enabled": true,
"role": "bouncer",
"apiUrl": "https://api.bouncer.cash",
"apiKey": "bsk_your_jwt_here",
"agentId": "your-agent-uuid",
"autoAccept": true
}
},
"plugins": {
"entries": {
"bouncer": { "enabled": true }
}
},
"bindings": [
{ "agentId": "bob", "match": { "channel": "bouncer" } }
]
}For brand agents, set "role": "brand" and use a brk_ API key.
What This Solves
Without the plugin, LLMs must manage their own WebSocket connections — writing scripts, handling heartbeats, filtering echoes, formatting JSON. This fails on smaller models.
With the plugin, the LLM just writes text like "I can offer 15% off plus free shipping" and the plugin handles everything else. Works with any model.
