Guida - AI & Automazione

Come eseguire NanoClaw self-hosted 24/7 su un Mac mini dedicato

NanoClaw è un assistente AI open source (MIT, oltre 30k stelle) che ti risponde da WhatsApp, Telegram, Discord, Slack, iMessage e altro, ed esegue ogni sessione agente nel proprio container Docker, così un agente vittima di prompt injection non ha nulla da rubare e nessun posto dove andare. Un Mac mini dedicato gli offre una casa Apple Silicon always-on con root completo, SSH e VNC, da $85/mese.

30 min di lettura Aggiornato il 28 settembre 2026

1. Perché eseguire NanoClaw su un Mac mini dedicato?

NanoClaw risponde solo finché il suo host è acceso e connesso, il quickstart lo dice chiaramente, il che esclude un laptop che va in stop. Ha bisogno di una macchina Mac o Linux con almeno 4 GB di RAM più Docker (Docker Desktop su macOS), e la sua descrizione su GitHub lo posiziona come un'alternativa leggera a OpenClaw che gira in container per motivi di sicurezza. Un VPS Linux condiviso può costare meno di un Mac mini, quindi sii chiaro su cosa stai comprando: un Mac Apple Silicon fisico dedicato 1:1 che nessun altro condivide, l'unica piattaforma su cui funziona il backend iMessage locale di NanoClaw, una vera sessione desktop per Docker Desktop e una macchina che puoi usare anche per build Xcode o modelli locali.

Caratteristica VPS cloud (istanza condivisa) Mac mini (MyRemoteMac)
Costo mensile Varia in base alla taglia; le istanze dedicate costano di più $85/mese (M4) o $149/mese (M6), fisso, 1 Gbps inclusi
Hardware CPU e RAM condivise e virtualizzate (NanoClaw elenca le VM Google Compute Engine come non supportate) Mac Apple Silicon fisico dedicato 1:1
Runtime container Docker Engine su Linux Docker Desktop for Mac (stessi container Linux per sessione)
iMessage (backend locale) Impossibile (solo macOS) Supportato su un Mac con accesso a iMessage
Accesso SSH Root completo, SSH, VNC, VPN WireGuard
Uptime Dipende dal provider SLA 99,9%

Cos'è NanoClaw: un unico processo host Node.js instrada i messaggi dalle tue app di chat a container Docker per sessione, dove gli agenti girano su Claude Code tramite il Claude Agent SDK di Anthropic. Non ci sono file di configurazione oltre a .env e un database SQLite: lo personalizzi chiedendo a Claude Code di modificare il codice nel tuo checkout. Versione al momento della stesura: v2.4.0 (23 settembre 2026), creato da Gavriel Cohen e mantenuto da NanoCo.

2. Prerequisiti

