parent
29a0bdae77
commit
feaf25ba3b
@ -0,0 +1,61 @@ |
||||
# 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](https://docs.astral.sh/uv/) package manager |
||||
|
||||
## Setup |
||||
|
||||
```bash |
||||
# 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 |
||||
|
||||
```bash |
||||
# 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](https://github.com/poezio/slixmpp) for XMPP |
||||
- [websockets](https://github.com/aaugustin/websockets) for WebSocket communication |
||||
Loading…
Reference in new issue