lampyra/laravel

Self-hosted, lightweight exception capture for Laravel apps. Ships exceptions to a lampyra-server instance.

Maintainers

Package info

github.com/lampyra/lampyra-laravel

pkg:composer/lampyra/laravel

Statistics

Installs: 52

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v0.2.0 2026-05-25 07:12 UTC

This package is auto-updated.

Last update: 2026-05-25 08:07:54 UTC


README

Composer package for shipping PHP exceptions and JavaScript errors from a Laravel app to a self-hosted Lampyra dashboard.

60-second install

composer require lampyra/laravel

Add to .env:

LAMPYRA_DSN="https://errors.your-domain.com|slk_your_ingest_token"
LAMPYRA_PUBLIC_DSN="paste_24_char_public_dsn"
LAMPYRA_ENABLED=true

Verify:

php artisan lampyra:test

For browser error capture, drop @lampyra in your main Blade layout's <head>.

Full documentation

The complete reference lives on the dashboard. Replace <your-domain> below with your deployed instance:

  • English: https://errors.<your-domain>.com/docs/en/package/01-installation
  • Deutsch: https://errors.<your-domain>.com/docs/de/package/01-installation

Topics covered there:

  • Installation, configuration, env vars
  • The lampyra:test command
  • Payload structure and PII scrubbing
  • Local rate limit
  • JavaScript error capture via @lampyra
  • Ingest API contract
  • Troubleshooting

PII scrubbing — quick reference

The outgoing payload is scrubbed in two passes (see config/lampyra.php):

  1. Key-name pass (scrub_keys) — redacts values whose key matches a pattern. Recursive, case-insensitive, supports *suffix / prefix* wildcards. Use for known field names like password, *_secret, authorization.

  2. Value-pattern pass (scrub_value_patterns) — runs regex replacements over every string leaf. Use for PII that key matching cannot reach: data inside JSON-encoded request.body_excerpt, positional queries[].bindings, or values interpolated into exception.message. Example:

    'scrub_value_patterns' => [
        '/\b[A-Z]{2}\d{2}[A-Z0-9]{10,30}\b/' => '[iban-scrubbed]',
        '/[\w\.\-]+@[\w\-]+(?:\.[\w\-]+)+/' => '[email-scrubbed]',
    ],
  3. User email — set LAMPYRA_INCLUDE_USER_EMAIL=false to drop payload.user.email. The user id is always sent.

License

MIT.