Documentation
Corvus
A message queue and event broker in a single binary.
Corvus is a single-binary broker that moves jobs and events between services. Producers publish over HTTP; consumers subscribe over a long-lived stream and receive work as it arrives, with at-least-once delivery guarantees.
Work is grouped into queues. Each queue keeps its own durable log, retry policy, and dead-letter queue, so unrelated workloads stay isolated on one broker.
#Installation
Corvus ships as one static binary. Place it on your host and start it:
# download and start $ curl -sSL get.rainytg.space/install | sh $ corvus start --data /var/lib/corvus → listening on :5300 · api ready
By default the broker binds to 127.0.0.1:5300. Put it behind your own reverse proxy to expose it over TLS.
#Quickstart
# publish a job $ curl -X POST :5300/v1/queues/email/jobs \ -d '{"to":"a@b.c"}' → queued · id job_8f2a # consume from a worker $ corvus consume email → job_8f2a {"to":"a@b.c"}
#Configuration
Configure with flags, environment variables, or a small YAML file. Flags take precedence.
# corvus.yaml
data: /var/lib/corvus
listen: 127.0.0.1:5300
log: info
retries:
max: 5
backoff: 30sdata— directory for the durable queue log.listen— address the HTTP interface binds to.retries.max— how many times a failed job is retried before dead-lettering.
#API reference
Every route lives under /v1/queues/<name>. Requests without a valid token return 401.
| Method & path | Description |
|---|---|
POST /v1/queues/{q}/jobs | Publish a job to a queue. |
GET /v1/queues/{q}/_stream | Stream jobs to a consumer. |
POST /v1/queues/{q}/ack/{id} | Acknowledge a completed job. |
GET /v1/queues/{q} | Queue depth and retry stats. |
GET /health | Liveness probe. Returns 200 when the broker is ready. |
#CLI
The corvus binary is both the server and the client.
| Command | Description |
|---|---|
corvus start | Start the broker. |
corvus consume <queue> | Consume jobs from a queue. |
corvus queues ls | List queues. |
corvus status | Show broker health and queue depths. |