PHPackages                             laravel-workflow/laravel-workflow - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Queues &amp; Workers](/categories/queues)
4. /
5. laravel-workflow/laravel-workflow

Abandoned → [durable-workflow/workflow](/?search=durable-workflow%2Fworkflow)Library[Queues &amp; Workers](/categories/queues)

laravel-workflow/laravel-workflow
=================================

Embedded durable workflow runtime and orchestration engine for Laravel applications.

1.0.79(4w ago)1.2k652.0k↓41.9%714MITPHPPHP ^8.1CI passing

Since Mar 4Pushed 2w ago18 watchersCompare

[ Source](https://github.com/durable-workflow/workflow)[ Packagist](https://packagist.org/packages/laravel-workflow/laravel-workflow)[ RSS](/packages/laravel-workflow-laravel-workflow/feed)WikiDiscussions v2 Synced 2w ago

READMEChangelog (10)Dependencies (20)Versions (450)Used By (4)

[![GitHub Workflow Status](https://camo.githubusercontent.com/202cfcbe5904ec45a031a300e819108e7d1da401d28f0ceb44a5d475a215353f/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f64757261626c652d776f726b666c6f772f776f726b666c6f772f7068702e796d6c)](https://github.com/durable-workflow/workflow/actions/workflows/php.yml) [![Codecov](https://camo.githubusercontent.com/8de00c192bf0038e0a9e8278980a167469f4bc487ecc81bd3a80b018bde71392/68747470733a2f2f696d672e736869656c64732e696f2f636f6465636f762f632f6769746875622f64757261626c652d776f726b666c6f772f776f726b666c6f77)](https://codecov.io/gh/durable-workflow/workflow) [![Packagist Downloads (custom server)](https://camo.githubusercontent.com/290a43f8bd806262a3826f6ffa1249603f401054df1962d7369748d5f9225726/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f64757261626c652d776f726b666c6f772f776f726b666c6f77)](https://packagist.org/packages/durable-workflow/workflow/stats) [![Docs](https://camo.githubusercontent.com/2a2b4175caf0b5021cad035c03e2f42f424c87649fa07f952e245bedd739ad95/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f646f63732d726561642532306e6f772d627269676874677265656e)](https://durable-workflow.com/docs/installation) [![Packagist License](https://camo.githubusercontent.com/f48f1f19dc8db4560342a1cbaf40a712c6c4b7750edfaa80eda8bd0239dfc8fe/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f64757261626c652d776f726b666c6f772f776f726b666c6f773f636f6c6f723d6272696768742d677265656e)](https://github.com/durable-workflow/workflow/blob/master/LICENSE)

Durable Workflow (formerly Laravel Workflow) is a package for the Laravel web framework that provides tools for defining and managing workflows and activities. A workflow is a series of interconnected activities that are executed in a specific order to achieve a desired result. Activities are individual tasks or pieces of logic that are executed as part of a workflow.

Durable Workflow can be used to automate and manage complex processes, such as agentic workflows (AI-driven), financial transactions, data analysis, data pipelines, microservices, job tracking, user signup flows, sagas and other business processes. By using Durable Workflow, developers can break down large, complex processes into smaller, modular units that can be easily maintained and updated.

Some key features and benefits of Durable Workflow include:

- Support for defining workflows and activities using simple, declarative PHP classes.
- Tools for starting, monitoring, and managing workflows, including support for queuing and parallel execution.
- Built-in support for handling errors and retries, ensuring that workflows are executed reliably and consistently.
- Integration with Laravel's queue and event systems, allowing workflows to be executed asynchronously on worker servers.
- Extensive documentation and a growing community of developers who use and contribute to Durable Workflow.

Documentation
-------------

[](#documentation)

Documentation for Durable Workflow can be found on the [website](https://durable-workflow.com/docs/installation).

Community
---------

[](#community)

You can find us in the [GitHub discussions](https://github.com/durable-workflow/workflow/discussions) and also on our [Discord channel](https://discord.gg/xu5aDDpqVy).

Sample App
----------

[](#sample-app)

There's also a [sample application](https://github.com/durable-workflow/sample-app) that you can run directly from GitHub in your browser.

Usage
-----

[](#usage)

Install the embedded Laravel runtime:

```
composer require durable-workflow/workflow:2.0.0-rc.13@RC
```

This package owns Laravel service-provider integration, migrations, Eloquent models, queue jobs, replay persistence, and in-process workflow and activity authoring. It does not include a client or remote-worker runtime for the standalone server.

**1. Create a workflow**

```
use function Workflow\V2\activity;
use Workflow\V2\Workflow;

class MyWorkflow extends Workflow
{
    public function handle(string $name): string
    {
        $result = activity(MyActivity::class, $name);

        return $result;
    }
}
```

**2. Create an activity**

```
use Workflow\V2\Activity;

class MyActivity extends Activity
{
    public function handle(string $name): string
    {
        return "Hello, {$name}!";
    }
}
```

**3. Run the workflow**

```
use Workflow\V2\WorkflowStub;

$workflow = WorkflowStub::make(MyWorkflow::class);
$workflow->start('world');
```

```
$workflow->output();
=> 'Hello, world!'
```

Using a dedicated storage connection
------------------------------------

[](#using-a-dedicated-storage-connection)

By default all workflow persistence (every Eloquent model and every migration shipped by this package) lives on your application's **default** database connection. To isolate workflow state on its own database — for separate backup/retention/scaling, a different driver, or tenant isolation — point the package at a dedicated connection:

```
// config/workflows.php
'storage' => [
    // null => the application's default connection (the default, unchanged behavior).
    'connection' => Env::dw('DW_STORAGE_CONNECTION', 'WORKFLOW_STORAGE_CONNECTION', null),
],
```

```
# .env — must match a key under config('database.connections')
DW_STORAGE_CONNECTION=durable_workflow
```

When set, both the models and the migrations are routed to that connection, so `php artisan migrate` creates the workflow tables there and all reads/writes target it. Leaving it `null` preserves today's behavior exactly.

The schema/database is governed by the connection's own configuration — use `search_path` for PostgreSQL or `database` for MySQL on that connection. There is no separate schema option.

Embedded and Polyglot Usage
---------------------------

[](#embedded-and-polyglot-usage)

This package provides the application-embedded version of Durable Workflow for Laravel.

Use it when your workflows and activities run within a Laravel application and you do not need workers written in other languages.

For standalone or polyglot orchestration, run the [standalone Durable Workflow server](https://github.com/durable-workflow/server) and install the [PHP SDK](https://github.com/durable-workflow/sdk-php) in framework-neutral PHP applications and remote workers:

```
composer require durable-workflow/sdk:2.0.0-rc.5@RC
```

The standalone server allows PHP, Python, Rust, and other supported SDKs to participate in the same workflow system.

Deployment modePHP packageRuntime ownerEmbedded Laravel`durable-workflow/workflow`The Laravel application owns durable state and queue execution.Standalone server host`durable-workflow/workflow` inside `durable-workflow/server`The server hosts Workflow's engine contracts and persistence.Standalone PHP client or remote worker`durable-workflow/sdk`The SDK owns authentication, transport, protocol types, client operations, and worker polling.Sponsors
--------

[](#sponsors)

The Durable Workflow package is sustained by the community via sponsors and volunteers.

- [Andriy Karpishyn](https://github.com/discovery-ukraine)
- [Freispace Resource Scheduling](https://freispace.com)
- [Hugo Cox](https://github.com/hnccox)
- [Translate a Book](https://translateabook.com)

Monitoring
----------

[](#monitoring)

[Waterline](https://github.com/durable-workflow/waterline) is a separate UI that works nicely alongside Horizon. Think of Waterline as being to workflows what Horizon is to queues. Waterline is a technical runtime UI for operators: use it for fleet health, queues, waits, retries, failures, repair, and history diagnostics. Business dashboards should read app-owned milestone projections keyed by `workflow_id` and `run_id`, not Waterline data or workflow runtime tables.

### Dashboard View

[](#dashboard-view)

[![Waterline dashboard](https://raw.githubusercontent.com/durable-workflow/waterline/refs/heads/v2/docs/screenshots/dashboard.png)](https://raw.githubusercontent.com/durable-workflow/waterline/refs/heads/v2/docs/screenshots/dashboard.png)

### Workflow View

[](#workflow-view)

[![Waterline workflow detail](https://raw.githubusercontent.com/durable-workflow/waterline/refs/heads/v2/docs/screenshots/workflow-detail.png)](https://raw.githubusercontent.com/durable-workflow/waterline/refs/heads/v2/docs/screenshots/workflow-detail.png)

Refer to  for installation and configuration instructions.

###  Health Score

71

—

ExcellentBetter than 100% of packages

Maintenance95

Actively maintained with recent releases

Popularity63

Solid adoption and visibility

Community35

Small or concentrated contributor base

Maturity78

Established project with proven stability

 Bus Factor1

Top contributor holds 72.2% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~4 days

Total

434

Last Release

18d ago

Major Versions

1.0.75 → 2.0.0-alpha.12026-04-15

1.0.76 → 2.0.0-alpha.132026-04-24

1.0.77 → 2.0.0-alpha.2382026-07-01

1.0.78 → 2.0.0-alpha.2912026-07-17

1.0.79 → 2.0.0-alpha.2922026-07-20

PHP version history (2 changes)0.0.10PHP ^8.0.2

1.0.33PHP ^8.1

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/1130888?v=4)[Richard McDaniel](/maintainers/rmcdaniel)[@rmcdaniel](https://github.com/rmcdaniel)

---

Top Contributors

[![durable-workflow-ops](https://avatars.githubusercontent.com/u/267215253?v=4)](https://github.com/durable-workflow-ops "durable-workflow-ops (1114 commits)")[![rmcdaniel](https://avatars.githubusercontent.com/u/1130888?v=4)](https://github.com/rmcdaniel "rmcdaniel (407 commits)")[![discovery-ukraine](https://avatars.githubusercontent.com/u/9981799?v=4)](https://github.com/discovery-ukraine "discovery-ukraine (2 commits)")[![Naugrimm](https://avatars.githubusercontent.com/u/5753604?v=4)](https://github.com/Naugrimm "Naugrimm (2 commits)")[![davidruigrok](https://avatars.githubusercontent.com/u/1713000?v=4)](https://github.com/davidruigrok "davidruigrok (2 commits)")[![Copilot](https://avatars.githubusercontent.com/in/1143301?v=4)](https://github.com/Copilot "Copilot (2 commits)")[![asanovr](https://avatars.githubusercontent.com/u/6459461?v=4)](https://github.com/asanovr "asanovr (2 commits)")[![JustinElst](https://avatars.githubusercontent.com/u/249633?v=4)](https://github.com/JustinElst "JustinElst (1 commits)")[![maartenpaauw](https://avatars.githubusercontent.com/u/4550875?v=4)](https://github.com/maartenpaauw "maartenpaauw (1 commits)")[![martio](https://avatars.githubusercontent.com/u/133636?v=4)](https://github.com/martio "martio (1 commits)")[![andrewbroberg](https://avatars.githubusercontent.com/u/7610285?v=4)](https://github.com/andrewbroberg "andrewbroberg (1 commits)")[![tonypartridge](https://avatars.githubusercontent.com/u/1400982?v=4)](https://github.com/tonypartridge "tonypartridge (1 commits)")[![BenQoder](https://avatars.githubusercontent.com/u/24754078?v=4)](https://github.com/BenQoder "BenQoder (1 commits)")[![Braindea7](https://avatars.githubusercontent.com/u/31728352?v=4)](https://github.com/Braindea7 "Braindea7 (1 commits)")[![gachowy](https://avatars.githubusercontent.com/u/332179?v=4)](https://github.com/gachowy "gachowy (1 commits)")[![GALCF](https://avatars.githubusercontent.com/u/14803394?v=4)](https://github.com/GALCF "GALCF (1 commits)")[![hrabbit](https://avatars.githubusercontent.com/u/11155?v=4)](https://github.com/hrabbit "hrabbit (1 commits)")[![jbardnz](https://avatars.githubusercontent.com/u/1628446?v=4)](https://github.com/jbardnz "jbardnz (1 commits)")

---

Tags

background-jobsbpmbpmndurable-functionsjobslaravelmicroservicesorchestrationphpqueueingstatusworkflowworkflow-engineworkflows

###  Code Quality

Static AnalysisPHPStan

Code StyleECS

Type Coverage Yes

### Embed Badge

![Health badge](/badges/laravel-workflow-laravel-workflow/health.svg)

```
[![Health](https://phpackages.com/badges/laravel-workflow-laravel-workflow/health.svg)](https://phpackages.com/packages/laravel-workflow-laravel-workflow)
```

###  Alternatives

[durable-workflow/workflow

Embedded durable workflow runtime and orchestration engine for Laravel applications.

1.2k143.8k6](/packages/durable-workflow-workflow)[statamic-rad-pack/runway

Eloquently manage your database models in Statamic.

137236.2k8](/packages/statamic-rad-pack-runway)[duncanmcclean/statamic-cargo

Comprehensive e-commerce addon for Statamic. Build bespoke e-commerce sites without the complexity.

3622.8k](/packages/duncanmcclean-statamic-cargo)[api-platform/laravel

API Platform support for Laravel

58190.1k21](/packages/api-platform-laravel)[ecotone/laravel

Ecotone for Laravel — CQRS, Event Sourcing, Sagas, Durable Workflows, and Outbox on top of Laravel Queue, via PHP attributes.

21327.3k4](/packages/ecotone-laravel)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
