durable-workflow / workflow
Embedded durable workflow runtime and orchestration engine for Laravel applications.
Requires
- php: ^8.1
- apache/avro: ^1.12
- laravel/framework: ^9.52.17|^10.48.29|^11.44.1|^12.61.1|^13.12.0
- react/promise: ^2.9|^3.0
- symfony/yaml: ^6.0|^7.0|^8.0
Requires (Dev)
- doctrine/dbal: ^3.7
- orchestra/testbench: ^8.0|^11.0
- phpstan/phpstan: ^2.0
- symplify/easy-coding-standard: ^11.0
Suggests
- durable-workflow/sdk: Framework-neutral client and remote-worker SDK for the standalone Durable Workflow server.
Provides
None
Conflicts
None
Replaces
This package is auto-updated.
Last update: 2026-09-08 08:53:47 UTC
README
Durable Workflow is the embedded Laravel runtime for durable execution. Write long-running workflows as ordinary PHP, keep completed work recorded through worker restarts and application deploys, and use Laravel's queues, cache, and database as the runtime.
This package also provides the orchestration engine hosted by Durable Workflow Server. Use the PHP SDK with Server or Durable Workflow Cloud when workers need to run outside the Laravel application or across PHP, Python, and Rust.
Install
composer require durable-workflow/workflow:^2.0 php artisan migrate
Run a Laravel queue worker or Horizon to execute workflows and activities:
php artisan queue:work
Your First Workflow
<?php use Workflow\V2\Activity; use Workflow\V2\Workflow; use Workflow\V2\WorkflowStub; use function Workflow\V2\activity; final class GreetActivity extends Activity { public function handle(string $name): string { return "Hello, {$name}!"; } } final class GreetWorkflow extends Workflow { public function handle(string $name): string { return activity(GreetActivity::class, $name); } } $workflow = WorkflowStub::make(GreetWorkflow::class); $workflow->start('world'); echo $workflow->output(); // Hello, world!
Workflow code can coordinate activities, timers, signals, queries, updates, child workflows, sagas, cancellation, retries, parallel work, side effects, continue-as-new, search attributes, memo, and message streams. The runtime persists execution history so replay can resume after process or host failure without repeating completed activities.
Choose a Deployment
| Deployment | Use it when | Runtime owner |
|---|---|---|
| Embedded Laravel | Workflows and activities live inside one Laravel application. | Your application owns persistence and queue execution. |
| Self-hosted Server | Workers run independently or in multiple languages. | Your team operates Server, MySQL, Redis, and optional Waterline. |
| Durable Workflow Cloud | You want a managed runtime for PHP, Python, and Rust workers. | Durable Workflow operates the runtime and persistence. |
Embedded runs remain owned by the Laravel application. Moving new work to Server or Cloud does not reinterpret existing embedded history.
Learn More
- Embedded installation
- Embedded feature guides
- Configuration reference
- Deployment modes
- Monitoring with Waterline
- Runnable Sample App
Questions and design discussions are welcome in GitHub Discussions and Discord.
Sponsors
Durable Workflow is sustained by contributors and sponsors: