Join the Agent Deck Discord Server!
Check out the Agent Deck community on Discord – hang out with 357 other members and enjoy free voice and text chat.
Free, open-source Discord logging bot. Log bans, kicks, timeouts, role and permission changes, edited and deleted messages, voice and AutoMod, with an encrypted, searchable history and a log channel p
SocialTypeScript · CSSGitHub @haxurusOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Discord logging & audit log bot: logs bans, kicks, role/permission changes, edited and deleted messages, voice and AutoMod, with an encrypted searchable history and a web dashboard. Self-hostable, AGPL-3.0.
Taken from the repository README
Loading the full README.
Read the full README ↗An open-source Discord logging bot for audit logs, moderation logs and message logs, built to be verifiable.
Sentinel watches what happens on a Discord server — bans, kicks, role and permission changes, edited and deleted messages, channels, invites, AutoMod and more — keeps an encrypted, searchable history and delivers each event to the log channel you choose. Everything is configured from a web dashboard.
Add to Discord · Website · Pricing · Support server · Privacy & terms
No Discord token, database password, encryption key or other secret is ever stored in this repository.
70 event types, each with its own logger:
| Area | Events |
|---|---|
| Members & moderation | join, leave, kick, ban, unban, nickname/role/timeout/boost changes, profile updates |
| Messages | create, edit (with previous content), delete (with snapshot), bulk delete, polls, reactions |
| Server structure | channels and permission overwrites, roles (permission diff), threads/forums, pins, invites, webhooks, integrations, server settings |
| Voice & activity | join, leave, move, mute/deaf/stream/video, Stage, scheduled events, soundboard, voice effects |
| Content | emoji, stickers |
| Automation & apps | AutoMod rules and actions, slash commands, application command permissions, Discord Audit Log |
| System | server availability and Gateway diagnostics |
Per-logger control
Dashboard
Discord Gateway ──► bot handlers ──► LogEvent (PostgreSQL, encrypted details)
│ │
└─► message snapshot ▼
BullMQ queue (Redis)
│
▼
dispatcher: route lookup ─► filters ─► embed (size-safe) ─► Discord channel
Events are stored before delivery: a Discord outage or a missing permission never loses history. Every event records its delivery outcome (SENT, FILTERED, CHANNEL_UNAVAILABLE, FAILED, …), visible in the dashboard. Permanent Discord errors are not retried; transient ones are retried with backoff.
Browser ──► Next.js (web) ──/backend/*──► Fastify API ──► PostgreSQL
│
└─internal RPC─► bot (live Discord permissions)
More: docs/ARCHITECTURE.md.
A logging bot sees a lot, so Sentinel is designed to limit what a compromised component could do.
policy:check) rejects code that tries to bypass it.cap_drop: ALL and resource limits, no Docker socket, egress blocked towards host/LAN.state, Origin-based CSRF checks, strict CSP, per-session rate limiting, input validation, guild ownership checks on every channel/role ID.deploy, rollback and status; images are deployed by immutable SHA-256 digest.Details: docs/SECURITY.md. To report a vulnerability, see SECURITY.md.
| Path | Contents |
|---|---|
apps/bot | Discord Gateway client, handlers, recorder, dispatcher, capability policy, internal RPC |
apps/api | Fastify API: OAuth2, sessions, RBAC, configuration, history, export, super console |
apps/web | Next.js dashboard and public site |
packages/db | Prisma schema and migrations (PostgreSQL) |
packages/shared | Event catalog shared by bot, API and web |
deploy | Production Compose file, edge Nginx config, database role hardening |
ops | VPS installer, restricted deploy wrapper, SSH forced-command entrypoint |
security | Host firewall rules |
docs | Architecture, security, deployment and validation guides |
Requirements: Node.js 22+, Docker with Compose, a Discord test application.
npm ci
npm run db:generate
npm run build
npm test
Full local stack with the same hardening as production:
cp .env.example .env
mkdir -p secrets
# create the secret files described in secrets/README.md
docker compose up -d --build
Production runs as immutable Docker images built by GitHub Actions; nothing is built or git pulled on the server.
pull request ──► CI: build + typecheck, unit tests, migrations on PostgreSQL,
database privilege checks, Compose/Nginx validation, image build
merge to main ──► same CI ──► build & push images (SBOM + provenance) to GHCR
──► SSH forced command on the VPS:
disk-space guard ─► database backup ─► pull by digest ─► migrate
─► start ─► health checks ─► automatic rollback on failure
─► prune images older than the previous release
Step-by-step guide (VPS install, reverse proxy, OAuth, GitHub secrets, rollback): docs/DEPLOYMENT.md. What CI verifies: docs/VALIDATION.md.
Useful commands on the VPS:
sudo /usr/local/sbin/sentinel-deploy status
sudo /usr/local/sbin/sentinel-deploy rollback
Rollback is also available as the Rollback production GitHub Actions workflow. Migrations must stay backward-compatible with the previous release (expand/contract) so that rollback remains safe.
Privileged Gateway intents — enable both: the bot requests them at login and Discord rejects the connection if either is disabled.
The Presence Intent is not used: Sentinel never records members' online status or activities.
Bot permissions (no Administrator): View Channels, Send Messages, Embed Links, Read Message History, View Audit Log, Change Nickname (used only for the Brand plan's custom name).
OAuth2 redirect URL:
https://<your-hostname>/backend/auth/discord/callback
Anyone can add the hosted bot: Public Bot must be enabled in the Developer Portal. The bot still leaves servers, and servers added by users, that are on the super console blacklist, and reports it in the status channel.
Plans. Every server has a plan, enforced by the dashboard, the API, the recorder (capture, daily quota, retention) and the dispatcher:
| Free | Level 1 · Plus | Level 2 · Pro | Level 3 · Brand | |
|---|---|---|---|---|
| Price | — | €1.99/month · €19.99/year | €4.99/month · €49.99/year | €8.99/month · €89.99/year |
| Standard loggers | ✓ | ✓ | ✓ | ✓ |
| High-volume loggers (messages, reactions, polls, interactions, Audit Log) | ✓ | ✓ | ✓ | |
| Gateway diagnostics and server availability loggers | ✓ | ✓ | ||
| Retention | 15 days | 30 days | 60 days | 90 days |
| Events stored per day | 2,000 | 5,000 | 15,000 | 25,000 |
| Log channels | 3 | 8 | 20 | 20 |
| Priority support | ✓ | ✓ | ✓ | |
| Custom bot name and banner in the server | ✓ |
The full list of limits lives in packages/shared/src/plans.ts. When a plan is lowered or expires, loggers outside it are switched off and settings above its limits are clamped; nothing is deleted.
Payments. Paid plans are sold only as Discord Premium Apps guild subscriptions, at the same prices as the pricing page, as the Discord Developer Policy requires. There are no coupons or multi-server discounts, because Discord could not offer the same price. The SKU IDs are set in the super console; every two minutes the API reads the application's active entitlements through the bot (a read-only REST call) and updates each server's plan: a purchase switches the plan on, a renewal extends it and an ended subscription brings the server back to Free. If the entitlements cannot be read, nothing changes. Until SKUs are configured the pricing page shows the plans as "coming soon on Discord".
Super console (SUPER_ADMIN_USER_ID only, enforced by the API):
/backend/health/bot (optionally also to a Discord webhook); events are kept for 90 days;For an external uptime monitor, /backend/health reports the API and the database and /backend/health/bot the bot's connection to Discord (200 or 503, no details).
Sentinel records only what Discord exposes to the bot through the Gateway, REST and Audit Log with the granted intents and permissions. It cannot read private DMs between users, see what someone is viewing, or record voice audio. Attributing an action to a moderator relies on the Audit Log and may be missing when Discord does not provide an entry. Attachments are referenced by their Discord URL, not downloaded.
Everyone taking part follows the Code of Conduct.
Sentinel is free software released under the GNU Affero General Public License v3.0 only — see LICENSE.
You may use, study, modify and self-host it. If you offer a modified version to other people over a network, the AGPL requires you to give them the source code of your version; public instances must also use their own name and branding. The details are in docs/DISTRIBUTION.md.
Copyright © 2026 Haxurus.