Installation
composer require --dev sandermuller/richterRequires PHP 8.4+ and Laravel 12 or 13.
An already-pinned laramint/laravel-brain
Richter depends on Laravel Brain and raises its floor from time to time. A project whose lock already pins an older Brain cannot resolve a plain composer require, because Composer will not upgrade a package the requested one does not force. Take Brain along in the same command:
composer require --dev sandermuller/richter -WThe laravel/mcp constraint
laravel/mcp is optional. It lights up the MCP server, but when present it must fall in the supported ^0.8||^0.9||^1.0 range; Richter declares a conflict with anything outside it.
laravel/boost only pulls a compatible laravel/mcp from v2, and Composer will not upgrade a package Richter does not depend on. An existing laravel/boost v1 install therefore has to take that major in the same command, or the install fails on the laravel/mcp conflict:
composer require --dev sandermuller/richter laravel/boost:* -WBoost v2.9 is the first release that allows laravel/mcp 1.0. An older v2 install stays on ^0.9, which Richter also supports.
Publish the config
Optional, and only needed once you want to tune something:
php artisan vendor:publish --tag=richter-configEvery key is documented in the configuration reference. Richter runs on its defaults without a published config file, but it is accurate only once it knows your app's shape. See Set up your project.
The commands
php artisan list richter| Command | Page |
|---|---|
richter:detect-changes | Detecting change impact |
richter:impact | Blast radius of a symbol |
richter:trace | Shortest path between symbols |
richter:affected-tests | Affected-test selection |
richter:benchmark, richter:benchmark:add | Benchmarking |
Each one runs through php artisan, so it boots your application to build the code graph. That means it needs whatever booting normally requires, typically an .env file and an APP_KEY, which matters most in CI.