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: 30s

#API reference

Every route lives under /v1/queues/<name>. Requests without a valid token return 401.

Method & pathDescription
POST /v1/queues/{q}/jobsPublish a job to a queue.
GET /v1/queues/{q}/_streamStream jobs to a consumer.
POST /v1/queues/{q}/ack/{id}Acknowledge a completed job.
GET /v1/queues/{q}Queue depth and retry stats.
GET /healthLiveness probe. Returns 200 when the broker is ready.

#CLI

The corvus binary is both the server and the client.

CommandDescription
corvus startStart the broker.
corvus consume <queue>Consume jobs from a queue.
corvus queues lsList queues.
corvus statusShow broker health and queue depths.