Mori: Developing an Off-Grid Local Internet Service
Fri May 01 2026
Jess Morton
Intro
Roughly a year ago, during a conversation with a close friend, I told him I wanted to DIY my phone service. My goal was to pay as little as possible to use it, and I truly thought there must be some backdoor or hack or something that, given enough stubbornness and effort, could save me $50 a month. He asked me if I was planning on doing something with LoRaWAN, then explained it as a network of radios that communicate over long distances, using each other as relays. I didn’t think much of it at the time besides “wow cool!”, but nevertheless, this concept of an independent, community run network burrowed deep into my subconscious and would eventually become a fixation.
And today? Well, I hope to share this fixation. For the last four months, in my last semester of college, I’ve been slowly building out a system for a local, off-grid internet-like system, with web pages and forums and whatnot. Now that I’m a graduate (go blue!) and Summer is here, I’m putting some real elbow grease into developing it. While I have you here, I’d like to share a bit more of the project’s history, what exactly it is, how things are going, and where I want to take it. This is intended to be a checkpoint of sorts, a progress marker I can measure myself against as things move along. So please, take my hand and join me as I introduce the Long Range Community System, or Mori.
A Brief History
At a point not long after the LoRaWAN conversation, I began looking into Meshtastic (a well established LoRa-for-local-communcation project), and would eventually get my own device. Meshtastic provides a way to message other users in your community via LoRa radios, sidestepping internet/phone infrastructure entirely. Even if every internet and phone line was to suddenly blink out of existence, you could still message your friend across town (note: this apocalypse scenario is a minor part of why I think this sort of thing is actually valuable, you can read more here)
And about LoRa; it’s just a protocol for sending and receiving data over radio waves. You can think of it as the same type of thing as WiFi. LoRa radios, as a communication technology, have some interesting properties:
- Their direct radio-to-radio range is relatively short (~5km)
- They can greatly extend their range by relaying each others’ messages
- Data transmission is much slower than typical networks (~1kbps, but the bandwidth varies greatly, largely dependent on the spreading factor)
These properties are pretty much the pillars of LoRa and totally shape the networks built atop it. Looking more into Meshtastic, I learned it’s only really a messaging service, which while cool, is not the most engaging. It behaves like a very slow chat system where you talk to anonymous, local-ish strangers. The big thing I wondered about was this: If you can send human-readable text over LoRa, can you also send protocol data (i.e. text that machines use to communicate)? Which like, yes of course, Meshtastic already does that.

And following that: If you can send protocol data, can you request/respond using HTTP and send HTML? Can you then have a small, local internet over LoRa? I’ve been thinking about this for a while now, and the answer I’ve come up with is that it’s totally possible. There are important considerations to make in terms of what protocols to use (given the low data rate), how to send data securely, and how web services function over a mesh network, but i’m 90% sure it works. The other 10% will come once v1 is finished.
What is Mori?
Well, if it’s possible, then how am I actually gonna do it? What is usage going to look like? What’s it going to run on? While this is subject to (and will) change, here’s where I’m at.
Mori will function as a two-part system: a gateway and a client. The gateway is a computer with a LoRa radio that communicates with the local Mori network, sends and receives data, and stores files as needed. The client is a local web browser that interfaces with the gateway, also used to upload the files for your site. The gateway talks to the local network, and the client talks to the gateway.
I anticipate the gateway will be a single-board computer, likely a cheap Raspberry Pi, that is running a server to handle all of the requests, responses, and routing. It will have decent storage so it can store website files, and a LoRa HAT for data transmission. It should be powered on as much as possible so it can participate in the network as needed and will hook up to the user’s computer via USB when the user wants to request or receive data from it. This data will be plaintext, decrypted and encoded at the gateway.
The client will be a desktop application that receives plaintext data from the gateway. It is responsible for visualizing the local network, providing an interface to request/upload files, and displaying websites that have been received. The user interface will provide rich user feedback on the status of requested websites, as it may take a number of minutes or hours to receive requested data, depending on the size and locality to the user.

These two components will work together to form the Community System. It’s my hope that Mori, as a local-first, low-tech internet can provide a compelling alternative to social media and content consumption, giving community members somewhere to easily find and talk to each other, a digital third space that is immune to the same market forces that drove the internet to become the untenable behemoth we experience today. The philsophical angle of this project is actually quite significant and is something I will touch on more in a future post.
Progress So Far
At this point, I’ve created an interactive demo of the client in Processing that displays a interactive graph of the local network, as well as visitable pages with some mockups for roughly how they’ll be rendered. I’ve also begun planning how I want to integrate encrypted messages (Noise Protocol Framework), as well as how I can implement mesh routing (Reticulum Network Stack, also taking notes from Meshtastic and Meshcore). While I have notions, many of the technical specifics need to be hammered out.
One of my first priorities this Summer is to decide what I need to use from these existing technologies, how they will fit together, and what I’ll need to come up with on my own.
What’s Next?
This Summer, my goal is to get a functional prototype working. Specifically, I want to meet these criteria:
- Establish a network of 5 or greater nodes that are all aware of each other and become aware through dynamic discovery
- Send website files between all nodes in the network for at least two kinds of websites (e.g. personal site and forum)
- Create a functional client software that visualizes the network, allows for file request and upload, and faciliates interaction with dynamic pages (comments and posts)
And in preparing to meet these criteria, I would also like to:
- Talk to friends frequently about the state of the project and get their ideas for how to improve
- Read papers on relevant networking topics (gossip protocols, delay-tolerant networking, distributed consensus)
- Stay healthy!
As for what’s next next, I’ll be creating a concrete plan for what elements of this project need the most love and what order to approach them. That’s going to be a bit too specific and long winded for the blog, but the “finish before fall” points listed above are basically my north star.
Conclusion
All in all, I’m very, very thrilled to be working on this. When completed, Mori will serve as a great proof of concept for the social possibilities of mesh networking, and hopefully provide a digital communication model for those looking to stay connected without the baggage that comes with social media/the internet at large.
Thank you so much for reading. I look forward to updating this blog as progress progresses.
Yours truly, Jess <3