No description
Find a file
2026-03-31 00:32:53 +03:00
.gitea/workflows feat(ci): update build and scan workflows with cosign integration and frontend dependency management 2026-03-31 00:32:35 +03:00
android feat(dependencies): add pycodec2 wheel file for enhanced audio codec support in Android application 2026-01-01 23:35:36 -06:00
docs docs: linux sandbox; add community interfaces JSON build script 2026-03-24 00:39:14 +03:00
electron Remove status indication 2026-03-06 15:58:22 -06:00
lang Update READMEs 2026-03-22 15:07:53 +03:00
logo 1.0.0 2026-01-01 15:25:23 -06:00
meshchatx feat(frontend): implement 'show unknown contact banner' toggle in settings and update conversation viewer logic 2026-03-24 03:45:18 +03:00
misc feat(readme): add external dependencies section listing LXMF, LXST, and RNS 2026-01-01 22:46:15 -06:00
packaging/arch chore: update version to 4.4.0 in PKGBUILD and adjust pkgver function accordingly 2026-03-24 00:41:24 +03:00
screenshots docs(README): remove overview section and associated screenshot 2026-01-02 01:30:05 -06:00
scripts feat(ci): add scripts for cosign setup, release asset attestation, and verification 2026-03-31 00:32:22 +03:00
tests feat(frontend): add option to lift banishment from conversation menu and update version to 4.4.0 in tests 2026-03-24 00:41:07 +03:00
.dockerignore Add .pnpm-store/ to .dockerignore, .gitignore, and .prettierignore 2026-03-22 14:11:18 +03:00
.gitignore chore: update .gitignore to include cosign.key and coverage directory 2026-03-31 00:28:50 +03:00
.npmrc chore(npm): update .npmrc to set node-linker to hoisted and remove fetch configuration 2026-01-03 17:20:09 -06:00
.prettierignore Add .pnpm-store/ to .dockerignore, .gitignore, and .prettierignore 2026-03-22 14:11:18 +03:00
.prettierrc 1.0.0 2026-01-01 15:25:23 -06:00
CHANGELOG.md chore: update CHANGELOG to reflect removal of legacy PR vulnerability scanner in favor of Trivy 2026-03-31 00:32:10 +03:00
CONTRIBUTING Add CONTRIBUTING and CONTRIBUTORS 2026-03-09 12:17:11 -05:00
CONTRIBUTORS Add CONTRIBUTING and CONTRIBUTORS 2026-03-09 12:17:11 -05:00
cosign.pub feat(ci): add scripts for cosign setup, release asset attestation, and verification 2026-03-31 00:32:22 +03:00
cx_setup.py Add CHANGELOG.md to include files in build process if it exists 2026-01-10 18:56:14 -06:00
docker-compose.dev.yml Cleanup docker files 2026-03-09 13:42:00 -05:00
docker-compose.yml Cleanup docker files 2026-03-09 13:42:00 -05:00
docker-entrypoint.sh Add docker-entrypoint.sh and update Dockerfile for entrypoint configuration 2026-03-22 15:04:07 +03:00
Dockerfile Add docker-entrypoint.sh and update Dockerfile for entrypoint configuration 2026-03-22 15:04:07 +03:00
eslint.config.mjs Disable specific security rules in ESLint configuration for improved flexibility 2026-02-23 19:52:46 -06:00
flake.lock feat(flake): add flake.nix and flake.lock for Reticulum-MeshChatX development environment setup 2026-01-02 19:28:10 -06:00
flake.nix chore: update version to 4.4.0 2026-03-24 00:40:33 +03:00
forge.config.js fix windows builds 2026-01-10 17:51:30 -06:00
LICENSE Update copyright holder in LICENSE file from Sudo-Ivan to Quad4 2026-02-28 00:48:14 -06:00
Makefile Update test command in Makefile to use the Python module syntax for pytest 2026-03-22 15:08:01 +03:00
MANIFEST.in chore(manifest): update MANIFEST.in to include backend files and exclude frontend and cache directories 2026-01-04 23:19:59 -06:00
package-legacy.json Update version to 4.3.0 2026-03-06 19:42:54 -06:00
package.json chore: update dependencies in package.json and pnpm-lock.yaml, add test coverage script 2026-03-31 00:28:12 +03:00
pnpm-lock.yaml chore: update dependencies in package.json and pnpm-lock.yaml, add test coverage script 2026-03-31 00:28:12 +03:00
poetry.lock Update package dependencies and configurations 2026-03-22 15:03:56 +03:00
postcss.config.js 0.1.0 2026-01-01 15:05:29 -06:00
pyproject.toml chore: update version to 4.4.0 2026-03-24 00:40:33 +03:00
pytest.ini feat(tests): add integration marker for optional tests in pytest configuration 2026-03-31 00:32:53 +03:00
README.md chore: update README and CHANGELOG 2026-03-24 00:40:57 +03:00
requirements.txt Update package dependencies and configurations 2026-03-22 15:03:56 +03:00
SECURITY.md docs(security): update security documentation with detailed CI/CD workflows, release provenance, and verification processes 2026-03-31 00:32:46 +03:00
tailwind.config.js feat(tailwind): add markdown renderer to content paths for Tailwind CSS configuration to support backend styling 2026-01-03 19:22:21 -06:00
Taskfile.yml Refactor Taskfile.yml to simplify Poetry commands by removing Python module prefix 2026-03-06 02:33:00 -06:00
TODO.md Update TODO link 2026-03-09 13:42:20 -05:00
vite.config.js Update MicronParser handling in Vite config to support additional import path 2026-03-22 15:08:59 +03:00
vitest.config.js Update Vitest configuration: disable UI and auto-open options for a streamlined testing experience. 2026-03-05 15:24:12 -06:00

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.

