marmol89 / cauce
Driver-agnostic queue monitoring and advanced retry strategies for Laravel.
Requires
- php: ^8.2
- illuminate/console: ^11.0|^12.0|^13.0
- illuminate/contracts: ^11.0|^12.0|^13.0
- illuminate/database: ^11.0|^12.0|^13.0
- illuminate/queue: ^11.0|^12.0|^13.0
- illuminate/support: ^11.0|^12.0|^13.0
- symfony/uid: ^6.0|^7.0
Requires (Dev)
- livewire/livewire: ^3.0
- mockery/mockery: ^1.6
- orchestra/testbench: ^9.0|^10.0|^11.0
- phpunit/phpunit: ^11.0|^12.0
This package is auto-updated.
Last update: 2026-06-01 20:37:56 UTC
README
Driver-agnostic queue monitoring and advanced retry strategies for Laravel.
Cauce gives you a clean dashboard and battle-tested retry strategies for the Laravel queue system, without the Redis-only restriction of Horizon. It works with database, Redis, SQS, Beanstalkd, RabbitMQ, or any other driver Laravel supports.
Features
- ๐ Live dashboard built with Livewire 3 + Alpine + Tailwind
- ๐ Multi-driver โ works with all Laravel queue drivers (unlike Horizon)
- ๐ 5 retry strategies โ Linear, Exponential, Decorrelated Jitter, Fibonacci, and Circuit Breaker
- ๐ Real-time metrics โ throughput, runtime, success rate
- ๐ Failed job browser with one-click retry
- ๐งน Automatic pruning of old records
- ๐๏ธ Configurable per-connection/queue tracking
Requirements
- PHP 8.2+
- Laravel 11.x, 12.x, or 13.x
Installation
composer require marmol89/cauce
Publish the assets and run the migrations:
php artisan cauce:install php artisan migrate
Optionally, publish the config:
php artisan vendor:publish --tag=cauce-config
Configuration
The dashboard is available at /cauce by default. You can change the path, restrict it to specific environments, and configure retention in config/cauce.php.
Quick start
Tracking jobs
Cauce automatically tracks every job that flows through Laravel's queue system. No extra configuration needed.
Retry strategies
Apply a retry strategy to a job using the #[Retry] attribute:
use Marmol89\Cauce\Attributes\Retry; use Marmol89\Cauce\Retry\ExponentialBackoff; #[Retry(strategy: ExponentialBackoff::class, max: 5, base: 2, cap: 300)] class SendInvoiceEmail implements ShouldQueue { // ... }
Or via middleware (Laravel-style):
public function middleware(): array { return [ new \Marmol89\Cauce\Middleware\ApplyRetryStrategy( new \Marmol89\Cauce\Retry\ExponentialBackoff(base: 2, cap: 300, max: 5) ), ]; }
Available strategies
| Strategy | Best for |
|---|---|
LinearBackoff |
Predictable, simple retries |
ExponentialBackoff |
Most APIs (AWS-style) |
DecorrelatedJitter |
Avoiding thundering herd |
FibonacciBackoff |
Gradual growth |
CircuitBreaker |
Unstable external services |
Commands
| Command | Description |
|---|---|
php artisan cauce:install |
Publish assets and run migrations |
php artisan cauce:status |
CLI overview of queue status |
php artisan cauce:retry {id} |
Retry a failed job |
php artisan cauce:prune |
Clean up old records |
php artisan cauce:clear |
Wipe stored data |
Why Cauce?
Laravel Horizon is excellent but tightly coupled to Redis. If you run queues on database, SQS, Beanstalkd, or any other driver, you're out of luck for monitoring. Cauce is driver-agnostic and adds sophisticated retry strategies on top of any queue system.
License
MIT ยฉ marmol89