Come eseguire un agente AI in locale senza compromettere le tue chiavi SSH
Quando esegui un'utilità come Claude Code, OpenCode o qualsiasi altro agente autonomo direttamente nella console, un leggero senso di disagio ti assale. Stiamo concedendo a un modello linguistico di terze parti il diritto di eseguire comandi nel terminale, leggere file e modificare codice sorgente. Nel frattempo, il processo mantiene gli stessi diritti del tuo utente locale per impostazione predefinita. Il modello potrebbe accidentalmente leggere il file .env, curiosare in ~/.ssh/id_rsa o scaricare configurazioni dalla tua home directory.
Di solito le persone avviano container Docker o macchine virtuali per la sicurezza. Ma questo è scomodo per il lavoro quotidiano. I container impiegano un'eternità ad avviarsi, consumano gigabyte di RAM e richiedono una configurazione costante del mount delle cartelle.
Il progetto nono offre una soluzione diversa. È stato creato dal team che ha precedentemente lanciato Sigstore — uno standard di firma digitale dei pacchetti utilizzato da PyPI, npm e Homebrew.
Isolamento dei processi in frazioni di secondo
Lo strumento crea una sandbox per qualsiasi processo AI senza utilizzare container, daemon in background o dischi virtuali. Devi semplicemente avvolgere il lancio del tuo agente in un comando CLI e il processo finisce immediatamente in un ambiente limitato.
Il codice del progetto è scritto in Rust. Sono supportati macOS, Linux e Windows tramite WSL2.
Ecco come appare il lancio di un agente:
nono search opencode
nono run --profile nolabs-ai/opencode -- opencode
Dopo questo comando, opencode può solo leggere e modificare file nella cartella corrente. Tutte le altre directory su disco, le chiavi SSH private e le variabili di sistema globali diventano completamente invisibili al processo.
Lavorare con i profili di sicurezza
Le impostazioni di accesso sono archiviate in un registro speciale all'indirizzo registry.nono.sh. Esistono profili già pronti per gli strumenti più diffusi. Un profilo descrive le regole di accesso ai file, gli host di rete consentiti e le opzioni di inoltro dei token.
Se un profilo già pronto dal registro non ti soddisfa, è facile personalizzarlo:
nono profile init opencode --extends nolabs-ai/opencode
nono run --profile opencode -- opencode
Il comando genererà un file JSON con una configurazione dichiarativa. Puoi modificarlo, salvarlo nel Git della tua azienda e utilizzarlo in tutto il team.
Isolamento delle utility esterne e proxy dei token
La parte più interessante di nono è come il progetto funziona con gli strumenti esterni. Gli agenti raramente lavorano in un vuoto isolato. Di solito chiamano utility come git, gh, kubectl o avviano server MCP.
Le sandbox standard danno all'agente l'accesso completo alla rete e alle chiavi, oppure tagliano tutto. In nono, le utility vengono avviate in sandbox figlie separate con le proprie policy.
Il flusso di lavoro funziona così:
- L'agente vuole eseguire
git, ma il processo figlio ottiene solo accesso alla directory del repository e ai file di servizio di Git. - L'agente richiede di lavorare con
gh, ma il token GitHub non raggiunge affatto la memoria dell'agente. - Le richieste passano attraverso un server proxy integrato dove puoi configurare il filtraggio a livello di metodo HTTP.
- Puoi consentire all'agente di leggere solo l'elenco delle issue tramite richieste GET all'API, bloccando l'eliminazione dei repository e i push sul branch principale.
La policy di accesso è fissata nel file di configurazione. L'agente non può modificare queste regole dall'interno né estrarre le credenziali di autorizzazione dalla memoria.
Esempio di configurazione con restrizione dell'accesso all'API 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/**" }
]
}
}
]
}
}
}
}
}
}
}
Librerie pronte all'uso per diversi linguaggi
Gli sviluppatori non hanno limitato il progetto a un'utilità CLI. Se stai scrivendo il tuo agente AI o un framework di servizio, puoi incorporare la restrizione dei permessi direttamente nel codice dell'applicazione.
Nel repository sono disponibili binding FFI già pronti:
- Python (
nono-py) - TypeScript (
nono-ts) - Go (
nono-go) - Rust (libreria nativa)
Avvio rapido
L'installazione dell'utilità su macOS tramite Homebrew richiede un solo comando:
brew install nono
Per le altre piattaforme, è disponibile uno script di installazione standard:
curl -fsSL https://nono.sh/install.sh | sh
Il progetto è distribuito con licenza Apache-2.0. Il codice è aperto e il repository ha già oltre 3.000 stelle su GitHub.
Vale la pena installarlo
Se usi quotidianamente agenti AI da console come Claude Code, OpenCode o sviluppi i tuoi strumenti basati su MCP, dai un'occhiata a nono. È un modo conveniente per smettere di preoccuparti della sicurezza delle chiavi SSH e dell'accesso al cloud, senza sacrificare la velocità del terminale.
Progetti correlati