Hatchet

An orchestration engine for background tasks, AI agents, and durable workflows.

1 — 概要

Hatchet は、バックグラウンドタスク・AI エージェント・長時間ワークフローを大規模にオーケストレーションするプラットフォーム。hatchet-dev/hatchet は Go で書かれたサーバー本体と、Python / TypeScript / Go / Ruby の SDK、Web UI を含むモノレポ。キューイング・自動リトライ・耐久性・リアルタイム監視・アラート・ログを一体で提供する。

4公式 SDK 言語
PG永続化レイヤ
gRPCWorker 通信
MITライセンス

利用形態は Hatchet Cloud(マネージド)と セルフホスト の二通り。正確性・信頼性・水平スケール・可観測性が重要な非同期処理に向く。Temporal や Celery の代替として、Postgres をランタイムと可観測性の両方の耐久レイヤに据える設計が特徴で、セルフホストの運用負荷を下げる。

向いている用途: バックグラウンドジョブ、エージェントのツールチェーン、障害から復旧できる durable workflow、イベント駆動の分散処理。データエンジニアリング向けの大量コネクタ統合より、アプリケーション内の高スループット非同期処理を中心に据える。
2 — アーキテクチャ

開発環境では docker-compose.yml が Postgres と RabbitMQ を起動し、hatchet-api が REST/gRPC を、hatchet-engine がスケジューリングとディスパッチを担う。Worker は各言語 SDK 経由で Engine と gRPC 接続し、タスクを実行する。実行履歴・メタデータ・可観測性データは Postgres に永続化される。

flowchart TD
  UI["Web UI\n(frontend/app)"]
  API["hatchet-api\nREST / gRPC"]
  ENG["hatchet-engine\nschedule & dispatch"]
  PG["PostgreSQL\n(durability + observability)"]
  RMQ["RabbitMQ\n(message queue)"]
  WK["Workers\n(Python / TS / Go / Ruby)"]

  UI --> API
  API --> PG
  API --> ENG
  ENG --> RMQ
  ENG --> PG
  WK -->|"gRPC"| ENG
  WK -->|"poll / subscribe"| API
      
コンポーネントパス / バイナリ役割
API サーバーcmd/hatchet-api管理 API・認証・テナント・Worker 向けエンドポイント
Enginecmd/hatchet-engineタスクキュー、スケジューリング、ディスパッチ、再試行
CLIcmd/hatchet-cliローカル開発・プロジェクト雛形・運用補助
Litecmd/hatchet-liteオールインワンの軽量セルフホスト用サーバー
コアライブラリpkg/ internal/client、worker、repository、scheduling、msgqueue 等
契約api-contracts/OpenAPI・protobuf 定義(REST / gRPC 生成元)

インフラ依存(開発時)

Taskfile.yaml の setup は DB マイグレーション・暗号鍵生成・ドキュメント生成・シードまでを一括実行する。メッセージキューは RabbitMQ(SERVER_MSGQUEUE_KIND=rabbitmq)、DB は Postgres + PgBouncer が標準構成。

3 — 主要機能
機能概要
Background tasks単発関数として定義。fire-and-forget と fire-and-wait、サブスクリプション対応
Retries柔軟なリトライポリシー。指数バックオフオプション
Cron / Scheduled定期実行と将来時刻へのスケジュール
Task routingWorker ラベルによる厳密ルーティング、Worker affinity による重み付き割当
Eventsイベントトリガと durable event waits によるイベント駆動構成
Webhooks上流データソースから Hatchet タスクを起動
  • Durable tasks: 障害後も復旧できる長時間ワークフロー(Temporal / DBOS の代替候補)
  • DAG: データパイプライン向けの有向非巡回グラフ。durable tasks との選定ガイドは公式 Cookbook を参照
  • Pause / Resume: durable sleep、event wait、または両方の組み合わせ
機能目的
Priorityクリティカルタスクをバックフィルより先に実行
Rate limits外部 API 制限やユーザー単位の動的レート制限
Concurrency動的キーに基づく同時実行上限(フェアスケジューリング)
Worker slotsWorker が過負荷にならないようスロットで受付量を制限
  • リアルタイム Web UI(アラート・監視・ログ)
  • OpenTelemetry(組み込みコレクタまたは外部送信先)
  • Prometheus メトリクス
  • マルチテナント、ユーザー・ロール管理がデフォルトで有効
4 — はじめ方

まず Hatchet Cloud で試すのが最速。セルフホストを見据える場合でも、デプロイ済み環境の UI と挙動を確認できる。

ローカル(CLI + Docker)

Mac / Linux / WSL ではインストールスクリプトと CLI でサーバーを起動できる。Docker が必須。

curl -fsSL https://install.hatchet.run/install.sh | bash
hatchet --version
hatchet server start

ソースから開発

リポジトリルートでインフラ起動後、task setup が依存関係・DB・マイグレーション・シードまで準備する(CONTRIBUTING.md 参照)。

docker compose -f docker-compose.yml up -d
task setup
# API: http://localhost:8080 など(.env の SERVER_URL を参照)
負荷の目安: 公式ドキュメントでは最大約 10k tasks/秒の負荷試験実績がある一方、Redis/RabbitMQ ベースの軽量キューよりリソース消費は大きい。耐久性と履歴保持のトレードオフとして設計されている。
5 — SDK とリポジトリ
言語パッケージ / パス補足
TypeScript@hatchet-dev/typescript-sdk / sdks/typescriptv1 client・worker・durable 例が src/v1/examples/ に豊富
Pythonhatchet-sdk / sdks/pythonworkflow・task・OpenTelemetry 連携
Gosdks/goサーバーと同リポジトリの Go モジュール
Rubysdks/rubyREST クライアント生成を含む

リポジトリ構成(抜粋)

hatchet-dev/hatchet/
├── cmd/                 … hatchet-api, hatchet-engine, hatchet-cli, hatchet-lite 等
├── pkg/                 … client, worker, scheduling, repository
├── internal/            … services, msgqueue, integrations
├── sdks/                … go, python, typescript, ruby
├── frontend/app/        … Web ダッシュボード(React)
├── frontend/docs/       … 公開ドキュメントサイト用
├── api-contracts/       … OpenAPI / protobuf
├── examples/            … 言語別クイックスタート
└── sql/schema/          … DB スキーマ(goose マイグレーション)

Worker はアプリプロセス内で SDK の worker を起動し、宣言した task / workflow を Engine に登録して実行する。VS Code 拡張(frontend/vscode-extension)はワークフロー解析や DAG パネルを提供する。

6 — 他ツールとの比較

vs Temporal / DBOS

durable tasks がワークフロー代替として使える。加えて OTel 統合、レート制限、ルーティング、Worker スロット、マルチテナントが同梱。キュー・DAG・durable execution を一つのプラットフォームに集約できる。

vs Celery / BullMQ

従来キューはブローカー上に実行中タスクだけを保持し、完了後の履歴は薄い。Hatchet は耐久キューとして実行履歴を Postgres に保持し、監視・デバッグ・durable 機能を支える。スループットは Redis 系より低いが、状態の永続性が高い。

vs Airflow / Prefect / Dagster

データエンジニアリング向けコネクタとバッチ指向の DAG オーケストレーションが強みのツール群。Hatchet はアプリケーション内の高スループット非同期処理(>100/s を想定)と、自前関数・自前統合での DAG 構築に向く。既製コネクタをそのまま使いたい場合は従来 DAG プラットフォームが適する。