The default laravel-ai driver runs ordinary Laravel AI agents inside your own workers:
$session = Clutch::agent(ResearchAgent::class)->driver('laravel-ai')->create();
Drivers put different runtimes behind one set of session, run, event, approval, checkpoint, and artifact contracts.
// A future coding-agent driver.
$session = Clutch::runtime('codex')
->for($user)
->workspace($repository)
->sandbox('e2b')
->create();
Every driver declares what it can do, and the harness checks before it acts. Asking for something a driver does not support fails with CapabilityUnsupported before any work begins, so a safety or durability feature never quietly degrades into something weaker.
Writing a driver? There is a shared contract suite you can point at it:
use Clutch\Laravel\Testing\DriverContractTests;
it('passes the harness driver contract', function () {
$result = DriverContractTests::for(new MyDriver)->run();
expect($result['passed'])->toContain('round-trips a checkpoint');
});
Capabilities you do not declare are skipped rather than failed, so a deliberately limited driver still passes. What it cannot do is claim a capability it lacks.