Guia de Despliegue de NullClaw: La Infraestructura de Asistente IA Mas Pequeña en Zig

Guia paso a paso para desplegar NullClaw en un VPS Linux. Cubre binario Zig, 22+ proveedores LLM, 17 canales de chat, memoria hibrida, sandboxing y ejecucion en hardware de $5.

Guia de Despliegue de NullClaw: La Infraestructura de Asistente IA Mas Pequeña en Zig

NullClaw es el asistente de IA mas pequeño que he encontrado que todavia hace todo. Un unico binario estatico de 678 KB escrito en Zig, aproximadamente 1 MB de RAM en ejecucion. Sin runtime, sin VM, sin overhead de framework. Arranca en menos de 2 milisegundos y corre en cualquier cosa que tenga CPU, incluyendo placas ARM de $5.

Esta guia te lleva paso a paso para desplegar NullClaw en un VPS con tu eleccion de proveedor LLM, canales de chat, memoria hibrida y sandboxing adecuado.

NullClaw en GitHub

Lo que cubre esta guia

  • Compilar NullClaw desde el codigo fuente o usando Docker
  • Configurar 22+ proveedores LLM via endpoints compatibles con OpenAI
  • Configurar Telegram, Discord, Slack u otros 10 canales
  • Sistema de memoria hibrida con SQLite FTS5 + busqueda vectorial
  • Sandboxing multi-capa (Landlock, Firejail, Bubblewrap, Docker)
  • Integracion con servidores MCP
  • Ejecucion en hardware edge y placas de $5

Si estas comparando opciones de bots auto-alojados, nuestro articulo de alternativas a OpenClaw incluye NullClaw junto con ZeroClaw, nanobot, NanoClaw y PicoClaw.

Que es NullClaw realmente

NullClaw es un asistente de IA escrito completamente en Zig. El eslogan es “null overhead, null compromise” — un binario estatico con cero dependencias de runtime que corre en el hardware mas barato que puedas encontrar.

La arquitectura usa interfaces vtable para cada subsistema. ¿Quieres cambiar tu proveedor LLM? Cambia una linea de configuracion. Lo mismo para canales, backends de memoria, herramientas, tuneles, sandboxes y perifericos.

678 KB binary · <2 ms startup · 3,230+ tests · 22+ providers · 17 channels · Pluggable everything

Como se compara

OpenClawnanobotZeroClawNullClaw
LenguajeTypeScriptPythonRustZig
RAM> 1 GB> 100 MB< 5 MB~1 MB
Arranque> 500 s> 30 s< 10 ms< 2 ms
Binario~28 MBN/A3.4 MB678 KB
Tests1,0173,230+
Canales498+17
ProveedoresVarios13+22+22+
Hardware minimoMac Mini $599Linux SBC ~$50Cualquier hardware de $10Cualquier hardware de $5

Los numeros de benchmark se miden en hardware edge de 0.8 GHz. NullClaw arranca en menos de 8 milisegundos incluso en los targets mas lentos.

Por que Zig

Zig es un lenguaje de programacion de sistemas que compila a rendimiento tipo C con cero overhead de runtime:

PropiedadQue significa para NullClaw
Sin recolector de basuraMemoria deterministica, sin pausas
Sin asignaciones ocultasTu controlas cada byte
Binario estaticoSin dependencias, soltar y ejecutar
Ejecucion en tiempo de compilacionValidacion de config en tiempo de build
Compilacion cruzadaCompilar para ARM desde x86

Ese binario de 678 KB cubre el mismo conjunto de funciones que alternativas que pesan multiples gigabytes.

Instalacion

Dos formas principales de instalar NullClaw.

Necesitas Zig 0.15.2 (version exacta requerida):

# Install Zig (Linux)
curl -L https://ziglang.org/download/0.15.2/zig-linux-x86_64-0.15.2.tar.xz | tar -xJ
sudo mv zig-linux-x86_64-0.15.2 /usr/local/zig
sudo ln -s /usr/local/zig/zig /usr/local/bin/zig

# Clone and build
git clone https://github.com/nullclaw/nullclaw.git
cd nullclaw

# Release build (678 KB)
zig build -Doptimize=ReleaseSmall

# The binary is at zig-out/bin/nullclaw
ls -lh zig-out/bin/nullclaw

Si prefieres contenedores:

# Build the image
docker build -t nullclaw .

# Run
docker run -d \
  -v ~/.nullclaw:/root/.nullclaw \
  -p 3000:3000 \
  --name nullclaw \
  nullclaw

Despues de compilar, ejecuta el asistente de configuracion:

# Quick setup (non-interactive)
nullclaw onboard --api-key sk-... --provider openrouter

# Or interactive wizard
nullclaw onboard --interactive

Esto crea ~/.nullclaw/ con un config.json y una carpeta de workspace.

Verifica que todo funciona:

nullclaw status

Configurar proveedores LLM

NullClaw soporta 22+ proveedores de fabrica. Cada proveedor usa la interfaz compatible con OpenAI, asi que cambiar es solo un cambio de configuracion.

Proveedores soportados

ProveedorCaso de uso
OpenRouterGateway a cualquier modelo
AnthropicModelos Claude
OpenAIModelos GPT
OllamaModelos locales
VeniceEnfocado en privacidad
GroqInferencia rapida
MistralModelos Mistral
xAIModelos Grok
DeepSeekModelos DeepSeek
TogetherModelos open-source
FireworksOpen-source rapido
PerplexityAumentado con busqueda
CohereModelos Command
BedrockModelos hosteados en AWS
GeminiGoogle Gemini
CustomCualquier endpoint compatible con OpenAI

Obtener una clave API

Para OpenRouter (recomendado por flexibilidad):

  1. Ve a openrouter.ai
  2. Crea una cuenta y genera una clave API
  3. La clave empieza con sk-or-

Plan de codificacion MiniMax — 10% de descuento

Si quieres usar MiniMax M2.5 o GLM-5 a traves de OpenRouter, revisa nuestros enlaces de referido para descuentos en planes de codificacion.

Agregar a la configuracion

Edita ~/.nullclaw/config.json:

{
  "default_provider": "openrouter",
  "default_temperature": 0.7,
  "models": {
    "providers": {
      "openrouter": {
        "api_key": "sk-or-your-key"
      }
    }
  },
  "agents": {
    "defaults": {
      "model": {
        "primary": "anthropic/claude-sonnet-4"
      }
    }
  }
}

Usar proveedores personalizados

Cualquier endpoint compatible con OpenAI funciona:

{
  "models": {
    "providers": {
      "minimax": {
        "api_key": "your-minimax-key",
        "base_url": "https://api.minimax.chat/v1"
      }
    }
  }
}

Luego configura "default_provider": "minimax".

Modelos recomendados

Si buscas modelos rentables para emparejar con NullClaw, dos opciones open-source funcionan bien:

MiniMax M2.5 — Un modelo MoE de 230B con 10B parametros activos. Obtiene 80.2% en SWE-Bench Verified a una fraccion del costo de Claude ($0.15/M tokens de entrada). La variante Lightning corre a 100 tokens/seg. Disponible a traves de OpenRouter o directamente via la API de MiniMax.

GLM-5 — Un modelo MoE de 744B de Z.AI con 40B parametros activos. 95.8% en SWE-bench Verified y casi cero alucinaciones. Disponible a traves de OpenRouter o planes de codificacion Z.AI.

Ambos se cubren en detalle en nuestra guia de configuracion de nanobot, que explica la configuracion de claves API y proveedores. Los mismos modelos funcionan con NullClaw a traves de OpenRouter o endpoints directos del proveedor.

Probar

nullclaw agent -m "What's 42 * 17?"

Configuracion de canales

NullClaw soporta 17 canales de chat. Elige el que uses.

Telegram

  1. Crea un bot via @BotFather
  2. Copia el token del bot
  3. Obtén tu ID de usuario de Telegram (envia mensaje a @userinfobot)

Configuracion:

{
  "channels": {
    "telegram": {
      "accounts": {
        "main": {
          "bot_token": "123456789:ABCdefGHIjklMNOpqrSTUvwxYZ",
          "allow_from": ["your_telegram_user_id"],
          "reply_in_private": true
        }
      }
    }
  }
}

Comportamiento de la lista de permitidos

allow_from vacio significa denegar todos. Usa ["*"] para permitir a todos, o agrega IDs de usuario especificos para restringir el acceso.

Discord

  1. Ve a discord.com/developers/applications
  2. Crea un bot y copia el token
  3. Habilita MESSAGE CONTENT INTENT en la configuracion del Bot

Configuracion:

