Skip to content

Installation ​

bash
composer require --dev sandermuller/richter

Requires 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:

bash
composer require --dev sandermuller/richter -W

The 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:

bash
composer require --dev sandermuller/richter laravel/boost:* -W

Boost 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:

bash
php artisan vendor:publish --tag=richter-config

Every 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 ​

bash
php artisan list richter
CommandPage
richter:detect-changesDetecting change impact
richter:impactBlast radius of a symbol
richter:traceShortest path between symbols
richter:affected-testsAffected-test selection
richter:benchmark, richter:benchmark:addBenchmarking

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.