Prima di iniziare, assicurati di avere quanto segue. Tutto ciò che trovi qui sotto proviene dal README ufficiale di NanoClaw, dalle pagine di quickstart e installazione, più i termini di Docker e Anthropic per i fatti relativi alla piattaforma:

  • Un Mac mini dedicato di MyRemoteMac, M4 da $85/mese (16 GB / 256 GB) o Mac mini M6 da $149/mese. NanoClaw richiede almeno 4 GB di RAM (l'installer avverte sotto i 3.700 MB); ogni piano supera quella soglia con ampio margine.
  • Accesso SSH e VNC (entrambi inclusi nel tuo abbonamento). VNC serve una sola volta: Docker Desktop è un'applicazione con interfaccia grafica e deve essere avviata dal desktop la prima volta.
  • Docker Desktop for Mac, in esecuzione ogni volta che NanoClaw si avvia. Termini di Docker: gratuito per uso personale, istruzione, open source non commerciale e aziende con meno di 250 dipendenti e meno di 10 milioni di dollari di fatturato annuo; le aziende più grandi e gli enti governativi hanno bisogno di un abbonamento a pagamento.
  • Homebrew, git, Node.js 22+ e pnpm 10. git deve essere presente; l'installer propone di installare Homebrew e installa da solo Node e pnpm se mancano (Node 20 non è supportato dalla 2.3.0).
  • La CLI Claude Code sul Mac. Non è opzionale: ogni skill /add-<channel>, /customize, /debug, /update-nanoclaw e il recupero errori dell'installer girano dentro Claude Code dalla root del progetto.
  • Una chiave API Anthropic (sk-ant-api…) da console.anthropic.com, fatturata per token. Il wizard propone anche l'accesso con un abbonamento Claude, ma i termini legali di Anthropic stabiliscono che OAuth è destinato all'uso ordinario di Claude Code e delle app native Anthropic, e che i prodotti costruiti sull'Agent SDK devono usare l'autenticazione con chiave API, quindi per un deployment aziendale o always-on, usa una chiave.
  • Un account di messaggistica su Telegram, WhatsApp o Discord per collegare il tuo agente (il canale terminale integrato non richiede nulla).

3. Passo 1: Connettiti via SSH, installa Docker Desktop e Claude Code

Per prima cosa, connettiti al tuo Mac mini via SSH con le credenziali della tua dashboard MyRemoteMac e verifica i due strumenti che l'installer si aspetta di trovare. L'installer di NanoClaw installerà Homebrew, Node e Docker al posto tuo, ma preinstallare Docker Desktop ti permette di avviarlo e verificare il daemon prima che il wizard ne abbia bisogno.

Connettiti via SSH

# Connect to your Mac mini
ssh admin@your-server-ip

# Verify you're on Apple Silicon
uname -m
# Expected output: arm64

# git is required (not auto-installed); Homebrew is offered by the installer if missing
git --version
brew --version

Installa e avvia Docker Desktop for Mac

Questo è esattamente il comando che lo script setup/install-docker.sh di NanoClaw esegue su macOS quando docker manca. Docker Desktop è un'applicazione desktop: avviala una volta dal desktop del Mac via VNC, poi conferma da SSH che il daemon risponde. Se non è in esecuzione quando NanoClaw si avvia, l'host termina con "FATAL: Container runtime failed to start".

# Install Docker Desktop for Mac (the same Homebrew cask NanoClaw's installer uses)
brew install --cask docker

# Start Docker Desktop, a GUI app: do the first launch from the desktop (VNC)
open -a Docker

# The daemon must answer before NanoClaw can start
docker info

Installa Claude Code sull'host

Lo script setup/install-claude.sh di NanoClaw esegue lo stesso comando quando claude manca. D'ora in poi userai Claude Code per ogni canale, provider e aggiornamento:

# Official Claude Code installer (the command NanoClaw's setup/install-claude.sh runs)
curl -fsSL https://claude.ai/install.sh | /bin/bash
claude --version

4. Passo 2: Installa NanoClaw e configura la chiave API Claude

NanoClaw non è un pacchetto npm da installare globalmente: cloni il repository ed esegui un installer in un colpo solo che trasforma il checkout nella tua installazione. Lascia poi la cartella dov'è, la label launchd, il nome dell'immagine e lo slug di installazione derivano dal suo percorso. Prevedi da 30 a 60 minuti; il wizard è interattivo.

Clona ed esegui l'installer

# Clone the canonical repo (nanocoai: the old qwibitai URL redirects here)
cd ~
git clone https://github.com/nanocoai/nanoclaw.git
cd nanoclaw

# One-shot installer: Node 22 + pnpm + Docker if missing, OneCLI gateway,
# credential registration, sandbox image, launchd service, optional channel
bash nanoclaw.sh

Il wizard ti guida attraverso le scelte documentate: Standard setup → Fresh agent → immagine sandbox: scarica l'immagine hardened precompilata costruita da Echo (richiede un accesso NanoClaw gratuito, circa 800 MB da un'unica regione USA) oppure costruiscila in locale (3–10 minuti, nessun account, non contatta nulla, può essere più veloce dall'Europa o dall'Asia) → runtime AI: Claude → incolla la tua chiave API Anthropic (consigliato; viene proposto anche "Sign in with my Claude subscription", vedi la nota nei Prerequisiti) → Skip for now per il canale di messaggistica. L'installer salva la tua chiave nell'Agent Vault di OneCLI, un gateway di credenziali obbligatorio dalla 2.4.0: i container degli agenti non detengono mai chiavi API in chiaro.

Alternativa via script e primo messaggio

Se preferisci un'esecuzione non interattiva, la pagina di installazione documenta variabili di setup che rispondono in anticipo alle domande. In entrambi i casi, fai un test con il canale terminale integrato dalla cartella del progetto, la prima risposta può richiedere un po' di tempo mentre il container si avvia:

# Scripted setup (documented alternative to the wizard)
pnpm install
pnpm run setup:auto
# Pre-answer prompts with NANOCLAW_AGENT_PROVIDER, NANOCLAW_CHANNELS,
# NANOCLAW_HARDENED_IMAGE, NANOCLAW_SKIP; NANOCLAW_NO_DIAGNOSTICS=1 disables setup diagnostics

# First message through the built-in CLI channel (no credentials needed)
pnpm run chat "hello, who are you?"