{
  "channels": {
    "discord": {
      "accounts": {
        "main": {
          "token": "your-discord-bot-token",
          "guild_id": "your-server-id",
          "allow_from": ["your_user_id"],
          "allow_bots": false
        }
      }
    }
  }
}

Slack

Configuracion:

{
  "channels": {
    "slack": {
      "accounts": {
        "main": {
          "bot_token": "xoxb-your-bot-token",
          "app_token": "xapp-your-app-token",
          "allow_from": ["U1234567890"]
        }
      }
    }
  }
}

Otros canales

CanalClave de configNotas
iMessageimessageSolo macOS
MatrixmatrixRequiere homeserver
WhatsAppwhatsappVia webhook de Meta
SignalsignalRequiere Signal-cli
LinelineLINE Messaging API
WebhookwebhookEndpoint HTTP personalizado
IRCircLibera, OFTC, etc.
Lark/FeishularkEspacio de trabajo ByteDance
DingTalkdingtalkEspacio de trabajo Alibaba
QQqqVia go-cqhttp
OneBotonebotProtocolo universal de bots
EmailemailIMAP/SMTP
MaixCammaixcamHardware Sipeed

Ejemplo de configuracion completa

Aqui tienes un ~/.nullclaw/config.json completo con OpenRouter, Telegram, memoria hibrida y sandboxing:

{
  "default_provider": "openrouter",
  "default_temperature": 0.7,

  "models": {
    "providers": {
      "openrouter": { "api_key": "sk-or-..." }
    }
  },

  "agents": {
    "defaults": {
      "model": { "primary": "anthropic/claude-sonnet-4" },
      "heartbeat": { "every": "30m" }
    }
  },

  "channels": {
    "telegram": {
      "accounts": {
        "main": {
          "bot_token": "123:ABC",
          "allow_from": ["your_user_id"]
        }
      }
    }
  },

  "memory": {
    "backend": "sqlite",
    "auto_save": true,
    "embedding_provider": "openai",
    "vector_weight": 0.7,
    "keyword_weight": 0.3,
    "hygiene_enabled": true
  },

  "gateway": {
    "port": 3000,
    "require_pairing": true,
    "allow_public_bind": false
  },

  "autonomy": {
    "level": "supervised",
    "workspace_only": true,
    "max_actions_per_hour": 20
  },

  "runtime": {
    "kind": "native",
    "docker": {
      "image": "alpine:3.20",
      "network": "none",
      "memory_limit_mb": 512,
      "read_only_rootfs": true
    }
  },

  "security": {
    "sandbox": { "backend": "auto" },
    "resources": { "max_memory_mb": 512, "max_cpu_percent": 80 },
    "audit": { "enabled": true, "retention_days": 90 }
  },

  "tunnel": { "provider": "none" },
  "secrets": { "encrypt": true },
  "identity": { "format": "openclaw" }
}

Sistema de memoria

La memoria de NullClaw esta construida sobre SQLite sin dependencias externas:

CapaImplementacion
Vector DBEmbeddings almacenados como BLOB, busqueda por similitud coseno
Busqueda por palabras claveTablas virtuales FTS5 con puntuacion BM25
Fusion hibridaPesos configurables vector/palabras clave
EmbeddingsOpenAI, URL personalizada, o noop
HigieneArchivado automatico + purga de memorias obsoletas
SnapshotsExportar/importar para migracion

Configuracion:

{
  "memory": {
    "backend": "sqlite",
    "auto_save": true,
    "embedding_provider": "openai",
    "vector_weight": 0.7,
    "keyword_weight": 0.3,
    "hygiene_enabled": true
  }
}

Configura embedding_provider a noop si no quieres pagar por embeddings. La busqueda por palabras clave FTS5 sigue funcionando.

Archivos de identidad

NullClaw soporta dos formatos de identidad:

FormatoArchivosCaso de uso
openclawIDENTITY.md, SOUL.md, USER.mdBasado en Markdown
aieosUn solo archivo JSONPersonas de IA portables

Edita estos en ~/.nullclaw/workspace/ para personalizar la personalidad del bot y su conocimiento sobre ti.

Modelo de seguridad

NullClaw bloquea las cosas en multiples niveles, no solo listas de permitidos a nivel de aplicacion.

Seguridad del gateway

