A Reticulum MeshChat fork from the future.
  • JavaScript 51%
  • Vue 27.2%
  • Python 19.5%
  • HTML 2%
Find a file Use this template
2026-02-23 19:53:28 -06:00
.gitea/workflows Remove pnpm cache from CI and test workflows 2026-02-23 19:53:28 -06: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 Update Node.js version to 24 in Raspberry Pi installation guide 2026-02-23 19:34:46 -06:00
electron Improve propagation sync and improve markdown rendering 2026-02-14 19:19:09 -06:00
logo 1.0.0 2026-01-01 15:25:23 -06:00
meshchatx Add ESLint disable comments for regex patterns in MarkdownRenderer.js to address security concerns 2026-02-23 19:53:01 -06:00
misc feat(readme): add external dependencies section listing LXMF, LXST, and RNS 2026-01-01 22:46:15 -06:00
packaging/arch 4.1.0 2026-01-14 19:03:00 -06:00
screenshots docs(README): remove overview section and associated screenshot 2026-01-02 01:30:05 -06:00
scripts Add Wine environment setup script 2026-01-16 12:38:39 -06:00
tests cleanup tests (format) 2026-02-23 19:42:37 -06:00
.dockerignore chore(dockerignore, gitignore): add Arch Linux packaging artifacts to ignore lists 2026-01-03 21:36:53 -06:00
.gitignore Update .gitignore to exclude private scripts directory 2026-01-10 17:54:24 -06: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 chore: update .gitignore and .prettierignore to include MagicMock and additional directories for better file management 2026-01-03 15:43:55 -06:00
.prettierrc 1.0.0 2026-01-01 15:25:23 -06:00
CHANGELOG.md Update 2026-01-16 09:33:30 -06: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 docs(docker-compose): update comments to clarify automated permission handling and user execution for reticulum-meshchatx 2026-01-04 00:03:36 -06:00
docker-compose.yml chore(docker): update Docker configuration 2026-01-03 22:12:39 -06:00
Dockerfile Update pip version to 26.0 in Dockerfile 2026-02-23 19:52:54 -06: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 4.1.0 2026-01-14 19:03:00 -06:00
forge.config.js fix windows builds 2026-01-10 17:51:30 -06:00
LICENSE 0.1.0 2026-01-01 15:05:29 -06: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 legacy Electron configuration and build tasks 2026-01-14 18:00:02 -06:00
package.json Remove ajv dependency from package.json and pnpm-lock.yaml, update ajv peer dependencies to compatible versions, and add new dependencies for fast-json-stable-stringify and json-schema-traverse. 2026-02-23 19:43:24 -06:00
pnpm-lock.yaml Remove ajv dependency from package.json and pnpm-lock.yaml, update ajv peer dependencies to compatible versions, and add new dependencies for fast-json-stable-stringify and json-schema-traverse. 2026-02-23 19:43:24 -06:00
poetry.lock Update package version to 4.2.0, adjust Node.js engine requirement to >=24, and upgrade pnpm to 10.30.0. Also, update vuetify dependency to version 3.12.1 and bump rns dependency to version 1.1.3. Update content hash in poetry.lock. 2026-02-23 19:34:30 -06:00
postcss.config.js 0.1.0 2026-01-01 15:05:29 -06:00
pyproject.toml Update package version to 4.2.0, adjust Node.js engine requirement to >=24, and upgrade pnpm to 10.30.0. Also, update vuetify dependency to version 3.12.1 and bump rns dependency to version 1.1.3. Update content hash in poetry.lock. 2026-02-23 19:34:30 -06:00
pytest.ini chore(pytest.ini): add filterwarnings to suppress specific warnings during test execution 2026-01-03 22:10:43 -06:00
README.md Update README 2026-02-23 19:35:04 -06:00
requirements.txt Update rns dependency version to 1.1.3 in requirements.txt 2026-02-23 19:34:39 -06:00
SECURITY.md Update SECURITY 2026-01-10 17:51:56 -06: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 Add lint task to run all linters in Taskfile.yml 2026-02-23 19:43:13 -06:00
TODO.md Update TODO with new link to task board (format) 2026-02-23 19:44:04 -06:00
vite.config.js chore(vite): add asset cleanup before build to prevent accumulation of old files 2026-01-05 11:47:46 -06:00
vitest.config.js Update Vitest configuration for improved UI experience 2026-02-17 17:49:23 -06:00

Reticulum MeshChatX

Todo - Website (Soon)

Warning

Backup your reticulum-meshchat folder before using! MeshChatX will attempt to auto-migrate whatever it can from the old database without breaking things, but it is best to keep backups.

