Project Meshnet aims to build a global decentralized computer network based "on secure protocols for routing traffic over private mesh or public internetworks independent of a central supporting infrastructure." The basis of the project is a piece of software called cjdns, an open source protocol that implements an encrypted IPv6 network. By installing and running cjdns on a home computer, for example, that computer becomes a cjdns node that can be networked with any other machine that is also running the protocol. You can find the cjdns white paper here.
Individuals and groups involved in Project Meshnet are currently in the process of developing Mesh Locals, groups of cjdns nodes connected directly to one another (usually wirelessly) to create a geographically distinct peer-to-peer network. The Seattle Meshnet is, at present, the most well-developed of these local networks in the United States.
Individual nodes and Mesh Locals can connect to one another over standard internet connections, though the ultimate plan of Project Meshnet is to build enough intermediary mesh locals and nodes so that it is no longer necessary to route traffic over existing ISP-based internet infrastructure. There is already at least one cjdns-based global mesh network known as Hyperboria.
Earlier this month, after a bit of research and with the help of some folks from my Mesh Local in NYC, I set up my first cjdns node and successfully connected to Hyperboria. So, you may be wondering, what's on Hyperboria? Good question. The best way to answer this question for yourself is to set up your own cjdns node, and connect up with your nearest Mesh Local!
Step 1: Install cjdns by following the Getting Started guide at Project Meshnet.
Step 2: Make sure your node is configured correctly, which can be determined from the Trouble Shooting guide.
Step 3: Locate your nearest Mesh Local, find a peer, and connect your node up with the network.
Currently, cjdns can be installed on Linux and Mac operating systems. I initially attempted to install on a Macbook, but ran into some configuration difficulties, and, it turns out, there is currently less functionality in the Mac implementation than in the standard Linux install. So I decided instead to create a couple Linux virtual machines on the Macbook and a desktop pc and installed cjdns on them.
After installing cjdns on those two hosts, I followed the trouble shooting guide to make sure that each host could ping itself. Then I updated their config files to create a peer-to-peer connection between those two hosts, and (eventually) got them to successfully ping one another over cjdns. I had set up my own home cjdns mesh network!
Finally, someone from my Mesh Local offered to peer with my node, and after I updated the config files with the peer info I was connected to Hyperboria. The whole process took about three days, from my first serious look into cjdns to my first connection to Hyperboria. Folks hanging out in my mesh local's IRC were a great help along the way. Unfortunately, since then, I have not had much time to play around with the meshnet technology, but I will certainly be returning to the project in the near future.