Tools
Nats
NATS JetStream event-driven plugin for OpenClaw
Install
openclaw plugins install @omnixal/openclaw-nats-plugin
README
# @omnixal/openclaw-nats-plugin
NATS JetStream event-driven plugin for [OpenClaw](https://openclaw.ai). Replaces polling-based heartbeat with real-time event streaming.
## What it does
Hooks into OpenClaw Gateway lifecycle and publishes events to NATS JetStream โ tool completions, session starts/stops, subagent spawns, commands, context compaction. A sidecar service handles NATS connectivity, deduplication, filtering, and a pending event queue for inbound processing.
## Install
```bash
openclaw plugins install @omnixal/openclaw-nats-plugin
npx @omnixal/openclaw-nats-plugin setup
openclaw gateway restart
```
Setup auto-detects your runtime (Bun or Docker) and configures NATS server + sidecar.
## Published events
| Subject | Trigger |
|---|---|
| `agent.events.gateway.startup` | Gateway starts |
| `agent.events.session.new` | `/new` command |
| `agent.events.session.reset` | `/reset` command |
| `agent.events.session.stop` | `/stop` command |
| `agent.events.session.started` | Session begins |
| `agent.events.session.ended` | Session ends |
| `agent.events.tool.{name}.completed` | Tool succeeds |
| `agent.events.tool.{name}.failed` | Tool fails |
| `agent.events.subagent.spawned` | Subagent created |
| `agent.events.subagent.ended` | Subagent finished |
| `agent.events.agent.run_ended` | Agent run completes |
| `agent.events.message.sent` | Message delivered |
| `agent.events.context.compacted` | Context history compressed |
## Dashboard
Built-in web UI at `/nats-dashboard` on the Gateway. Shows NATS/Gateway/sidecar health, pending event queue, and configuration. Auto-refreshes every 5 seconds.
## Architecture
```
OpenClaw Gateway
โโโ hooks/gateway-startup โ publishes startup event
โโโ hooks/lifecycle-publisher โ publishes tool results
โโโ hooks/command-publisher โ publishes /new, /reset, /stop
โโโ plugins/nats-context-engine
โโโ session/agent/subagent/message/compaction events
โโโ /nats-dashboard (Svelte SPA)
NATS Sidecar (OneBun service, port 3104)
โโโ Publisher โ receives events via HTTP, publishes to JetStream
โโโ Consumer โ subscribes to JetStream, delivers to Gateway
โโโ Dedup โ idempotency key deduplication
โโโ Filter โ subject allowlist/blocklist
โโโ Pending โ SQLite queue for inbound events
โโโ Health API โ /api/health for dashboard
```
## Management
```bash
npx @omnixal/openclaw-nats-plugin start # Start services
npx @omnixal/openclaw-nats-plugin stop # Stop services
npx @omnixal/openclaw-nats-plugin status # Health check
npx @omnixal/openclaw-nats-plugin uninstall # Remove (keeps data)
npx @omnixal/openclaw-nats-plugin uninstall --purge # Remove everything
```
## Configuration
Environment variables (auto-configured by setup):
| Variable | Default | Description |
|---|---|---|
| `NATS_SIDECAR_URL` | `http://127.0.0.1:3104` | Sidecar HTTP endpoint |
| `NATS_PLUGIN_API_KEY` | *(auto-generated)* | API key for sidecar auth |
| `NATS_SERVERS` | `nats://127.0.0.1:4222` | NATS server URL |
## Requirements
- OpenClaw Gateway v2026.3+
- Bun (recommended) or Docker
## License
MIT
tools
Comments
Sign in to leave a comment