# Instrucciones para el agente: Nehemiah: prepara máquinas Linux para tareas de agentes

Pega este texto a tu agente (Claude Code, Codex, OpenCode, Hermes o el que uses) y dile «ayúdame a montarlo». Son los pasos para ponerlo en marcha; el porqué de cada pieza está en la guía completa.

- Dificultad: avanzado
- Proyecto: https://github.com/boringcomputers/nehemiah (licencia Apache-2.0)
- Guía completa: https://lab.wisd.ai/hub/boring-computers-microvm

---

## Para el agente: cómo acompañar al usuario

1. Pregunta primero para qué lo quiere. Si su objetivo no necesita algún paso, sáltalo.
2. Antes de instalar, comprueba lo que ya tiene (versiones, claves, sistema operativo).
3. Avanza un paso cada vez: explica en una frase qué vas a hacer y deja que el usuario lo ejecute o lo apruebe.
4. Tras cada paso, comprueba que funcionó antes de seguir. Si falla, para y explica el error.
5. No inventes comandos ni opciones: si la documentación del proyecto contradice estos pasos, manda la documentación.
6. Al terminar, haz una prueba real con el objetivo del usuario y dile dónde profundizar.

---

## Pasos de configuración

### Paso 1: revisa el aprovisionamiento actual

Obtén el repositorio y abre el [procedimiento de host administrado](https://github.com/boringcomputers/nehemiah/blob/main/infra/latitude/README.md). Esta ruta requiere un operador autorizado, acceso al plano de control, un servidor físico de Latitude compatible y una versión de release firmada exacta; no es un instalador genérico para cualquier VPS. Los scripts antiguos `infra/setup.sh` e `infra/local/setup-local.sh` dejaron de estar soportados; no los uses como atajo.

### Paso 2: prepara un host de ensayo

Desde la raíz del repositorio, el procedimiento oficial prepara una configuración privada fuera del código:

```sh
install -d -m 0700 "${XDG_CONFIG_HOME:-$HOME/.config}/nehemiah"
install -m 0600 infra/latitude/managed-host.env.example \
  "${XDG_CONFIG_HOME:-$HOME/.config}/nehemiah/latitude-host.env"
```

El operador debe completar todos sus campos: versión exacta firmada y clave pública Minisign, identidad y capacidad del host, imagen OS aprobada, concesión de alta de un solo uso, WireGuard y telemetría. Sin esos datos no hay una instalación genérica reproducible. La clave de Latitude se guarda aparte con modo 0600 según el procedimiento. Antes de crear recursos, ensaya la generación sin peticiones al proveedor:

```sh
infra/latitude/provision.sh \
  --config "${XDG_CONFIG_HOME:-$HOME/.config}/nehemiah/latitude-host.env" \
  --output "${XDG_CONFIG_HOME:-$HOME/.config}/nehemiah/latitude-user-data.yaml" \
  --render-only
```

Ese YAML contiene secretos recuperables: revísalo localmente. Una vez completados los identificadores `LATITUDE_PROJECT`, `LATITUDE_SSH_KEY`, `LATITUDE_PLAN`, `LATITUDE_SITE` y `LATITUDE_HOSTNAME` con el operador, el comando oficial de aprovisionamiento es:

```sh
infra/latitude/provision.sh \
  --config "${XDG_CONFIG_HOME:-$HOME/.config}/nehemiah/latitude-host.env"
```

Crea un servidor facturado por horas. Completa las comprobaciones canario de la sección posterior del procedimiento antes de admitir trabajo. La URL MCP debe corresponder al servicio accesible preparado; `localhost` solo vale si el cliente está en ese mismo equipo o usa un túnel local.

### Paso 3: conecta MCP

Comprueba Node.js ≥20 y npm/npx en la máquina del cliente MCP, según [packages/mcp/package.json](https://github.com/boringcomputers/nehemiah/blob/main/packages/mcp/package.json). Con el servicio de ensayo (daemon) disponible, el README publica:

```json
{
  "mcpServers": {
    "nehemiah": {
      "command": "npx",
      "args": ["-y", "nehemiah-mcp"],
      "env": { "NEHEMIAH_URL": "http://localhost:8080" }
    }
  }
}
```

Ajusta la URL al host preparado y sigue la autenticación documentada.

## Comprobación

Crea una máquina de prueba, comprueba terminal o escritorio y recupera un archivo. Confirma después la caducidad y qué volúmenes siguen existiendo.

## Si algo falla

Si el host no arranca, revisa el procedimiento de archivos firmados y los requisitos de virtualización. Si el cliente no conecta, confirma la URL y la disponibilidad del daemon.

Consulta el [README oficial](https://github.com/boringcomputers/nehemiah#readme) para el procedimiento completo y los cambios de versión.