CapaPor defectoQue hace
Vinculacion a localhost127.0.0.1Rechaza exposicion publica
Emparejamiento requeridotrueIntercambio de codigo de 6 digitos por bearer token
Tunel requeridofalseRechaza 0.0.0.0 sin tunel

Para exponer el gateway, configura un tunel:

{
  "tunnel": {
    "provider": "cloudflare"
  }
}

Tuneles soportados: Cloudflare, Tailscale, ngrok o binario personalizado.

Aislamiento con sandbox

NullClaw auto-detecta el mejor backend de sandbox:

BackendPlataformaNivel de seguridad
LandlockLinux 5.13+Nivel de kernel
FirejailLinuxNamespaces
BubblewrapLinuxContenedores ligeros
DockerCualquieraAislamiento completo por contenedor

Configuracion:

{
  "security": {
    "sandbox": { "backend": "auto" }
  }
}

Configura "backend": "docker" para maximo aislamiento.

Secretos encriptados

Las claves API se encriptan con ChaCha20-Poly1305:

{
  "secrets": { "encrypt": true }
}

La clave de encriptacion se almacena localmente en ~/.nullclaw/.

Alcance del workspace

Con workspace_only = true, el bot solo puede acceder a archivos dentro de su workspace. Los intentos de escape via symlink se bloquean mediante canonicalizacion de rutas.

Soporte MCP

NullClaw soporta servidores de Model Context Protocol:

{
  "mcp_servers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/home/user/documents"]
    }
  }
}

Las herramientas MCP se descubren y registran automaticamente. El bot puede usarlas junto con las herramientas integradas.

Tareas programadas

NullClaw tiene un programador cron integrado:

# List scheduled tasks
nullclaw cron list

# Add a recurring task
nullclaw cron add --name "morning" --message "What's on my calendar today?" --cron "0 9 * * *"

# Run a task once
nullclaw cron run <task_id>

# Pause/resume
nullclaw cron pause <task_id>
nullclaw cron resume <task_id>

Las tareas se persisten en JSON y sobreviven a reinicios.

Referencia del CLI

ComandoDescripcion
nullclaw onboard --api-key sk-...Configuracion rapida
nullclaw onboard --interactiveAsistente completo
nullclaw agent -m "..."Mensaje unico
nullclaw agentChat interactivo
nullclaw gatewayIniciar servidor webhook
nullclaw daemonRuntime autonomo completo
nullclaw statusEstado del sistema
nullclaw doctorDiagnosticos
nullclaw channel doctorSalud del canal
nullclaw service installInstalar como servicio del sistema
nullclaw cron list/add/removeGestionar tareas programadas
nullclaw skills list/installGestionar packs de habilidades
nullclaw hardware scanDetectar perifericos
nullclaw migrate openclawImportar desde OpenClaw

Despliegue en VPS

Para uso en produccion, aqui tienes una configuracion completa de VPS.

Requisitos del servidor

EspecificacionMinimoFunciona con
CPUCualquieraCore edge de 0.8 GHz
RAM256 MB1 GB+ recomendado
Almacenamiento1 GB10 GB para logs
OSLinuxUbuntu 22.04+

NullClaw corre en placas de $5. Lo probe en una Raspberry Pi Zero 2 W y funciono sin problemas.

Despliegue rapido

ssh root@YOUR_SERVER_IP

# Update system
apt update && apt upgrade -y

# Install Zig
curl -L https://ziglang.org/download/0.15.2/zig-linux-x86_64-0.15.2.tar.xz | tar -xJ
sudo mv zig-linux-x86_64-0.15.2 /usr/local/zig
sudo ln -s /usr/local/zig/zig /usr/local/bin/zig

# Clone and build
git clone https://github.com/nullclaw/nullclaw.git
cd nullclaw
zig build -Doptimize=ReleaseSmall

# Install binary
sudo cp zig-out/bin/nullclaw /usr/local/bin/

# Initialize
nullclaw onboard --interactive

# Edit config
nano ~/.nullclaw/config.json

# Start daemon
nullclaw daemon

Servicio systemd

Para inicio automatico:

nullclaw service install
nullclaw service start
nullclaw service status

O crealo manualmente:

[Unit]
Description=NullClaw AI Assistant
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/nullclaw daemon
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

Guarda en /etc/systemd/system/nullclaw.service, luego:

systemctl daemon-reload
systemctl enable nullclaw
systemctl start nullclaw

