lampyra / laravel
Self-hosted, lightweight exception capture for Laravel apps. Ships exceptions to a lampyra-server instance.
Requires
- php: ^8.3
- guzzlehttp/guzzle: ^7.0
- illuminate/contracts: ^11.0 || ^12.0 || ^13.0
- illuminate/http: ^11.0 || ^12.0 || ^13.0
- illuminate/support: ^11.0 || ^12.0 || ^13.0
Requires (Dev)
- orchestra/testbench: ^9.0 || ^10.0
- phpunit/phpunit: ^11.0 || ^12.0
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:testcommand - 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):
-
Key-name pass (
scrub_keys) — redacts values whose key matches a pattern. Recursive, case-insensitive, supports*suffix/prefix*wildcards. Use for known field names likepassword,*_secret,authorization. -
Value-pattern pass (
scrub_value_patterns) — runs regex replacements over every string leaf. Use for PII that key matching cannot reach: data inside JSON-encodedrequest.body_excerpt, positionalqueries[].bindings, or values interpolated intoexception.message. Example:'scrub_value_patterns' => [ '/\b[A-Z]{2}\d{2}[A-Z0-9]{10,30}\b/' => '[iban-scrubbed]', '/[\w\.\-]+@[\w\-]+(?:\.[\w\-]+)+/' => '[email-scrubbed]', ],
-
User email — set
LAMPYRA_INCLUDE_USER_EMAIL=falseto droppayload.user.email. The user id is always sent.
License
MIT.