gitmyhub

harmony

TypeScript ★ 23 updated 2d ago

Federated social app: Discord-style servers and chat with ActivityPub. Vue 3 + Supabase + Tauri.

A self-hostable Discord-like chat platform that uses ActivityPub federation so users on different independently run servers can talk to each other and to other compatible platforms, with voice, video, and end-to-end encryption.

TypeScriptVue 3SupabaseNode.jsRedisTaurisetup: hardcomplexity 4/5

Harmony is a chat and social platform that works similarly to Discord, with organized servers, channels, direct messages, and threads. What makes it different from Discord is that it uses a protocol called ActivityPub, which allows different independently run instances of Harmony to talk to each other and also connect with other ActivityPub-compatible platforms. This kind of setup is called federation: instead of one company controlling all the servers, anyone can run their own instance, and users on different instances can still interact.

The app includes voice and video chat when configured with a service called LiveKit, end-to-end encryption for private messages using a method similar to what the Matrix protocol uses, and the ability for members from different Harmony domains to participate in the same server. There is both a web version and a desktop application, built from the same codebase using a framework called Tauri.

The technical stack is built on Vue 3 for the frontend interface, Supabase for the database and authentication layer, and a separate Node.js service that handles ActivityPub federation. The federation service uses Redis and a background queue for processing messages that travel between servers.

You can run your own instance by following the self-hosting documentation, which covers Docker setup and configuration. A live instance is available at har.mony.lol where you can try the app before deciding to self-host. The project is open source under the GNU Affero General Public License version 3, with additional attribution terms: forks are allowed but must be renamed and must include a visible link back to the original Harmony repository.

The project appears to be in active development with ongoing work tracked in a public roadmap.

Where it fits