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.1.0.tar.gz (7.5 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.1.0-py3-none-any.whl (11.0 kB view details)

Uploaded Python 3

File details

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

File metadata

File hashes

Hashes for nanobot_webbridge_plugin-1.1.0.tar.gz
Algorithm Hash digest
SHA256 e8f774d2312d99fab80f919447c01e6bf962898a80c6cf4fc4856467deddab9a
MD5 ef2b4b01de944c8ea66dfa4753141eb3
BLAKE2b-256 654dabe8e9b794d143934801a6e14280206c352c37a5e3fdfdce15c7bedb38f0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nanobot_webbridge_plugin-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b3477713c3647c0ce42da9c252e23300c88c9a8f64b3bf7cdec31b54e330a87e
MD5 dca34b1f72f6422102b3fc028eb55b75
BLAKE2b-256 4e1e02abbb40f5822f1dd6a812425ed5ec9f7e93b3d57aa06e5997dffc36640a

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