# Stoat + Element

Self-host Discord-shaped chat. Stoat is Revolt under its 2025 name; Element is the Matrix client on a homeserver you run.

**Replaces:** Discord

**Tier:** Easy

## 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.

## Stack

- [Stoat (formerly Revolt)](https://github.com/stoatchat/self-hosted) — Self-hostable Discord-like chat (API, web, files)
- [Element](https://element.io) — Matrix client; pair with a homeserver you run

## Estimated SaaS cost saved

| You stop paying | Typical / year | Self-host instead |
|---|---:|---|
| Discord Nitro / boosts / extra seats | $1,200 | Stoat or Element + a homeserver |

**About $1,200 / year** on a small team, before you count lock-in.

## Deploy on Railway

Placeholder: 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.

[Start on Railway](https://c17.io/go/railway/stoat-chat?from=%2Fstacks%2Fstoat-chat.md)

## AGENT_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.
```

## 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.

Source: https://c17.io/stacks/stoat-chat
