A decentralized messaging daemon built on top of the Kademlia routing protocol.

Overview

parakeet-message

A decentralized messaging daemon built on top of the Kademlia routing protocol. IWasActingGIF

Now that you are done laughing...

pictures

image_0 image_1

what is it? 🤔

So basically, you host a server on your machine that everyone else is going to talk to. If anyone wants to leave messages there, they can. You can also send a request to this server to have it send a message to someone else. Right now there isn't any security to stop you from sending a message from someone else's machine but that would be an easy addition into the server code itself. You can poll this server for messages that other people have left, but in the future that may turn into a Websocket live feed. There is also an endpoint you can call that will list all of the users that the server knows about, and it is to those users that you can send messages. Getting into how the Kademlia protocol works is not something I want to do right now, but there are a plethora of resources online about it because it is a very popular, topical, and, most importantly, performant routing protocol. Just google Kademlia protocol and you will find it, if you don't then you are lying. 😎

why? 😵‍💫

I had just done a project for my Distributed Systems (CSE 40771) course on the Kademlia protocol and wanted to make something else with it. I liked the idea of having what is essentially a decentralized messaging service so that I could use it with my friends. Also, this is the culmination of hours of research and work and I feel like I need to at least put it somewhere. There are most definitely a lot of bugs, but I will certainly keep going through and both remove these bugs and add new features as I see fit, as long as my interest holds.

setup 🤓

  1. If you already know someone that is on the network, do this before starting the server.
  • export BOOTSTRAP_HOST= e.g., export BOOTSTRAP_HOST=127.0.0.1
  • export BOOTSTRAP_PORT= e.g., export BOOTSTRAP_PORT=8000
  1. Now, start the server.
  • python3 server.py --port=

client 🤨

  1. If you want a rudimentary implementation of a messaging client that will use one of these servers, I have provided the client.py program that you can use to do so.
  2. You execute it like so - python3 client.py SERVER_HOST SERVER_PORT - where SERVER_HOST and SERVER_PORT are the host and port of your server respectively. It is to this server that the client will call to send and receive messages. Type help within the fake shell to see a list of commands you can execute (note: there aren't that many).
Owner
Jonathan Abbott
I was gonna send you a joke about UDP but wasn't sure you'd get it.
Jonathan Abbott
Ethereum Gas Fee for the MacBook Pro touchbar (using BetterTouchTool)

Gasbar Ethereum Gas Fee for the MacBook Pro touchbar (using BetterTouchTool) Worried about Ethereum gas fees? Me too. I'd like to keep an eye on them

TSS 51 Nov 14, 2022
DiscWrappy - A Python wrapper for the Discord bot API

DiscWrappy - A Python wrapper for the Discord bot API

Jeff Morris 4 Apr 25, 2022
1 Feb 18, 2022
A powerful Lavalink library for Discord.py.

A robust and powerful Lavalink wrapper for Discord.py! Documentation Official Documentation. Support For support using WaveLink, please join the offic

Pythonista 254 Dec 29, 2022
A Powerfull Userbot Telegram PandaX_Userbot, Vc Music Userbot + Bot Manager based Telethon

Support ☑ CREDITS THANKS YOU VERRY MUCH FOR ALL Telethon Pyrogram TeamUltroid TeamUserge CatUserbot pytgcalls Dan Lainnya

22 Dec 25, 2022
The modern Lavalink wrapper designed for discord.py

Pomice The modern Lavalink wrapper designed for discord.py This library is heavily based off of/uses code from the following libraries: Wavelink Slate

Gstone 1 Feb 02, 2022
Huggingface inference with GPU Docker on AWS

This repository contains code to containerize and deploy a GPU docker on AWS for summarization task. Find a detailed blogpost here Youtube Video Versi

Ramsri Goutham Golla 21 Dec 30, 2022
Neubot client

Neubot, the network neutrality bot Neubot is a research project on network neutrality of the Nexa Center for Internet & Society at Politecnico di Tori

Neubot 57 Nov 02, 2021
Clipboard-watcher - Keep an eye on the apps that are using your clipboard

clipboard-watcher This repository contains the code of an experiment, in order t

Gonçalo Valério 48 Oct 13, 2022
Robot Swerve Test Public With Python

Robot-Swerve-Test-Public The codebase for our swerve drivetrain prototype robot.

1 Jan 09, 2022
FTP Anonymous Login

FTPAnon FTP Anonymous Login Install git clone https://github.com/SiThuTuntimehacker/FTPAnon cd FTPAnon bash install.sh access ftp sever " ftpaccess.tx

SiThuTun 3 Mar 23, 2022
This repo provides the source code for "Cross-Domain Adaptive Teacher for Object Detection".

Cross-Domain Adaptive Teacher for Object Detection This is the PyTorch implementation of our paper: Cross-Domain Adaptive Teacher for Object Detection

Meta Research 91 Dec 12, 2022
Smilecreator4 - This site is for people who want to hack or want to learn it!

smilecreator4 This site is for people who want to hack or want to learn it! Furthermore, this program does not work without turning off Antivirus or W

1 Jan 04, 2022
Resources for the AMLD 2022 workshop "DevOps on AWS"

MLOPS on AWS | AMLD 2022 This repository contains all the resources necessary to follow along and reproduce the workshop "MLOps on AWS: a Hands-On Tut

xtream 8 Jun 16, 2022
Automation that uses Github Actions, Google Drive API, YouTube Data API and youtube-dl together to feed BackJam app with new music

Automation that uses Github Actions, Google Drive API, YouTube Data API and youtube-dl together to feed BackJam app with new music

Antônio Oliveira 1 Nov 21, 2021
The public discord bot, created by: primitt, further developed by: duino-coin team.

Duino Stats Mini A public Duino-Stats Discord bot. Click this link to invite the bot to your server. License Duino Stats Mini distributed under the MI

primboi 8 Mar 14, 2022
Univerity-student oriented (lithuanian) discord bot

Univerity-student oriented (lithuanian) discord bot

3 Nov 30, 2021
Jupyter notebooks and AWS CloudFormation template to show how Hudi, Iceberg, and Delta Lake work

Modern Data Lake Storage Layers This repository contains supporting assets for my research in modern Data Lake storage layers like Apache Hudi, Apache

Damon P. Cortesi 25 Oct 31, 2022
Drover is a command-line utility for deploying Python packages to Lambda functions.

drover drover: a command-line utility for deploying Python packages to Lambda functions. Background This utility aims to provide a simple, repeatable,

Jeffrey Wilges 4 May 19, 2021
Auto-updater for the Northstar Titanfall 2 client

northstar-updater Auto-updater for the Northstar Titanfall 2 client Usage Put the exe into your Titanfall 2 directory next to Titanfall2.exe Then, whe

7 Nov 25, 2022