mrkeyoor.com_
Tue 01 Sept 17:42 UTC
Automationevaluationupdated 26 Aug 2026

hatchet review

Hatchet is an orchestration system for background jobs, AI agents, and workflows that must recover after a process stops. Python, TypeScript, Go, and Ruby applications get queues, retries, schedules, rate limits, monitoring, and durable execution through a hosted service or a self-managed deployment.

+30stars / 7d
Verdict

Our Hatchet build succeeded in 224 seconds, but 3 of 43 Go package results failed, so teams should trial their exact SDK and failure cases before committing. Hatchet is a good fit when durable jobs, agent waits, throttling, and run visibility justify operating PostgreSQL and a control plane. A conventional queue remains the cleaner choice for disposable background work.

We ran it

Lab card: what happened when we ran hatchetScreenshot of hatchet (hatchet.run)
Install✓ · 67s438 packages
Build✓ · 224s
Tests✗ · 74s40 passed · 3 failed of 43 (go test)
Repo4594 files~708,942 lines of source · 121.4 MB · 31 CI workflows

Answers from our run

Does hatchet build from source?

Dependencies installed in 67 seconds (438 packages), and the build succeeded in 224 seconds. We cloned commit 89d130f into a clean Debian container with 3 CPUs and no project-specific setup.

Do hatchet's tests pass?

Not all of them: 40 of 43 passed and 3 failed when we ran the project's own test command (go test). Some failures need services or credentials a bare container does not have.

Who should not use hatchet?

Developers who cannot use Docker locally: the README's quickest local server path requires Docker on macOS, Linux, or WSL.

What are the alternatives to hatchet?

Temporal, Inngest, Celery. Our Hatchet build succeeded in 224 seconds, but 3 of 43 Go package results failed, so teams should trial their exact SDK and failure cases before committing.

Setup3/5Quick product start, heavier source tree and 3 failing packages
Docs5/5Clear SDK guides, concepts, cookbooks, and hosting paths
Community5/5Pushed August 26 with current releases and issue replies
Maturity4/5Wide workflow controls, with live SDK failure reports

Discussed on

  1. hnShow HN: Hatchet – Open-source distributed task queue578 points
  2. hnLaunch HN: Hatchet (YC W24) – Open-source task queue, now with a cloud version245 points
  3. hnShow HN: Hatchet v1 – A task orchestration platform built on Postgres240 points
  4. hnShow HN: Pickaxe – A TypeScript library for building AI agents70 points
  5. hnDurable execution, the hard way64 points

Who it’s for

Application teams whose background jobs need retries, schedules, throttling, and searchable run history.
Agent developers whose work must pause for events or people and resume after a restart.
Organizations that want one PostgreSQL-backed system for several worker languages.
Platform teams willing to operate a control plane in exchange for workflow visibility.

Who it’s NOT for

Developers who cannot use Docker locally: the README's quickest local server path requires Docker on macOS, Linux, or WSL.
Queue users chasing the highest possible throughput without durable history: Hatchet says its persistence costs resources and broker-based systems can run faster.
Data teams choosing mainly by ready-made connectors: Hatchet's own comparison directs connector-heavy work toward Airflow, Prefect, or Dagster.
Python operators unwilling to test abrupt worker death: issue #4731 reports an action listener surviving its parent worker and continuing to accept work.
Teams that require a clean full-repository test run before adoption: our sandbox run ended with 3 failed Go packages out of 43.

Setup reality

Our sandbox installed 438 packages in 67 seconds and built the repository in 224 seconds. The full Go test command then failed after 74 seconds: 40 packages passed and 3 failed out of 43. The supplied log tail only shows many example packages with no test files, successful internal packages, and the final FAIL, so it does not identify the failing assertions or their cause.

The README's local path installs the Hatchet CLI and runs hatchet server start, which requires Docker on macOS, Linux, or WSL. Hatchet Cloud removes that service setup. A self-managed deployment still needs PostgreSQL, credentials, retention choices, worker configuration, and monitoring.

Our test method used commit 89d130f in an unprivileged Debian container with 3 CPUs, 8 GB of RAM, no secrets, and Go 1.24. The repository had a Compose file but no Dockerfile, so reproducing the full development environment takes more interpretation than the three-command product trial.

Hatchet combines queues and durable workflows in one service

Hatchet covers work that often starts with a queue and ends with several home-built systems. It runs one-off tasks, cron jobs, scheduled work, directed graphs, and durable tasks that can sleep or wait for events. Workers stay in Python, TypeScript, Go, or Ruby. The server records execution state in PostgreSQL, while its web interface exposes runs, logs, alerts, and metrics. That makes it useful when background processing is part of the product rather than an occasional maintenance script.

A 4,594-file repository with about 708,942 source lines shows the size of that promise. Hatchet includes priority, dynamic rate limits, concurrency policies, worker slots, labels, weighted affinity, OpenTelemetry, and Prometheus support. Multi-tenant controls let one installation serve several teams. The latest v0.105.2 release added workflow pausing and per-member payload visibility, alongside fixes for task eviction, retry backoff, and missing rows. This is a full control plane, not a small queue library.