Important Notes

  • Uses LXST
  • Replaced Peewee ORM with raw SQL.

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.11 and Node >=24.

Demo And Screenshots

UI Previews

Phone Network Visualiser Archives Identities

Requirements

  • Python >=3.11 (from pyproject.toml)
  • Node.js >=24 (from package.json)
  • pnpm 10.32.1 (from package.json)
  • Poetry (used by Taskfile.yml and CI workflows)

Nix (flake.nix)

This repo includes a Nix flake at flake.nix.

Enter the dev shell

nix develop

The flake dev shell provides Python, Poetry, Node, pnpm, Task, packaging tools (rpm, dpkg, fakeroot), Android build tools, and Docker tooling.

Build the default Nix package

nix build .#default

Typical workflow inside nix develop

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 x64 and arm64 AppImage + 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:8000 on host -> container port 8000
  • ./meshchat-config -> /config for 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)

  1. Download ReticulumMeshChatX-v<version>-linux-<arch>.AppImage from releases.
  2. Make it executable and run:
chmod +x ./ReticulumMeshChatX-v*-linux-*.AppImage
./ReticulumMeshChatX-v*-linux-*.AppImage

2) Debian/Ubuntu .deb (x64/arm64)

  1. Download ReticulumMeshChatX-v<version>-linux-<arch>.deb.
  2. Install:
sudo apt install ./ReticulumMeshChatX-v*-linux-*.deb

3) RPM-based systems

  1. Download ReticulumMeshChatX-v<version>-linux-<arch>.rpm if present in the release.
  2. 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
meshchat --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 meshchat --headless --host 127.0.0.1

Run sandboxed (Linux)

To run the native meshchat binary 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
--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.json is the JavaScript/Electron version source.
  • meshchatx/src/version.py is synced from package.json using:
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:

  1. 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.

  1. Rename it to your language code and move it into the locales directory:
mv locales.json meshchatx/src/frontend/locales/xx.json
  1. Set _languageName at the top of the file to the native name of the language (e.g. "Espanol", "Francais"). This is displayed in the language selector.

  2. Translate all remaining values.

  3. Run pnpm test -- tests/frontend/i18n.test.js --run to verify key parity with en.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