Tailscale for The Hyper Link Infra

One of the things Prig and I were chatting about the other day was keeping services off AWS/Azure/etc but keeping things affordable.

She talked about Tailscale as the backbone, and with my incredibly lay reading, it sounds interesting:

Keeping The Hyper Link and the projects off the regular internet is pretty dope. Having folks log into a VPN gives the nerdy vibe that setting up IRC gives. Additionally if we want folks to at least partially self host with things like LANline, hit adding and removing services from the network is desirable.

I wonder if the zero trust components would help with malfeasance detection/handling and moderation.

And, as always, inexpensive and bypassing the billionaires running the internet is great.

1 Like

Gah, I finally found out why Iโ€™m missing all of these posts, my notification email was set to the wrong address :man_facepalming:

I used TailScale briefly when I had my original Zimaboard/CasaOS setup running so I could connect to JellyFin when I was away from home. I like that idea a lot - keeping it nerdy (for lack of a better term) feels like it would attract more of the kind of people weโ€™d want to engage with. Any barrier between the platform(s) and bad actors, bots, spammers is a good thing.

The only thing I wonder about is how Tailscale would handle lots of users/if that impacts which paid plan you need to be on. I only briefly scanned the plans but Iโ€™m not sure what the differences between a device and a user would be.

In any event, I think the concept of using a VPN to connect/host would be super rad.

Ultimately it sounds like weโ€™re kind of thinking of a P2P network. It would be really sweet if users could buy (or build) the hardware they would need, plug into the network, and then pick which bits of โ€˜The Hyperlink Suiteโ€™ theyโ€™d want to turn on. Iโ€™m using my CasaOS setup as inspiration:


You have a dashboard to manage the hardware, the apps you have installed, and launch into them from there.

A P2P network could also help distribute the computing power needed to host things and not necessarily have a dedicated storage place for anything if we didnโ€™t want to.

I am extremely about that. I love the idea of having your hardware and software licenses for a P2P network โ€” it feels very early web in all the good ways you want.

Do you think if we hosted on regular commodity stuff like AWS/Azure and then moved over to a more P2P/self-developed-hardware focused environment the transition would be pretty simple?

I donโ€™t have any idea how these transitions would work.

Iโ€™m super into it, too.

Iโ€™m not sure, either it would probably take some investigation. Theoretically I feel like we would probably have some kind of centralized backup db if we went fully P2P and if we transferred from a hosted solution to P2P we could use that existing DB to distribute the data to other peers and then use it as the backup. Thatโ€™s at least what my caveman brain is telling me.

I unga that bunga fellow caveman

1 Like

@NewFatMike - I think Iโ€™m going to spin up a little testing app where we can sandbox some p2p type of functionalities.

Something that will do something like: when you connect to the network for the first time, youโ€™ll sync with the other nodes and create your local copy of the data. When someone updates or creates something in the network (for example: new post, comment, etc) your node will be pinged and youโ€™ll pull that change.

Itโ€™ll be a lil ugly but I think it will be a cool and worthwhile test. We can see what works and doesnโ€™t work and test a real p2p network connection.

I figured the p2p aspect might be easier to start with a native app so we can leverage filesystems for data storage but we can figure out infra later.

Cooked up the beginning of a little widget to test p2p connections, when I get the actual networking aspect live Iโ€™ll share the bundle with you so you can run it, too.

1 Like

Yeah HELL YEAH I love it

Okay I think I got a baseline going here. Next thing I need to do is do some Tailscale testing and then Iโ€™m gonna get u hooked up to see if we can shitpost on BROTHERNET

Database Layer

  • :white_check_mark: SQLite database integration with sqlite3
  • :white_check_mark: Database schema for Subnets, Threads, and Replies

P2P Networking Foundation

  • :white_check_mark: WebSocket server running
  • :white_check_mark: P2P Manager class with connection handling
  • :white_check_mark: peers.json configuration system in userData directory
  • :white_check_mark: Message protocol with handshake, ping/pong, welcome messages
  • :white_check_mark: Bidirectional connections between peers
  • :white_check_mark: Connection status tracking and real-time UI updates

Gossip Protocol Implementation

  • :white_check_mark: Implement request_full_state message type
  • :white_check_mark: Implement full_state response with all data
  • :white_check_mark: Add create_subnet, create_thread, create_reply gossip messages
  • :white_check_mark: Implement last-write-wins conflict resolution using timestamps
  • :white_check_mark: Add automatic state sync on peer connection

Data Synchronization

  • :white_check_mark: Integrate gossip protocol with database operations
  • :white_check_mark: Broadcast local changes to all connected peers
  • :white_check_mark: Handle incoming data updates and merge with local state
  • :white_check_mark: Add UI indicators for sync status (syncing, synced, conflicts)
  • :white_check_mark: Test multi-node data consistency


1 Like

This is pretty rad - I hope it actually works when we get connected haha. When I have a test peer connect for the first time it straight slurps up that sweet, sweet data and then they both send changes between each other.

I canโ€™t wait to send you a .zip folder with a suspicious .exe file in it. Itโ€™ll be just like when the internet used to be fun.

Oh hell yeah this is looking so sweet! Discovery and visualization will be a lot of fun in a P2P setting

1 Like

Yeah agreedo. Iโ€™m super into the p2p and native/desktop app move. Iโ€™m not sure why we didnโ€™t explore it earlier but it feels nice and Iโ€™m happy to break out of the browser. There are a lot of cool system features we can leverage being a native app.

Using user nodes as the storage and sharing updates across peers instead of a centralized db is super appealing. Weโ€™ll probably have to figure out how to have backups/fallbacks but right now for testing it doesnโ€™t matter so much.

Did some testing with Tailscale tonight and it worked nicely. The prototype I have now is currently set up in a way where users would have to manage a list of peers manually, which wouldnโ€™t scale that well.


Behold, my peers.

I put together a plan to have a โ€˜bootstrap nodeโ€™ that would be hosted and would listen for peers that connect/disconnect and then send that list of active peers to the other connected clients.

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚   User App A    โ”‚    โ”‚   User App B    โ”‚    โ”‚   User App C    โ”‚
โ”‚  (Alice's PC)   โ”‚    โ”‚  (Bob's Phone)  โ”‚    โ”‚ (Charlie's Mac) โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
          โ”‚                      โ”‚                      โ”‚
          โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ฒโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                     โ”‚           โ”‚
                โ”Œโ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                โ”‚  Bootstrap Node 1   โ”‚
                โ”‚ (DigitalOcean VPS)  โ”‚
                โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ฒโ”€โ”€โ”€โ”€โ”˜
                     โ”‚           โ”‚
                โ”Œโ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                โ”‚  Bootstrap Node 2   โ”‚
                โ”‚ (DigitalOcean VPS)  โ”‚
                โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Okay we should definitely use TUIs for everything, we can even make it use mouse inputs (if youโ€™re a loser).


Someone make a bluesky client with a TUI and it looks so rad. Plus Rust fucks so.

1 Like

That TUI is pretty slick