GARRISON Docs

Garrison Documentation

Garrison is a self-hosted, featherweight, end-to-end-encrypted, guild-first comms app for gamers, a modern alternative to mainstream chat services that's light enough it won't cost you frames, private by default, and ships the whole guild toolkit built in.

🚀

New here? Jump to Getting Started to install the app, or Self-Hosting to stand up your own server in one command.

What makes Garrison different

ðŸŠķ

Featherweight

A native Tauri desktop app, not Electron, that idles around ~15 MB of RAM. It stays out of the way of your game.

🔒

Private by default

Self-hosted with no telemetry, and real end-to-end encryption (MLS / RFC 9420) for encrypted channels.

⚔ïļ

Guild-first

Roles & ranks, an event scheduler with RSVPs, invites, and granular permissions are core, not bolted on.

🌐

One backend, every client

The same Go services power the web app and the desktop app, so every device stays in lockstep.

Everything Garrison does

  • Messaging: servers, categories, text/voice channels, replies, reactions, edits, pins, threads, mentions, DMs, search, forwarding, custom emoji, uploads, embeds, GIFs, and live translation. Read more →
  • Voice, video & screen-share: low-latency self-hosted voice, priority-speaker channels, a cross-channel "command net", push-to-talk, a game overlay, and voice moderation. Read more →
  • Roles & permissions: an editable @everyone base role, an Administrator permission, enforced role hierarchy, per-channel overrides, role colors, and a rank-ladder preset. Read more →
  • Guild toolkit: a raid/siege/event scheduler with RSVPs posted as in-channel cards, plus invites, kicks, and bans. Read more →
  • Security & encryption: MLS end-to-end encryption, argon2id passwords, rotating refresh tokens with theft detection, and TOTP two-factor auth. Read more →

Where it runs

ClientPlatformHighlights
WebAny modern browser Full app, nothing to install. Next.js 15 / React 19, dark "war-room" theme, 14 accent themes.
DesktopWindows (Tauri v2) System tray, close-to-tray, global push-to-talk hotkeys, a game overlay, and signed auto-updates.
AndroidAPK The same app, packaged for your phone. iOS is on the roadmap.

How it's built

Garrison is a small set of Go services behind a TLS edge. Clients talk to a REST API for everything request/response, and to a WebSocket gateway for real-time fan-out (messages, presence, voice signaling). Voice/video/screen-share run through a self-hosted LiveKit SFU. The server only ever stores opaque ciphertext for encrypted channels, it can't read them.

Clients web · desktop · android nginx edge TLS / HTTPS API auth · channels · perms Gateway realtime · presence LiveKit SFU voice · video · screen Redis PostgreSQL ciphertext only for E2EE channels
Request/response goes to the API; everything live flows over the gateway; media runs through LiveKit. PostgreSQL stores only ciphertext for encrypted channels.

Want the deep version? See Self-Hosting for how the whole stack comes up with one command, and Security & Encryption for the end-to-end-encryption model.