explaingit

y4my4my4m/harmony

15TypeScriptAudience · developerComplexity · 4/5LicenseSetup · hard

TLDR

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.

Mindmap

mindmap
  root((harmony))
    What it does
      Federated chat platform
      Servers and channels
      Voice and video
      Direct messages
    Federation
      ActivityPub protocol
      Cross-domain servers
      Other platform compat
    Features
      End-to-end encryption
      Threads
      Desktop and web app
    Tech stack
      Vue 3
      Supabase
      Node.js federation
      Redis queue
      Tauri desktop
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Self-host your own Harmony instance for a community or team that wants Discord-like features without relying on a centralized service

USE CASE 2

Build a federated chat app where members from different servers can join the same channels using ActivityPub

USE CASE 3

Try the live instance at har.mony.lol to evaluate Harmony's features before committing to a self-hosted setup

Tech stack

TypeScriptVue 3SupabaseNode.jsRedisTauri

Getting it running

Difficulty · hard Time to first run · 1h+

Requires Docker plus a separate LiveKit instance for voice and video, multiple services to configure including Supabase, the Node.js federation service, and Redis.

AGPL-3.0, free to use and modify, but if you host or distribute it you must share your source code, forks must be renamed and link back to the original Harmony repo.

In plain English

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.

Copy-paste prompts

Prompt 1
Walk me through self-hosting a Harmony instance using Docker, including how to configure the ActivityPub federation service and LiveKit for voice chat.
Prompt 2
How does Harmony use ActivityPub so users on different Harmony domains can join the same server and see each other's messages?
Prompt 3
Explain the end-to-end encryption approach Harmony uses for direct messages and how it compares to what the Matrix protocol does.
Prompt 4
I want to build the Harmony desktop app using the Tauri setup. What does the build process look like and what platforms does it support?
Open on GitHub → Explain another repo

← y4my4my4m on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.