Overlay network · identidad por dispositivo

VPNs confían en contraseñas.
Spice-net confía en dispositivos.

Red superpuesta construida sobre WireGuard con autenticación por clave Ed25519. Cada laptop, cada servidor, tiene una identidad criptográfica. Cada conexión está autorizada explícitamente por una policy ACL que el control plane evalúa en cada handshake.

Ver cómo funciona Leer la documentación
Ed25519Identidad por dispositivo
Default-denySin ACL, sin ruta
WireGuardData plane in-kernel
Problema

Una credencial robada no debería comprometer toda la red.

En redes planas tradicionales, VPN + password es la única barrera. Si un médico pierde su laptop o hacen phishing al administrador, el atacante entra a todo: HIS, Oracle, ERP, sistemas de imagenología. No hay segmentación; hay confianza implícita.

Red plana + VPN tradicional

  • Credenciales pueden robarse o ser phishing
  • Una vez dentro, lateral-movement es trivial
  • Segmentación depende de firewalls estáticos que nadie revisa
  • Rotar credenciales implica reconfigurar N clientes
  • Sin audit-trail por dispositivo

Spice-net mesh

  • Cada dispositivo tiene su propia clave Ed25519
  • ACL explícita por par origen-destino-puerto
  • Default-deny: sin regla, sin ruta
  • Revocar un dispositivo = desregistrar en el control plane
  • Cada handshake queda registrado con identidad del nodo
Cómo funciona

Tres componentes. Cero configuración manual de túneles.

Un control plane centralizado (stateful) más un agente por nodo. WireGuard en el kernel mueve los paquetes; el agente negocia la policy en tiempo real con el control plane en cada conexión nueva.

01

Registrar

Un operador genera una identidad Ed25519 en el nodo y la registra contra el control plane. El nodo recibe una IP del pool 100.64.0.0/10 y su slot en la tabla de peers.

02

Autorizar

Se declaran reglas ACL en YAML: "group:his puede hablar con node:oracle en tcp/1521". Todo lo demás es deny-por-default.

03

Conectar

El agente de cada nodo consulta al control plane los peers autorizados y abre túneles WireGuard solo hacia ellos. Paquetes fuera de la policy nunca salen de la interfaz local.

Arquitectura

Qué ve un laptop médico después del handshake.

Una vez registrado con ACL his, el nodo tiene una única ruta de red: al HIS. No al Oracle directo, no a otros laptops, no a Internet. Lo que no está en la policy, no existe.

laptop-medico nodo autenticado · acl:his
his-prod servicio HIS clínico
laptop-medico mismo nodo
oracle-prod servicio base de datos
laptop-medico mismo nodo
Internet, SAP, Mirth, otros laptops — no existe ruta
Stack

Rust + WireGuard + Mentat. Sin sorpresas operativas.

Construido sobre tecnologías probadas. El data plane es WireGuard en el kernel; no inventamos crypto. El control plane es un binario Rust compilado estático. Desplegado en Mentat como servicio Hull.

Data plane

WireGuard

Túneles kernel-space con crypto auditada (Curve25519, ChaCha20-Poly1305, BLAKE2s). Cero overhead de userspace en el hot path.

Control plane

spice-net-ctrl

Binario Rust único (~6 MB), persistencia sled embebida. API HTTP firmada con Ed25519. Sin base de datos externa, sin runtime.

Agent

spice-agent

Binario por nodo. Negocia peers con el control, configura rutas, mantiene heartbeat. Pensado para systemd o sandbox Mentat.

Orquestación

Mentat · Hull

El control plane corre como servicio Hull con TLS automático vía Caddy. Escalable horizontalmente detrás del registry interno.

Empezar

Cinco comandos. Cero YAML de red.

Desde cero a un nodo registrado con policy aplicada, en menos de dos minutos. Todo lo que sigue vive en /docs.

# Levantar el control plane (en Mentat, systemd, o donde corras binarios)
$ spice-net-ctrl --addr 0.0.0.0:7777 --data-dir /var/lib/spice

# Registrar una identidad de admin (una sola vez)
$ spice --server https://ctrl.example.com register --name admin --acl admin

# Declarar policy: HIS puede hablar con Oracle:1521, nada más
$ spice policy set ./policy.yaml

# Registrar un nodo cliente con ACL "his"
$ spice register --name laptop-medico-juan --acl his

# Arrancar el agente (systemd o supervisor)
$ spice-agent --identity ./node.json

Su red. Sus dispositivos. Sin contraseñas.

Self-hosted. Open source. Integrado con Mentat. Diseñado para clínicas y hospitales donde un breach no es aceptable.

Leer la documentación Ver en GitHub