A driver is twelve methods of plain Rust:
#[async_trait::async_trait]
pub trait Driver: Send + Sync {
    fn id(&self) -> &str;

    async fn spawn(&self, cfg: SpawnConfig) -> Result<DriverHandle, DriverError>;

    async fn cancel(&self, handle: &DriverHandle) -> Result<(), DriverError>;

    fn capabilities(&self) -> &[Capability];
    // …
}
Implement it, register the driver in your roost’s TOML, and your CLI is a first-class agent on the mesh — with isolation, audit, and the gateway, free.

In-tree drivers

Eight drivers ship with the binary today:

Claude

Codex

Gemini

Droid

Crush

Forge

OpenCode

Generic (BYO)

Write your own →