← Back to Plugins
Channels

ClawVibe OpenClaw

ClawVibe By ClawVibe 👁 4 views ▲ 0 votes

OpenClaw channel plugin for ClawVibe apps — HTTP/SSE gateway

Homepage GitHub

Install

openclaw plugins install openclaw-clawvibe

Configuration Example

{
  "channels": {
    "clawvibe": {
      "enabled": true,
      "accounts": {
        "app": { "enabled": true }
      }
    }
  },
  "bindings": [
    { "agentId": "your-agent", "match": { "channel": "clawvibe", "accountId": "app" } }
  ]
}

README

# ClawVibe OpenClaw Channel

OpenClaw channel plugin for ClawVibe - thin HTTP/SSE relay with device pairing and presence tracking. ClawVibe apps own the smarts (fragment buffering, format directives, biometrics); plugin is a stable relay layer.

Fully self-contained - no external database or file-store service required.

## Install

```bash
openclaw plugins install openclaw-clawvibe
openclaw plugins enable clawvibe
```

## Configure

Add to `openclaw.json`:

```json
{
  "channels": {
    "clawvibe": {
      "enabled": true,
      "accounts": {
        "app": { "enabled": true }
      }
    }
  },
  "bindings": [
    { "agentId": "your-agent", "match": { "channel": "clawvibe", "accountId": "app" } }
  ]
}
```

Optional config (in `channels.clawvibe`):

| Key | Default | Description |
|-----|---------|-------------|
| `pushToken` | (none) | Token for admin push endpoint |

## Endpoints

All routes prefixed with `/clawvibe/`.

### Pairing (unauthenticated)

| Route | Method | Description |
|-------|--------|-------------|
| `/clawvibe/pair/request` | POST | Initiate pairing (returns 6-char code) |
| `/clawvibe/pair/status` | GET | Poll pairing status |

### Admin (push token auth)

| Route | Method | Description |
|-------|--------|-------------|
| `/clawvibe/pair/pending` | GET | List pending pairing requests |
| `/clawvibe/pair/approve` | POST | Approve a pairing request |
| `/clawvibe/pair/revoke` | POST | Revoke a paired device |
| `/clawvibe/pair/devices` | GET | List all paired devices |
| `/clawvibe/push` | POST | Broadcast to all SSE clients |

### Device (device token auth via `X-Device-Token`)

| Route | Method | Description |
|-------|--------|-------------|
| `/clawvibe/agents` | GET | List allowed agents |
| `/clawvibe/chat` | POST | Main message handler |
| `/clawvibe/events` | GET | SSE stream for responses |
| `/clawvibe/presence` | POST | Presence state tracking |
| `/clawvibe/device-response` | POST | Device request response callback |
| `/clawvibe/pair/unpair` | POST | Self-unpair |

### Utility (unauthenticated)

| Route | Method | Description |
|-------|--------|-------------|
| `/clawvibe/health` | GET | Health check |
| `/clawvibe/infra-status` | GET | OpenClaw service probe |

## Storage

Device data stored locally in `data/devices/`:

```
data/
  devices/{deviceId}.json   # Paired device records
```

## Chat Request Format

```json
{
  "lane": "voice",
  "text": "complete transcribed speech",
  "agentId": "main",
  "instructions": "Split replies into short segments separated by ---\n[SPEAK] force TTS\n[TEXT] text-only",
  "location": { "lat": -33.8, "lon": 151.2, "alt": 0, "speed": 0, "heading": null },
  "context": { "datetime": "Wednesday 2026-03-26 14:30", "timezone": "AEST" },
  "voiceData": [{ "speaker": "primary", "confidence": 0.92 }]
}
```

Key fields:
- `lane` - Required. `voice` or `text`
- `text` - Complete message (app handles fragment buffering)
- `instructions` - Optional. Format/segmentation directives passed through to agent
- `voiceData` - Optional. On-device voice matching summaries (passthrough to agent)

## Presence States

Apps report presence via `POST /clawvibe/presence` with a `state` field:

| State | Meaning |
|-------|---------|
| `active` | App is open and in foreground |
| `listening` | Microphone active, waiting for speech |
| `talking` | User is speaking |
| `typing` | User is typing a text message |
| `speaking` | Agent TTS is playing |
| `idle` | App is open but no activity |
| `away` | App is backgrounded or screen locked |
| `returned` | App returned from background (mapped to `active`) |

Presence is injected into agent instructions as `[USER_PRESENCE: state=..., app_connected=..., last_update=...]`.

## CLI Tool

`bin/clawvibe-pair` is a bash CLI for admin pairing management.

```bash
export CLAWVIBE_PUSH_TOKEN="your-push-token"
export OPENCLAW_URL="http://127.0.0.1:18789"  # default

clawvibe-pair list                            # Show pending pairing requests
clawvibe-pair approve A3K7NP --agents main    # Approve device with agent access
clawvibe-pair devices                         # List all paired devices
clawvibe-pair revoke <deviceId>               # Revoke a paired device
```

## Session Keys

Each device-agent pair gets an isolated session. The key format is:

```
agent:{agentId}:clawvibe:app:{deviceId}
```

For example: `agent:main:clawvibe:app:AB12CD34-5678-EF90`
channels

Comments

Sign in to leave a comment

Loading comments...