A full-featured chat platform in a single binary.
Messaging, voice, video, screen sharing, push notifications.
No subscriptions, No Telemetry, No Third-Party Services.
Channels organized into collapsible categories, threaded replies, @mention autocomplete, custom emoji, reactions, link previews, typing indicators, and a local message cache for instant loads.
Organize text and voice channels into collapsible groups. Drag to reorder channels and categories.
Reply to any message with context. Keep conversations organized without overwhelming noise.
Upload server-specific emoji. React to any message with built-in or custom emoji.
Shared URLs automatically unfurl with OpenGraph metadata — title, description, and thumbnail.
Share images, videos, audio, PDFs, text, and archives. Inline previews for media. Configurable size limits.
VAPID-powered Web Push. Get notified even with the tab closed. Per-channel muting and @mention controls.
PWA InstallablePeer-to-peer WebRTC mesh. No relay servers, no subscriptions, no data leaves your network. Opus codec tuned at 128 kbps stereo for rich, clear audio.
Screen sharing lets you present your work, debug together, or watch videos as a group.
Share your entire screen or a single window. Present code, watch videos, or collaborate visually.
Adjust volume or mute individual participants locally. Your preferences persist across sessions.
Click any tile to enlarge it. Or enable auto-focus to spotlight whoever is currently speaking.
From the setup wizard to fine-grained permissions, Chirm puts you in charge of every aspect of your community.
Generate invite codes with optional max-use and expiry. Require codes for registration or leave it open.
Seven granular permissions (read, send, manage messages/channels/roles/server, admin) stacked via roles.
Generates a persistent CA and signed server cert on first run. Install the CA once per device via /ca-cert.
Per-IP throttling on auth endpoints prevents brute-force attacks. WebSocket messages capped at 64 KB.
First-run wizard creates your server name, owner account, default channel, and @everyone role in 60 seconds.
Upload a server icon, customize the login background, and configure registration policies from the admin panel.
Every dependency earns its place. No ORM, no framework, no build step. Just Go, SQL, and vanilla JS.
Server, router, TLS, binary embedding
Lightweight, composable HTTP routing
modernc.org/sqlite — no CGO, ARM-native
Real-time messaging hub
Stateless auth, secure password hashing
Browser-native P2P voice, video, screen share
Hand-rolled encryption, zero dependencies
No React, no bundler, no build step
Three commands. Sixty seconds. Full sovereignty.
# Clone & configure git clone https://github.com/Jacob-Ritchey/Chirm && cd Chirm cp .env.example .env echo "JWT_SECRET=$(openssl rand -hex 32)" >> .env # Launch Manually go mod tidy go build -o chirm . ./chirm # Launch with docker (Recommended) git clone https://github.com/Jacob-Ritchey/Chirm cd Chirm docker compose up -d # Open https://localhost:8443 → follow setup wizard