Plataforma privada de workloads

Ejecuta workloads aislados
en tu propia infraestructura.
Sin sprawl de plataforma.

Mentat es una plataforma zero trust para ejecutar workloads aislados. Cinco drivers de runtime: microVMs Firecracker, sandboxes Linux namespace, contenedores Docker, binarios nativos, y Hull — nuestro propio runtime de contenedores daemonless de ~3 MB. Esta pagina se sirve desde un sandbox — aislamiento con cgroups v2, sin Docker, 2MB de overhead.

8msboot microVM
~2MBoverhead sandbox
9/9servicios healthy
mt — mentat cli

La diferencia fundamental

Aislamiento por hardware.
No trucos de namespace.

Los contenedores Docker comparten el kernel del host. Un exploit compromete todo. Las microVMs Firecracker dan a cada servicio un kernel dedicado — aislado por hardware, no por fronteras de software que pueden ser vulneradas.

Contenedores DockerKernel compartido — una brecha expone todoKernel Linux del host (compartido)App Alibs, shell,pkg managernamespaceApp Blibs, shell,pkg managernamespaceApp Clibs, shell,pkg managernamespaceExploit de kernel → acceso a TODOS los contenedoresMicroVMs FirecrackerKernel dedicado — frontera hardware por servicioApp Aun solo binariosin shellkernel propioKVM / VT-xRAM dedicadaApp Bun solo binariosin shellkernel propioKVM / VT-xRAM dedicadaApp Cun solo binariosin shellkernel propioKVM / VT-xRAM dedicadaBrecha en App A no puede alcanzar App B ni C
Kernel dedicado
Cada microVM inicia su propio kernel Linux. Sin superficie de ataque compartida entre servicios.
Sandboxes namespace
Aislamiento PID + mount + UTS + IPC con limites cgroups v2. Sin daemon Docker. Init de 15KB en C.
Sin shell, sin tools
La VM contiene un solo binario. Sin package manager, sin shell, sin movimiento lateral.
Mars Mode
Auto-recuperacion al reiniciar. Procesos huerfanos, TAPs obsoletos, endpoints fantasma — limpiados automaticamente.

Hull Runtime

Nuestro propio runtime de contenedores.
~3 MB. Sin daemon. Sin root.

Hull es un runtime de contenedores Linux daemonless escrito en Zig. Un solo binario estatico-musl orquesta namespaces, cgroups v2, seccomp-bpf, Landlock, pivot_root y un veth bridge opcional — todo sin un daemon en background ni arbol containerd-shim. Hoy corre Titan ESB (Elixir/Phoenix/BEAM) en produccion en www.titan-bus.com.

