Commit Graph

3 Commits

Author SHA1 Message Date
google-labs-jules[bot]
db2567c9bc fix: Catch TimeoutError when joining MUC
This commit updates `bridge.py` to properly `await` the `join_muc_wait()`
coroutine instead of calling the deprecated `join_muc()`. This prevents
an unretrieved Task exception (`asyncio.TimeoutError`) from polluting
the logs or crashing the background task if the XMPP server is slow
or doesn't respond to the MUC join request in time.

Co-authored-by: jamessucla <2191476+jamessucla@users.noreply.github.com>
2026-03-06 08:59:26 +00:00
google-labs-jules[bot]
a77955394d fix: Fix AttributeError on missing process method in slixmpp
This commit resolves an `AttributeError` when starting the `SovereignBridge`
class due to the missing `process` method. Newer versions of `slixmpp` (1.8+)
leverage the standard `asyncio` loop directly and no longer provide the
legacy `process(forever=True)` wrapper.

The bridge now correctly starts the XMPP client by calling
`xmpp.loop.run_forever()` directly after `xmpp.connect()`.

Co-authored-by: jamessucla <2191476+jamessucla@users.noreply.github.com>
2026-03-06 08:08:24 +00:00
google-labs-jules[bot]
c7ae0f2c4e feat: Add SovereignRelay Meshtastic-XMPP bridge
This commit introduces a MVP for the sovereign computing hackathon. It
provides a Python-based bridge between a local Meshtastic node and an
internet-connected XMPP Multi-User Chat room.

Features:
- `bridge.py`: Uses `meshtastic` and `slixmpp` to bridge messages bidirectionally.
- Properly handles asynchronous/synchronous impedance mismatch between XMPP and serial interfaces.
- Avoids infinite loop echo chambers.
- `flake.nix`: Packages the Python script and its dependencies.
- Exposes a NixOS module for configuring the bridge as a persistent systemd service.
- Requires `--password-file` to prevent exposing XMPP passwords in process listings.
- `README.md`: Explains architecture, usage, and how to configure the NixOS module.

Co-authored-by: jamessucla <2191476+jamessucla@users.noreply.github.com>
2026-03-06 01:57:00 +00:00