For Developers

Build on
Harmony

Create bots, build plugins, and self-host your own instance. Harmony is designed to be developer-friendly from the ground up.

Discord-Compatible Bot API

Familiar Gateway and REST API patterns. Migrate existing bots with minimal changes.

Plugin System

Extend Harmony with custom plugins. Add integrations, features, and automations.

Discord Bridge

Connect Discord and Harmony servers. Sync messages, users, and more.

Self-Hosting

Deploy your own instance with Docker. Full control, full customization.

Bot Development

Bot API

Our Bot API follows Discord's patterns, making it easy to port existing bots or start fresh with familiar concepts. WebSocket Gateway for real-time events, REST API for commands and data.

  • Gateway EventsMESSAGE_CREATE, PRESENCE_UPDATE, GUILD_MEMBER_ADD, and more
  • REST EndpointsFull CRUD for messages, channels, servers, and users
  • Rich PresenceShow activity status, custom statuses, and more
  • Slash CommandsRegister and respond to slash commands
Bot API Documentation
bot.ts
import { Client, GatewayIntentBits } from 'harmony.js';

const client = new Client({
  intents: [
    GatewayIntentBits.Guilds,
    GatewayIntentBits.GuildMessages,
    GatewayIntentBits.MessageContent,
  ]
});

client.on('messageCreate', (message) => {
  if (message.content === '!ping') {
    message.reply('Pong! 🏓');
  }
});

client.login('YOUR_BOT_TOKEN');
Extensibility

Plugin System

Extend Harmony's functionality with plugins. The plugin system provides hooks into core features, allowing you to add custom commands, integrations, and automations.

  • Event HooksSubscribe to message, user, and server events
  • Custom CommandsRegister new slash commands and message commands
  • Database AccessRead and write to Supabase through typed APIs
  • Federation HooksIntercept and transform ActivityPub activities
Plugin Documentation
Migration Tool

Discord Bridge Plugin

The Discord Bridge plugin syncs messages between Discord and Harmony servers, allowing gradual migration without leaving anyone behind. Configure channels, map users, and sync seamlessly.

Two-Way SyncMessages flow both directions in real-time
User MappingLink Discord and Harmony accounts
Channel MappingConfigure which channels sync where
Setup Guide
bridge.config.yml
discord:
  token: "YOUR_DISCORD_BOT_TOKEN"
  guild_id: "123456789"

harmony:
  url: "https://har.mony.lol"
  server_id: "your-server-uuid"

channels:
  - discord: "general"
    harmony: "general"
  - discord: "announcements"
    harmony: "news"

sync:
  attachments: true
  embeds: true
  reactions: true
Frontend
Vue 3ViteTypeScript
Backend
SupabasePostgreSQLReal-time
Federation
Node.jsActivityPubHTTP Signatures
Full Control

Self-Hosting

Deploy your own Harmony instance with Docker Compose. Our architecture uses Supabase for the database and real-time features, with a separate Node.js backend for ActivityPub federation.

1
Clone the repositorygit clone https://github.com/y4my4my4m/harmony/harmony
2
Configure environmentcp .env.example .env && nano .env
3
Start servicesdocker-compose up -d

Built With Modern Tech

A clean, maintainable stack that's fun to work with

Vue.js
Vue 3
TS
TypeScript
Vite
Supabase
🐘
PostgreSQL
Node.js

Ready to build?

Dive into the documentation and start creating with Harmony.