Contact me for any issues or ideas:

LXMF: 7cc8d66b4f6a0e0e49d34af7f6077b5a

CI Tests Build Docker

A Reticulum MeshChat fork from the future.

This project is separate from the original Reticulum MeshChat project, and is not affiliated with the original project.

Goal

To provide everything you need for Reticulum, LXMF, and LXST in one beautiful and feature-rich application.

  • Desktop app (Linux, Windows, macOS)
  • Self-host on your server easily with or without containers
  • Mobile support (Android)
  • Reliable, secure, fast and easy to use.

Note on macOS: You will need to manually build or use containers since I do not have a macOS machine or runner.

The easiest way to get MeshChatX running is using Docker. Our official image is multi-arch and supports linux/amd64 and linux/arm64 (Raspberry Pi, etc.).

# Pull and run the latest image
docker pull git.quad4.io/rns-things/meshchatx:latest

# Run MeshChatX using Docker Compose (Recommended)
# This will create a meshchat-config directory for persistence
docker compose up -d

Docker Permissions Note

If you encounter a PermissionError when running the Docker container, it's likely because the container's user (UID 1000) doesn't have permission to write to your host's ./meshchat-config folder. You can fix this by running:

sudo chown -R 1000:1000 ./meshchat-config

Check releases for pre-built binaries (AppImage, DEB, EXE) if you prefer standalone apps. (coming soon)

Installation via Wheel (.whl)

The simplest way to install MeshChatX on most systems is using the pre-built wheel from our releases. This package bundles the built frontend, so you don't need to deal with Node.js or building assets yourself. No Electron needed, it is a webserver basically, so you use your browser to access it.

  1. Install directly from the release:

    pip install https://git.quad4.io/RNS-Things/MeshChatX/releases/download/v4.1.0/reticulum_meshchatx-4.1.0-py3-none-any.whl
    
    # pipx
    pipx install https://git.quad4.io/RNS-Things/MeshChatX/releases/download/v4.1.0/reticulum_meshchatx-4.1.0-py3-none-any.whl
    
  2. Run MeshChatX:

    meshchat --headless
    

Major Features

  • Full LXST Support: Custom voicemail, phonebook, contact sharing, and ringtone support.
  • Interface Discovery and auto-connecting - Discover interfaces, auto-connect or connect to trusted ones, map them all!
  • Multi-Identity: Switch between multiple Reticulum identities seamlessly.
  • Modern UI/UX: A completely redesigned, intuitive interface.
  • Integrated Maps: OpenLayers with MBTiles support for offline maps.
  • Security: Read more about it in the Security section.
  • Offline Docs: Access Reticulum documentation without an internet connection.
  • Expanded Tools: Includes dozens of more tools.
  • Page Archiving: Built-in crawler and browser for archived pages offline.
  • Banishment: Banish LXMF users, Telephony, and NomadNet Nodes.
  • i18n: Support for English, German, Italian, and Russian.
  • Advanced Diagnostic Engine: Mathematically grounded crash recovery using Active Inference and Information Theory.

Screenshots

Telephony & Calling

Phone

Phone

Active Call

Calling

Call Ended

Call Ended

Voicemail

Voicemail

Ringtone Settings

Ringtone

Networking & Visualization

Network Visualiser

Network Visualiser Network Visualiser 2

Page Archives

Archives Browser

Archives

Viewing Archived Page

Archive View

Tools & Identities

Tools

Tools

Identity Management

Identities

Pipx / Global Installation

If you prefer to install MeshChatX globally using pipx, pip or uv, you can do so directly from the repository. However, you must specify the path to your built frontend files using the --public-dir flag or MESHCHAT_PUBLIC_DIR environment variable, as the static files are not bundled with the source code. The release .whl packages include the built frontend files and also there is a seperate frontend zip to grab and use.

  1. Install MeshChatX:

    pipx install git+https://git.quad4.io/RNS-Things/MeshChatX
    
  2. Run with Frontend Path:

    # Replace /path/to/MeshChatX/meshchatx/public with your actual path
    meshchat --public-dir /path/to/MeshChatX/meshchatx/public
    

Manual Installation (From Source)

If you want to run MeshChatX from the source code locally:

  1. Clone the repository:

    git clone https://git.quad4.io/RNS-Things/MeshChatX
    cd MeshChatX
    
  2. Build the Frontend: Requires Node.js and pnpm.

    corepack enable
    pnpm install
    pnpm run build-frontend
    
  3. Install & Run Backend: Requires Python 3.10+ and Poetry.

    pip install poetry
    poetry install
    poetry run meshchat --headless --host 127.0.0.1
    

