About this project

QPub Server is a self-hostable messaging server that combines real-time pub/sub Channels with job Queues, exposed through REST and WebSocket interfaces. It is intended for teams that want to run their own messaging infrastructure rather than depend on a hosted service. Core capabilities - Channels: publish/subscribe messaging delivered over WebSocket, with publishing available through REST. - Job queues: enqueue and pull work items, run workers, and receive webhooks. - Multi-tenancy: tenants are isolated from one another and can have rate limits applied. - Authentication: API keys and client tokens protect access; a separate control token guards the provisioning API. - Control API: manage tenants, API keys, limits, queues and workers, and inspect realtime statistics and connections. Backing services The server relies on NATS JetStream, Redis, and Postgres, with CockroachDB supported as an alternative database via a driver setting. Getting started The README suggests copying the example environment file and running Docker Compose, which brings up Postgres along with Redis and NATS. Default ports are 8091 for the Control API, 8111 for REST, and 8131 for WebSocket. A tenant and API key must be created through the Control API before REST or WebSocket calls can be made. A local build path is also documented using Go tooling, requiring the same backing services to be reachable through the environment configuration. The Control API is authenticated with a bearer token or a custom header; if the token is left empty the control API is open, which the README notes is for local development only. Documented endpoints cover health checks, instance identity and metrics, tenant creation, listing, retrieval and deletion, per-tenant statistics, connections, channels, rate limits, API keys, queues and workers. The project is licensed under the Apache License 2.0.