Serein
Rust로 만든 가볍고 성능 좋은 Discord 전용 네이티브 클라이언트
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기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.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
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.