Ejecucion en hardware edge

El bajo consumo de recursos de NullClaw lo hace ideal para despliegue edge:

HardwareRAMEstado
Raspberry Pi Zero 2 W512 MB✅ Funciona
Raspberry Pi 42-8 GB✅ Funciona
Orange Pi Zero256 MB✅ Funciona
SBC de $5 en AliExpress256 MB✅ Funciona
MaixCam (RISC-V)256 MB✅ Soportado

Compilar para ARM desde x86:

zig build -Dtarget=aarch64-linux -Doptimize=ReleaseSmall

API del Gateway

EndpointMetodoAuthDescripcion
/healthGETNingunaChequeo de salud
/pairPOSTX-Pairing-CodeIntercambiar codigo por token
/webhookPOSTBearer tokenEnviar mensaje
/whatsappGETParametros de queryVerificacion de webhook de Meta
/whatsappPOSTFirma de MetaWhatsApp entrante

Flujo de emparejamiento:

# Start gateway (shows pairing code)
nullclaw gateway

# Exchange code for token
curl -X POST http://127.0.0.1:3000/pair \
  -H "X-Pairing-Code: 123456"

# Use token for requests
curl -X POST http://127.0.0.1:3000/webhook \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"message": "Hello, nullclaw!"}'

NullClaw vs ZeroClaw vs nanobot

Uso los tres, asi que aqui va una comparacion directa:

AspectoNullClaw 🟠ZeroClaw 🦀nanobot 🐍
LenguajeZigRustPython
Uso de RAM~1 MB< 5 MB~100 MB
Arranque< 2 ms< 10 ms> 2 s
Tamaño del binario678 KB3.4 MBN/A
Cantidad de canales178+9
Cantidad de proveedores22+22+13+
MemoriaHibrida SQLiteHibrida SQLiteBasada en archivos
SeguridadSandbox + emparejamientoEmparejamiento + sandboxListas de permitidos
Hardware minimoPlaca de $5Placa de $10SBC de $50
Metodo de instalacionzig buildcargo installpip install

NullClaw es la opcion mas ligera aqui. ZeroClaw es mas facil de configurar si ya estas en el ecosistema Rust. nanobot tiene el soporte de canales mas amplio.

Preguntas frecuentes

¿Cuanto cuesta ejecutar NullClaw?

Hardware: $5 por una placa ARM barata, o $0 si ya tienes un VPS. Los costos de API dependen de tu proveedor — espera $5-50/mes para uso personal.

¿Puedo ejecutar NullClaw sin costos de API?

Si. Configura Ollama como tu proveedor y apuntalo a un modelo local. Necesitas hardware que pueda ejecutar inferencia, pero no hay facturas de API.

¿NullClaw funciona en una Raspberry Pi Zero?

Si. La Pi Zero 2 W de 512 MB ejecuta NullClaw sin problemas. La Pi Zero original (un solo nucleo) podria tener dificultades con la inferencia pero el asistente en si funciona.

¿Pueden varias personas usar una instancia de NullClaw?

Si. Agrega multiples IDs de usuario a allow_from. Cada persona obtiene su propio contexto de conversacion.

¿Cual es la diferencia entre gateway y daemon?

nullclaw gateway inicia solo el servidor webhook. nullclaw daemon inicia el runtime autonomo completo incluyendo todos los canales, tareas de heartbeat y el programador.

¿Puedo migrar de OpenClaw a NullClaw?

Si. NullClaw tiene un comando de migracion integrado:

nullclaw migrate openclaw --dry-run
nullclaw migrate openclaw

¿Como agrego un nuevo canal que no esta soportado?

Implementa la interfaz vtable Channel en src/channels/ y envia un PR. La arquitectura esta diseñada para extensiones.

Si estas comparando aislamiento basado en contenedores, revisa nuestra guia de despliegue de NanoClaw — usa contenedores Docker con el Agent SDK de Claude. Para una alternativa basada en Python con guias de configuracion de MiniMax y GLM-5, revisa la guia de configuracion de nanobot.

Si quieres explorar otras herramientas de codificacion con IA, nuestra comparacion de herramientas de codificacion con IA cubre el panorama actual. Para conceptos basicos de MCP que funcionan en todos los asistentes, revisa la introduccion a MCP para principiantes.

Este articulo tambien esta disponible en ingles: NullClaw Deploy Guide