# Re-run individual steps later: rebuild the image, reinstall the service, health check
pnpm run setup -- --step container
pnpm run setup -- --step service
pnpm run setup -- --step verify

Scegli il modello e imposta le basi in .env

Le impostazioni valide per tutta l'installazione vivono in .env nella root del progetto (creato con permessi 0600 dal setup); le impostazioni per gruppo di agenti vivono nel database e si modificano con la CLI di amministrazione ncl. Dalla 2.4.0, i gruppi Claude senza modello impostato usano Opus 5.5 (claude-opus-5-5, $4 in input / $20 in output per milione di token); Claude Sonnet 5 costa $2 / $10, quindi fissalo per un assistente personale se il costo conta. Gli altri provider sono per gruppo di agenti: /add-codex (OpenAI) e /add-opencode (OpenRouter, OpenAI, Google, DeepSeek). Modelli locali: il README elenca /add-ollama-provider, ma la pagina dei provider su docs.nanoclaw.dev afferma che non è un sostituto drop-in supportato sul main attuale, trattalo come un esperimento, non come un modo per sostituire Claude.

# Install-wide model for every Claude group with no model set
# (aliases sonnet | opus | haiku, or a full id such as claude-sonnet-5)
echo 'NANOCLAW_DEFAULT_MODEL=sonnet' >> .env

# Timezone for scheduled tasks and timestamps (IANA name)
echo 'TZ=Europe/Paris' >> .env

# .env is read only by the host process: restart it after edits
launchctl kickstart -k gui/$(id -u)/com.nanoclaw-v2-<slug>

# Per-group overrides via the ncl admin CLI (symlinked at ~/.local/bin/ncl by setup)
ncl groups config update --id <group-id> --model opus
ncl groups config update --id <group-id> --timezone Europe/Lisbon
# Switch a group to another provider (takes effect on the next container spawn)
ncl groups config update --id <group-id> --provider opencode

5. Passo 3: Collega i canali di messaggistica

I canali non sono inclusi di serie: ciascuno viene installato su richiesta come skill di Claude Code eseguita dalla root del progetto, che aggiunge l'adapter al tuo checkout. Telegram è il più rapido da far funzionare, crea un bot con @BotFather, incolla il token quando la skill lo chiede (viene salvato come TELEGRAM_BOT_TOKEN in .env), poi invia al bot il codice di pairing monouso a 6 cifre come messaggio contenente solo le cifre. La modalità polling significa nessun URL pubblico, webhook o porta aperta:

# Step 1: Open Telegram and search for @BotFather
# Step 2: Send /newbot and follow the prompts
# Step 3: Copy the token

# Every channel is a Claude Code skill run from the project root
cd ~/nanoclaw && claude
/add-telegram
# Paste the token when asked (stored as TELEGRAM_BOT_TOKEN in .env).
# The wizard prints a one-time 6-digit pairing code: send exactly those digits to the bot.

# Groups: BotFather -> /mybots -> Bot Settings -> Group Privacy -> Turn off

Collega WhatsApp

L'adapter nativo parla il protocollo WhatsApp Web (Baileys, non l'API ufficiale di Meta): scansiona il codice QR, che ruota circa ogni 60 secondi, oppure inserisci il codice di pairing a 8 caratteri sotto WhatsApp → Dispositivi collegati. In modalità numero condiviso l'assistente risponde nella tua chat personale "Tu"; per un numero dedicato usa una SIM separata e imposta ASSISTANT_HAS_OWN_NUMBER=true. Se la conformità è importante, usa invece /add-whatsapp-cloud (Meta Cloud API):

claude
/add-whatsapp
# Scan the QR (rotates ~60 s) or enter the 8-character code in WhatsApp -> Linked Devices
# Auth state persists in store/auth/: keep that folder private

# Dedicated number (separate SIM) instead of your own chat:
# ASSISTANT_HAS_OWN_NUMBER=true in .env

# Meta's official Cloud API instead of the Web-protocol adapter:
# /add-whatsapp-cloud

Collega Discord, iMessage e gli altri

Discord usa un token bot e un listener Gateway (nessun URL pubblico). Il catalogo copre anche Slack, Mattermost (nuovo nella 2.4.0), Signal, iMessage, Microsoft Teams, Google Chat, Matrix, Webex, WeChat, GitHub, Linear, Delta Chat, Emacs, email via Resend e un vero numero di telefono via Dial. Il backend iMessage locale è la funzione esclusiva di macOS: il Mac mini deve avere effettuato l'accesso a iMessage con un Apple ID e il binario node esatto ha bisogno dell'Accesso completo al disco (il backend hosted Photon non richiede né l'uno né l'altro). Rieseguire una skill /add-<channel> in seguito aggiorna l'adapter; /manage-channels collega ogni conversazione a un gruppo di agenti:

claude
/add-discord
# others: /add-slack /add-imessage /add-signal /add-teams /add-mattermost /add-matrix ...

# Wire conversations to agent groups
/manage-channels

# Silent agent? Check why messages were dropped (no_agent_wired, no_agent_engaged, ...)
ncl dropped-messages list
ncl sessions list

6. Passo 4: Esegui 24/7 con launchd, poi aggiorna in sicurezza

Per il funzionamento 24/7 NanoClaw deve avviarsi all'avvio del sistema e riavviarsi in caso di errore. L'installer se n'è già occupato: il suo passaggio di servizio scrive un LaunchAgent launchd per utente chiamato com.nanoclaw-v2-<slug> (slug = primi 8 caratteri esadecimali dello SHA-1 del percorso del progetto; i tutorial più vecchi mostrano ancora la label pre-2.3.0 com.nanoclaw) con RunAtLoad e KeepAlive, che registra i log in logs/nanoclaw.log e logs/nanoclaw.error.log. Il plist imposta solo PATH e HOME e non carica .env, quindi riavvia l'host dopo ogni modifica a .env.

Verifica e gestisci il servizio

# Is the LaunchAgent loaded? Find your label (com.nanoclaw-v2-<slug>)
launchctl list | grep nanoclaw
ls ~/Library/LaunchAgents/ | grep nanoclaw

# Health: host + connected adapters (ncl status is new in 2.4.0)
ncl status
pnpm run setup -- --step verify
docker ps --filter label=nanoclaw-install

# Live logs
tail -f logs/nanoclaw.log logs/nanoclaw.error.log

# Restart (also after every .env edit) / stop / start / reinstall the service
launchctl kickstart -k gui/$(id -u)/com.nanoclaw-v2-<slug>
launchctl unload ~/Library/LaunchAgents/com.nanoclaw-v2-<slug>.plist
launchctl load ~/Library/LaunchAgents/com.nanoclaw-v2-<slug>.plist
pnpm run setup -- --step service   # regenerates the plist (wipes manual edits)

Sopravvivere a un riavvio su un Mac mini headless

Questa parte è la nostra raccomandazione operativa, costruita a partire dalla documentazione di Apple e di Docker, la documentazione di NanoClaw non copre i Mac headless. Il LaunchAgent vive nella tua sessione utente e Docker Desktop è un'app con interfaccia grafica, quindi dopo un riavvio non gira nulla finché qualcuno non effettua il login. Abilita il login automatico per lo stesso account utente che ha eseguito bash nanoclaw.sh, il LaunchAgent e l'impostazione di avvio al login di Docker Desktop sono entrambi per utente, quindi far accedere automaticamente un altro account lascerebbe il servizio non caricato e Docker fermo (Apple: il login automatico non è disponibile con FileVault attivo). Ricorda che chiunque riavvii il Mac atterra in quella sessione, il che è accettabile solo su un Mac mini dedicato raggiungibile esclusivamente via SSH, VNC e WireGuard; se preferisci un account non amministratore, installa NanoClaw sotto quell'account, sapendo che installare Homebrew ed eseguire sudo pmset richiedono comunque un amministratore (Docker Desktop in sé gira come utente non privilegiato e chiede l'accesso privilegiato solo per funzioni specifiche). Poi attiva l'impostazione "Start Docker Desktop when you sign in to your computer" di Docker Desktop e disattiva lo sleep:

# 1. System Settings > Users & Groups > Automatic login = the user that ran bash nanoclaw.sh
#    (over VNC; not available with FileVault on; LaunchAgent + Docker Desktop are per-user)
# 2. Docker Desktop > Settings > General > "Start Docker Desktop when you sign in to your computer"

# 3. Keep the Mac awake (same as in our OpenClaw guide)
sudo pmset -a sleep 0 disksleep 0 standby 0 powernap 0

# 4. Reboot-test, then log back in over SSH and check
sudo reboot
docker info
launchctl list | grep nanoclaw

Aggiorna NanoClaw (mai git pull)

La pagina di aggiornamento è esplicita: "Do not update with a raw git pull." NanoClaw registra ogni aggiornamento autorizzato in data/upgrade-state.json e un tripwire all'avvio rifiuta di partire in caso di discrepanza. L'unico percorso supportato è /update-nanoclaw in Claude Code: crea un branch e un tag di backup, prepara l'upstream in un worktree separato, valida (install, build, test), ferma il servizio e i container, fa uno snapshot di .env, data, groups e store, effettua il passaggio, riavvia ed esegue un health check. È bloccato con un working tree sporco o quando NanoClaw non gira sotto launchd. Prima di passare alla 2.4.0, fissa il tuo modello se non vuoi che i gruppi Claude senza modello impostato passino a Opus 5.5:

