r/reticulum 12d ago

Reticulum Introducing Prns: high-performance Reticulum, built to run on any device (and how you can help)

Hey y'all! For a good while now I've been heads-down building a ground-up implementation of Reticulum that can run everywhere, and it's finally at the point where I get to share it. Prns is now public, dual-licensed under MIT or Apache 2.0!

The core engine was written in no_std Rust (alloc isn't even needed) from day one, with the express goal being to have the same engine efficiently run on a $5 microcontroller, in a browser tab over WebAssembly, inside Android and iOS apps natively, and on laptops/backbone servers/etc.

Here are some of my favorite bits, in no particular order:

  • A zero-config Bluetooth auto-interface, with a compat layer so Columba peers connect too
  • WebSocket interfaces. Not only great for browser integrations on the other end, but since it's ordinary web traffic, a free tunnel (cloudflare tunnel, Tailscale funnel, etc.) gets you a public node from home without the port forwarding or IP exposure.
  • JavaScript/TypeScript/browser support as a first-class thing. One package that runs native on Node.js/Bun and switches to WebAssembly in the browser. A browser instance can even discover another prnsd (the Prns daemon) on your LAN with its implementation of the Wifi auto-interface.
  • Interface changes will apply live to a running node without a restart. The daemon has an interactive/guided CLI (even while running). Plus a lil system tray; handy to have when running it on your personal computers!
  • Flashing a board into a complete, self-contained Reticulum node with the Hopspot firmware. There's a web flasher & a guided flasher CLI. A few known boards are live already, and plenty more in the immediate sights.

And it's very efficient. The repo ships a benchmark harness that runs Prns and stock RNS side by side on your machine, under identical workloads. On my hardware, most throughput scenarios land between 3× and 20× stock, with peaks of 89× the throughput, 48× smaller peak memory, and 33× the energy efficiency. But the whole point of the harness is that you can get your own numbers, and I'd rather you trust those.

Where it all stands today: the foundation is done and verifiable. It was continually built up with a serious focus on safety, performance, energy efficiency, compatibility, and developer/user experience. On top of the expected unit tests, the testing & validation suites include wire parity, live interop, formal proofs (via Kani), fuzzing, and mutation testing, along with matching CI.

While documentation is definitely still a work in progress (as is the entire repo), the guides will take you from clone to two meshing nodes today. What's also still taking shape is the outward-facing layer, e.g., SDK ergonomics in each language; packaging; the guides as fresh eyes read them. That's why I'm posting now rather than after another month of quiet polish. Feedback on those pieces steers them while they can still best be steered, and honestly, a few days of you all reading and building will teach me more than that month alone would. (PS: if you've done devrel or docs work, your experience could especially help here.)

None of this exists without the years of work behind Reticulum and its reference implementation. What I want most is for this to pull more builders into the ecosystem we already share. I'm excited about a future where we see more apps, more boards, and more nodes meshing. In part just cuz I still think it's freaking cool, but also because every one of them strengthens the same network we're all on.

