Chris Collins

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.

Started 1 September 2026 · updated 2 September 2026 · repository

Data and event platformsElectronics

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.

Status

Version 1 with full documentation, a wire-protocol reference, and a cheatsheet.

Try it

make run      # then open http://localhost:8080/

Updates

No updates yet.