You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
Adib Pratama 6a4dabf28f
Change timeout to 60 and add reconnect when timeout
1 day ago
src Change timeout to 60 and add reconnect when timeout 1 day ago
.env.example Add log 5 days ago
.gitignore Initial commit 2 weeks ago
.python-version Initial commit 2 weeks ago
README.md Add readme and change to relative path import 5 days ago
pyproject.toml Initial commit 2 weeks ago
uv.lock Initial commit 2 weeks ago

README.md

F3 Picoclaw XMPP

An XMPP chatbot bridge that connects an XMPP account to a Nanobot AI backend via WebSocket.

Features

  • Listens for messages in XMPP chat rooms and direct messages
  • Responds when mentioned (@botname) in group chats
  • Replies to all direct messages automatically
  • Streams AI responses from Nanobot WebSocket API
  • Configurable logging levels

Requirements

  • Python >= 3.10
  • uv package manager

Setup

# Install dependencies
uv sync

# Configure environment
cp .env.example .env
# Edit .env with your XMPP credentials and Nanobot endpoint

Environment Variables

Variable Description
XMPP_USERNAME Full JID for the XMPP bot account
XMPP_PASSWORD XMPP account password
XMPP_ROOMS Comma-separated list of MUC rooms to join
NANOBOT_WS_ENDPOINT WebSocket URL of the Nanobot AI server
NANOBOT_WS_TOKEN Authentication token for the Nanobot
DEBUG Logging level: debug, info, warn, error, critical

Usage

# Run the XMPP-to-Nanobot bridge
uv run python -m src.server

Project Structure

src/
├── server.py    # Main entry point - bridges XMPP and Nanobot
├── xmpp.py      # XMPP bot client (slixmpp)
├── nanobot.py   # Nanobot WebSocket client
└── log.py       # Logging configuration

Tech Stack