Home The Playbook
Learn
Settings Guide Field Guides & Resources Certifications
Get
Meshtastic Meshcore Reticulum Nodes About Contact
Node Star Field Guide · Vol. 09 v1.0 · 2026

The Mesh
Has a Web

A complete guide to Nomad Network — the distributed publishing and communication layer built on Reticulum. Browse µ-pages, run a node, host your own content, and explore what the mesh looks like when it grows up.

Protocol Reticulum + NomadNet
Prerequisites Python 3 · Reticulum running
Hardware Required None (works over TCP testnet)
Time to First Page ~15 minutes
Table of Contents

What is
Nomad Network?

Nomad Network is a distributed content and communication platform built entirely on top of Reticulum. It was created by Mark Qvist — the same person who wrote Reticulum itself — and it answers a question that most mesh networking projects never ask: once you have a radio network that works, what do you actually do with it?

The answer Nomad Network gives is: you build a web. Not the World Wide Web — no IP addresses, no DNS, no servers to subpoena — but a genuinely distributed publishing layer where any node on the Reticulum network can host content and any other node can retrieve it. Pages travel over LoRa radio, TCP, serial links, and any other interface Reticulum supports. They're encrypted in transit. They're addressed by cryptographic hash, not by domain name. And they're served directly from the device that owns them.

This is what the mesh looks like when it grows up. Meshtastic gets people talking. Nomad Network gives them something to say — and a permanent, censorship-resistant place to say it.

The Short Version

Nomad Network is a decentralized web browser and server for the Reticulum mesh. Every node is both a server and a client. There are no central hosts, no domain registrars, and no one who can take a page down. If your node is reachable on the mesh, your content is reachable.

What You Can Do with It

Browse µ-Pages

Navigate distributed pages hosted on other nodes. Follow links. Read community boards, project documentation, node directories, and whatever else people are publishing on the mesh.

Send Encrypted Messages

Exchange LXMF messages with other NomadNet users. These are signed, encrypted, and delivered store-and-forward across any Reticulum interface — LoRa included.

Host Your Own Node

Publish pages, run a bulletin board, or simply act as a relay. A NomadNet node makes you a first-class citizen of the mesh — not just a reader, but a publisher.

Propagate Announces

Nodes with propagation enabled relay LXMF messages for others, extending the effective reach of the network beyond the range of any single radio link.

Where It Fits
in Reticulum

Reticulum is the networking layer. It handles routing, identity, encryption, and transport — over any physical medium. NomadNet is an application built on top of Reticulum, in the same way that a web browser is an application built on top of TCP/IP. The two are distinct but inseparable: NomadNet without Reticulum is a program with nowhere to go. Reticulum without NomadNet is a protocol with no user-facing application to show for it.

LayerWhat It DoesAnalogy
LoRa / TCP / Serial Physical transport — moves bits between devices Ethernet / WiFi cable
Reticulum (RNS) Cryptographic routing, identity, packet delivery TCP/IP
LXMF Lightweight message format for messages and mail SMTP / email protocol
NomadNet Node hosting, µ-page browsing, message client Web browser + web server
Micron Markup language for µ-pages HTML
No Radio Required to Start

NomadNet works over TCP just as well as over LoRa. The Reticulum testnet runs over the internet and connects to real NomadNet nodes. You can browse the mesh right now from your laptop, before you own a single radio. The experience is identical — the only difference is range and resilience when the internet goes down.

The Application Ecosystem

NomadNet isn't the only application built on Reticulum — it's the oldest and most featureful. Here's how it relates to the other major apps:

AppPurposeInterface
NomadNet Node hosting, µ-page browsing, LXMF messaging Terminal (ncurses)
Sideband LXMF messaging client, simpler and mobile-friendly GUI (Android, iOS, desktop)
MeshChat Web-based Reticulum client with voice and NomadNet browser Web browser
Nomad NetBrowser Local web proxy for browsing NomadNet µ-pages in any browser Web browser (Node Star tool)

