daemon8/laravel

Laravel integration for Daemon8 -- automatic runtime observation via event watchers

Maintainers

Package info

github.com/daemon8ai/daemon8-laravel

Homepage

Issues

pkg:composer/daemon8/laravel

Statistics

Installs: 3

Dependents: 0

Suggesters: 0

Stars: 0

v0.1.0 2026-04-26 03:49 UTC

This package is auto-updated.

Last update: 2026-04-26 03:52:08 UTC


README

Auto-instrument Laravel 11+ apps for Daemon8. Requests, queries, jobs, exceptions, cache, mail, and more — captured automatically.

Tip

Help keep Daemon8 open source — star the main repo.

Install

composer require daemon8/laravel
php artisan vendor:publish --tag=daemon8-config
daemon8 install   # if you haven't already

Requires the Daemon8 daemon running locally. Without it, the package is a silent no-op.

Usage

Everything streams automatically after install. Emit manually when needed:

use Daemon8\Laravel\Facades\Daemon8;

Daemon8::log('checkout completed', severity: 'info');
Daemon8::warn('payment retry threshold reached');
Daemon8::exception($e);

Or inject Daemon8Client for testable code:

use Daemon8\Daemon8Client;

final class CheckoutService
{
    public function __construct(private readonly Daemon8Client $daemon8) {}

    public function process(Order $order): void
    {
        $this->daemon8->log('processing order #' . $order->id);
    }
}

Configuration

DAEMON8_ENABLED=true
DAEMON8_URL=http://127.0.0.1:9077/ingest
DAEMON8_APP=checkout-api
DAEMON8_TIMEOUT_MS=50

Per-watcher toggles in config/daemon8.php:

DAEMON8_WATCH_REQUEST=true
DAEMON8_WATCH_QUERY=true
DAEMON8_WATCH_JOBS=true
DAEMON8_WATCH_CACHE=false

See config/daemon8.php for the full watcher list, slow-query thresholds, and sensitive data rules.

Respondents

React to observations in real time. A respondent is a class with full container access:

use Daemon8\Contracts\Respondent;
use Daemon8\Filter;
use Daemon8\Observation;
use Daemon8\Severity;

final class SlowQueryAnalyst implements Respondent
{
    public function interest(): Filter
    {
        return new Filter(kinds: ['query'], severityMin: Severity::Warn);
    }

    public function respond(Observation $observation): void
    {
        SlowQuery::create([
            'sql'         => $observation->data['sql'] ?? '',
            'duration_ms' => $observation->data['duration_ms'] ?? 0,
        ]);
    }
}

Register in config/daemon8.php, then run php artisan daemon8:run.

Requirements

  • PHP 8.4+
  • Laravel 11 / 12 / 13
  • Daemon8 daemon running locally

Development

composer install
composer check      # phpstan + rector dry-run + phpcs + phpunit

Links

Docs · Demo · Contact

License

MIT. See LICENSE.