Cross-Platform Building (Linux to Windows)

If you are on Linux and want to build the Windows .exe and installer locally, you can use Wine.

  1. Install Windows Python and Git inside Wine:

    # Download Python installer
    wget https://www.python.org/ftp/python/3.13.1/python-3.13.1-amd64.exe
    # Install Python to a specific path
    wine python-3.13.1-amd64.exe /quiet InstallAllUsers=1 TargetDir=C:\Python313 PrependPath=1
    
    # Download Git installer
    wget https://github.com/git-for-windows/git/releases/download/v2.52.0.windows.1/Git-2.52.0-64-bit.exe
    # Install Git (quietly)
    wine Git-2.52.0-64-bit.exe /VERYSILENT /NORESTART
    
  2. Install Build Dependencies in Wine:

    wine C:/Python313/python.exe -m pip install cx_Freeze poetry
    wine C:/Python313/python.exe -m pip install -r requirements.txt
    
  3. Run the Build Task:

    # Build only the Windows portable exe
    WINE_PYTHON="wine C:/Python313/python.exe" task dist:win:wine
    
    # Or build everything (Linux + Windows) at once
    WINE_PYTHON="wine C:/Python313/python.exe" task dist:all:wine
    

Configuration

MeshChatX can be configured via command-line arguments or environment variables.

Argument Environment Variable Default Description
--host MESHCHAT_HOST 127.0.0.1 Web server address
--port MESHCHAT_PORT 8000 Web server port
--no-https MESHCHAT_NO_HTTPS false Disable HTTPS
--headless MESHCHAT_HEADLESS false Don't launch browser
--auth MESHCHAT_AUTH false Enable basic auth
--storage-dir MESHCHAT_STORAGE_DIR ./storage Data directory
--public-dir MESHCHAT_PUBLIC_DIR - Frontend files path

Development

We use Task for automation.

Task Description
task install Install all dependencies
task run Run the application
task dev Run the application in development mode
task lint:all Run all linters (Python & Frontend)
task lint:be Lint Python code only
task lint:fe Lint frontend code only
task fmt:all Format all code (Python & Frontend)
task fmt:be Format Python code only
task fmt:fe Format frontend code only
task test:all Run all tests
task test:cov Run tests with coverage reports
task test:be Run Python tests only
task test:fe Run frontend tests only
task build:all Build frontend and backend
task build:fe Build only the frontend
task build:wheel Build Python wheel package
task compile Compile Python code to check for syntax errors
task docker:build Build Docker image using buildx
task docker:run Run Docker container using docker-compose
task dist:linux:appimage Build Linux AppImage
task dist:win:exe Build Windows portable executable
task dist:win:wine Build Windows portable (Wine cross-build)
task dist:all Build all Electron apps
task dist:all:wine Build all Electron apps (Wine cross-build)
task android:prepare Prepare Android build
task android:build Build Android APK
task dist:fe:flatpak Build Flatpak package
task clean Clean build artifacts and dependencies

Security

  • ASAR Integrity (Stable as of Electron 39)
  • Built-in automatic integrity checks on all files (frontend and backend)
  • HTTPS by default (automated locally generated certs)
  • Layered CSP Protection: 3-layer Content Security Policy (Backend, Electron Session, and Loading Screen) to prevent XSS and unauthorized resource loading.
  • Redundant CORS protection (loading.html, python backend server, electron main.js)
  • Updated dependencies and daily scanning (OSV)
  • Comprehensive Scanning Pipeline: Integrated Trivy for filesystem and container image scanning, alongside OSV-Scanner for vulnerability tracking.
  • SBOM for dependency observability and tracking
  • Extensive testing and fuzzing (Property-based testing with Hypothesis).
  • Rootless docker images
  • Pinned actions and container images (supply chain security and deterministic builds)

Advanced Diagnostic Engine

MeshChatX includes a uniquely sophisticated crash recovery system designed for the unpredictable hardware environments.

  • Probabilistic Active Inference: Uses Bayesian-inspired heuristics to determine root causes (e.g., OOM, RNS config issues, LXMF storage failures) with up to 99% confidence.
  • Mathematical Grounding: Quantifies system instability using Shannon Entropy and KL-Divergence, providing a numerical "disorder index" at the time of failure.
  • Manifold Mapping: Identifies "Failure Manifolds" across the entire vertical stack from Kernel and Python versions to RNS interface state and LXMF database integrity.

All running locally on your own hardware and it might not be perfect, but it will only get better. The idea is to provide you the help to possibly fix it when you cannot reach me.

Credits