# QueueBox > QueueBox is a self-hosted service that runs the transactional outbox and the idempotent inbox on Postgres or SQL Server. Applications write outbox rows in their own transaction; QueueBox delivers them to RabbitMQ, Kafka, NATS or HTTP. Brokers and webhooks feed the inbox, which deduplicates and hands messages to push relays or pull clients in Go, TypeScript and C#. ## Pages Each page is also Markdown at its URL plus `.md`. ### Tutorials - [Deliver your first outbox message](https://queuebox-docs.pages.dev/tutorials/first-outbox-message.md): Start QueueBox with Docker Compose, insert one outbox row, and watch QueueBox deliver it to an HTTP receiver. - [Receive a webhook](https://queuebox-docs.pages.dev/tutorials/receive-a-webhook.md): Post a webhook to a QueueBox inbox source, see QueueBox reject the duplicate, and consume the stored message with a pull client. ### How-to guides - [Authenticate requests](https://queuebox-docs.pages.dev/how-to/authenticate-requests.md): Protect an inbox source and the admin endpoint with a bearer token, an API key or an HMAC signature, and send credentials to a destination. - [Bridge a broker](https://queuebox-docs.pages.dev/how-to/bridge-a-broker.md): Read RabbitMQ, Kafka or NATS JetStream into the inbox, and publish outbox rows to them. - [Capture changes](https://queuebox-docs.pages.dev/how-to/capture-changes.md): Turn on PostgreSQL logical capture or SQL Server change data capture, so QueueBox delivers a new outbox row without waiting for the next poll. - [Consume the inbox](https://queuebox-docs.pages.dev/how-to/consume-the-inbox.md): Choose between the push relay and a pull worker, configure a pull source, and write an idempotent handler in Go, TypeScript or C#. - [Fan out over HTTP](https://queuebox-docs.pages.dev/how-to/fan-out-over-http.md): Deliver outbox rows to HTTP endpoints, route them on topic patterns, and send one event to several destinations. - [Replay dead letters](https://queuebox-docs.pages.dev/how-to/replay-dead-letters.md): Send dead or already delivered outbox messages again through the admin replay route, with filters by id, topic, destination and time. - [Transform payloads](https://queuebox-docs.pages.dev/how-to/transform-payloads.md): Reshape a payload with JSONata at ingestion, on a route or at a destination, choose what a failed transform does, and build RabbitMQ routing keys from the row. - [Upgrade QueueBox](https://queuebox-docs.pages.dev/how-to/upgrade.md): Move a deployment to a new QueueBox image, apply the new migrations, and handle the releases that need every old worker stopped first. - [Use QueueBox with coding agents](https://queuebox-docs.pages.dev/how-to/use-coding-agents.md): Give a coding agent the QueueBox docs as Markdown and install the QueueBox skill in Claude Code, Cursor or another agent. - [Use custom tables](https://queuebox-docs.pages.dev/how-to/use-custom-tables.md): Point QueueBox at tables and columns with your own names, turn off the bundled migrations, and apply the schema by hand. - [Use QueueBox from an EF Core app](https://queuebox-docs.pages.dev/how-to/use-entity-framework-core.md): Write outbox rows with SaveChanges and consume the inbox with a DbContext that shares the handler transaction. - [Write outbox rows](https://queuebox-docs.pages.dev/how-to/write-outbox-rows.md): Insert an outbox row in the transaction of your business write, and set its key, headers, schedule and retry ceiling. ### Concepts - [Change data capture](https://queuebox-docs.pages.dev/concepts/capture.md): Why QueueBox reads the database log, what capture changes and what it does not, and how one owner keeps its state. - [Claims and leases](https://queuebox-docs.pages.dev/concepts/claims-and-leases.md): How QueueBox replicas and pull workers take a message, keep it, lose it, and recover it after a crash. - [Delivery semantics](https://queuebox-docs.pages.dev/concepts/delivery-semantics.md): What QueueBox promises for an accepted message, and what your application must do to hold its side of the contract. - [How QueueBox works](https://queuebox-docs.pages.dev/concepts/how-queuebox-works.md): The modules, the path of a message through the outbox and the inbox, the state sets, and the relay. - [Ordering](https://queuebox-docs.pages.dev/concepts/ordering.md): The order QueueBox keeps within one inbox aggregate and one outbox key, and the order it does not keep. ### Reference - [Configuration](https://queuebox-docs.pages.dev/reference/configuration.md): Every section and key of queuebox.yml, with its type, its default and its meaning. - [Environment variables](https://queuebox-docs.pages.dev/reference/environment-variables.md): How a QUEUEBOX_ environment variable maps to a configuration key, which source wins, and the variable of every key. - [Headers](https://queuebox-docs.pages.dev/reference/headers.md): Every header that QueueBox sends on a delivery, and every header that it reads when a message arrives. - [HTTP API](https://queuebox-docs.pages.dev/reference/http-api.md): Every HTTP route of QueueBox, with its method, authentication, request, status codes and response bodies. - [Inbox table](https://queuebox-docs.pages.dev/reference/inbox-table.md): Every column of the inbox table on PostgreSQL and SQL Server, with its type, nullability, default and writer. - [Metrics](https://queuebox-docs.pages.dev/reference/metrics.md): Every metric that the Prometheus scrape of QueueBox exposes, with its type, tags and meaning. - [Outbox table](https://queuebox-docs.pages.dev/reference/outbox-table.md): Every column of the outbox table on PostgreSQL and SQL Server, with its type, nullability, default and writer. - [Pull clients](https://queuebox-docs.pages.dev/reference/pull-clients.md): The Go, TypeScript and C# libraries that claim and complete pull inbox rows, with their install command, API surface and settings. - [Transforms and templates](https://queuebox-docs.pages.dev/reference/transforms.md): The JSONata variables of each transform stage, the error strategies, and the placeholders of every QueueBox template. ### Operations - [Dead letters](https://queuebox-docs.pages.dev/operations/dead-letters.md): List, requeue and discard dead outbox and inbox messages with SQL. - [Deploy QueueBox](https://queuebox-docs.pages.dev/operations/deploy.md): Run the published image with Docker, Compose or Kubernetes, against a PostgreSQL or SQL Server database. - [Monitoring](https://queuebox-docs.pages.dev/operations/monitoring.md): What to scrape, what to alert on, and which metric answers which question about a running QueueBox. - [Runbook](https://queuebox-docs.pages.dev/operations/runbook.md): Diagnose and fix dead messages, a growing backlog, pool pressure, slow destinations, lost claims and a stalled inbox. - [Security](https://queuebox-docs.pages.dev/operations/security.md): Terminate TLS in front of QueueBox, keep secrets in files, restrict outbound calls, and lock down the admin routes. ## Documentation Sets - [Abridged documentation](https://queuebox-docs.pages.dev/llms-small.txt): a compact version of the documentation for QueueBox, with non-essential content removed - [Complete documentation](https://queuebox-docs.pages.dev/llms-full.txt): the full documentation for QueueBox ## Notes - The complete documentation includes all content from the official documentation - The content is automatically generated from the same source as the official documentation