Stacks / Support
Easy
Stoat + Element
Self-host Discord-shaped chat. Stoat is Revolt under its 2025 name; Element is the Matrix client on a homeserver you run.
The problem
Discord is free until the server, the boosts, and the vendor lock are the product. Stoat (formerly Revolt) is the self-hosted Discord-like stack. Element plus a Matrix homeserver is the federated path. Both are still maintained.
Replaces
Discord
Estimated SaaS saved
$1,200
per year, small team, before lock-in
Start on RailwayPlaceholder: Stoat from stoatchat/self-hosted (Compose: API, events, files, web) or Element + a Matrix homeserver. Volumes for files and the DB. Not a single-container toy.
The stack
- Stoat (formerly Revolt)
Self-hostable Discord-like chat (API, web, files)
- Element
Matrix client; pair with a homeserver you run
Cost table
| You stop paying | Typical / year | Self-host instead |
|---|---|---|
| Discord Nitro / boosts / extra seats | $1,200 | Stoat or Element + a homeserver |
Agent setup prompt
Replace Discord with self-hosted chat. Pick Stoat (formerly Revolt; https://github.com/stoatchat/self-hosted) for a Discord-shaped server, or Element on a Matrix homeserver for federation. - Persist Mongo/Redis/files (Stoat) or the homeserver DB (Matrix). Bind HTTP to 0.0.0.0:$PORT. - Turn off public registration after the first admin. Document how to invite the existing Discord members. - Write AGENT_PROMPT.md. Do not invent a native Discord import if the project does not ship one.
Also as markdown: /stacks/stoat-chat.md
FAQ
- Is Revolt dead?
- No. The project rebranded to Stoat in 2025. Same chat, new name. The self-host repo is stoatchat/self-hosted.
- Why Element then?
- If you want federation and existing Matrix users, Element is the client and you run a homeserver. Stoat is the Discord lookalike. Pick one.