Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

IceNomad

IceNomad for Linux

The same real Reticulum/LXMF mesh client — now on Linux.
A live-updating GUI that looks like IceNomad, plus a terminal client for anyone who lives there instead.

Status: Alpha License: MIT Built with Python & real RNS/LXMF

Main IceNomad project  ·  Tux — the search engine  ·  Report an issue


IceNomad for Linux — Messages view showing real live peer announcements


Built directly on the real rns/lxmf packages (the reference implementation of Reticulum and LXMF, maintained by the protocol's own author) rather than a port of IceNomad's own Swift protocol stack — see the main project's README for why.

⚠️ Alpha

This is early — genuinely working, tested live against the real mesh, but young. Expect rough edges and real bugs, not just missing polish. If something breaks, open an issue — that's exactly what this stage is for.

Status

  • Real, persistent identity (same load-or-create pattern as the rest of the IceNomad ecosystem)
  • LXMF messaging, both directions — confirmed live against Tux
  • Persistent message history and contacts (SQLite)
  • A live announce feed, integrated where it's actually useful — real peers you can message and real NomadNet nodes you can browse, both updating live over WebSocket, click one to jump right in
  • Connection options matching the iOS/Mac app exactly — the same suggested public relays (IceNomad Public Relay by default, plus RMAP, Sydney RNS, Birdsnet BR, Inertia.Chat), or your own custom host/port, picked during onboarding or changed later in Settings
  • Real NomadNet .mu page browsing, with a full Micron renderer (adapted from Tux's own -- colors, bold/underline, headings, dividers, link navigation, and form fields rendered as real inputs)
  • A GUI styled to match IceNomad itself — same dark theme, ice- blue accent, pill buttons, onboarding flow, and Messages/Browser/ Settings layout as the iOS/Mac app, running in a real native window

Not yet built: RNode (LoRa) support — deferred, since it needs real Linux serial/Bluetooth hardware to test against properly, not something to fake from a Mac. Also not yet built: actually submitting filled-out forms on browsed pages (fields render as real inputs, but nothing wires them to a submit action yet), and packaging beyond a local editable install.

Setup

python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

Running

GUI (looks like IceNomad, runs in its own window):

python3 -m icenomad_linux.gui

Terminal client:

python3 -m icenomad_linux

(Prefer -m over the icenomad/icenomad-gui console-script entry points for now — pip's editable-install finder doesn't reliably wire those up on every Python/setuptools combination; -m is unaffected and always works as long as you run it from this directory. A real pip install ., not -e ., doesn't have this problem.)

First run asks for a display name (in the GUI's own onboarding screen, or a terminal prompt for the CLI), then connects through the same public relay (rns.icenomad.net:4242) IceNomad's own iOS/Mac app uses by default — so you're on the same real mesh Tux and everyone else is on, immediately.

The GUI is also just a local web server under the hood (127.0.0.1:8723 by default) — point a normal browser at it instead of the native window if you ever want to, e.g. for remote access over SSH port-forwarding.

CLI commands

whoami                    show your own address
send <hash> <text>        send a message to a peer
history <hash>            show past messages with a peer
peers                     list contacts heard on the mesh
browse <hash> [path]      fetch and render a NomadNet page (default: /page/index.mu)
open <n>                  follow link [n] from the last page you browsed
help                      show this list
quit                      exit

Project layout

icenomad_linux/
  config.py       constants, paths, the Reticulum config writer
  identity.py     persistent identity + display name
  db.py           shared SQLite connection/schema
  message_store.py  persistent message history
  peer_store.py     persistent contacts
  micron.py       .mu -> terminal renderer (CLI)
  micron_html.py  .mu -> HTML renderer (GUI), adapted from Tux's own
  browser.py      NomadNet page fetching over a Link
  app.py          identity + router + stores, wired together
  repl.py         the interactive terminal command loop
  gui.py          GUI entry point (starts the server + a native window)
  web/
    server.py     FastAPI backend behind the GUI -- REST + WebSocket
    static/       the actual GUI: index.html, style.css, app.js

Testing on Linux

Development happens on macOS (the rns/lxmf packages are fully cross-platform, so this is fine for the bulk of the work), but anything genuinely Linux-specific — RNode serial device paths, udev permissions, systemd — needs validating on real Linux hardware before it's trusted. radioice already runs a live Reticulum node and has had RNode hardware attached to it; that's the natural place to check this against before calling anything Linux-specific actually done.

About

IceNomad — a real Reticulum/LXMF mesh client for Linux. CLI and a GUI styled to match the iOS/Mac app.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages