Skip to content

anthonybaldwin/squawk

Repository files navigation

Squawk

A Bun-based Discord bot that:

  • polls one or more public status pages (Statuspage.io and incident.io are supported) and groups each incident into its own Discord thread
  • answers slash-command status questions with the current page health
  • supports replay and preview flows so you can test notifications without waiting for a live incident

Supported providers are auto-detected at /monitor add time — drop in any public Statuspage.io URL (e.g. https://status.atlassian.com) or any public incident.io URL (e.g. https://status.openai.com) and the bot picks the right adapter.

Squawk

Quick Start

cp .env.example .env      # Fill in DISCORD_TOKEN, DISCORD_APPLICATION_ID, etc.
bun install
bun dev                    # Watch mode (or `bun start` for production)

Docker

docker compose up -d       # Production deployment with Docker Compose

A prebuilt image is available at ghcr.io/anthonybaldwin/squawk:latest.

Documentation

Full docs live in the wiki:

Page Description
Architecture System design, data flow, and module structure
Configuration Environment variables, multi-monitor setup, feature flags
Commands All slash commands with usage and permissions
Incident Lifecycle How incidents are tracked from creation to resolution or removal
State Management Persistence format, migration, and locking
API Integration Supported providers, endpoints, and how to add a new provider
Deployment Docker, Docker Compose, CI/CD, and production notes
Development Local setup, tooling, and contribution guide
Contributing How to contribute, code conventions, and documentation rules

Notes

  • The bot uses public APIs only — Statuspage.io's v2 API (<base-url>/api/v2/...) or incident.io's widget proxy (<base-url>/proxy/<host>) — so a public page URL is all you need.
  • For development, setting DISCORD_GUILD_ID makes slash-command registration update faster than global commands.
  • On first startup, the bot seeds current incident-update IDs without posting them unless POST_EXISTING_UPDATES_ON_START=true.
  • The bot needs Send Messages, Embed Links, Create Public Threads, and Manage Messages permissions.

Previously known as

This project was originally named statuspage-discord. The new name reflects that it covers more than just Statuspage.io. The legacy STATUSPAGE_MONITORS_JSON env var is still honored (with a deprecation warning) — prefer MONITORS_JSON going forward.

About

Discord bot that broadcasts incident updates from public status pages (Statuspage.io, incident.io, ...) into threaded conversations. Multi-page, slash commands, self-hosted.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors