Ledge for Laravel

Know when a Laravel app quietly stops working.

Ledge checks the queue, scheduler, Horizon and storage on every Laravel app.

Free during the beta, then $12.99 per site a month.

Ledge / bookings.harbourline-dental.co.uk / Health

3 checks over threshold

Checked 2 min ago
  • SchedulerDegraded

    Last schedule:run 14 min ago · Degraded after 10 min

  • HorizonDegraded

    Paused · 2 supervisors · Degraded when paused · Unhealthy when stopped

  • QueueUnhealthy

    2 failed jobs in the last 24 hours · Unhealthy at 1

  • StorageHealthy

    storage/logs, storage/framework and bootstrap/cache writable · Unhealthy when not writable

Health checks

The checks Laravel apps need.

Ledge checks the parts of a Laravel app that fail without telling anyone.

  • Queue

    Failed jobs in the last 24 hours, and jobs stuck waiting.

  • Horizon

    Supervisors running, paused or stopped, with wait times per queue.

  • Scheduler

    How long since schedule:run last finished.

  • Storage

    storage/logs, storage/framework and bootstrap/cache are writable.

  • Production caches

    Config, route and event caches, when APP_ENV is production.

  • Debug mode

    APP_DEBUG left on.

  • Environment

    Variables in .env.example that the app doesn't define.

  • Cache and Redis

    A cache roundtrip, and a PING when Redis is in use.

  • Database, disk and memory

    Response time, disk used and PHP memory against the limit.

  • PHP and packages

    PHP support phase, and Composer packages with a newer release.

Add your own checks

Register a class or a closure, or wrap an existing spatie/laravel-health check.

Ledge::check('search', fn (string $name) =>
    CheckResult::healthy($name, ['documents' => 12])
);

Update runs

Composer updates, tested by your own suite.

Ledge tests each Laravel Composer update with your suite, then opens a pull request.

  • Your tests decide: Ledge runs your composer test script, Pest or PHPUnit, against a fresh database.
  • A pull request, not a surprise: The lockfile diff lands as a PR on the linked GitHub repo.
  • You decide: Read the diff and the run log, then approve, reject or merge.
Update runs / bookings.harbourline-dental.co.uk

bookings.harbourline-dental.co.uk

Ready to apply

3 packages updated · 214 tests passed · 0 failed

  1. Provision
  2. Environment
  3. Composer update
  4. Tests
  5. Pull request

composer.lock

laravel/framework 13.4.1 → 13.6.0

laravel/horizon 6.1.0 → 6.2.2

guzzlehttp/guzzle 7.15.3 → 7.16.0

Review pull requestReject

Everything else your Laravel apps need.

  • Advisories

    Matched to the Composer packages the app actually has installed.

  • Backups

    Encrypted database dumps with mysqldump, pg_dump or sqlite3.

  • Uptime

    Confirmed from more than one check before an alert goes out.

  • Alerts

    Slack or Discord, on your schedule.

  • Open issues

    Everything that needs you across your Laravel apps, in one list.

  • Works with your AI assistant

    Ask about your Laravel apps over MCP, and start update runs.

Two commands to install.

The service provider is auto-discovered. Add the key to Ledge and it starts checking.

PHP 8.3+ with sodium and zlib · Laravel 13+

composer require ledgehq/ledge-laravel
php artisan ledge:generate-key

A quiet week should mean everything's fine.

Laravel health checks and tested updates, in one place.

Get access

Free during the beta, then $12.99 per site a month.