Stoat
Self-hosted team chat & messaging tool that provides modern chat platform featuring text channels.
Self-hosted Discord alternative, honestly reviewed. Based on repository data and technical analysis — no independent user reviews were available for this product.
TL;DR
- What it is: A self-hosted real-time chat server — think Discord, but running on your own infrastructure. The codebase is a fork/continuation of Revolt, written entirely in Rust [README].
- Who it’s for: Technical operators who want a Discord-style platform under their own control, without sending messages through a third-party server.
- Cost savings: Discord is free but closed-source and ad-supported. Slack Pro runs ~$7.25/user/month. Stoat self-hosted costs whatever your VPS costs — but setup complexity is significant.
- Key strength: The Rust microservices architecture is genuinely fast and memory-efficient. It ships with a complete feature set: REST API, WebSocket events, file hosting, push notifications, and a Tenor proxy [README].
- Key weakness: No dedicated product website, no pricing page, no third-party reviews, unclear license (
NOASSERTIONon GitHub), and deployment requires a full microservices stack including MongoDB, Redis, RabbitMQ, and MinIO. This is not a beginner project.
What is Stoat
Stoat is the backend server for a self-hosted chat platform. The repository (stoatchat/stoatchat) describes itself as “the software powering the Stoat service” — but what the codebase actually contains is a direct continuation of Revolt, an open-source Discord alternative [README]. Every internal Rust crate carries the revolt- prefix: revolt-config, revolt-database, revolt-models, revolt-permissions, and so on. The configuration file is named Revolt.toml. The development guide references a “Revolt Web App” as the frontend component [README].
Whether Stoat is an official rebranding of Revolt, a community fork, or something in between is not explained anywhere in the repository or the scrape of the GitHub page. The GitHub description says only “The software powering Stoat” — no website, no blog, no explanation of the name change [GitHub].
What you’re actually getting is a multi-service chat backend written in Rust, with 2,876 stars and 334 forks, built on a codebase with 1,459 commits and 43 releases [GitHub]. The architecture covers everything a Discord-style platform needs: REST API, real-time WebSocket events, file uploads, proxy handling, push notifications, and scheduled cleanup jobs.
Why people choose it
No independent third-party software reviews of Stoat were available at the time of writing. The five sources returned in research were about the mammal Mustela erminea, not this project. What follows is based on the repository data and the general reasons people self-host Discord alternatives.
The core motivation for self-hosting anything in the chat category is the same: data sovereignty. Discord processes all messages through its own infrastructure. Slack stores your team’s communications on Slack’s servers, and the bill scales with headcount. A self-hosted Revolt/Stoat instance means the only server your messages touch is one you control.
The Revolt codebase, which Stoat is built on, has historically attracted people who want:
- A recognizable Discord-style UI/UX without the Discord terms of service
- No per-seat pricing for internal team communication
- Complete control over who has access, where data lives, and what integrations exist
- The ability to run the platform on an air-gapped network
The 2,876 stars suggest a real user base, but the lack of any community presence visible from this data — no forum, no Mastodon, no Reddit activity in the provided materials — makes it difficult to characterize what that user base looks like [GitHub].
Features
Based on the README and repository structure [README]:
Core services (each a separate Rust binary):
revolt-delta— REST API server (the main application API)revolt-bonfire— WebSocket events server (real-time message delivery)revolt-autumn— File server (uploads, attachments, avatars)revolt-january— Proxy server (URL proxying to prevent client IP leakage)revolt-gifbox— Tenor proxy server (GIF search without exposing the Tenor API key)
Daemons:
revolt-crond— Scheduled data cleanup (removes expired sessions, stale data)revolt-pushd— Push notification delivery
Core libraries:
- Configuration management, database abstraction, permission logic, user presence tracking, S3/encryption utilities, and API models — all as separate crates [README]
Infrastructure dependencies:
- MongoDB (primary database, port 27017)
- Redis (caching/sessions, port 6379)
- MinIO (S3-compatible object storage for files, port 14009)
- RabbitMQ (message queue for inter-service communication, ports 5672/15672)
- Optional: Sentry integration for error tracking [README]
Deployment format:
- Docker +
compose.ymlfor local development - Nix support via
default.nixfor reproducible builds - Helm not mentioned; pure Docker Compose is the documented path [README]
Notable absent features (based on what’s not in the docs):
- No native LDAP/SSO mentioned
- No built-in email verification beyond a Maildev container in dev
- No admin dashboard UI documented in the backend repo (would live in the frontend client, which is a separate repository)
Pricing: SaaS vs self-hosted math
Stoat has no SaaS tier. There is no product website, no pricing page, and no managed hosting option described anywhere in the repository [GitHub]. It’s self-hosted-only.
Stoat self-hosted:
- Software: free (license unclear — see Cons)
- Infrastructure: the cost of running MongoDB + Redis + RabbitMQ + MinIO + 6 Rust microservices
Infrastructure minimum for a small team:
The multi-service architecture is the budget constraint. Running MongoDB, Redis, RabbitMQ, MinIO, and all the Rust binaries simultaneously requires more RAM than a single-process chat server. A realistic minimum is 4GB RAM — a $6 Hetzner CX22 or $12 DigitalOcean 4GB droplet won’t leave you much headroom. Budget $12–20/month for a comfortable instance.
What you’re replacing:
| Platform | Cost |
|---|---|
| Discord | Free (data goes to Discord) |
| Slack Pro | ~$7.25/user/month |
| Slack Business+ | ~$12.50/user/month |
| Mattermost Cloud | $10/user/month |
| Stoat self-hosted (all users) | ~$12–20/month VPS, flat |
For a team of 10, Slack Pro runs $72.50/month. For a team of 20, it’s $145/month. Stoat on a $20 VPS is $20/month regardless of how many users join. The math is obvious at any team size above ~3 people — if you can handle the operational overhead [pricing comparison based on public SaaS rates, not from Stoat data].
Deployment reality check
This is where the honest review diverges sharply from most self-hosted tool write-ups.
Stoat is not a single-container deployment. The development guide lists 8 services running concurrently on 10+ ports. The compose.yml file orchestrates MongoDB, Redis, MinIO, Maildev, RabbitMQ, and all the Rust binaries [README]. Starting the full stack requires:
docker compose up -d # start infrastructure
./scripts/start.sh # start all Rust services
# or run each binary individually
What you actually need:
- A Linux VPS with at least 4GB RAM, preferably 8GB
- Docker and docker-compose
- A domain name and reverse proxy (Caddy or nginx) for HTTPS
- Familiarity with reading and modifying
Revolt.tomlfor configuration - A separate client — the frontend is in a different repository (
stoatchatis backend-only) [README]
The frontend problem: The README instructs you to git clone --recursive https://github.com/stoat (truncated in scrape) to get the web client. There is no “here’s one Docker command that gives you everything” path documented. You’re assembling multiple repositories [README].
The license problem: The license field on GitHub shows NOASSERTION — meaning GitHub can’t identify the license type. The LICENSE file exists in the repository but isn’t a standard SPDX identifier. Given the Revolt heritage (which historically used AGPL-3.0), this could mean the license changed during the rebranding, or the file is a custom license. Before running this in production for your organization, you need to read that LICENSE file [GitHub].
Realistic time estimate:
- Technical operator comfortable with Docker Compose: 3–6 hours for a working instance including frontend
- Someone new to multi-service Docker deployments: a full day or more
- Non-technical founder: not recommended without a technical operator
Port conflicts are explicitly called out in the development guide, with provided override configurations — which is a good sign that the maintainers know this is a real pain point [README].
Pros and cons
Pros
- Rust performance. The backend is written entirely in Rust, which means low memory footprint per service and fast response times once running. This matters at scale or on constrained hardware [README].
- Complete feature architecture. File hosting, push notifications, URL proxying, GIF search, WebSocket events — all implemented as dedicated services rather than shoehorned into a monolith [README].
- 34 forks + active maintenance. 1,459 commits and 43 releases suggest ongoing development, not an abandoned project [GitHub].
- Nix support. The included
default.nixis a signal that maintainers care about reproducible builds, which is a good operational sign [README]. - Self-contained development environment. The
mise+ Docker Compose approach means a new contributor can get a full dev environment running without fighting system package managers [README].
Cons
- No product website. There is no documentation site, no feature list, no FAQ — just a GitHub repository and a truncated README. Evaluating this tool requires reading Rust source code [GitHub].
- Unclear license.
NOASSERTIONmeans you don’t know what you’re agreeing to when you deploy this. For anything beyond personal use, this is a blocker until you read the LICENSE file directly [GitHub]. - Multi-service complexity. Six Rust binaries + MongoDB + Redis + RabbitMQ + MinIO is a significant operational burden. Any one of these failing silently can take down chat functionality in non-obvious ways.
- No managed hosting option. There is no “pay us to host it” path. You run it yourself, or you don’t use it. Compared to tools like Mattermost (which offers managed cloud), this is an all-or-nothing operational commitment.
- Frontend is a separate repository. The backend doesn’t include the web client. You’re responsible for deploying and updating two separate codebases [README].
- No community presence visible from available data. No Reddit activity, no forum, no official blog. If something breaks, your support options are GitHub Issues and reading the source code.
- The Revolt rename is unexplained. The codebase is clearly Revolt — all internal names confirm it. Why the project is presented as “Stoat” with no explanation creates uncertainty about project continuity and ownership.
Who should use this / who shouldn’t
Use Stoat if:
- You’re a technical operator already running multiple Docker services and want a self-hosted team chat platform.
- You were running Revolt and this is the upstream continuation of that codebase.
- You want a Discord-style platform with zero third-party data exposure, and you have the ops skills to keep 6+ services healthy.
- Data residency requirements make any third-party SaaS chat tool off-limits.
Skip it (pick Mattermost instead) if:
- You want self-hosted team chat but need a documented, supported deployment path.
- Your team is non-technical and needs something that “just works.”
- You want LDAP/SSO integration out of the box.
- You need a managed cloud option as a fallback.
Skip it (stay on Discord) if:
- Your team is already on Discord and data sovereignty isn’t a concern.
- You have zero ops capacity — maintaining 6 Rust microservices is not a passive activity.
Skip it (pick Matrix/Element) if:
- You want a self-hosted chat platform that federates with other servers.
- You want a large ecosystem of bridges to other chat networks (Slack, IRC, WhatsApp).
- You need a well-documented, enterprise-supported deployment path.
Alternatives worth considering
- Mattermost — the most direct comparison. Open-source, self-hosted, Slack-style interface, active company, documented deployment, free tier available. AGPL-3.0 for community edition. The obvious choice if you want something proven.
- Matrix / Element — decentralized, federated, open standard. More complex to operate but interoperable with other Matrix servers. Good for communities, not just internal teams.
- Zulip — open-source, self-hosted, threaded conversation model. Strong documentation, active development, Docker deployment is straightforward.
- Rocket.Chat — older, more feature-complete, heavier resource requirements. Has a long track record of self-hosted deployments but the codebase has grown complex.
- Revolt (official) — given the evidence that Stoat is a Revolt fork/rebranding, it’s worth checking
revolt.chatdirectly to see which codebase is more actively maintained and documented.
Bottom line
Stoat is a capable backend for a self-hosted Discord alternative, built on solid Rust foundations and a well-structured microservices architecture. If you know what you’re doing operationally, the technology is sound. The problems are everything around the technology: no product website, an unexplained relationship to the Revolt codebase, an unidentified license, and no independent user reviews to calibrate against. This is a project that asks you to trust it based on the code alone. For a solo technical founder who wants maximum data control and doesn’t mind running a small fleet of Docker containers, it’s worth evaluating — but read that LICENSE file first and verify the Revolt/Stoat relationship before committing your team’s communications to it.
Sources
Primary sources:
- stoatchat/stoatchat — GitHub repository (2,876 stars, 334 forks, 1,459 commits, 43 releases). README, codebase structure, deployment guide, development documentation. https://github.com/stoatchat/stoatchat
Note on third-party reviews: Research for this article returned five sources that were all about Mustela erminea (the mammal), not the Stoat software project. No independent software reviews, user testimonials, or third-party technical evaluations of Stoat were available at time of writing. Pricing comparisons for Discord alternatives (Slack, Mattermost) are drawn from publicly listed SaaS pricing pages, not from Stoat-specific review data.
Features
Integrations & APIs
- REST API
Compare Stoat
Related Communication & Messaging Tools
View all 128 →LobeChat
74KAn open-source AI chat platform with multi-model support, agent building, MCP integration, and plugin ecosystem — a self-hosted alternative to ChatGPT.
Rocket.Chat
45KRocket.Chat is an open-source team communication platform that combines messaging, video conferencing, and omnichannel customer engagement in a single self-hosted deployment.
Mattermost
36KSecure collaboration, workflow and AI on sovereign infrastructure. Operational sovereignty for national security and critical infrastructure.
Mattermost
36KSecure collaboration, workflow and AI on sovereign infrastructure. Operational sovereignty for national security and critical infrastructure.
Continue
32KSource-controlled AI checks on every pull request. Standards as checks, enforced by AI, decided by humans.
ntfy
29KPush notifications made easy. Simple HTTP-based pub-sub notification service for your phone or desktop.