Hatchet
An orchestration engine for background tasks, AI agents, and durable workflows.
Hatchet は、バックグラウンドタスク・AI エージェント・長時間ワークフローを大規模にオーケストレーションするプラットフォーム。hatchet-dev/hatchet は Go で書かれたサーバー本体と、Python / TypeScript / Go / Ruby の SDK、Web UI を含むモノレポ。キューイング・自動リトライ・耐久性・リアルタイム監視・アラート・ログを一体で提供する。
利用形態は Hatchet Cloud(マネージド)と セルフホスト の二通り。正確性・信頼性・水平スケール・可観測性が重要な非同期処理に向く。Temporal や Celery の代替として、Postgres をランタイムと可観測性の両方の耐久レイヤに据える設計が特徴で、セルフホストの運用負荷を下げる。
開発環境では 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 向けエンドポイント |
| Engine | cmd/hatchet-engine | タスクキュー、スケジューリング、ディスパッチ、再試行 |
| CLI | cmd/hatchet-cli | ローカル開発・プロジェクト雛形・運用補助 |
| Lite | cmd/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 が標準構成。
| 機能 | 概要 |
|---|---|
| Background tasks | 単発関数として定義。fire-and-forget と fire-and-wait、サブスクリプション対応 |
| Retries | 柔軟なリトライポリシー。指数バックオフオプション |
| Cron / Scheduled | 定期実行と将来時刻へのスケジュール |
| Task routing | Worker ラベルによる厳密ルーティング、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 slots | Worker が過負荷にならないようスロットで受付量を制限 |
- リアルタイム Web UI(アラート・監視・ログ)
- OpenTelemetry(組み込みコレクタまたは外部送信先)
- Prometheus メトリクス
- マルチテナント、ユーザー・ロール管理がデフォルトで有効
まず 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 を参照)
| 言語 | パッケージ / パス | 補足 |
|---|---|---|
| TypeScript | @hatchet-dev/typescript-sdk / sdks/typescript | v1 client・worker・durable 例が src/v1/examples/ に豊富 |
| Python | hatchet-sdk / sdks/python | workflow・task・OpenTelemetry 連携 |
| Go | sdks/go | サーバーと同リポジトリの Go モジュール |
| Ruby | sdks/ruby | REST クライアント生成を含む |
リポジトリ構成(抜粋)
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 パネルを提供する。
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 プラットフォームが適する。
- GitHub: hatchet-dev/hatchet — 本体リポジトリ(MIT)
- 公式ドキュメント — 機能リファレンスとセルフホスト手順
- Cookbooks — エンドツーエンドのワークフロー例
- Hatchet Cloud — マネージド提供(オートスケール・マルチリージョン・SSO 等)
- Discord — コミュニティとコントリビューション相談