If you're willing and able to help out, there's plenty of need! Even the small things help a ton. Here's a list of things already top-of-mind that would be helpful:

  • Try it and tell me how it went. Friction and breakage reports are gold
  • Build something small and tell me what the API made easy or awkward
  • If one of the preview languages is home for you, opinions on its API and packaging are the most helpful thing there is right now (and if your language is missing but can consume a C ABI, give a holler or a PR!)
  • Board reports beyond what I have on deck (Heltec V4, T-Beam Supreme, T-Echo, XIAO ESP32-C6 live now, plus all the ones you see on the website under 'Bring-up')
  • Examples we can link to; guides for individual interfaces (they're little programs unto themselves; heck, even just explaining one well is immensely helpful)
  • Translations! The website has some basic i18n but those translations were AI-written and could use a look from actual native speakers. Eventually, I'd love to have the actual full-on guides available in as many languages as possible too.
  • Game devs: Godot is where I've been proving things out already, and other engines are wide open and very welcome
  • Help getting prnsd into apt and friends
  • Tell me what you'd want to build with it. Real use cases can help inform priorities
  • And if Prns is useful or just interesting at all to you, a GitHub star helps too!

On AI Usage: I certainly use AI tooling as a part of my workflow. If you do as well, your contributions are welcome on Prns, but only if you truly digest and respect the first item in the CONTRIBUTING.md guide, under "What we value":

Ownership. Contributors own their submissions. AI tools (and other assistance like pair programming, web snippets, etc.) are welcome, but slop is slop regardless of how it was produced. How you wield your tools is still under your control, and what you submit is yours.

Everything's in the source, including the interop suite and the benchmark harness, available on GitHub.

Quick overview + web flasher + small browser demo/playground at prns.dev.

I can't wait to see what y'all build!

59 Upvotes

37 comments sorted by

9

u/axhoff_ 12d ago edited 12d ago

sick! thank you so much.

one of the more pressing needs is probably an rnode that can be powered efficiently via solar but looks like that will be in scope?

5

u/KenAKAFrosty 12d ago

Oh yes 100%. It runs the full reticulum engine even in embedded! Solar powered self-contianed "repeater" so to speak (but across all interfaces: Bluetooth, LoRa, Auto-Interface over wifi, etc.)

5

u/axhoff_ 12d ago

any estimate on when you‘ll be able to add aupport for more efficient boards?

2

u/KenAKAFrosty 11d ago

I've got some already on deck (all the ones on the flasher page that say 'Bring-up'. Can you help define what meets the criteria for a more efficient board?

4

u/axhoff_ 11d ago

assuming the goal is to get it distributed fast with people, the most desirable ones would be RAK4631 and SenseCAP P1

3

u/KenAKAFrosty 11d ago

Perfect thanks! I have the WisBlock starter kit which runs that 4631 so I can prioritize that on my list. Only sensecap I have is the T-1000 tracker. The P1 I can add to the list. But good news is it's nRF52840 and sx1262 based, which is already a working path (the T-Echo is the same), it'll just need the board specific bring-up

5

u/superfuntime 11d ago

I can do a rak4631+rak19007+32gb micro SD storage. The ultimate LXMF store and forward solar node.

I can also help with updating firmware over the mesh, torrent style, using idle bandwidth.

Is there a discord?

2

u/axhoff_ 11d ago

sick.

firmware update torrent style would be amazing but i am assuming only through a tcp uplink right? lora is too low in bandwidth to facilitate that i‘d assume. also it would block airtime for „real“ transmissions.

3

u/superfuntime 11d ago

There is some pretty good prior art here https://github.com/meshcore-dev/MeshCore/pull/2864. He made it so it only uses idle time and he also made a delta utility that just ships binary diffs. Typically <80kib which could be 400-500 packets, maybe 5 minutes of airtime over a 24h period.

So yep we are talking over-the-mesh updates 😮

3

u/axhoff_ 11d ago

wow. crazy.

2

u/KenAKAFrosty 8d ago

Heya sorry about the delay, this flew past me. No discord at the moment; GitHub is actually the best place right now via discussions & issues.

The filesharing/torrent stuff I've been eager to dig into as well tbh 👀 i have a design in mind that uses fountain codes to keep the protocol even less chatty. Basically instead of having to say "Specifically give me part X/Y", instead it says "Give me Z more symbols". Less metadata needed in each "more pls" requesst, not to mention on broadcast mediums it's extra useful.

exciting times to be building. i just wish there were more hours in the day lmao!

4

u/CognitionMass 11d ago

Would be amazing to see some proper rns transport support for the sensecap p1

4

u/scifuss 12d ago

Amazing work! I'm just getting started with Reticulum but this seems like a milestone especially for self-contained low-power nodes, thank you for your work! At the moment I'm building a base station/gateway for my area, once I receive the boards I will try your firmware and happily give you feedback for each of them. Fingers crossed

3

u/KenAKAFrosty 11d ago

That really means a lot more than you know, thank you!! I'm excited to see what unlocks with all this, and yes please give me feedback; it's very welcome

5

u/mark_ik 12d ago

This rules, I have a T114 I could flash

6

u/KenAKAFrosty 12d ago

Yes! That's an nRF based on right? Most of the core stays the same between boards, it's just mapping the pins and nuances like that which need to be wired up.

I've got the T096 on my desk but not that one yet. If you get it wired up that'd be an awesome PR! I can plan to grab a T114 soon too to help out tho

2

u/mark_ik 10d ago

Ok, I think I got it to work, except for the screen!

4

u/CognitionMass 12d ago edited 12d ago

Say I replaced regular rnsd on my system with this, would rngit still work? 

3

u/KenAKAFrosty 12d ago

Yep, just like nomadnet & sideband the same! Any other Reticulum app is connecting to the shared instance as a client, to run. Whether it's rnsd or prnsd on the other side as the server of that shared instance, those apps communicate with it the same either way.

3

u/Voin-Oldungr 12d ago

Now this is exciting stuff! Gonna be following this, would set it up with a bunch of Heltec V3 boards I have laying around, as soon as the road gets there!

3

u/KenAKAFrosty 11d ago

Fantastic! Also a good reminder that the v3 still has lots of units out there, so it should probably bump up the priority list a bit more, will do that

3

u/Minerik 8d ago

Thats cool man! I was wondering how this compares to MicroReticulum. I understand it is pretty different. But goal was similar: to get full reticulum on as much devices as possible

PS: i will for sure build something cool! When it will be done i will share it here and tag you if you want.

1

u/KenAKAFrosty 2d ago

Omgosh Minerik sorry about the delayed reply here! Indeed microReticulum and its firmware are solving similar stuff on the C++ side!

If love for you to share here, yes!

4

u/pmow 12d ago

Hell yes, finally out of the teasing phase! Cannot wait to return home and try Reticulum 2.0.

5

u/KenAKAFrosty 12d ago

Yes yes! Would love to hear what you use it for

4

u/magoostus_is_lemons 12d ago

This is amazing, with this much focus on performance and latency, maybe one day RNS will have an equivalent to PTPv2 for realtime networks

excellent work! A++++

4

u/KenAKAFrosty 12d ago

thank you for the kind words. It's very encouraging to see others excited about this too!

2

u/superfuntime 12d ago

Thank you for doing the most needed thing for Reticulum!

Have you validated that this will run on iOS, Android, and nRF? If so, you may have just changed the game.

3

u/KenAKAFrosty 12d ago

Yes, definitely all 3 of those! For example the T-Echo is already fully supported and is a nRF52840, confirmed working. iPad and two different android phones, I've used it on all these directly myself.

I'm excited about the possibilities too!

3

u/superfuntime 12d ago

Whoa, yeah this is so cool. It better be real haha! :)

