A Slack bot that monitors repositories for new releases and posts updates to your channels.
- Periodic digest - one message per channel per configured interval, grouped by repo
- Immediate notifications - get notified right away for every new stable release
- Instant security alerts - security releases are posted immediately to all subscribers regardless of their notification mode
- Per-channel subscriptions - each channel manages its own list independently
| Command | Description |
|---|---|
/releases add github owner/repo [mode] |
Subscribe this channel to a repository |
/releases remove github owner/repo |
Unsubscribe this channel |
/releases modify mode github owner/repo <mode> |
Change the notification mode of an existing subscription |
/releases list |
Show all subscriptions in this channel |
| Mode | Behaviour |
|---|---|
digest |
Batched into the periodic digest (default) |
immediately |
Posted as soon as a new stable release is discovered |
security-only |
Only security releases are posted immediately; others are skipped entirely |
See installation.md for a full setup guide.
Dev dependencies are hosted on GitHub Packages. Create an .npmrc with a GitHub PAT that has the read:packages scope:
@aboutbits:registry=https://npm.pkg.github.com
//npm.pkg.github.com/:_authToken=YOUR_GITHUB_TOKEN
bun install
bun run dev # hot reload
bun test # run tests
bun run db:generate # generate migrations after schema changes
bun run db:migrate # apply migrations manuallyMigrations are also applied automatically on startup, so db:migrate is only needed when running outside of the app (e.g. to inspect the schema before starting).
All tables live in the main PostgreSQL schema (hardcoded in src/db/schema.ts and drizzle.config.ts). The public schema is intentionally avoided: it is on every role's default search_path and has historically been a namespace-pollution and privilege-escalation vector. To use a different schema, change the string in both files and regenerate the migrations with bun run db:generate.
The app ships as a Docker image. Migrations run automatically on startup.
docker run -d \
--env-file .env \
--restart unless-stopped \
ghcr.io/aboutbits/aboutbits-release-monitor:latest