- Python 99.3%
- Dockerfile 0.7%
| siltamesh | ||
| .editorconfig | ||
| .gitignore | ||
| Dockerfile | ||
| LICENSE | ||
| pyproject.toml | ||
| README.md | ||
| setup.cfg | ||
| uv.lock | ||
Siltamesh
A simple bridge between meshtastic and XMPP networks. Supports two-way communication between a meshtastic channel and an XMPP user or channel. Direct meshtastic messages are forwarded to XMPP, but cannot be sent by an XMPP client, at least not yet.
Siltamesh requires an XMPP bot account and must be run on a (Linux) computer which can connect to a meshtastic radio via the network, typically WLAN. An always on single board computer would be an excellent platform for siltamesh.
Installation
Python version 3.11 or greater is required. See the pyproject.toml file in
this repository for dependencies.
Running from source tree
You can run siltamesh from the cloned git repository:
python3 -m siltamesh -h
This uses library dependencies from your environment, either from OS packages,
or installed with pip.
uv run from source tree
With uv you get a virtualenv with exact package versions from uv.lock.
Change to directory with the checked out git tree and run:
uv run -m siltamesh
pipx install from source tree
Change to directory with the checked out git tree and give this command:
pipx install ./
This also installs dependencies from PyPI to the created virtualenv.
A link to the executable script is now installed to ~/.local/bin/siltamesh.
If this directory is in your $PATH you can now run siltamesh anywhere:
siltamesh -h
Configuration
A configuration file in TOML format is required. The default configuration file
location is $XDG_CONFIG_HOME/siltamesh/siltamesh.toml (XDG_CONFIG_HOME is
typically ~/.config).
The configuration file consists of a general section with the bridge-bot XMPP account and radio address configuration, and channel sections which define the mapping between mesh channels and XMPP accounts or multi-user channels (MUCs).
The best documentation for the configuration is currently the example configuration file.
The meshtastic radio, channels and XMPP user accounts and MUCs need to be configured before using them with siltamesh. Use your favorite meshtastic and XMPP clients to do that.
Mapping nearby nodes
Siltamesh stores received node positions to memory. The positions can be logged
to the debug log, stored into a GeoJSON file to make them permanent across
restarts (recommended), or sent to an online map service
uMap. The map section in the config file
controls these features.
For the uMap support, the map needs to be created in the website. Add its secret edit URL to the configuration to enable this feature.
Usage
You can run siltamesh from the command line, or better yet with a supervisor like systemd. There is an example service file for a systemd user instance.
Container
Alternatively, the repo contains a Dockerfile which can be used to build a container image. E.g. using docker:
docker build -t siltamesh .
If you have a config file at ./config/siltamesh.toml, run with:
docker run --rm --network=host -v "$PWD/config:/etc/siltamesh" -v "$PWD/logs:/var/log/siltamesh" siltamesh
Note that .local domains (to connect to the radio) may not work without host
network mode, or you may need to use the radio's real address. The --rm flag
tells docker to automatically delete the container when you stop it.