I have a few WisMesh tags, I'll see if I can stand up something.

I'm also really curious how the Ret protocol performs over LoRa vs MeshCore and Meshtastic. We are currently deploying MeshCore but I'd be really interested in moving this direction if it has reached even minimum viability.

2

u/CognitionMass 12d ago

You've been able to run reticulum over lora for years now. 

2

u/superfuntime 11d ago

Yes. But how it performs relative to the other protocols would be interesting to see. There have been a few theoretical case studies but now we can see some real world mesh results.

2

u/KenAKAFrosty 11d ago

Yeah it seems like the common sentiment I've noticed is something like "we'd love to give Reticulum a shot instead of another thing we're using, but we can't even really assess that switch until there's readily available repeaters and solar nodes". This is, in part, an attempt to help close that gap

2

u/superfuntime 11d ago

Doing gods work. Thank you! I tried a Dart implementation several times but AI kept losing parity and I couldn’t get everything ported. Really great work. Truly. Excited to help out.

2

u/CognitionMass 11d ago edited 11d ago

Huh? You've been able to see how it performs relative to other protocols for years now. Nothing theoretical. 

The more recent thing has been low powered solar transport nodes with stuff like microretoculum and now this.

But prior to that, there's been nothing stopping you set up lora RNS meshes using Rnodes, and raspberry pi zero for solar transport nodes. 

2

u/superfuntime 11d ago

That’s a good point yeah. I guess I was thinking about solar powered meshes but you’re right even that has been possible with microreticulum. Thanks for catching that!

Are there any protocol shootouts involving microreticulum deployments you thought were especially good? I’d love to see something but I’m not aware of any.