nadi-pro / nadi-laravel
Handle Laravel Exception Events
Requires
- php: ^8.1 || ^8.2 || ^8.3 || ^8.4
- guzzlehttp/guzzle: ^6.3.1|^7.0.1
- hisorange/browser-detect: ^4.5 | ^5.0
- illuminate/contracts: ^9.0 || ^10.0 || ^11.0 || ^12.0 || ^13.0
- illuminate/routing: ^9.0 || ^10.0 || ^11.0 || ^12.0 || ^13.0
- illuminate/support: ^9.0 || ^10.0 || ^11.0 || ^12.0 || ^13.0
- nadi-pro/nadi-php: ^2.0
- open-telemetry/api: ^1.0
- open-telemetry/exporter-otlp: ^1.0
- open-telemetry/sdk: ^1.0
- open-telemetry/sem-conv: ^1.0
Requires (Dev)
- laravel/pint: ^1.15
- mockery/mockery: ^1.5
- nunomaduro/collision: ^8.0
- orchestra/testbench: ^8.25 || ^9.0 || ^10.0 || ^11.0
- phpunit/phpunit: ^10.1 || ^11.0 || ^12.0
README
Nadi Laravel Client
Nadi is a simple issue tracker for monitoring your application crashes. This package developed for Laravel framework.
Requirements
- PHP 8.1 or higher
- Laravel 9.0 or higher
Installation
composer require nadi-pro/nadi-laravel
Then run the install command:
php artisan nadi:install
This will:
- Publish the
nadi.phpconfiguration file to yourconfig/directory - Automatically download and install the Nadi Shipper binary to
vendor/bin/
Skip Shipper Installation
If you don't want to install the shipper binary automatically (e.g., you're using the HTTP transporter only), use the --skip-shipper flag:
php artisan nadi:install --skip-shipper
Configuration
After installation, configure your Nadi credentials in config/nadi.php or via environment variables:
NADI_API_KEY=your-sanctum-token NADI_APP_KEY=your-application-key
Shipper Binary
The Nadi Shipper is a lightweight Go binary that monitors a directory for JSON log files and forwards them to the Nadi API. It's automatically installed during php artisan nadi:install.
Binary Location
The shipper binary is installed at:
vendor/bin/shipper
Manual Shipper Management
You can also manage the shipper binary programmatically:
use Nadi\Laravel\Shipper\Shipper; $shipper = new Shipper(); // Check if installed if ($shipper->isInstalled()) { echo "Version: " . $shipper->getInstalledVersion(); echo "Path: " . $shipper->getBinaryPath(); } // Install or update $shipper->install(); // Check for updates if ($shipper->needsUpdate()) { $shipper->update(); } // Execute shipper commands $result = $shipper->send(config_path('nadi.yaml')); $result = $shipper->test(config_path('nadi.yaml')); $result = $shipper->verify(config_path('nadi.yaml')); // Uninstall $shipper->uninstall();
Supported Platforms
| Operating System | Architectures |
|---|---|
| Linux | amd64, 386, arm64 |
| macOS (Darwin) | amd64, arm64 |
| Windows | amd64 |
Available Commands
# Install Nadi (publishes config + installs shipper) php artisan nadi:install # Install without shipper binary php artisan nadi:install --skip-shipper # Force overwrite existing config php artisan nadi:install --force # Test API connectivity php artisan nadi:test # Verify configuration php artisan nadi:verify
Security & Data Privacy
Important: Nadi captures and transmits application error data including exception messages, stack traces, SQL queries, HTTP request details, and custom content. This data may contain Personally Identifiable Information (PII).
As the consumer, you are responsible for:
- Sanitizing or redacting PII from entry content
- Filtering sensitive HTTP headers (e.g.,
Authorization,Cookie) from captured data - Ensuring compliance with your organization's data handling policies (GDPR, HIPAA, SOC2, etc.)
- Using HTTPS endpoints for all transporters in production environments
See SECURITY.md for vulnerability reporting and security considerations.
Documentation
Refer to documentation for detailed installation and usage instructions.