Saltar al contenido principal

Introducción

Qué es Runner Codes​

Runner Codes ejecuta código no confiable (normalmente generado por un LLM) dentro de microVMs. El binario es rc, y funciona de dos maneras:

  • Job desechable: una VM nueva por job, sin red, con root de solo lectura, destruida al final. Es lo que hacen rc run, rc shell y las rutas /api/v1/run y /api/v1/execute.
  • Máquina persistente: una VM con disco propio, que guarda lo que se instaló y grabó entre un start y otro. Es rc machine ..., declarable en un archivo runner.code y controlable por la API.

Código fuente: https://github.com/andrebassi/runner-codes

Las piezas​

  • VMM: libkrun 1.19.6 con el kernel de libkrunfw 5.6.2 (Linux 6.12.109), cargada directamente como biblioteca mediante purego (sin cgo). Cada VM es un proceso rc vmm.
  • Hipervisor: Hypervisor.framework en macOS Apple Silicon; KVM (/dev/kvm) en Linux x86_64 y aarch64.
  • Imágenes: cada stack se convierte en un ext4 de solo lectura generado a partir de la imagen OCI oficial, sin Docker. Las máquinas también aceptan cualquier imagen OCI (--image).
  • Canal con el guest: 4 bytes big-endian de tamaño + JSON, en el puerto vsock 5000 (protocolo).
  • Latencia: el pool de rc serve mantiene VMs ya arrancadas por lenguaje, cada una usada una sola vez.

Qué hace rc​

RecursoDónde está
job efímero por la CLI, con salida en streaming; shell interactivo en una VM nuevarun y shell
máquinas: create, start, exec, shell, cp, logs, stop, delete, branch, pause, resume, sync, update, data-dir, prunemachine
máquina declarada en un archivorunner.code
red por política (allow-host, CIDR, --block-private), redes con nombre, ICMP, puertos y rangos de puertosRed y volúmenes
volúmenes: directorio del host, :ro, :staged, disco de la máquina, S3Red y volúmenes
credenciales que la máquina usa sin leerlas, secretos, agente SSH, puentes de socketCredenciales, machine
GPU vía Vulkan (Venus) y la stack llamaGPU
pantalla de la VM en el navegador, con teclado y mouse (--display)Pantalla en el navegador
imagen o máquina en un artefacto portátilpack
API HTTP con pool, SSE y rutas de máquinaAPI HTTP, Visión general de la API
SDKs Go (pkg/client) y Python (sdk/python)SDKs
verificación del hostrc doctor, en Visión general de la CLI

Plataformas​

PlataformaEstado
macOS, Apple Siliconsoportado, probado de punta a punta y medido
Linux x86_64 / aarch64 con /dev/kvmsoportado; el confinamiento Landlock + seccomp se probó, pero una microVM completa en Linux aún no se ha medido
Windowsno soportado: libkrun upstream no tiene backend WHP, y el build para Windows falla a propósito

Números medidos​

macOS 27, Apple Silicon. En Linux todavía no hubo medición.

QuéValor
arranque hasta la 1.ª respuesta de Python (30 arranques, root ext4 ro)p50 260 ms, p95 266 ms
job Python por la CLI, arranque en frío~240 ms en total
job por la API con el pool lleno26–43 ms de solicitud HTTP completa (una stack)
machine start hasta que el guest responde204–244 ms
footprint de una VM detenida44 MB
go run con la caché de build caliente en la imagen247 ms (sin la caché, 3,4 s)

Detalles y método en Rendimiento y en el Informe de pruebas.

Lenguajes​

El catálogo tiene 15 lenguajes: Python, Node.js, Go, Rust, Java, C, C++, Ruby, PHP, Perl, Bash, sh, AWK, jq y SQLite, además de la stack llama (llama.cpp con Vulkan). Consulte Lenguajes.

Próximos pasos​

  • Inicio rápido: instalar libkrun, compilar, construir la imagen, ejecutar el primer job y la primera máquina.
  • Referencia para agentes: cada comando, flag, ruta y error en una sola página.
  • Arquitectura: las piezas y el recorrido de un job y de una máquina.
  • Ejemplos y guías: ejemplos de runner.code y guías que prueban cada flujo en una VM real.
  • Seguridad: qué aísla el código y qué falta todavía.