Arquitectura

Mentat esta pensado como una plataforma privada de workloads con un control plane pequeno, un agent por host y un CLI para operacion. La meta es mantener deploy, scheduling, health y ciclo de vida en un solo sistema sin arrastrar la complejidad operativa de una plataforma mas pesada.

Que Corre Donde

mentat-server

El control plane. Recibe jobs, guarda estado, decide scheduling y coordina deploys, rollbacks y estado de nodos.

mentat-agent

Corre en cada host. Inicia workloads por Firecracker, Sandbox, Docker, exec o Hull y mantiene los detalles de runtime cerca del nodo.

mt

La interfaz de operacion. El equipo la usa para desplegar, escalar, inspeccionar y revertir servicios desde una sola superficie.

mentat-types

Tipos compartidos para definiciones de servicio, recursos, constraints, estrategias de deploy y estado de runtime.

Modelo Operativo

La arquitectura esta optimizada para infraestructura privada. El server decide donde debe correr un workload, el agent lo materializa en el host, y el CLI se mantiene liviano. Asi el control plane sigue pequeno pero soporta runtimes mixtos y workflows de deploy.

1. Operador ejecuta: mt run services.yaml
2. CLI valida el archivo y envia el job a mentat-server
3. Server guarda el estado deseado y elige un nodo
4. Server despacha una asignacion a mentat-agent
5. Agent inicia el workload con el driver seleccionado
6. Server guarda el estado observado y responde al operador

Por Que Esta Forma

Control plane pequenoMenor uso de memoria y menor superficie de fallo
Agent por hostLa logica de runtime queda cerca del nodo
CLI livianoFacil de automatizar por SSH o CI
Tipos compartidosUn solo modelo para config, deploy y estado
Abstraccion de driversUna sola plataforma para VMs, contenedores, binarios y workloads Hull

Modelo de Definicion de Servicios

Los servicios declaran runtime, recursos, constraints y estrategia de deploy en una sola especificacion. Ese mismo modelo atraviesa scheduling, rollout y status.

mentat-types/src/types.rs
pub enum Driver { Firecracker, Sandbox, Docker, Exec, Hull }

pub enum DeployStrategy { Rolling, BlueGreen, Canary }

pub enum DriverConfig {
    Firecracker(FirecrackerConfig),
    Sandbox(SandboxConfig),
    Docker(DockerConfig),
    Exec(ExecConfig),
    Hull(HullConfig),
}

pub struct ServiceSpec {
    pub name: String,
    pub replicas: u32,
    pub config: DriverConfig,
    pub resources: Resources,
    pub constraints: Vec<Constraint>,
    pub deploy: DeployConfig,
}

Stack de Implementacion

Runtimetokio 1.x
API HTTPaxum 0.8
Serializacionserde + serde_json + serde_yml
Estadosled 0.34
Cliente HTTPreqwest (rustls)
Unix Socketshyperlocal + hyper
CLIclap 4 (derive)
Erroresthiserror
IDsuuid v4