Tamano del binario
~3 MB
static-musl, x86_64 + aarch64
Capas de seguridad
7
ns + cgroups + seccomp + landlock + pivot
Daemons
0
sin dockerd, sin containerd, sin shim
Stack completo de aislamiento Linux
NEWPID + NEWNET + NEWNS + NEWUTS + NEWIPC + NEWUSER. El mount namespace se unshare dentro del child asi que pivot_root no puede mutar el host. cgroups v2 para limites de CPU/memoria/pids.
Modo rootless
Pasa --rootless y Hull ejecuta el dance de NEWUSER incluso siendo root: el parent forkea un child userns_setup, escribe /proc/<pid>/{setgroups,gid_map,uid_map}, y el workload se ve como uid 0 dentro de un user namespace nuevo. Defense in depth, cero sudo.
Networking via bridge
El manifest network: bridge crea un par veth por contenedor, conecta un extremo a hull0 (10.88.0.0/24), asigna una IP desde un lease dir, y configura el lado del contenedor via nsenter. Reglas nftables + iptables FORWARD para masquerade y accept inter-VLAN, idempotentes entre corridas.
Allowlists seccomp-bpf
Perfiles de syscalls curados por workload: default, beam (Elixir/Erlang), dotnet (.NET AOT), node (Node.js). KILL_PROCESS en violacion. Instalado justo antes del execve asi incluso el primer syscall del workload esta filtrado.
Landlock LSM
Allowlist de filesystem usando syscalls directos de ABI v1. Fallback gracioso en kernels < 5.13. Politica default: rootfs read+exec, /tmp /dev /var read+write — apretada para detener exfiltracion, laxa para correr binarios reales.
hull inspect
Un solo comando muestra los numeros del cgroup en vivo, los 7 inums de namespace (via readlink /proc/<pid>/ns/*), y los primeros 12 mount points de /proc/<pid>/mountinfo. Sin daemon al que consultar — el estado vive en ~/.hull/state/<name>.json.

Serverless privado

El modelo runtime de serverless,
sin nube publica.

AWS Lambda, Fargate, Cloudflare Workers y Fly.io usan microVMs Firecracker para aislar workloads. Mentat lleva ese modelo de ejecucion a infraestructura privada, donde mantienes networking, localidad de datos y control operativo.

Plataformas publicas
AWS LambdaFunciones serverless
AWS FargateContenedores gestionados
Cloudflare WorkersComputo en el edge
Fly.ioPlataforma de apps
KraftCloudHosting de unikernels
Mentat en tu infraestructura
5 drivers de runtimeFirecracker + Sandbox + Docker + Exec + Hull
Sandboxes namespaceAislamiento Linux sin daemon Docker
Mars ModeAuto-recuperacion al reiniciar — cero ops manual
Clustering con IP fijaClusters Raft dentro de microVMs
Dashboard liveData real — esta pagina esta live

Modelo de ejecucion

Un control plane.
Cinco drivers de runtime.

Mentat enruta cada workload al driver que mejor le calza. Servicios Rust corren en microVMs Firecracker. Apps web corren en sandboxes Linux namespace. Contenedores existentes se quedan en Docker. Agentes internos corren como binarios nativos. Y servicios BEAM / .NET / Node corren en Hull — nuestro propio runtime de contenedores daemonless de ~3 MB.


Operaciones

Operalo como
una plataforma real.

Mentat mantiene discovery, health checks, auto-scaling e ingress en un solo lugar. Sandbox bases para Node.js, Python y Java significan que despliegas tu codigo — no tu infraestructura.

Auto-Scaling (ScaleWatcher)
Lee CPU y memoria desde cgroups v2 cada 10s. Cuando se superan los umbrales, las replicas se crean automaticamente. Escala hacia abajo cuando la carga baja. Como K8s HPA pero sin metrics-server.
Caddy Dynamic Upstream
El balanceador de carga se actualiza al instante via Caddy Admin API — sin reload, sin downtime. Las nuevas replicas reciben trafico en milisegundos.
Auto-Restart + Health Checks
Monitor de salud prueba cada 10s. Tras 3 fallos, el agente detiene la carga anterior y lanza una nueva. Funciona con Firecracker, Docker y Sandbox.
Sandbox Bases
rootfs pre-construidos para Node.js 22, Python 3.12, Java 21 y sitios estaticos. overlayfs fusiona base + tu codigo — cero configuracion manual. Despliega una app Next.js SSR con un solo YAML.
mt ps
Un comando para ver cada workload con metricas en vivo de cgroups v2: RAM, CPU, PIDs, endpoints y estado de salud. Con colores por driver.
Mars Mode
Auto-reparacion al reiniciar. Procesos huerfanos, TAPs obsoletos, endpoints fantasma, contenedores Docker — todo se recupera automaticamente. Cero intervencion manual.
mt registry — live
$ mt registry

connecting to cluster...

Alta disponibilidad

Raft multi-nodo.
Failover automatico.

El plano de control replica estado via consenso Raft. Si el lider cae, un seguidor toma el control en menos de 3 segundos. Las escrituras a cualquier nodo se reenvian al lider automaticamente.

Nodo 1 · Lidermentat-server :4646mentat-agent :4647StreamForge3-node RaftFirecrackerOxideStore3-node RaftFirecrackerAPI ServiceDockerNode AgentExecCaddy · TLS · IngressSled · Raft Log · Registry8 vCPU · 32GB · KVMNodo 2 · Seguidormentat-server :4646Replica Raft · standbySled · Raft Log · Registry2 vCPU · 4GBNodo 3 · Seguidormentat-server :4646Replica Raft · standbySled · Raft Log · Registry2 vCPU · 4GBConsenso Raft · Replicacion de log · Eleccion de liderRENDIMIENTO16K r/sFAILOVER< 3sCONSISTENCIAFuerte

Comparacion

Kubernetes es excelente.
Hasta que se vuelve demasiada plataforma.

Kubernetes
RAM plano de control~2,000 MB
Formato configYAML (50+ archivos)
Boot contenedor300-800ms
Soporte unikernelExperimental
Binario estaticoRequiere contenedor
Costo mensual cloud~$800-1,200
Tiempo de rollout30-120s
Mentat
RAM plano de control~64 MB
Formato configYAML (1 archivo)
Boot contenedor<10ms
Soporte unikernelNativo (Firecracker)
Binario estaticoNativo (exec driver)
Costo mensual cloud~$260 (1 VM)
Tiempo de rollout<1s

Comenzar

Entrega mas rapido sin
ceder tu infraestructura.

Empieza con la documentacion y el CLI, luego despliega workloads en Firecracker, contenedores y servicios de plataforma bajo un mismo control plane.

quickstart
# instalar
$ curl -sSfL https://getmentat.run | sh
mt 0.1.0 instalado

# iniciar server + agent
$ mentat-server --bind 0.0.0.0:4646 &
$ mentat-agent --kvm --server localhost:4646 &

# desplegar todo
$ mt run services.yaml
todos los servicios saludables

# operar
$ mt deploy api-gateway --image ...:v2
$ mt scale streamforge 5
$ mt rollback api-gateway