cybernerdie / glint
Laravel-native LLM observability with local traces, generations, cost tracking, latency, errors, and alerts.
Requires
- php: ^8.3
- illuminate/contracts: ^11.0|^12.0|^13.0
- illuminate/support: ^11.0|^12.0|^13.0
Requires (Dev)
- larastan/larastan: ^3.0
- laravel/pint: ^1.0
- laravel/pulse: ^1.0
- mockery/mockery: ^1.6
- orchestra/testbench: ^9.0|^10.0|^11.0
- pestphp/pest: ^4.0
- pestphp/pest-plugin-laravel: ^4.0
Suggests
- echolabsdev/prism: Required for Prism auto-instrumentation driver (^0.100)
- illuminate/notifications: Required for alert notification delivery
- laravel/ai: Required for the laravel-ai auto-instrumentation driver
- laravel/pulse: Required for the Glint Pulse dashboard card (^1.0)
- laravel/slack-notification-channel: Required for Slack alert channel
- useiconic/neuron-ai: Required for the neuron-ai auto-instrumentation driver
README
Glint is an LLM observability package for Laravel applications. It records LLM calls in your application database and provides a local dashboard for traces, generations, cost, latency, errors, users, and alerts.
Glint is designed for teams that want Laravel-native observability without sending prompts, completions, or usage data to a third-party service.
Requirements
- PHP 8.3+
- Laravel 11, 12, or 13
- A configured queue worker when using the default
queuerecording mode
Supported instrumentation
Glint can record LLM calls through:
- Laravel HTTP client requests to configured LLM hosts
- Prism
- Laravel AI
- Neuron AI
- Manual tracing with the
Glintfacade
SDKs or transports that do not use one of the supported instrumentation paths should be wrapped with manual tracing.
Features
- Local dashboard for traces, generations, costs, users, latency, and alerts
- Automatic instrumentation for supported drivers
- Manual tracing API for custom or unsupported LLM clients
- Token and cost tracking from a published pricing registry
- App-level pricing overrides for private models or provider price changes
- Alert rules for cost, error rate, latency, and token usage
- Privacy redaction before data is stored
- Retention and pruning commands
- Queue and sync recording modes
Glint::fake()testing utilities- Optional Laravel Pulse card
Installation
Install the package and run the installer:
composer require cybernerdie/glint php artisan glint:install
The installer publishes the config, pricing registry, migrations, and application service provider, then runs the migrations.
Enable recording:
GLINT_ENABLED=true GLINT_DRIVERS=http
Visit /glint to open the dashboard.
By default, Glint records asynchronously through Laravel's queue. If your application already runs queue workers, no separate worker is required. To isolate Glint recording jobs, set a dedicated queue and run a worker for it:
GLINT_QUEUE=glint
php artisan queue:work --queue=glint
HTTP request traces
LLM generations are recorded without middleware. To group generations under the HTTP request that triggered them, register GlintMiddleware globally:
// bootstrap/app.php ->withMiddleware(function (Middleware $middleware) { $middleware->append(\Cybernerdie\Glint\Middleware\GlintMiddleware::class); })
Manual tracing
Use manual tracing when auto-instrumentation cannot see a call or when you want to add application-specific context:
use Cybernerdie\Glint\Facades\Glint; $trace = Glint::trace('chat.pipeline', [ 'user_id' => (string) auth()->id(), ]); try { $generation = Glint::generation('summarise', 'openai', 'gpt-4o'); $generation ->prompt($prompt) ->options(temperature: 0.7, maxTokens: 1024, topP: 0.9); $response = $client->chat($prompt); $generation->finish( completion: $response->text, promptTokens: $response->promptTokens, completionTokens: $response->completionTokens, ); } catch (\Throwable $e) { isset($generation) && $generation->fail($e); throw $e; } finally { $trace->end(); }
Configuration
The main configuration file is published to config/glint.php.
Common options:
GLINT_ENABLED— enable or disable recordingGLINT_DRIVERS— comma-separated instrumentation driversGLINT_MODE—queueorsyncGLINT_QUEUE— queue name for recording jobsGLINT_STORE_BODIES— store prompts and completions; setfalsefor metadata-only recordingGLINT_STORE_IP— opt in to storing requester IP addressesGLINT_RETENTION_TRACES— raw trace/generation retentionGLINT_RETENTION_AGGREGATES— aggregate retentionGLINT_RETENTION_ALERTS— alert event retention
See Configuration for the full reference.
Documentation
- Configuration
- Drivers
- Auto-Instrumentation
- Manual Tracing
- Background Jobs
- Dashboard
- Alerts
- Exporting
- Testing
- Privacy & Redaction
- Laravel Pulse Integration
Testing
composer test
composer stan
composer pint
License
Glint is open-sourced software licensed under the MIT license.