Interactive map of the Reticulum Network Entry Points with automatic geolocation, node discovery and advanced network diagnostic tools.
Reticulum Entry Points Map is a lightweight Python application that automatically discovers public Reticulum entry points and displays them on an interactive Leaflet map.
The project combines automatic node discovery, IP and WHOIS geolocation, interactive visualization and built-in network diagnostics into a single web interface.
Designed for both network administrators and Reticulum enthusiasts, it allows you to inspect the public network in real time without requiring external databases or heavyweight frameworks.
- ๐ Automatic Reticulum node discovery
- ๐บ๏ธ Interactive Leaflet map
- ๐ Automatic geolocation
- ๐ Local node visualization
- ๐ Automatic refresh
- ๐ก REST API
- ๐ Integrated rnprobe and rnpath
- ๐ Distance ruler
- โญ Radius drawing tool
- ๐ฒ Marker clustering
- ๐ฑ Responsive interface
- โก Lightweight Python server
- Overview
- Features
- Requirements
- Quick Installation
- Advanced Node Commands
- Configuration
- REST API
- Project Structure
- Customization
- Troubleshooting
- Publishing an Entry Point
- Roadmap
- Contributing
- License
| Feature | Description |
|---|---|
| ๐บ๏ธ Interactive Map | Displays all discoverable Reticulum nodes on a Leaflet map |
| ๐ Automatic Geolocation | Uses explicit coordinates, IP lookup, WHOIS and node names |
| ๐ Automatic Refresh | Refreshes the network every 30 minutes |
| ๐ Local Node Support | Automatically displays the local server |
| ๐ REST API | JSON endpoints for external applications |
| โก Lightweight | Pure Python implementation with minimal dependencies |
| ๐ท๏ธ Node Labels | Labels become visible while zooming |
| ๐ Distance Ruler | Measure distances directly on the map |
| โญ Radius Tool | Draw circles and estimate coverage |
| ๐ฒ Marker Clustering | Automatically groups nearby markers |
| ๐ Filters | Filter nodes by type and availability |
| ๐ฏ Diagnostic Tools | rnprobe, rnpath, ping, netcat and nmap integration |
- Python 3.6 or newer
- Reticulum installed and configured
- Internet connection
whois(optional but recommended)
git clone https://github.com/argo79/Reticulum_Entry_Points_Map.git
cd Reticulum_Entry_Points_Mapor download the project manually.
Required files:
reticulum_map.py
locations.py
map.html
style.css
ruler.js
Edit the beginning of reticulum_map.py.
LOCAL_NODE_CONFIG = {
"name": "My Node",
"latitude": 45.605,
"longitude": 12.2435,
"reachable_on": "my.public.ip",
"port": 4242,
}python3 reticulum_map.pyOpen your browser at:
http://localhost:8484
Main interactive map.
The map integrates several network diagnostic tools that can be executed directly from the web interface.
| Command | Description |
|---|---|
| rnprobe | Tests connectivity with a Reticulum node |
| rnpath | Shows the current route to a node |
| rnpath -d | Deletes the cached route |
| Ping | Sends ICMP ping packets |
| Nmap | Performs a TCP port scan |
| Netcat | Tests TCP connectivity |
| Discovery Hash | Calculates the discovery hash for a handler |
| Discover All | Lists every discoverable handler |
The application can automatically calculate discovery hashes for several Reticulum services.
- ๐ต Probe Hash
- ๐จ LXMF Propagation
- ๐ฌ LXMF Delivery
- ๐ Audio Call
- ๐ Nomad Network Node
Node popup with integrated network tools.
Most settings can be customized directly inside reticulum_map.py.
PORT = 8484
REFRESH_MINUTES = 30
LOCAL_NODE_CONFIG = {
"enabled": True,
"name": "My Reticulum Node",
"latitude": 45.605,
"longitude": 12.2435,
"reachable_on": "203.0.113.10",
"port": 4242,
}Node locations are determined using multiple methods, in priority order.
- Explicit GPS coordinates included in the node announcement.
- IP lookup using ip-api.com.
- Local WHOIS analysis.
- Location keywords extracted from the node name.
This layered approach allows most public nodes to be positioned automatically, even without GPS coordinates.
Automatic node geolocation.
The embedded HTTP server exposes several endpoints for automation and integration.
| Method | Endpoint | Description |
|---|---|---|
| GET | /data |
Returns every discovered node in JSON format |
| GET | /refresh |
Forces a refresh of node data |
| GET | /localnode |
Returns local node information |
| GET | /get_hash/<transport>/<handler> |
Calculates a discovery hash |
| GET | /rnprobe_hash/<hash> |
Executes rnprobe |
| GET | /rnpath_hash/<hash> |
Executes rnpath |
| GET | /rnpath_drop/<hash> |
Removes the cached route |
| GET | /ping/<host> |
Executes an ICMP ping |
| GET | /netcat/<host>/<port> |
TCP connectivity test |
| GET | /nmap/<host> |
Port scan |
| GET | /nmap/<host>/<port> |
Scan a specific TCP port |
Retrieve every discovered node.
curl http://localhost:8484/dataCalculate the Probe hash for a specific transport.
curl http://localhost:8484/get_hash/c00058ab8a97b8cd5e20e5e570ad45d5/rnstransport.probeExample response.
{
"success": true,
"transport_id": "c00058ab8a97b8cd5e20e5e570ad45d5",
"handler": "rnstransport.probe",
"hash": "ca655871b843def1277cc3416cdeed54",
"timestamp": "2026-07-24T21:00:44.089847"
}Responsive interface optimized for desktop, tablet and mobile devices.
Reticulum_Entry_Points_Map/
โโโ reticulum_map.py
โโโ locations.py
โโโ map.html
โโโ style.css
โโโ ruler.js
โโโ robots.txt
โโโ sitemap.xml
โโโ nodes.json
โโโ nodes_geo.json
โโโ geo_cache.json
โโโ hash_cache.pkl
โโโ img/
โโโ REPMap.jpg
โโโ REPMap1.jpg
โโโ REPMap2.jpg
โโโ REPMap3.jpg
โโโ REPMap4.jpg
You can improve automatic geolocation by editing locations.py.
Example:
LOCATIONS = {
"milan": {
"lat": 45.4642,
"lng": 9.1900
},
"rome": {
"lat": 41.9028,
"lng": 12.4964
},
"berlin": {
"lat": 52.5200,
"lng": 13.4050
},
"new york": {
"lat": 40.7128,
"lng": -74.0060
}
}The geolocation engine searches node names for matching keywords before falling back to WHOIS information.
The frontend consists entirely of static files.
You can freely modify:
map.htmlstyle.cssruler.js
or completely replace them with your own interface.
The Python server automatically serves every static file from the project directory.
Verify that Reticulum is installed correctly.
which rnstatus
rnstatus -hIf not installed:
pip install rnssudo apt install whoissudo pacman -S whoissudo dnf install whoisWHOIS is optional but improves node geolocation.
Verify that:
- Python is running.
- Port 8484 is not blocked.
- No firewall is preventing access.
- Reticulum is working correctly.
Find the process using port 8484.
sudo lsof -i :8484Terminate it.
sudo kill -9 PIDReplace PID with the process ID returned by lsof.
If the map is empty:
- verify that Reticulum is running;
- execute
rnstatus; - make sure some discoverable nodes exist;
- check the terminal for errors.
Possible causes:
- Private IP addresses
- VPN endpoints
- Missing WHOIS package
- Unknown node names
- Temporary IP lookup API failure
Coordinates contained inside the node announcement always have the highest priority.
To make your Entry Point appear automatically on the map, add the following options to your Reticulum configuration.
Configuration file:
~/.reticulum/config
Example:
discoverable = Yes
discovery_name = My Backbone Node
announce_interval = 240
discovery_stamp_value = 24
latitude = 45.4642
longitude = 9.1900
height = 15[Default Interface]
type = AutoInterface
enabled = Yes
[[Backbone Listener]]
type = BackboneInterface
interface_enabled = True
mode = gateway
listen_on =
port = 4242
discoverable = Yes
discovery_name = RNS Backbone WORLD
announce_interval = 360
discovery_stamp_value = 24
latitude = 45.4642
longitude = 9.1900
height = 15After editing the configuration simply restart Reticulum.
Within a few announce intervals your Entry Point will automatically appear on the public map.
Only Entry Points configured as:
discoverable = Yeswill appear on the map.
No additional information is collected beyond what Reticulum already publishes through the Discovery protocol.
If GPS coordinates are omitted, the application will attempt to estimate the position using IP geolocation and WHOIS information.
Typical resource usage:
| Resource | Usage |
|---|---|
| RAM | ~25 MB |
| CPU | <1% idle |
| Refresh interval | 30 minutes |
| Supported nodes | Thousands |
The server is lightweight enough to run on Raspberry Pi, VPS instances and low-power hardware.
This project is released under the MIT License.
See the LICENSE file for the complete license text.
- ๐ง Email: arg0netds@gmail.com
- ๐ GitHub: https://github.com/argo79
- ๐ Reticulum LXMF Identity
lxmf.cb04d68b73c76647dc61a530089b7dce
Special thanks to the projects and people that made this software possible.
- ๐ Reticulum Network for creating a truly decentralized networking protocol.
- ๐บ๏ธ Leaflet for the interactive mapping library.
- ๐ ip-api.com for the free IP geolocation service.
- ๐ฐ๏ธ Every Reticulum node operator contributing to the global network.
- ๐ฎ๐น The Reticulum Italia community for testing, ideas and feedback.
If you find this project useful, consider supporting its development.
You can help by:
- โญ Starring the repository.
- ๐ด Forking the project.
- ๐ Reporting bugs.
- ๐ก Suggesting new features.
- ๐ Improving the documentation.
- ๐ง Submitting Pull Requests.
- ๐ข Sharing the project with other Reticulum users.
Contributions are always welcome.
- Fork the repository.
- Create a feature branch.
git checkout -b feature/my-feature- Commit your changes.
git commit -m "Add new feature"- Push the branch.
git push origin feature/my-feature- Open a Pull Request.
Please try to keep the coding style consistent with the rest of the project.
Possible future improvements include:
- ๐ Multiple map providers.
- ๐ฐ๏ธ Real-time node updates using WebSockets.
- ๐ Historical node statistics.
- ๐ Network health dashboard.
- ๐ IPv6 visualization improvements.
- ๐ก Mesh topology visualization.
- ๐งญ Route quality metrics.
- ๐ Optional authentication for API endpoints.
- ๐ฑ Progressive Web App (PWA).
- ๐ Dark and Light themes.
If you find this project useful, consider buying me a virtual coffee! โ Every contribution, big or small, helps keep the project alive and supports future development.
| Cryptocurrency | Address |
|---|---|
| XRP (Ripple) | rBKbetm51vuQQfg4Yo8fvweRya7gedcr9J |
| XMR (Monero) | 87jacZEtYvXcgnvEp7wu45gLwRBYpvwMr3N9dqhNipPWV69XwQX658tS73VEdghLopG1wA4STEdMPcGF8Tc3e18eJyQ4kMA |
| ETH (Ethereum) | 0xd2d85288df96B4162814Ca7492039620371b9D81 |
Made with โค๏ธ by Arg0net
๐ก Reticulum Identity
lxmf.04511923b68ae34e0fda5721d82f596f
โญ If you like this project, consider giving it a Star on GitHub.






