Drivers
Mentat supports three workload drivers. Each implements the WorkloadDriver trait with async start, stop, and status methods.
FirecrackerDriver
Launches Unikraft unikernels as Firecracker microVMs via REST API over Unix socket. Supports virtio-blk volumes for persistent storage and snapshot/restore for scale-to-zero.
Used by: Spacing Guild, Sietch/OxideDB, Harkonnen Vault, StreamForge, Harvester
config:
driver: firecracker
image: "registry.dune/sietch:latest"
memory_mb: 128
vcpus: 2
snapshot_enabled: true
volumes:
- source: /mnt/unikernel-volumes/sietch
target: /dataLifecycle
- Spawn
firecracker --api-sock /tmp/mentat/firecracker/UUID.sock - PUT /machine-config (vcpus, memory)
- PUT /boot-source (kernel image)
- PUT /drives/rootfs + /drives/vol0..N (virtio volumes)
- PUT /actions InstanceStart
Snapshots
For scale-to-zero: pause VM, create full snapshot (memory + disk), kill process. On restore: spawn new firecracker, load snapshot, resume.
DockerDriver
Manages OCI containers via the Docker Engine API over Unix socket (/var/run/docker.sock). No health checks — Traefik handles routing.
Used by: Jarvis API (.NET), Bene Gesserit (.NET), Wagent (Node.js), Eye of Ibad (Next.js)
config:
driver: docker
image: "registry.dune/jarvis-api:latest"
env:
- - ASPNETCORE_ENVIRONMENT
- Production
ports:
- "8080:80"
volumes:
- source: /data/jarvis
target: /app/data
read_only: trueExecDriver
Spawns Rust static binaries directly via tokio::process::Command. Zero overhead — no container, no VM. Tracks PIDs for lifecycle management.
Used by: Fremen
config:
driver: exec
command: /opt/bin/fremen
args:
- "--port"
- "9090"
- "--workers"
- "4"
env:
- - RUST_LOG
- infoVolumeMount
All drivers support volume mounts. For Firecracker, volumes are virtio-blk devices backed by host paths (GCP PD-SSD). For Docker, they map to bind mounts.
volumes:
- source: /mnt/unikernel-volumes/sietch # host path
target: /data # guest path
read_only: false