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.
|
|
5 days ago | |
|---|---|---|
| src | 5 days ago | |
| .env.example | 5 days ago | |
| .gitignore | 2 weeks ago | |
| .python-version | 2 weeks ago | |
| README.md | 5 days ago | |
| pyproject.toml | 2 weeks ago | |
| uv.lock | 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
- Python 3.14 / asyncio
- slixmpp for XMPP
- websockets for WebSocket communication