Skip to main content
Self-hosting Hatchet means running your own instance of the Hatchet control plane — the central system that manages workflows, schedules tasks, and coordinates worker execution.

What you’re deploying

A self-hosted Hatchet installation consists of three components:
  • Hatchet server — the engine (gRPC API for task scheduling), the REST API, and the web dashboard, distributed as separate Docker images
  • PostgreSQL — stores all workflow state, task history, and metadata
  • RabbitMQ (optional) — message queue for high-throughput, real-time task dispatch; can be replaced with Postgres-backed messaging for simpler deployments
Your workers — the processes that actually execute your tasks — run separately and connect to the control plane over gRPC.

Hatchet Cloud

If you prefer not to operate infrastructure yourself, Hatchet Cloud is a fully managed option. We recommend trying it even if you plan to self-host, so you can explore a fully-deployed Hatchet instance before setting up your own.

Deployment options

Docker Compose

Run Hatchet with Docker Compose. Suitable for development and small production deployments.

Kubernetes

Deploy Hatchet with Helm on Kubernetes. Recommended for production workloads.

System requirements

ComponentMinimum versionNotes
PostgreSQL15Primary data store; required
RabbitMQ3Message queue; optional — can use Postgres instead

Quick local start with the Hatchet CLI

The fastest way to run Hatchet locally is with the Hatchet CLI, which starts a bundled single-container instance. Requires Docker.
curl -fsSL https://install.hatchet.run/install.sh | bash
hatchet server start
This is suitable for local development. For production, use Docker Compose or Kubernetes.

Connecting your SDK to a self-hosted instance

Once Hatchet is running and you have an API token, configure your SDK with two environment variables:
export HATCHET_CLIENT_TOKEN="<your-api-token>"
export HATCHET_CLIENT_HOST_PORT="localhost:7077"  # gRPC address of the Hatchet engine
The SDK reads both variables automatically when you call Hatchet() or HatchetClient.init() with no arguments.
HATCHET_CLIENT_HOST_PORT must point to the Hatchet engine gRPC port, not the REST API or dashboard port. The default engine gRPC port is 7077.

Build docs developers (and LLMs) love