Cómo ejecutar un agente de IA localmente sin filtrar tus claves SSH
Cuando ejecutas una utilidad como Claude Code, OpenCode o cualquier otro agente autónomo directamente en la consola, una ligera sensación de inquietud se apodera de ti. Estamos dando a un modelo de lenguaje de terceros el derecho a ejecutar comandos en la terminal, leer archivos y modificar código fuente. Mientras tanto, el proceso conserva los mismos derechos que tu usuario local de forma predeterminada. El modelo puede accidentalmente leer el archivo .env, curiosear en ~/.ssh/id_rsa o descargar configuraciones de tu directorio home.
Normalmente, la gente levanta contenedores Docker o máquinas virtuales por seguridad. Pero eso es inconveniente para el trabajo diario. Los contenedores tardan una eternidad en iniciar, consumen gigabytes de RAM y requieren configuración constante de montaje de carpetas.
El proyecto nono ofrece una solución diferente. Fue creado por el equipo que anteriormente lanzó Sigstore — un estándar de firma digital de paquetes utilizado por PyPI, npm y Homebrew.
Aislamiento de procesos en fracciones de segundo
La herramienta crea un sandbox para cualquier proceso de IA sin usar contenedores, demonios en segundo plano ni discos virtuales. Simplemente envuelves el lanzamiento de tu agente en un comando CLI, y el proceso termina inmediatamente en un entorno restringido.
El código del proyecto está escrito en Rust. Se soporta macOS, Linux y Windows a través de WSL2.
Así es como se ve lanzar un agente:
nono search opencode
nono run --profile nolabs-ai/opencode -- opencode
Después de este comando, opencode solo puede leer y editar archivos en la carpeta actual. Todos los demás directorios en disco, claves SSH privadas y variables globales del sistema se vuelven completamente invisibles para el proceso.
Trabajando con perfiles de seguridad
La configuración de acceso se almacena en un registro especial en registry.nono.sh. Existen perfiles listos para usar para herramientas populares. Un perfil describe las reglas de acceso a archivos, hosts de red permitidos y opciones de reenvío de tokens.
Si un perfil listo para usar del registro no te conviene, es fácil personalizarlo:
nono profile init opencode --extends nolabs-ai/opencode
nono run --profile opencode -- opencode
El comando generará un archivo JSON con configuración declarativa. Puedes editarlo, guardarlo en el Git de tu empresa y usarlo en todo el equipo.
Aislamiento de utilidades externas y proxy de tokens
La parte más interesante de nono es cómo el proyecto trabaja con herramientas externas. Los agentes rara vez trabajan en un vacío aislado. Por lo general, llaman utilidades como git, gh, kubectl o lanzan servidores MCP.
Los sandboxes estándar le dan al agente acceso completo a la red y claves, o cortan todo. En nono, las utilidades se lanzan en sandbox hijos separados con sus propias políticas.
El flujo de trabajo se ve así:
- El agente quiere ejecutar
git, pero el proceso hijo solo obtiene acceso al directorio del repositorio y archivos de servicio de Git. - El agente solicita trabajar con
gh, pero el token raw de GitHub no llega en absoluto a la memoria del agente. - Las solicitudes pasan a través de un servidor proxy integrado donde puedes configurar el filtrado a nivel de método HTTP.
- Puedes permitir que el agente solo lea la lista de issues a través de solicitudes GET a la API, bloqueando la eliminación de repositorios y los push a la rama principal.
La política de acceso se fija en el archivo de configuración. El agente no puede cambiar estas reglas desde dentro ni extraer credenciales de autorización de la memoria.
Ejemplo de configuración con restricción de acceso a la API de GitHub:
{
"command_policies": {
"credentials": {
"github-api": {
"type": "proxy",
"upstream": "https://api.github.com",
"credential_key": "keyring://gh:github.com/example?decode=go-keyring",
"env_var": "GH_TOKEN",
"inject_header": "Authorization",
"credential_format": "Bearer {}"
}
},
"commands": {
"gh": {
"from": {
"session": {
"sandbox": {
"fs_read": ["."],
"credentials": [
{
"name": "github-api",
"endpoint_policy": {
"default": "deny",
"allow": [
{ "method": "GET", "path": "/repos/nolabs-ai/nono/issues/**" }
]
}
}
]
}
}
}
}
}
}
}
Bibliotecas listas para usar en diferentes lenguajes
Los desarrolladores no limitaron el proyecto a una utilidad CLI. Si estás escribiendo tu propio agente de IA o framework de servicios, puedes incrustar la restricción de permisos directamente en el código de la aplicación.
El repositorio tiene enlaces FFI listos para usar:
- Python (
nono-py) - TypeScript (
nono-ts) - Go (
nono-go) - Rust (biblioteca nativa)
Inicio rápido
Instalar la utilidad en macOS a través de Homebrew toma un comando:
brew install nono
Para otras plataformas, hay disponible un script de instalación estándar:
curl -fsSL https://nono.sh/install.sh | sh
El proyecto se distribuye bajo la licencia Apache-2.0. El código es abierto y el repositorio ya tiene más de 3,000 estrellas en GitHub.
¿Vale la pena instalar?
Si usas agentes de IA de consola como Claude Code, OpenCode a diario, o desarrollas tus propias herramientas basadas en MCP, échale un vistazo a nono. Es una forma conveniente de dejar de preocuparse por la seguridad de las claves SSH y el acceso a la nube, sin sacrificar la velocidad de la terminal.
Proyectos relacionados