# Optional: pin the model BEFORE upgrading (2.4.0 default for unset Claude groups is Opus 5.5)
echo 'NANOCLAW_DEFAULT_MODEL=sonnet' >> .env

# The only supported update path: inside Claude Code, from the project root
cd ~/nanoclaw && claude
/update-nanoclaw
# Refresh installed channel/provider skills only:
/update-skills

# After resolving merge conflicts, or to roll back after cutover:
pnpm exec tsx scripts/update-nanoclaw.ts resume --id "$id"
pnpm exec tsx scripts/update-nanoclaw.ts rollback --id "$id"

# Remove this checkout only (service, containers, image, data; .env backed up to .env.bak)
bash nanoclaw.sh --uninstall --dry-run
bash nanoclaw.sh --uninstall

7. Hardening della sicurezza (privilegio minimo)

Il modello di minaccia di NanoClaw è "assumi che l'agente subisca una prompt injection, poi assicurati che un agente compromesso non abbia nulla da rubare e nessun posto dove andare." Di serie ogni sessione gira nel proprio container come utente node non privilegiato con --cap-drop=ALL, --security-opt no-new-privileges, --init, un limite di pid e i bit setuid rimossi; non c'è home dell'host, nessun .ssh, nessun socket Docker, e il gateway OneCLI riscrive gli header di autenticazione al volo così i container non vedono mai la tua chiave API. Le schede di approvazione (pacchetti, server MCP, sub-agenti, registrazione di nuove chat) richiedono una risposta di un admin e vengono negate automaticamente se restano senza risposta, mantienile. La configurazione documentata più sicura aggiunge quanto segue, e non disattiva mai le approvazioni né il gateway:

  • Mittenti sconosciuti: imposta --unknown-sender-policy strict (scartati silenziosamente) o request_approval su ogni gruppo di messaggistica raggiungibile da sconosciuti.
  • Mount: lascia l'allowlist (~/.config/nanoclaw/mount-allowlist.json) assente o minima, senza di essa tutti i mount aggiuntivi sono bloccati, e .ssh.gnupg.aws.kube.docker, credentials.env e .netrc sono comunque pattern bloccati. I mount sono in sola lettura a meno che non sia esplicitamente consentito.
  • Isolamento: "nel dubbio, parti più isolato." Una chat di famiglia e un canale cliente non dovrebbero essere lo stesso agente; un agente con un repo montato e credenziali di deploy non deve condividere un gruppo di agenti con uno che parla con sconosciuti. Sessioni separate non costituiscono un confine di riservatezza all'interno di un gruppo.
  • Limiti ed egress: imposta CONTAINER_CPU_LIMIT e CONTAINER_MEMORY_LIMIT, e abilita NANOCLAW_EGRESS_LOCKDOWN=true (tutto il traffico attraverso il gateway, container su una rete interna) una volta che i tuoi strumenti funzionano attraverso il proxy, è disattivato per impostazione predefinita perché rompe gli strumenti che non supportano i proxy.
  • Segreti su disco: .env viene creato con permessi 0600 e contiene solo i token dei canali; le chiavi API degli agenti vivono nel vault. Mantieni privata anche store/auth/ (sessione WhatsApp), nostra raccomandazione, non un'affermazione di NanoClaw. Il setup invia dati diagnostici a meno che NANOCLAW_NO_DIAGNOSTICS=1.
# Unknown senders: drop silently (or route to an approval card) on every reachable group
ncl messaging-groups list
ncl messaging-groups update --id <mg-id> --unknown-sender-policy strict
# or: --unknown-sender-policy request_approval

# Opt-in per-container caps (passed to docker create --cpus / --memory)
echo 'CONTAINER_CPU_LIMIT=2' >> .env
echo 'CONTAINER_MEMORY_LIMIT=8g' >> .env

# Once every tool works through the OneCLI proxy: no direct internet route for containers
echo 'NANOCLAW_EGRESS_LOCKDOWN=true' >> .env
launchctl kickstart -k gui/$(id -u)/com.nanoclaw-v2-<slug>

# Mounts are deny-by-default and read-only unless the allowlist root sets allowReadWrite
ncl groups config add-mount --id <group-id> --host /path/on/mac --container /path/in/container

# Secrets on disk: .env must stay 0600 (setup creates it that way)
ls -l .env

Rischi residui che la sandbox non copre: un agente compromesso può comunque inviare messaggi a qualsiasi destinazione a cui è collegato, leggere o distruggere il proprio workspace e la propria memoria, spendere le credenziali che gli sono state concesse e avvelenare la memoria del gruppo, quindi delimita ogni gruppo di agenti in modo restrittivo.

8. Risoluzione dei problemi comuni

"FATAL: Container runtime failed to start"

Docker Desktop non era in esecuzione quando l'host si è avviato, il classico dopo un riavvio senza sessione loggata. Verifica il daemon, avvia Docker Desktop, poi riavvia NanoClaw:

# Is the Docker daemon up?
docker info

# Not running? Start Docker Desktop (first launch must be from the desktop over VNC)
open -a Docker

# Then restart NanoClaw and watch the logs
launchctl kickstart -k gui/$(id -u)/com.nanoclaw-v2-<slug>
tail -f logs/nanoclaw.error.log

"NanoClaw stopped: update did not go through the supported path"

Qualcuno ha eseguito git pull (o ha modificato in altro modo il checkout) e data/upgrade-state.json non corrisponde più. Ripassa dall'aggiornamento supportato, oppure riprendi o annulla un aggiornamento preparato:

# Never `git pull`. Run the supported update from the project root:
cd ~/nanoclaw && claude
/update-nanoclaw

# A staged update stuck in conflict, or a bad cutover?
pnpm exec tsx scripts/update-nanoclaw.ts resume --id "$id"
pnpm exec tsx scripts/update-nanoclaw.ts rollback --id "$id"

# The update is blocked on a dirty working tree, detached HEAD or a host not under launchd
git status

L'agente non risponde mai in una chat

Di solito è un problema di collegamento o di trigger piuttosto che un crash: l'agente risponde solo quando il suo trigger (@Andy per impostazione predefinita, da ASSISTANT_NAME; il valore predefinito del wizard WhatsApp è Nano) corrisponde, e la chat deve essere collegata a un gruppo di agenti. Elenca i messaggi scartati e le sessioni:

# Why were messages dropped? (no_agent_wired, no_agent_engaged, ...)
ncl dropped-messages list
ncl sessions list

# Wire the chat to an agent group
claude
/manage-channels

# Telegram: pending pairing codes live here; the message must contain only the 6 digits
cat data/telegram-pairings.json

L'host rifiuta di avviarsi dopo un aggiornamento unito a mano (nessun gateway di credenziali)

Dalla 2.4.0 l'host rifiuta di avviarsi senza un gateway di credenziali registrato. I fork uniti a mano devono registrare OneCLI (o Iron Proxy) e verificare NANOCLAW_GATEWAY_PROVIDER in .env; le installazioni OpenCode devono anche rieseguire /add-opencode, ricostruire l'immagine e riavviare i loro gruppi (comandi dalla nota di rilascio 2.4):

# Register the gateway (OneCLI is the default; Iron Proxy is the alternative)
claude
/add-onecli
# or: /add-iron-proxy

# Check the provider recorded in .env (onecli | iron-proxy)
grep NANOCLAW_GATEWAY_PROVIDER .env

# OpenCode installs: re-run /add-opencode, then rebuild the image, restart the host and the groups
./container/build.sh build
launchctl kickstart -k gui/$(id -u)/com.nanoclaw-v2-<slug>
ncl groups restart --id <group-id>

Non gira nulla dopo il riavvio del Mac mini

Il LaunchAgent e Docker Desktop vivono entrambi nella sessione utente. Verifica che il servizio sia registrato, che il login automatico sia attivo per l'utente che ha eseguito l'installer e che Docker Desktop si avvii al login, poi fai un test di riavvio:

# Is the LaunchAgent registered?
launchctl list | grep nanoclaw

# Not listed? Reinstall it (regenerates the plist)
pnpm run setup -- --step service

# Docker not up after login? Enable "Start Docker Desktop when you sign in" (Settings > General)
docker info

# Then reboot-test again
sudo reboot

9. Analisi dei costi vs. VPS cloud

NanoClaw in sé è gratuito (MIT). Paghi l'host e l'utilizzo dei modelli sulla tua chiave API Anthropic, identico su qualsiasi host, perché NanoClaw non esegue modelli locali in modo supportato. Il Mac mini è una macchina fisica dedicata, quindi il confronto corretto è con un'istanza cloud dedicata o di tier AI, non con il VPS condiviso più economico:

Caso d'uso Chiamate AI/mese Costo VPS cloud Costo MyRemoteMac Risparmio mensile
Assistente personale, un canale ~500 chiamate $120/mese (istanza dedicata tier AI) $85/mese (Mac mini M4) $35/mese
Piccolo team, più canali + attività pianificate ~5.000 chiamate $200/mese $85/mese (Mac mini M4) $115/mese
Più gruppi di agenti con container concorrenti 10.000+ chiamate $350+/mese $149/mese (Mac mini M6) $201+/mese

Ipotesi: i prezzi dei VPS sono le stesse fasce usate in tutte le nostre guide per istanze dedicate di tier AI e non sono preventivi di un provider specifico; un VPS Linux condiviso da 4 GB costerebbe meno di qualsiasi piano Mac mini. I prezzi MyRemoteMac sono le tariffe mensili attuali in USD, tasse escluse, 1 Gbps inclusi. L'utilizzo dei modelli è a parte in entrambi i casi: Opus 5.5 costa $4 / $20 per milione di token in input / output e Sonnet 5 costa $2 / $10 (platform.claude.com, settembre 2026). NanoClaw non pubblica cifre sull'impronta di RAM o CPU per l'host, la VM di Docker Desktop o i container per sessione, quindi i consigli sul piano restano qualitativi.

Quale piano: il Mac mini M4 da 16 GB a $85/mese è un host comodo per un assistente personale o un bot per piccolo team, il minimo richiesto da NanoClaw è 4 GB. Scegli il Mac mini M6 quando esegui più gruppi di agenti con container concorrenti accanto alla VM di Docker Desktop, o quando il Mac compila anche app iOS. Per mantenere prevedibile la bolletta dei token, imposta NANOCLAW_DEFAULT_MODEL=sonnet e riserva Opus a un gruppo che ne ha bisogno.

10. NanoClaw vs. OpenClaw

NanoClaw si posiziona esplicitamente contro OpenClaw: il suo README sostiene che OpenClaw ha quasi mezzo milione di righe di codice, 53 file di configurazione e oltre 70 dipendenze con sicurezza a livello applicativo (allowlist, codici di pairing) anziché isolamento a livello di sistema operativo, cifre dal README di NanoClaw, non misurate in modo indipendente. Dalla nostra guida OpenClaw, le differenze pratiche su un Mac mini sono queste. OpenClaw è un'installazione npm globale (Node 26.1+ consigliato), un unico processo Gateway, un file di configurazione JSON5, canali inclusi, niente Docker. NanoClaw è git clone + bash nanoclaw.sh, Node 22+ e pnpm 10, richiede Docker Desktop, Homebrew e Claude Code sull'host, non ha file di configurazione (la personalizzazione è codice nel tuo checkout), esegue ogni sessione in un container Linux con cap-drop e no-new-privileges, blocca i mount per impostazione predefinita e tiene le chiavi API fuori dalla sandbox tramite un gateway di credenziali; i canali si installano su richiesta come skill e gli aggiornamenti passano solo da /update-nanoclaw. In breve: NanoClaw è più sicuro per costruzione ma più pesante da far girare (una VM Docker Desktop sempre attiva, una sessione di login grafica, la regola di licenza Docker per le grandi aziende, un setup interattivo di 30–60 minuti e un fork da mantenere); OpenClaw è più leggero da installare e configurare ma si affida a controlli dei permessi a livello applicativo. Entrambi usano Claude per impostazione predefinita; NanoClaw aggiunge Codex e OpenCode per gruppo di agenti. Il costo del Mac mini è identico per entrambi.

Usi già OpenClaw? NanoClaw include /migrate-from-openclaw, una conversazione guidata in Claude Code che mappa gli agenti OpenClaw in gruppi di agenti, le chat in gruppi di messaggistica collegati, IDENTITY.md/SOUL.md in instructions.prepend.md più memory/, le skill in container/skills, i token dei canali in .env, le chiavi API nel vault OneCLI, i job cron in task ncl, i server MCP in configurazioni per gruppo e le allowlist in unknown_sender_policy e ruoli. WhatsApp deve essere riautenticato; il ritardo umano e il TTS non hanno equivalente nella v2. Parti invece da zero? Leggi la nostra guida OpenClaw su Mac mini e la nostra guida Hermes Agent prima di scegliere.

11. FAQ

NanoClaw è gratuito?

Sì. NanoClaw è sotto licenza MIT con oltre 30k stelle su GitHub, creato da Gavriel Cohen e mantenuto da NanoCo. Paghi il Mac mini (da $85/mese per l'M4, $149/mese per l'M6 su MyRemoteMac) e l'utilizzo di Claude sulla tua chiave API Anthropic. Docker Desktop è gratuito per uso personale e per aziende sotto i 250 dipendenti e i 10 milioni di dollari di fatturato; le aziende più grandi e gli enti governativi hanno bisogno di un abbonamento Docker a pagamento.

Ho davvero bisogno di Docker Desktop su un Mac mini?

Sì. Su macOS NanoClaw richiede Docker Desktop, che il suo installer aggiunge con brew install --cask docker; Docker è il runtime fornito (NANOCLAW_RUNTIME_DRIVER=docker, dietro un'astrazione di driver selezionabile dalla 2.3.0). Lo strumento container di Apple non è oggi un runtime supportato, il lavoro /add-apple-container della v2 è una pull request in bozza aperta. Ogni sessione agente gira nel proprio container Linux, che è l'intero senso del modello di sicurezza di NanoClaw.

Posso usare il mio abbonamento Claude al posto di una chiave API?

Il wizard di NanoClaw propone "Sign in with my Claude subscription" e accetta un token OAuth. I termini legali di Anthropic, tuttavia, stabiliscono che l'autenticazione OAuth è destinata esclusivamente all'uso ordinario di Claude Code e delle applicazioni native Anthropic da parte degli abbonati, che gli sviluppatori che costruiscono sull'Agent SDK devono usare l'autenticazione con chiave API, e che Anthropic può farlo rispettare senza preavviso. Per un deployment aziendale o always-on, usa una chiave API dalla Console, e non salvare né condividere mai le tue credenziali Claude.ai.

Quale piano Mac mini scegliere per NanoClaw?

NanoClaw richiede almeno 4 GB di RAM e non pubblica cifre sull'impronta oltre a questo, quindi il consiglio è qualitativo: il Mac mini M4 da 16 GB a $85/mese ospita comodamente un assistente personale o un bot per piccolo team con un paio di canali. Scegli il Mac mini M6 da $149/mese quando più gruppi di agenti eseguono container contemporaneamente accanto alla VM di Docker Desktop, o quando lo stesso Mac esegue anche build Xcode o altri carichi di lavoro.

NanoClaw sopravvive a un riavvio del Mac mini?

Sì, a condizione che una sessione utente torni attiva: l'installer registra un LaunchAgent per utente (com.nanoclaw-v2-<slug>, KeepAlive) e Docker Desktop è un'app con interfaccia grafica, quindi su un Mac mini headless abilita il login automatico per lo stesso account utente che ha eseguito bash nanoclaw.sh (entrambi sono per utente; non disponibile con FileVault attivo), attiva l'impostazione di avvio al login di Docker Desktop e disattiva lo sleep con pmset. Verifica con launchctl list | grep nanoclaw e docker info dopo un riavvio di prova. Questa ricetta headless è la nostra raccomandazione; la documentazione di NanoClaw dice solo di tenere il computer acceso e connesso.

Posso migrare la mia configurazione OpenClaw esistente a NanoClaw?

Sì. Esegui /migrate-from-openclaw in Claude Code dalla root del progetto NanoClaw: mappa gli agenti OpenClaw in gruppi di agenti, le chat in gruppi di messaggistica, IDENTITY.md e SOUL.md in instructions.prepend.md e memory/, le skill in container/skills (stesso formato), i token dei canali in .env, le chiavi API nel vault OneCLI, i job cron in task ncl e le allowlist in policy per i mittenti. WhatsApp non viene migrato deliberatamente, scansioni di nuovo il QR, e il ritardo umano e il TTS non hanno equivalente nella v2.

12. Fonti e approfondimenti

Ogni comando, percorso, variabile e requisito di questa guida è stato verificato il 28 settembre 2026 sul repository ufficiale di NanoClaw (nanocoai/nanoclaw, v2.4.0 rilasciata il 23 settembre 2026, il vecchio URL qwibitai reindirizza lì) e su docs.nanoclaw.dev, più la documentazione di Docker, Anthropic e Apple per i fatti relativi alla piattaforma. Le versioni fissate, come la build di Claude Code dentro gli agenti, cambiano a ogni release, quindi consulta queste pagine per i valori aggiornati:

Guide correlate

Pronto a eseguire NanoClaw 24/7?

Distribuisci un Mac mini dedicato come host del tuo assistente AI in sandbox. Mac mini M4 da $85/mese, Mac mini M6 da $149/mese.

Cerchi maggiori dettagli?

Consulta la documentazione completa per guide passo passo, riferimenti di configurazione e risoluzione dei problemi.

Apri la documentazione →