Skip to main content

WebBridge channel plugin for nanobot - universal web interface

Project description

nanobot-webbridge-plugin

๐ŸŽ‰ WebBridge channel plugin for nanobot โ€” Enables a beautiful web chat interface with streaming responses for your AI agent!

This plugin adds a WebSocket server to nanobot that accepts connections from agent-webbridge, providing a universal web frontend.


Architecture

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”          โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”          โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚   agent-webbridge  โ”‚โ—„โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–บโ”‚   nanobot (with     โ”‚โ—„โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–บโ”‚   AI Agent (LLM)    โ”‚
โ”‚   (Web Frontend)   โ”‚  wss    โ”‚   webbridge plugin) โ”‚  json    โ”‚                     โ”‚
โ”‚   port 8080        โ”‚          โ”‚   port 18791       โ”‚          โ”‚                     โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜          โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜          โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
         โ”‚                                                                              โ”‚
         โ”‚  User's Browser                                                             โ”‚
         โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Features

  • ๐Ÿ” Secure โ€” API Key + HMAC + IP whitelist
  • ๐ŸŒ Universal โ€” Works with any WebSocket agent (nanobot, openclaw, etc.)
  • ๐Ÿ’ฌ Real-time Streaming โ€” Responses appear word by word as AI generates them
  • ๐Ÿ“Ž File Upload โ€” Images, PDFs, documents
  • ๐ŸŽจ Modern UI โ€” Dark-themed, responsive design
  • ๐Ÿ”„ Auto-reconnect โ€” Automatic reconnection on disconnect
  • ๐Ÿ“ฑ Responsive โ€” Works on desktop and mobile

Streaming Configuration

The plugin supports real-time streaming of AI responses. Messages are sent as chunks for a natural feel.

{
  "channels": {
    "webbridge": {
      "enabled": true,
      "streaming": true,
      "stream_chars_per_second": 100,
      "host": "0.0.0.0",
      "port": 18791,
      "allowed_connections": [...]
    }
  }
}
Setting Type Default Description
streaming boolean true Enable/disable streaming
stream_chars_per_second integer 100 Speed of streaming (chars per second)

Prerequisites

  • nanobot installed and running
  • Python 3.10+
  • agent-webbridge frontend (see agent-webbridge)

Installation

1. Install the plugin

# Using pip
pip install nanobot-webbridge-plugin

# Or from source
git clone https://github.com/ramonpaolo/nanobot-webbridge-plugin.git
cd nanobot-webbridge-plugin
pip install -e .

2. Configure nanobot

Edit your ~/.nanobot/config.json:

{
  "channels": {
    "webbridge": {
      "enabled": true,
      "host": "0.0.0.0",
      "port": 18791,
      "hmac_secret": "",           // Optional: for message signatures
      "allowed_connections": [
        {
          "api_key": "sk_live_your_unique_api_key_here",
          "ip": null               // null = any IP, or "192.168.1.100" for specific IP
        }
      ]
    }
  }
}

3. Generate a secure API Key

# Generate a 32-character random key
openssl rand -hex 16

# Example output: 4a7b9c2e1f3d8h6i0jklmnopqrstuvwx

4. Restart nanobot

# If using systemd
systemctl --user restart nanobot

# If using PM2
pm2 restart nanobot

# If running directly
nanobot run

Frontend Setup

Now set up the agent-webbridge frontend:

git clone https://github.com/ramonpaolo/webbridge-agent.git
cd webbridge-agent
cp .env.example .env

Edit .env:

API_KEY=sk_live_your_unique_api_key_here    # Must match nanobot config
AGENT_WS_URL=ws://localhost:18791           # nanobot webbridge URL
HMAC_SECRET=                                # Leave empty if not using HMAC
AGENT_NAME=My Agent

Run:

pip install -r requirements.txt
uvicorn src.main:app --reload --port 8080

Open http://localhost:8080 in your browser.


Security

Security Layers

Layer Description
API Key Required for WebSocket handshake
IP Whitelist Optional per-API-key IP restriction
HMAC Signature Optional message integrity verification

IP Whitelist

Restrict access to specific IPs:

"allowed_connections": [
  {
    "api_key": "sk_live_...",
    "ip": "192.168.1.100"    // Only this IP can use this key
  },
  {
    "api_key": "sk_live_...",
    "ip": null               // Any IP can use this key
  }
]

HMAC Signatures (Optional)

For extra security, enable HMAC signatures:

  1. Set the same hmac_secret in both nanobot config and agent-webbridge .env
  2. Messages will include a signature verified by both sides

Configuration Reference

nanobot config.json

{
  "channels": {
    "webbridge": {
      "enabled": true,                      // true to enable
      "host": "0.0.0.0",                   // Interface to bind
      "port": 18791,                        // WebSocket port
      "hmac_secret": "",                   // Optional HMAC secret
      "allowed_connections": [              // Required: at least one
        {
          "api_key": "sk_live_...",        // Your API key
          "ip": null                        // IP whitelist (null = any)
        }
      ]
    }
  }
}

agent-webbridge .env

API_KEY=sk_live_your_unique_api_key_here    # Required
AGENT_WS_URL=ws://localhost:18791           # Required
HMAC_SECRET=                                 # Optional
AGENT_NAME=My Agent                         # Optional
PORT=8080                                    # Optional
ALLOWED_ORIGINS=*                           # Optional

Troubleshooting

"Access denied" error

  1. Verify api_key matches exactly in both configs
  2. Check that allowed_connections is not empty
  3. If using IP whitelist, verify your IP is allowed

"Connection refused" error

  1. Ensure nanobot is running with webbridge enabled
  2. Check that AGENT_WS_URL in agent-webbridge .env is correct
  3. Verify no firewall is blocking the ports

Messages not being received

  1. Check nanobot logs for message processing errors
  2. Verify the agent is configured to respond on the webbridge channel

Development

# Clone the repo
git clone https://github.com/ramonpaolo/nanobot-webbridge-plugin.git
cd nanobot-webbridge-plugin

# Install in development mode
pip install -e .

# Run tests
pytest tests/ -v

License

MIT ยฉ ramonpaolo

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nanobot_webbridge_plugin-1.2.0.tar.gz (7.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nanobot_webbridge_plugin-1.2.0-py3-none-any.whl (11.1 kB view details)

Uploaded Python 3

File details

Details for the file nanobot_webbridge_plugin-1.2.0.tar.gz.

File metadata

File hashes

Hashes for nanobot_webbridge_plugin-1.2.0.tar.gz
Algorithm Hash digest
SHA256 3a0f91fca6a2ef9924e5247c4e92aa7788ad5414c92e056db39692e8fcd1fe4b
MD5 b24a7496bbbea15216084aa9b31b8674
BLAKE2b-256 9e831c50b84e3f9b93f3c05f258bb9d1339376fbfa883c12c92194803362ead3

See more details on using hashes here.

File details

Details for the file nanobot_webbridge_plugin-1.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for nanobot_webbridge_plugin-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f6e3b14285ada3f624edcbb93d75090d7e06f93e45fd26bdbc18a8ab757b804f
MD5 bba84119be72f9b6ed260264de8f76ae
BLAKE2b-256 665f14160bdb5db243b5e02ced316e835102e7e925877574b3aac22eaec7cbfa

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page