What it is
Shirase is a Discord notification bot with a human approval step. An agent or project tool sends a draft update to a LAN webhook. Shirase turns that into a preview, DMs it to me, and only posts to the target channel after approval.
The intent is simple: let automation help with project updates without giving it a direct megaphone.
Why I run it
Project bots are useful until they start posting half-baked status messages. I wanted a path where agents can prepare updates, but the final publish action still belongs to me. Shirase gives that workflow a durable runtime instead of relying on copy/paste between chats.
It also gives me a place to experiment with voice and subscriber flows without bolting those features onto every individual project.
How I use it
For private updates, Shirase drafts a message and asks for approval through Discord. For friend-facing updates, the subscriber flow lets me route a project update to a narrower audience once the message is ready.
The newer builds can use project/vault context for better drafts, but the publish step stays guarded. That is the whole point.
Setup notes
- Host: the sandbox Docker LXC.
- Runtime: host-managed Docker Compose, custom image, restart unless stopped.
- State: SQLite catalog under the stack data directory.
- Exposure: LAN-only webhook and health endpoint. No public proxy.
- Secrets: Discord token, owner allowlist, webhook bearer, and voice secrets live in runtime files outside git.
- Monitoring: health endpoint is watched by the homelab monitor and surfaced on the dashboard.
Runbook
- Healthy looks like: container is healthy, the health endpoint reports bot ready, and an approval smoke reaches the owner DM.
- Draft created but no DM arrives: check Discord token state, owner allowlist, and whether DMs are blocked.
- Subscriber delivery is quiet: verify the subscriber row is active and the target channel/filter matches the payload.
- Where logs live: Docker logs on the sandbox host, plus the Shirase SQLite catalog for notification state.