Project
event_watch
A low-latency pub/sub service: back-end services publish state changes, and clients subscribe over WebSocket or long-poll to receive events plus a server-maintained snapshot of each object.
event_watch is a low-latency event notification service. Back-end services publish state changes; UI clients subscribe over WebSocket (or long-poll) and receive the events plus a "deep state" snapshot maintained on the server by a reducer for each object type — so a client that connects late still sees the current state.
What it does
-
Typed objects with topic patterns: pull requests, builds (with per-step timings), deployments, jobs (progress and log tail), chat rooms, and scalar strings, integers (with atomic increment and decrement), and timestamps.
-
WebSocket and long-poll delivery, optional bearer-token auth, webhooks, metrics, and archiving.
-
Client libraries for Go, Python, Java, Rust, ESP-IDF, and Arduino — so a microcontroller can publish or follow events too — plus an htmx web UI and a Wails desktop client.
-
Runs standalone with no dependencies, or with Redis for scale.
How it is built
A Go server with separate packages for the store, hub, computed state, object types, webhooks, auth, transport, metrics, and archiver. Deployment artefacts include a Dockerfile, Kustomize manifests for Kubernetes, and CDK stacks for AWS. Adding a new object type or webhook plugin is a one-file change.