The µ-Page
System

A µ-page (micro-page) is a document hosted on a NomadNet node and addressed by the node's Reticulum destination hash. When you request a page, NomadNet opens an encrypted link to the destination, sends the page path over that link, and receives the content in response. No HTTP. No TLS handshake. No DNS lookup. The routing, authentication, and encryption are all handled by Reticulum at the transport layer.

Pages are written in Micron — a simple, lightweight markup language designed for the constraints of radio transmission. It's not HTML. It's closer to a structured plain-text format that supports headings, emphasis, color, and clickable links. Nodes transmitting over LoRa have limited bandwidth, so Micron keeps pages small by design.

Micron: Source vs. Rendered

Here's how raw Micron source translates to formatted output:

Micron Source
> Node Directory >> Testnet Hubs Welcome to the `!Node Star`!! network. ---- `Fgreen`Status: Online`f` `[Dublin Hub`=abb3ebcd/index.mu` `[Frankfurt Hub`=ea6a715f/index.mu`
Rendered Output

Node Directory

Testnet Hubs

Welcome to the Node Star network.


Status: Online

Dublin Hub

Frankfurt Hub

Micron Syntax Reference

SyntaxEffect
> HeadingLevel 1 heading
>> HeadingLevel 2 heading
>>> HeadingLevel 3 heading
---- or ====Horizontal divider
`!`text`!!`Bold text
`_`text`__`Underlined text
`Fgreen`text`f`Green foreground color (named or 0–255)
`B196`text`b`Background color (256-color index)
`[Label`=hash/path`Clickable link to another node/page
`[Label`=/local/page.mu`Link to a page on the same node
Page Addressing

Every page on a NomadNet node is addressed as destination_hash/path/to/page.mu. The destination hash is the 32-character hex identifier of the node. The path is relative to the node's page root. If no path is given, index.mu is fetched by default.

Installing
NomadNet

NomadNet requires Python 3.7 or higher and an active Reticulum instance. If you don't have Reticulum running yet, see Field Guide Vol. 1 first. NomadNet will connect to whatever Reticulum interfaces you have configured — LoRa, TCP, or both.

1

Install via pip

$ pip install nomadnet

This installs NomadNet and its dependencies, including rns (Reticulum) if it isn't already installed.

2

First Launch

$ nomadnet

On first run, NomadNet generates a local identity and creates its configuration directory at ~/.nomadnetwork/. It will start Reticulum automatically if it's not already running as a daemon.

3

Verify the Interface

You should see the NomadNet terminal interface — a split-screen layout with a message panel, a node browser, and a status bar showing your active Reticulum interfaces. If Reticulum connects to the testnet automatically (via AutoInterface on LAN, or if you have TCP configured), you'll start seeing announces from other nodes within a few minutes.

Testnet Access

If you're on a machine with internet access, Reticulum's AutoInterface will attempt to connect to other local nodes via UDP multicast. To also reach the global testnet (including nodes in Dublin and Frankfurt), add a TCP interface to your Reticulum config at ~/.reticulum/config:

# ~/.reticulum/config
[interfaces]

  [[Dublin Testnet]]
    type = TCPClientInterface
    enabled = yes
    target_host = dublin.connect.reticulum.network
    target_port = 4965

  [[Frankfurt Testnet]]
    type = TCPClientInterface
    enabled = yes
    target_host = frankfurt.connect.reticulum.network
    target_port = 4965

Restart rnsd (or NomadNet) after editing the config. You should see both interfaces show as active in the status bar.

Port Note

Frankfurt also listens on port 5377 in some configurations — if port 4965 fails to connect, try 5377. Testnet infrastructure does occasionally change. For always-current entrypoints, check unsigned.io or directory.rns.recipes, which maintain a community-verified list of active TCP interfaces.

Connecting to
the Network

Before you can browse a µ-page, Reticulum needs a path to the destination — a routing entry that tells it how to reach that node's hash. Paths propagate through the network via announces: when a node comes online, it broadcasts a signed announce that ripples out through every relay and transport node that receives it. Your local Reticulum instance stores these paths in a path table.

In practice: if a node is online and reachable, you'll have a path to it within a few minutes of connecting to the network. If you try to fetch a page before the path exists, Reticulum will send a path request and wait for a response. NomadNet handles this automatically — it just takes a moment longer the first time.

Understanding Destination Hashes

Every NomadNet node is identified by a destination hash — a 32-character hexadecimal string derived from the node's cryptographic identity and application name. It's the address you navigate to, equivalent to a domain name — except it's generated locally, requires no registration, and is impossible to spoof.

# Example destination hash
abb3ebcd03cb2388a838e70c001291f9

# To request a specific page on that node:
abb3ebcd03cb2388a838e70c001291f9/pages/about.mu

# Default page (index.mu) if no path is specified:
abb3ebcd03cb2388a838e70c001291f9

Finding Your Own Hash

Once NomadNet is running, your node's destination hash is displayed in the interface. You can also retrieve it from the command line:

$ rnid
Identity  : <your identity hash>
Destination: <your node destination hash>

Share your destination hash with others to let them reach your node — or publish it in a node directory.

Browsing with
the Terminal Client

NomadNet's built-in interface is a full-featured ncurses terminal application. It's split into panels: a message thread on the left for LXMF conversations, and a node browser on the right for navigating µ-pages. The two panels can be toggled, resized, and navigated entirely from the keyboard.

Key Bindings

KeyAction
TabSwitch between message panel and browser panel
↑ / ↓Navigate links on a page or scroll messages
EnterFollow selected link
BackspaceGo back to the previous page
GOpen the Go To dialog — enter a destination hash directly
QQuit NomadNet

The Split-Pane Layout

Here's what the NomadNet interface looks like. The left panel handles LXMF messages. The right panel is the µ-page browser. Focus switches between them with Tab.

NomadNet Terminal Interface
CONVERSATIONS nomad@abb3ebcd Hey, check out my new page… anon@f8ac9c41 Welcome to the mesh mesh@ea6a715f Frankfurt relay online [ compose message ] NODE BROWSER abb3ebcd…/index.mu Node Directory Testnet Hubs Welcome to the Node Star Reticulum node. Status: Online ▶ Dublin Hub Frankfurt Hub BetweenTheBorders Node Star ● RNS TCP:Dublin TCP:Frankfurt AutoInterface [G]o [Q]uit ← selected ↑↓ navigate Enter: open

Navigating to a Node

1

Switch to the browser panel

Press Tab to move focus to the right-side browser panel.

2

Open the Go To dialog

Press G. A prompt will appear asking for a destination address.

3

Enter a destination hash

Type the hash (with or without a page path) and press Enter. NomadNet will resolve the path, open a link, fetch the page, and render it.

abb3ebcd03cb2388a838e70c001291f9
First Fetch

If this is the first time you've connected to a node, Reticulum may take 5–20 seconds to resolve a path. This is normal — it's sending a path request across the network and waiting for the node to respond. Subsequent fetches to the same node are much faster.

Known Nodes &
What's Out There

The Nomad Network doesn't have a central directory — that would defeat the point. But the community maintains informal lists of known nodes, and several official testnet hubs run by unsigned.io (Mark Qvist's project) serve as well-known starting points. Once you connect to any of these, you can follow links to discover others.

Dublin Hub
Official unsigned.io testnet hub. Good first stop — well-connected and usually online. Hosts a node directory with links to community nodes.
abb3ebcd03cb2388a838e70c001291f9
official
Frankfurt Hub
Second official unsigned.io hub in Frankfurt. Useful if Dublin is unreachable or slow — the two hubs cross-connect.
ea6a715f814bdc37e56f80c34da6ad51
official
BetweenTheBorders
Active community node. Hosts µ-pages, routes LXMF traffic, and links to other community nodes not listed elsewhere.
f8ac9c41b857ddf13a9151cec211079b
community
Node Star
Our node. Mesh networking resources, guides, and tools. Running Reticulum over LoRa at 915 MHz in addition to the testnet.
9a5548134799cfb6e9f60decc8708bc1
community
Finding More

Start at the Dublin Hub — its index page links to a community node directory. From there, follow links to find active nodes. The network is small but growing, and every node you visit may link to others you haven't seen yet.

Running Your
Own Node

Running a NomadNet node makes you a publisher on the mesh. Your node gets a permanent destination hash, can serve µ-pages to anyone who connects, and can optionally propagate LXMF messages for others — extending the effective reach of the network.

The simplest setup is just running nomadnet with the default configuration. It will serve whatever pages you place in the pages directory and announce itself to the network. For a permanent node, you'll want to run it on a Raspberry Pi or similar always-on machine.

Configuration File

NomadNet's config lives at ~/.nomadnetwork/config. The defaults are sane — but these are the settings worth knowing:

ini# ~/.nomadnetwork/config

[node]
# Enable serving pages to other nodes
enable_node = yes

# Your node's display name
node_name = My Node

# Announce every N seconds (3600 = once per hour)
announce_at_start = yes
announce_interval = 3600

# Propagate LXMF messages for others
enable_propagation = no

[paths]
# Where your pages live
page_path = ~/.nomadnetwork/pages

Page Directory Structure

~/.nomadnetwork/pages/
├── index.mu          # Default page (fetched when no path given)
├── about.mu          # Reachable at hash/about.mu
└── links/
    └── directory.mu  # Reachable at hash/links/directory.mu
Always-On Node

For a reliable public node, run NomadNet in headless mode on a Pi Zero 2W or similar hardware. Use nomadnet --daemon to run without the interactive interface, or pair it with a systemd service for automatic startup on boot. A Pi Zero 2W consumes under 1W at idle and costs about $15 — it's the right tool for a permanent mesh presence.

Writing
Micron Pages

Micron files are plain text with a .mu extension. You can write them in any text editor. There is no compilation step, no build system, no dependencies — save the file and your node serves it immediately.

The design philosophy of Micron is constraint as a feature. Pages are small by necessity, which means they load fast over radio links and stay focused. A good µ-page is concise, clearly structured, and links generously to other nodes and pages. Think gopher, not the modern web.

A Complete Example Page

micron# index.mu — a simple node home page

> Node Star · Mesh Networking Resources

>> About This Node

Welcome to the `!Node Star`!! Reticulum node.
Running LoRa at 915 MHz · Long Beach, CA

---

>> Pages

`[Field Guides`=/pages/guides.mu`
`[Node Directory`=/pages/directory.mu`
`[About`=/pages/about.mu`

---

>> Other Nodes

`[Dublin Hub`=abb3ebcd03cb2388a838e70c001291f9/index.mu`
`[Frankfurt Hub`=ea6a715f814bdc37e56f80c34da6ad51/index.mu`

---

`Fgreen`Status: Online · `f`Updated 2026

Tips for Good µ-Pages

Nomad
NetBrowser

The terminal interface is powerful, but it's not for everyone. If you'd rather explore the mesh web in a regular browser — with clickable links, formatted text, back/forward navigation, and bookmarks — Nomad NetBrowser is the tool for that.

It's a local web proxy built by Node Star. You run it on your machine, it connects to Reticulum, and it renders NomadNet µ-pages as clean HTML. Point Chrome, Firefox, or any other browser at localhost:5000 and navigate the mesh exactly as you would a website. No terminal required after setup.

Node Star Tool

Nomad NetBrowser v0.1.0

A local web proxy for browsing Nomad Network µ-pages in any web browser. Full Micron rendering, back/forward navigation, bookmarks, a built-in node directory, and a raw source viewer. Runs entirely on your machine — no data leaves your computer except through Reticulum itself.

Download for Linux

Quick Start

1

Install (Debian/Ubuntu)

$ sudo dpkg -i nomad-netbrowser_0.1.0_amd64.deb
$ nomad-netbrowser
2

Or run from source

$ pip install rns nomadnet flask
$ python3 nomadbrowser.py
3

Open your browser

Navigate to http://localhost:5000. Paste a destination hash into the address bar and press GO. The app opens your default browser automatically on launch.

What It Looks Like

Nomad NetBrowser — Running in Chrome
NOMAD NETBROWSER abb3ebcd03cb2388a838e70c001291f9/index.mu GO Home About 📡 abb3ebcd03cb2388a838e70c001291f9 📄 /index.mu Node Directory Testnet Hubs Welcome to the Node Star Reticulum node. Status: Online Dublin Hub Frankfurt Hub BetweenTheBorders Node Star Bookmarked ★
FeatureTerminal ClientNomad NetBrowser
Browse µ-pagesYesYes
Clickable linksYesYes
Back / Forward navigationLimitedYes
BookmarksNoYes
256-color renderingYesYes
LXMF messagingYesNo
Node hostingYesNo
Terminal requiredYesNo
Source Code

Nomad NetBrowser is open source under the MIT license. Source code and issue tracker at codeberg.org/node-star/nomad-netbrowser. Pull requests welcome — especially Micron rendering improvements and testing against live nodes.

Common Issues

No announces appearing after startup

This is the most common first-run problem. Check that your Reticulum config includes the testnet TCP interfaces and that rnsd is running or NomadNet started it. Run rnstatus from the terminal — you should see at least one interface marked as active with traffic flowing. If all interfaces show zero TX/RX, the config file may not be loading from the expected path (~/.reticulum/config).

Path resolution takes a long time or never completes

Path resolution on the first connection to a node can take anywhere from a few seconds to about 20 seconds — this is normal. Reticulum sends a path request and waits for the node to respond with a signed announce. If resolution never completes, the node may be offline, or your connection to the testnet may not be routing correctly. Try connecting to the Dublin Hub first (it's the most reliably online node) and wait up to 30 seconds before concluding there's a problem.

Identity could not be recalled

You have a path to the node but no stored identity for it. This means the node hasn't sent an announce that your Reticulum instance has seen yet — it may have just come online, or your local path table is stale. Wait a minute and try again. If the problem persists, the node may be running with transport mode disabled and relying solely on direct announces, which take longer to propagate.

Link closes before a response is received

A link established but the page request timed out or the node closed the connection before responding. The node is reachable but the specific page path may not exist, or the node's page server may not be enabled (enable_node = yes must be set in its config). Try navigating to index.mu explicitly, or use the raw source viewer at /raw/<hash> in Nomad NetBrowser to diagnose.

Diagnosing with --verbose

When running Nomad NetBrowser, pass --verbose to see detailed RNS events printed to the terminal: path resolution attempts, link establishment, request/response timing, and error conditions. This is the fastest way to understand exactly where a connection is failing.

Reference &
Resources

Key Resources

ResourceURL
Reticulum Projectreticulum.network
Reticulum Manualreticulum.network/manual
NomadNet Sourcegithub.com/markqvist/NomadNet
Sideband (LXMF app)github.com/markqvist/Sideband
Nomad NetBrowsercodeberg.org/node-star/nomad-netbrowser
Node Starnodestar.net

Known Testnet Nodes

NameDestination HashType
Dublin Hubabb3ebcd03cb2388a838e70c001291f9Official
Frankfurt Hubea6a715f814bdc37e56f80c34da6ad51Official
BetweenTheBordersf8ac9c41b857ddf13a9151cec211079bCommunity
Node Star9a5548134799cfb6e9f60decc8708bc1Community

Reticulum Testnet TCP Endpoints

HostPort
dublin.connect.reticulum.network4965
frankfurt.connect.reticulum.network4965