finds.dev← search

// the find

durable-workflow/workflow

★ 1,212 · PHP · MIT · updated Jun 2026

Core package for defining and running durable workflows and activities. Supports long-running persistent workflows, retries, queues, parallel execution, workflow monitoring, dedicated storage connections, and orchestration for microservices, data pipelines, sagas, agentic workflows, and other complex business processes.

Durable Workflow is a Laravel package that brings Temporal-style durable execution to PHP — workflows survive server restarts by replaying their event log, and activities are retried automatically on failure. It's for PHP teams building multi-step processes (approval flows, data pipelines, sagas, agentic AI loops) who want durability guarantees without running a separate Temporal or Conductor cluster.

The event-sourcing replay model is the real thing, not a cron-based fake — workflows actually reconstruct their state by replaying stored logs, which means a crashed worker picks up mid-workflow correctly. Saga support with compensating transactions is built in as a first-class trait, not bolted on. The test suite is genuinely broad: race conditions, nested signals, timer replay, version migrations, and saga child workflows all have feature tests. The Waterline monitoring UI fills the same gap Horizon fills for queues, so you're not flying blind on workflow state.

It's glued to Laravel's queue system, which means your workflow throughput ceiling is Laravel queue throughput — fine for most apps, but you'll feel it at scale and you can't easily swap the execution backend. Versioning support exists but the mental model for safely evolving long-running workflows is under-documented; the `VersionWorkflowTest` covers mechanics but doesn't explain the gotchas of replay determinism when you change activity signatures. The storage layer is a single Eloquent model backed by whatever DB Laravel uses — there's no built-in sharding or archiving strategy, so a high-volume deployment will accumulate a large `workflow_logs` table with no obvious path to managing it. Child workflow signaling across process boundaries adds real complexity that the docs treat lightly.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →