11 KiB
Reticulum MeshChatX
Русский | Deutsch | Italiano | 中文 | 日本語
A extensively modified and feature-rich fork of Reticulum MeshChat by Liam Cottle.
This project is independent from the original Reticulum MeshChat project and is not affiliated with it.
- Website: meshchatx.com
- Source: git.quad4.io/RNS-Things/MeshChatX
- Official Mirror: github.com/Sudo-Ivan/MeshChatX - Also used for Windows and MacOS builds for the moment.
- Releases: git.quad4.io/RNS-Things/MeshChatX/releases
- Changelog:
CHANGELOG.md - TODO: Boards
Important Changes from Reticulum MeshChat
- Uses LXST
- Replaced Peewee ORM with raw SQL.
- Replaced Axios with native fetch.
- Uses latest Electron.
- .whls ships with webserver and built-in frontend assets for more deployment options.
- i18n
- PNPM and Poetry for dependency management.
Warning
MeshChatX is not guaranteed to be wire/data compatible with older Reticulum MeshChat releases. Back up data before migration/testing.
Warning
Legacy systems are not fully supported yet. Current baseline is Python
>=3.11and Node>=24.
Requirements
- Python
>=3.11(frompyproject.toml) - Node.js
>=24(frompackage.json) - pnpm
10.32.1(frompackage.json) - Poetry (used by
Taskfile.ymland CI workflows)
task install
task lint:all
task test:all
task build:all
Install Methods
Use the method that matches your environment and packaging preference.
| Method | Includes frontend assets | Architectures | Best for |
|---|---|---|---|
| Docker image | Yes | linux/amd64, linux/arm64 |
Fastest setup on Linux servers/hosts |
Python wheel (.whl) |
Yes | Any Python-supported architecture | Headless/web-server install without Node build |
| Linux AppImage | Yes | x64, arm64 |
Portable desktop use |
Debian package (.deb) |
Yes | x64, arm64 |
Debian/Ubuntu installs |
RPM package (.rpm) |
Yes | CI-runner dependent for published artifact | Fedora/RHEL/openSUSE style systems |
| From source | Built locally | Host architecture | Development and custom builds |
Notes:
- The release workflow explicitly builds Linux
x64andarm64AppImage + DEB. - RPM is also attempted by release workflow and uploaded when produced.
Quick Start: Docker
docker compose up -d
Default compose file maps:
127.0.0.1:8000on host -> container port8000./meshchat-config->/configfor persistence
If your local meshchat-config permissions block writes, fix ownership:
sudo chown -R 1000:1000 ./meshchat-config
Install from Release Artifacts
1) Linux AppImage (x64/arm64)
- Download
ReticulumMeshChatX-v<version>-linux-<arch>.AppImagefrom releases. - Make it executable and run:
chmod +x ./ReticulumMeshChatX-v*-linux-*.AppImage
./ReticulumMeshChatX-v*-linux-*.AppImage
2) Debian/Ubuntu .deb (x64/arm64)
- Download
ReticulumMeshChatX-v<version>-linux-<arch>.deb. - Install:
sudo apt install ./ReticulumMeshChatX-v*-linux-*.deb
3) RPM-based systems
- Download
ReticulumMeshChatX-v<version>-linux-<arch>.rpmif present in the release. - Install with your distro tool:
sudo rpm -Uvh ./ReticulumMeshChatX-v*-linux-*.rpm
4) Python wheel (.whl)
Release wheels include the built web assets.
pip install ./reticulum_meshchatx-*-py3-none-any.whl
meshchatx --headless
pipx is also supported:
pipx install ./reticulum_meshchatx-*-py3-none-any.whl
Run from Source (Web Server Mode)
Use this when developing or when you need a local custom build.
git clone https://git.quad4.io/RNS-Things/MeshChatX.git
cd MeshChatX
corepack enable
pnpm install
pip install poetry
poetry install
pnpm run build-frontend
poetry run python -m meshchatx.meshchat --headless --host 127.0.0.1
Run sandboxed (Linux)
To run the native meshchatx binary (alias: meshchat) with extra filesystem isolation, you can use Firejail or Bubblewrap (bwrap) while keeping normal network access for Reticulum and the web UI. Full examples (pip/pipx, Poetry, USB serial notes) are in:
The same page appears in the in-app Documentation list (MeshChatX docs) when served from the bundled or synced meshchatx-docs files.
Build Desktop Packages from Source
These scripts are defined in package.json and Taskfile.yml.
Linux x64 AppImage + DEB
pnpm run dist:linux-x64
Linux arm64 AppImage + DEB
pnpm run dist:linux-arm64
RPM
pnpm run dist:rpm
Or through Task:
task dist:fe:rpm
Architecture Support Summary
- Docker image:
amd64,arm64 - Linux AppImage:
x64,arm64 - Linux DEB:
x64,arm64 - Windows:
x64,arm64(build scripts available) - macOS: build scripts available (
arm64,universal) for local build environments - Android: build workflow and Android project are present in this repository
Android
Use the dedicated docs:
Configuration
MeshChatX supports both CLI args and env vars.
| Argument | Environment Variable | Default | Description |
|---|---|---|---|
--host |
MESHCHAT_HOST |
127.0.0.1 |
Web server bind address |
--port |
MESHCHAT_PORT |
8000 |
Web server port |
--no-https |
MESHCHAT_NO_HTTPS |
false |
Disable HTTPS |
--ssl-cert / --ssl-key |
MESHCHAT_SSL_CERT / MESHCHAT_SSL_KEY |
(none) | PEM certificate and private key paths; both must be set together. Overrides auto-generated certs under the identity ssl/ directory. |
--rns-log-level |
MESHCHAT_RNS_LOG_LEVEL |
(none) | Reticulum (RNS) stack log level: none, critical, error, warning, notice, verbose, debug, extreme, or a numeric level. CLI overrides env when both are set. |
--headless |
MESHCHAT_HEADLESS |
false |
Do not auto-launch browser |
--auth |
MESHCHAT_AUTH |
false |
Enable basic auth |
--storage-dir |
MESHCHAT_STORAGE_DIR |
./storage |
Data directory |
--public-dir |
MESHCHAT_PUBLIC_DIR |
auto/bundled | Frontend files directory (needed for source installs without bundled assets) |
Branches
| Branch | Purpose |
|---|---|
master |
Stable releases. Production-ready code only. |
dev |
Active development. May contain breaking or incomplete changes. |
Development
Common tasks from Taskfile.yml:
task install
task lint:all
task test:all
task build:all
Makefile shortcuts are also available:
| Command | Description |
|---|---|
make install |
Install pnpm and poetry dependencies |
make run |
Run MeshChatX via poetry |
make build |
Build frontend |
make lint |
Run eslint and ruff |
make test |
Run frontend and backend tests |
make clean |
Remove build artifacts and node_modules |
Versioning
Current version in this repo is 4.4.0.
package.jsonis the JavaScript/Electron version source.meshchatx/src/version.pyis synced frompackage.jsonusing:
pnpm run version:sync
For release consistency, keep version fields aligned where required (package.json, pyproject.toml, meshchatx/__init__.py).
Security
Security and integrity details:
SECURITY.md- Built-in integrity checks and HTTPS/WSS defaults in app runtime
- CI scanning workflows in
.gitea/workflows/
Adding a Language
Locale discovery is automatic. To add a new language, create a single JSON file:
- Generate a blank template from
en.json:
python scripts/generate_locale_template.py
This writes locales.json with every key set to an empty string.
- Rename it to your language code and move it into the locales directory:
mv locales.json meshchatx/src/frontend/locales/xx.json
-
Set
_languageNameat the top of the file to the native name of the language (e.g."Espanol","Francais"). This is displayed in the language selector. -
Translate all remaining values.
-
Run
pnpm test -- tests/frontend/i18n.test.js --runto verify key parity withen.json.
No other code changes are required. The app, language selector, and tests all discover locales from the meshchatx/src/frontend/locales/ directory at build time.
Credits
- Liam Cottle - Original Reticulum MeshChat
- RFnexus - micron parser JavaScript work
- markqvist - Reticulum, LXMF, LXST