Durable history costs more than a broker queue

PostgreSQL keeps task state and execution history for a configured retention period. That record helps operators inspect failures, resume long work, and understand what an agent did before it waited. Hatchet can also enforce per-customer concurrency or rate limits through dynamic keys. These controls matter when a downstream API has a quota or one tenant could consume every available worker. Teams already maintaining separate queue, scheduler, retry, and admin systems may remove a fair amount of glue.

Hatchet's README says durability adds overhead and contrasts it with Redis or RabbitMQ systems that can reach higher throughput. Its own cited load test reaches 10,000 tasks per second, but that is the project's figure, not ours and not a promise for another deployment. If jobs are short, independent, and safe to lose or retry blindly, retained workflow history may be needless expense. Celery or BullMQ will usually ask less of both the application and its operators.

What happened when we ran it

Our sandbox installed 438 packages in 67 seconds, then completed the build in 224 seconds. The checkout at commit 89d130f occupied 121.4 MB and contained about 708,942 source lines. Those figures describe a fresh unprivileged container with 3 CPUs, 8 GB of RAM, no secrets, and the golang:1.24-bookworm image. They are source-tree results, not a Hatchet Cloud trial or a production throughput test.

The Go test command failed after 74 seconds. Its summary counted 40 passing package results and 3 failing results out of 43. The final log lines list many SDK examples with no test files, show sdks/go/internal and sdks/go/internal/eviction passing, and end with FAIL. The tail does not contain the names or assertions for the 3 failures, so we cannot responsibly assign a cause. Buyers should treat the red run as an unresolved compatibility finding.

Local setup requires Docker; self-hosting requires PostgreSQL

The README's shortest local route has 3 actions: install the CLI, check its version, and start the server. Docker is required on macOS, Linux, or WSL. Hatchet recommends trying its cloud service even if self-hosting is the eventual goal, which is sensible for evaluating the dashboard and workflow model before operating the stack. There is a Compose file in the repository, although our scan found no Dockerfile at the root.

A serious self-managed installation must handle PostgreSQL backups, retention, upgrades, service credentials, and worker deployment. Teams also need application tests for cancellation, duplicate delivery, timeouts, downstream throttling, and abrupt shutdown. Issue #4731 gives one pointed example: a Python action listener reportedly remained alive after its parent worker died and continued accepting jobs. The issue received activity on August 25, 2026, so abrupt process death belongs in an adoption test rather than a future checklist.

Application workflows fit better than connector-led data pipelines

Hatchet's SDK range is useful in a mixed service estate. A TypeScript API can trigger Python model work while Go workers handle another path, all visible through one control plane. Durable sleep and event waits suit approval steps, delayed agent actions, and outside callbacks because a worker does not have to stay occupied. Version v0.105.2 also introduced an early embedded mode beta for TypeScript and Python, aimed at local development, end-to-end tests, and CI.

Data teams should read Hatchet's comparison section carefully. The project supports DAGs, but says Airflow, Prefect, and Dagster focus on integrations with common data stores. Hatchet expects adopters to write their own integrations and positions itself for application workloads. The difference is the work surrounding the graph. A connector catalog favors a data orchestrator; request-driven jobs, tenant limits, durable waits, and several worker languages favor Hatchet.

Active releases reduce maintenance risk, not adoption work

GitHub recorded the latest push on August 26, 2026, one day after release v0.105.2. The repository had 7,791 stars and 139 open issues and pull requests when fetched. Recent reports and patches covered Python worker lifecycle, retry defaults, durable task behavior, and dependency updates. That combination supports a high community score, while the open count must not be misread as 139 confirmed bugs.

Hatchet is worth a pilot when a team is about to build its second generation of background-job infrastructure. Start with one workflow that includes a retry, a wait, a worker crash, and a rate limit. Pin the server and SDK versions, then repeat the failure tests during upgrades. If that exercise replaces custom recovery code and an admin dashboard, the control plane earns its keep. If it only sends emails and webhooks, keep the simpler queue.

Alternatives

ProjectWhat it isPick it when
Temporal gh↗A mature durable execution platform with broad SDK support.pick this instead when replay-based workflow durability is the main requirement and your team accepts a specialized platform.
InngestAn event-driven execution platform with local tooling and a hosted path.pick this instead when event-driven functions and managed operation matter more than general queue controls.
CeleryThe established Python queue for broker-backed jobs and worker pools.pick this instead when the application is Python-only and durable workflow history is unnecessary.

What people are saying

  1. [github-trending] hatchet-dev/hatchet

Sources

  1. Hatchet repository and README
  2. Hatchet v0.105.2 release notes
  3. Python action listener can outlive a dead worker
  4. Hatchet documentation

More automation reviews

rclone · lego · OpenCLI · web-access · Karabiner-Elements · WiiUDownloader · the whole board →