A personal fork of chamburr/modmail, the bot behind modmail.xyz, for a Discord server I help run. The base bot works the same as upstream: tickets, replies, snippets. That core is chamburr's work; the rest is what I added.
The additions are ticket tagging, auto-close for quiet tickets, webhook alerts, and message translation, plus a watchdog service that keeps an eye on the running containers and a dashboard for it.
The dashboard reading from the ops API. One error on the watchdog itself is flagged in red.
what i added
tagging
Label a ticket (bug, billing, abuse) so a busy queue is easier to sort through.
auto-close
A ticket that goes quiet past a set time closes itself.
webhook alerts
A Discord webhook fires when a ticket is created, tagged, or auto-closed.
translation
The language is detected when a ticket opens. Messages are then translated both ways, so staff and the person can each write in their own language.
claimable queue
Staff can claim a ticket so two people are not replying to the same person at once.
followups
Schedule a follow-up message to send on a ticket later.
ops dashboard
A watchdog container polls the running services for memory, CPU, queue depth, database connections, and gateway latency. When a value looks off it writes an incident to the log. A small FastAPI service reads what the watchdog collects, and a React dashboard shows it and refreshes every 30 seconds. That's the screenshot at the top.
how it runs
For local development I trimmed the stack to the containers I actually use and dropped the official web app and API.
bot
the bot logic, in Python
dispatch
the gateway connection, a community arm64 image since the official one has no Apple Silicon build
postgres
database
redis
cache
rabbitmq
queue between the bot and dispatch
watchdog
mine, polls the stats and logs when something looks broken