MikroChat

The minimalist, self-hosted chat app for teams who want control over their communication.

Your team chat, your server.

No expensive per-seat pricing. No vendor lock-in. No distractions. Just a clean, fast chat app that you own completely.

MikroChat gives your team channels, threads, direct messages, and real-time updates without sending your conversations through someone else's servers.

Everything you need

Channel-based messaging.
Organize conversations by topic with text and image support. Keep your team aligned without the noise.

Threaded replies.
Keep discussions focused. Reply to any message in a thread without cluttering the main channel.

Direct messages.
Private conversations between team members, simple and distraction-free.

Encryption at rest.
AES-256-GCM encryption for all stored data. Messages, users, channels, and settings are encrypted on disk.

Flexible authentication.
Dev mode, magic links, passwords, or OAuth 2.0 with Google, Microsoft, GitHub, GitLab, and custom providers.

Batteries included.
Frontend and backend in one package. Minimal dependencies, single-file deployable, installable as a PWA.

Auth your way

MikroChat supports four authentication modes so you can pick what fits your team.

Development

Dev Mode

Simple sign-in for local development and testing. No email sending required.

Passwordless

Magic Links

One-time login links sent to user email. No passwords to remember or manage.

Traditional

Password

Email and password login with admin invitations, password reset, and scrypt hashing.

Enterprise

OAuth 2.0

Sign in with Google, Microsoft, GitHub, GitLab, or any custom OAuth provider like Keycloak.

Get started

Clone, install, configure, and run. That's it.

# Clone and install
git clone https://github.com/mikaelvesavuori/mikrochat.git
cd mikrochat
npm install

# Configure
cp mikrochat.config.example.json mikrochat.config.json

# Start frontend (terminal 1)
npm run dev

# Start backend (terminal 2)
npm run dev:reload

Open http://localhost:8000 and sign in with your configured initial user's email.

FAQ

Is this a Slack or Teams replacement?

It can be, for teams that want something simpler and fully self-hosted. MikroChat focuses on messaging, not on being a platform with hundreds of integrations.

How is data encrypted?

All stored data is encrypted with AES-256-GCM using a key derived from your secret via scrypt. Without the encryption key, data is stored unencrypted by default.

What authentication methods are supported?

Dev mode for local testing, magic link (passwordless email), traditional password auth, and OAuth 2.0 with Google, Microsoft, GitHub, GitLab, or custom providers.

Can I use my existing identity provider?

Yes. OAuth 2.0 supports custom providers like Keycloak and Authentik, so you can use whatever identity infrastructure you already have.

What are the system requirements?

Node.js 24+ on Linux or macOS. No external databases, containers, or services needed. MikroChat uses an embedded database.

Does it support real-time messaging?

Yes. MikroChat uses Server-Sent Events for real-time updates. Messages appear instantly across all connected clients.

Can I install it as an app?

Yes. MikroChat is a PWA (Progressive Web App), so you can install it on desktop or mobile with offline read access.

How do I run MikroChat in production?

Use systemd, Docker, or put it behind a reverse proxy like Caddy or nginx for HTTPS. See the deployment guide in the docs.

Can external services post messages?

Yes. MikroChat supports webhooks, so external services can post messages to channels programmatically.

Is this open source?

Yes. MikroChat is licensed under the MIT license. The source code is available on GitHub.