1. Pourquoi faire tourner NanoClaw sur un Mac mini dédié ?
NanoClaw ne répond que tant que son hôte est allumé et connecté, le quickstart le dit sans détour, ce qui exclut un portable qui se met en veille. Il lui faut une machine Mac ou Linux avec au moins 4 Go de RAM plus Docker (Docker Desktop sous macOS), et sa description GitHub le positionne comme une alternative légère à OpenClaw qui tourne dans des conteneurs pour la sécurité. Un VPS Linux partagé peut coûter moins cher qu'un Mac mini, alors soyez clair sur ce que vous achetez : un Mac Apple Silicon physique dédié 1:1 que personne d'autre ne partage, la seule plateforme où le backend iMessage local de NanoClaw fonctionne, une vraie session de bureau pour Docker Desktop, et une machine que vous pouvez aussi utiliser pour des builds Xcode ou des modèles locaux.
| Fonctionnalité | VPS cloud (instance partagée) | Mac mini (MyRemoteMac) |
|---|---|---|
| Coût mensuel | Variable selon la taille ; les instances dédiées coûtent plus cher | $85/mois (M4) ou $149/mois (M6), fixe, 1 Gbps inclus |
| Matériel | CPU et RAM partagés, virtualisés (NanoClaw liste les VM Google Compute Engine comme non prises en charge) | Mac Apple Silicon physique dédié 1:1 |
| Runtime de conteneurs | Docker Engine sous Linux | Docker Desktop pour Mac (mêmes conteneurs Linux par session) |
| iMessage (backend local) | Impossible (macOS uniquement) | Pris en charge sur un Mac connecté à iMessage |
| Accès | SSH | Root complet, SSH, VNC, VPN WireGuard |
| Disponibilité | Dépend du fournisseur | SLA 99,9 % |
Ce qu'est NanoClaw : un seul processus hôte Node.js achemine les messages de vos applications de chat vers des conteneurs Docker par session, où les agents tournent sur Claude Code via le Claude Agent SDK d'Anthropic. Il n'y a aucun fichier de configuration en dehors de .env et d'une base SQLite : vous le personnalisez en demandant à Claude Code de modifier le code dans votre propre checkout. Version au moment de la rédaction : v2.4.0 (23 septembre 2026), créé par Gavriel Cohen et maintenu par NanoCo.
2. Prérequis
Avant de commencer, assurez-vous d'avoir les éléments suivants. Tout ce qui suit provient du README, du quickstart et des pages d'installation officiels de NanoClaw, plus les conditions de Docker et d'Anthropic pour les faits liés à la plateforme :
- Un Mac mini dédié chez MyRemoteMac, M4 dès $85/mois (16 Go / 256 Go) ou Mac mini M6 dès $149/mois. NanoClaw demande au moins 4 Go de RAM (l'installeur avertit en dessous de 3 700 Mo) ; chaque configuration dépasse largement ce seuil.
- Un accès SSH et VNC (tous deux inclus dans votre abonnement). VNC n'est nécessaire qu'une fois : Docker Desktop est une application graphique et doit être lancée depuis le bureau la première fois.
- Docker Desktop pour Mac, en fonctionnement à chaque démarrage de NanoClaw. Conditions de Docker : gratuit pour un usage personnel, l'éducation, l'open source non commercial et les entreprises de moins de 250 employés et de moins de 10 millions de dollars US de chiffre d'affaires annuel ; les entreprises plus grandes et les entités gouvernementales ont besoin d'un abonnement payant.
- Homebrew, git, Node.js 22+ et pnpm 10. git doit être présent ; l'installeur propose d'installer Homebrew et installe lui-même Node et pnpm s'ils manquent (Node 20 n'est plus pris en charge depuis la 2.3.0).
- La CLI Claude Code sur le Mac. Elle n'est pas optionnelle : chaque skill /add-<channel>, /customize, /debug, /update-nanoclaw et la récupération d'erreur de l'installeur s'exécutent dans Claude Code depuis la racine du projet.
- Une clé API Anthropic (sk-ant-api…) obtenue sur console.anthropic.com, facturée au token. L'assistant propose aussi de se connecter avec un abonnement Claude, mais les conditions légales d'Anthropic précisent que l'OAuth est réservé à l'usage ordinaire de Claude Code et des applications natives Anthropic, et que les produits construits sur l'Agent SDK doivent utiliser l'authentification par clé API, pour un déploiement professionnel ou toujours allumé, utilisez donc une clé.
- Un compte de messagerie sur Telegram, WhatsApp ou Discord pour connecter votre agent (le canal terminal intégré ne demande rien).
3. Étape 1 : Connexion en SSH, installation de Docker Desktop et Claude Code
Commencez par vous connecter en SSH à votre Mac mini avec les identifiants de votre tableau de bord MyRemoteMac et vérifiez les deux outils que l'installeur s'attend à trouver. L'installeur NanoClaw installera Homebrew, Node et Docker pour vous, mais préinstaller Docker Desktop vous permet de le lancer et de vérifier le démon avant que l'assistant n'en ait besoin.
Connexion 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
Installation et lancement de Docker Desktop pour Mac
C'est exactement la commande que le script setup/install-docker.sh de NanoClaw exécute sous macOS quand docker est absent. Docker Desktop est une application de bureau : lancez-la une fois depuis le bureau du Mac via VNC, puis confirmez depuis SSH que le démon répond. S'il ne tourne pas au démarrage de NanoClaw, l'hôte s'arrête avec « 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
Installation de Claude Code sur l'hôte
Le script setup/install-claude.sh de NanoClaw exécute la même commande quand claude est absent. Vous utiliserez désormais Claude Code pour chaque canal, fournisseur et mise à jour :
# 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. Étape 2 : Installation de NanoClaw et configuration de votre clé API Claude
NanoClaw n'est pas un package npm que l'on installe globalement : vous clonez le dépôt et lancez un installeur en une passe qui transforme le checkout en votre propre installation. Laissez ensuite le dossier là où il est, le label launchd, le nom de l'image et le slug d'installation sont dérivés de son chemin. Prévoyez 30 à 60 minutes ; l'assistant est interactif.
Clonage et lancement de l'installeur
# 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
L'assistant vous guide à travers les choix documentés : Standard setup → Fresh agent → image sandbox : récupérer l'image durcie préconstruite par Echo (nécessite une connexion NanoClaw gratuite, environ 800 Mo depuis une seule région américaine) ou la construire localement (3 à 10 minutes, sans compte, ne contacte rien, potentiellement plus rapide depuis l'Europe ou l'Asie) → runtime IA : Claude → collez votre clé API Anthropic (recommandé ; « Sign in with my Claude subscription » est aussi proposé, voir la note dans les Prérequis) → Skip for now pour le canal de messagerie. L'installeur stocke votre clé dans l'Agent Vault de OneCLI, une passerelle d'identifiants obligatoire depuis la 2.4.0 : les conteneurs d'agents ne détiennent jamais de clé API en clair.
Alternative scriptée et premier message
Si vous préférez une exécution non interactive, la page d'installation documente des variables de configuration qui répondent d'avance aux questions. Dans les deux cas, testez avec le canal terminal intégré depuis le dossier du projet, la première réponse peut prendre un peu de temps pendant le démarrage du conteneur :
# 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
Choix du modèle et réglages de base dans .env
Les réglages globaux de l'installation vivent dans .env à la racine du projet (créé en mode 0600 par le setup) ; les réglages par groupe d'agents vivent dans la base de données et se modifient avec la CLI d'administration ncl. Depuis la 2.4.0, les groupes Claude sans modèle défini utilisent Opus 5.5 (claude-opus-5-5, $4 en entrée / $20 en sortie par million de tokens) ; Claude Sonnet 5 coûte $2 / $10, épinglez-le donc pour un assistant personnel si le coût compte. Les autres fournisseurs se définissent par groupe d'agents : /add-codex (OpenAI) et /add-opencode (OpenRouter, OpenAI, Google, DeepSeek). Modèles locaux : le README liste /add-ollama-provider, mais la page des fournisseurs sur docs.nanoclaw.dev précise que ce n'est pas un remplacement pris en charge sur la branche main actuelle, considérez-le comme une expérimentation, pas comme un moyen de remplacer 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. Étape 3 : Connexion des canaux de messagerie
Les canaux ne sont pas fournis d'origine : chacun s'installe à la demande sous forme de skill Claude Code lancé depuis la racine du projet, qui ajoute l'adaptateur à votre checkout. Telegram est le plus rapide à faire fonctionner, créez un bot avec @BotFather, collez le token quand le skill le demande (il est stocké sous TELEGRAM_BOT_TOKEN dans .env), puis envoyez au bot le code d'appairage à 6 chiffres à usage unique, sous forme d'un message ne contenant rien d'autre que les chiffres. Le mode polling signifie aucune URL publique, aucun webhook ni port ouvert :
# 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
Connexion WhatsApp
L'adaptateur natif parle le protocole WhatsApp Web (Baileys, pas l'API officielle de Meta) : scannez le QR code, qui change environ toutes les 60 secondes, ou saisissez le code d'appairage à 8 caractères dans WhatsApp → Appareils connectés. En mode numéro partagé, l'assistant répond dans votre propre conversation « Vous » ; pour un numéro dédié, utilisez une carte SIM séparée et définissez ASSISTANT_HAS_OWN_NUMBER=true. Si la conformité compte, utilisez plutôt /add-whatsapp-cloud (API Cloud de Meta) :
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
Connexion de Discord, iMessage et des autres canaux
Discord utilise un token de bot et un écouteur Gateway (pas d'URL publique). Le catalogue couvre aussi Slack, Mattermost (nouveau en 2.4.0), Signal, iMessage, Microsoft Teams, Google Chat, Matrix, Webex, WeChat, GitHub, Linear, Delta Chat, Emacs, l'e-mail via Resend et un vrai numéro de téléphone via Dial. Le backend iMessage local est la fonctionnalité réservée à macOS : le Mac mini doit être connecté à iMessage avec un identifiant Apple et le binaire node exact a besoin de l'Accès complet au disque (le backend hébergé Photon n'a besoin ni de l'un ni de l'autre). Relancer un skill /add-<channel> plus tard rafraîchit l'adaptateur ; /manage-channels relie chaque conversation à un groupe d'agents :
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. Étape 4 : Fonctionnement 24h/24 avec launchd, puis mise à jour en sécurité
Pour un fonctionnement 24h/24, NanoClaw doit démarrer au boot et redémarrer en cas d'erreur. L'installeur s'en est déjà chargé : son étape de service écrit un LaunchAgent launchd par utilisateur nommé com.nanoclaw-v2-<slug> (slug = les 8 premiers caractères hexadécimaux du SHA-1 du chemin du projet ; les anciens tutoriels montrent encore le label com.nanoclaw d'avant la 2.3.0) avec RunAtLoad et KeepAlive, journalisant dans logs/nanoclaw.log et logs/nanoclaw.error.log. Le plist ne définit que PATH et HOME et ne charge pas .env, redémarrez donc l'hôte après chaque modification de .env.
Vérification et gestion du service
# 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)
Survivre à un redémarrage sur un Mac mini sans écran
Cette partie est notre recommandation d'exploitation, assemblée à partir de la documentation d'Apple et de Docker, la documentation de NanoClaw ne couvre pas les Mac sans écran (headless). Le LaunchAgent vit dans votre session utilisateur et Docker Desktop est une application graphique, donc après un redémarrage rien ne tourne tant que personne n'ouvre de session. Activez l'ouverture de session automatique pour le même compte utilisateur que celui qui a lancé bash nanoclaw.sh, le LaunchAgent et le réglage de démarrage à l'ouverture de session de Docker Desktop sont tous deux par utilisateur, donc une ouverture automatique sur un autre compte laisserait le service non chargé et Docker arrêté (Apple : l'ouverture de session automatique n'est pas disponible lorsque FileVault est activé). N'oubliez pas que quiconque redémarre le Mac atterrit dans cette session, ce qui n'est acceptable que sur un Mac mini dédié joignable uniquement via SSH, VNC et WireGuard ; si vous préférez un compte non administrateur pour cela, installez NanoClaw sous ce compte, en sachant que l'installation de Homebrew et l'exécution de sudo pmset nécessitent toujours un administrateur (Docker Desktop lui-même tourne en tant qu'utilisateur non privilégié et ne demande un accès privilégié que pour certaines fonctionnalités). Activez ensuite le réglage « Start Docker Desktop when you sign in to your computer » de Docker Desktop, et désactivez la mise en veille :
# 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
Mise à jour de NanoClaw (jamais de git pull)
La page de mise à niveau est explicite : « Do not update with a raw git pull. » NanoClaw enregistre chaque mise à niveau autorisée dans data/upgrade-state.json et un garde-fou au démarrage refuse de démarrer en cas de décalage. Le seul chemin pris en charge est /update-nanoclaw dans Claude Code : il crée une branche et un tag de sauvegarde, prépare l'amont dans un worktree séparé, valide (install, build, tests), arrête le service et les conteneurs, prend un instantané de .env, data, groups et store, bascule, redémarre et vérifie l'état de santé. Il est bloqué si le working tree n'est pas propre ou si NanoClaw ne tourne pas sous launchd. Avant de passer en 2.4.0, épinglez votre modèle si vous ne voulez pas que les groupes Claude sans modèle défini basculent sur 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. Durcissement de la sécurité (moindre privilège)
Le modèle de menace de NanoClaw est le suivant : « partir du principe que l'agent subira une injection de prompt, puis s'assurer qu'un agent compromis n'a rien à voler et nulle part où aller ». D'origine, chaque session tourne dans son propre conteneur sous l'utilisateur non privilégié node avec --cap-drop=ALL, --security-opt no-new-privileges, --init, une limite de pids et les bits setuid retirés ; il n'y a ni home de l'hôte, ni .ssh, ni socket Docker, et la passerelle OneCLI réécrit les en-têtes d'authentification à la volée pour que les conteneurs ne voient jamais votre clé API. Les cartes d'approbation (packages, serveurs MCP, sous-agents, enregistrement d'un nouveau chat) exigent une réponse d'un administrateur et sont refusées automatiquement sans réponse, conservez-les. La configuration documentée la plus sûre ajoute les éléments suivants, et ne désactive jamais les approbations ni la passerelle :
-
Expéditeurs inconnus : définissez
--unknown-sender-policy strict(ignorés silencieusement) ourequest_approvalsur chaque groupe de messagerie accessible à des inconnus. - Montages : laissez l'allowlist (~/.config/nanoclaw/mount-allowlist.json) absente ou minimale, sans elle, tous les montages supplémentaires sont bloqués, et .ssh.gnupg.aws.kube.docker, credentials.env et .netrc sont de toute façon des motifs bloqués. Les montages sont en lecture seule sauf autorisation explicite.
- Isolation : « dans le doute, commencez plus isolé ». Un chat familial et un canal client ne doivent pas être un seul agent ; un agent avec un dépôt monté et des identifiants de déploiement ne doit pas partager un groupe d'agents avec un agent qui parle à des inconnus. Des sessions séparées ne constituent pas une frontière de confidentialité à l'intérieur d'un groupe.
- Limites et sortie réseau : définissez CONTAINER_CPU_LIMIT et CONTAINER_MEMORY_LIMIT, et activez NANOCLAW_EGRESS_LOCKDOWN=true (tout le trafic passe par la passerelle, conteneurs sur un réseau interne) une fois que vos outils fonctionnent à travers le proxy, il est désactivé par défaut parce qu'il casse les outils qui ne gèrent pas les proxys.
- Secrets sur disque : .env est créé en mode 0600 et ne contient que les tokens de canaux ; les clés API des agents vivent dans le vault. Gardez aussi store/auth/ (session WhatsApp) privé, c'est notre recommandation, pas une affirmation de NanoClaw. Le setup envoie des diagnostics sauf si 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
Risques résiduels que la sandbox ne couvre pas : un agent compromis peut toujours envoyer des messages à toute destination à laquelle il est relié, lire ou détruire son propre espace de travail et sa mémoire, dépenser les identifiants qui lui ont été accordés et empoisonner la mémoire du groupe, limitez donc étroitement le périmètre de chaque groupe d'agents.
8. Résolution des problèmes courants
« FATAL: Container runtime failed to start »
Docker Desktop ne tournait pas au démarrage de l'hôte, le grand classique après un redémarrage sans session ouverte. Vérifiez le démon, lancez Docker Desktop, puis redémarrez 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 »
Quelqu'un a lancé git pull (ou a modifié le checkout d'une autre manière) et data/upgrade-state.json ne correspond plus. Repassez par la mise à jour prise en charge, ou reprenez/annulez une mise à jour préparée :
# 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'agent ne répond jamais dans un chat
Le plus souvent un problème de câblage ou de déclencheur plutôt qu'un plantage : l'agent ne répond que si son déclencheur (@Andy par défaut, issu de ASSISTANT_NAME ; celui par défaut de l'assistant WhatsApp est Nano) correspond, et le chat doit être relié à un groupe d'agents. Listez les messages ignorés et les sessions :
# 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'hôte refuse de démarrer après une mise à jour fusionnée à la main (pas de passerelle d'identifiants)
Depuis la 2.4.0, l'hôte refuse de démarrer sans passerelle d'identifiants enregistrée. Les forks fusionnés à la main doivent enregistrer OneCLI (ou Iron Proxy) et vérifier NANOCLAW_GATEWAY_PROVIDER dans .env ; les installations OpenCode doivent aussi relancer /add-opencode, reconstruire l'image et redémarrer leurs groupes (commandes issues de la note de version 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>
Rien ne tourne après un redémarrage du Mac mini
Le LaunchAgent et Docker Desktop vivent tous deux dans la session utilisateur. Vérifiez que le service est enregistré, que l'ouverture de session automatique est activée pour l'utilisateur qui a lancé l'installeur et que Docker Desktop démarre à l'ouverture de session, puis faites un test de redémarrage :
# 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. Analyse des coûts vs VPS cloud
NanoClaw lui-même est gratuit (MIT). Vous payez l'hôte et la consommation de modèle sur votre clé API Anthropic, identique quel que soit l'hôte, car NanoClaw ne fait pas tourner de modèles locaux de façon prise en charge. Le Mac mini est une machine physique dédiée, la comparaison honnête est donc une instance cloud dédiée ou de tier IA, pas le VPS partagé le moins cher :
| Cas d'usage | Appels IA/mois | Coût VPS cloud | Coût MyRemoteMac | Économies mensuelles |
|---|---|---|---|---|
| Assistant personnel, un canal | ~500 appels | $120/mois (instance dédiée tier IA) | $85/mois (Mac mini M4) | $35/mois |
| Petite équipe, plusieurs canaux + tâches planifiées | ~5 000 appels | $200/mois | $85/mois (Mac mini M4) | $115/mois |
| Plusieurs groupes d'agents avec conteneurs simultanés | 10 000+ appels | $350+/mois | $149/mois (Mac mini M6) | $201+/mois |
Hypothèses : les prix VPS sont les mêmes fourchettes utilisées dans l'ensemble de nos guides pour des instances dédiées de tier IA et ne sont pas des devis d'un fournisseur précis ; un VPS Linux partagé de 4 Go serait moins cher que n'importe quelle configuration Mac mini. Les prix MyRemoteMac sont les tarifs mensuels actuels en USD, hors taxes, 1 Gbps inclus. La consommation de modèle s'ajoute des deux côtés : Opus 5.5 est à $4 / $20 par million de tokens en entrée / sortie et Sonnet 5 à $2 / $10 (platform.claude.com, septembre 2026). NanoClaw ne publie aucun chiffre d'empreinte RAM ou CPU pour l'hôte, la VM Docker Desktop ou les conteneurs par session, les conseils de dimensionnement restent donc qualitatifs.
Quelle configuration : le Mac mini M4 16 Go à $85/mois est un hôte confortable pour un assistant personnel ou un bot de petite équipe, le minimum de NanoClaw est de 4 Go. Choisissez le Mac mini M6 quand vous faites tourner plusieurs groupes d'agents avec des conteneurs simultanés à côté de la VM Docker Desktop, ou quand le Mac compile aussi des apps iOS. Pour garder une facture de tokens prévisible, définissez NANOCLAW_DEFAULT_MODEL=sonnet et réservez Opus à un groupe qui en a besoin.
10. NanoClaw vs OpenClaw
NanoClaw se positionne explicitement face à OpenClaw : son README affirme qu'OpenClaw compte près d'un demi-million de lignes de code, 53 fichiers de configuration et plus de 70 dépendances, avec une sécurité au niveau applicatif (allowlists, codes d'appairage) plutôt qu'une isolation au niveau de l'OS, des chiffres issus du README de NanoClaw, non mesurés indépendamment. D'après notre guide OpenClaw, voici les différences pratiques sur un Mac mini. OpenClaw est une installation npm globale (Node 26.1+ recommandé), un seul processus Gateway, un fichier de configuration JSON5, des canaux intégrés, pas de Docker. NanoClaw, c'est git clone + bash nanoclaw.sh, Node 22+ et pnpm 10, Docker Desktop, Homebrew et Claude Code obligatoires sur l'hôte, aucun fichier de configuration (la personnalisation est du code dans votre propre checkout), chaque session dans un conteneur Linux avec cap-drop et no-new-privileges, les montages bloqués par défaut et les clés API tenues hors de la sandbox grâce à une passerelle d'identifiants ; les canaux s'installent à la demande sous forme de skills et les mises à jour ne passent que par /update-nanoclaw. En bref : NanoClaw est plus sûr par construction mais plus lourd à exploiter (une VM Docker Desktop toujours allumée, une session graphique ouverte, la règle de licence Docker pour les grandes entreprises, une installation interactive de 30 à 60 minutes et un fork à maintenir) ; OpenClaw est plus léger à installer et configurer mais repose sur des vérifications de permissions au niveau applicatif. Les deux utilisent Claude par défaut ; NanoClaw ajoute Codex et OpenCode par groupe d'agents. Le coût du Mac mini est identique pour les deux.
Déjà sur OpenClaw ? NanoClaw fournit /migrate-from-openclaw, une conversation guidée dans Claude Code qui fait correspondre les agents OpenClaw aux groupes d'agents, les chats aux groupes de messagerie reliés, IDENTITY.md/SOUL.md à instructions.prepend.md plus memory/, les skills à container/skills, les tokens de canaux à .env, les clés API au vault OneCLI, les tâches cron aux tâches ncl, les serveurs MCP à la configuration par groupe et les allowlists à unknown_sender_policy et aux rôles. WhatsApp doit être ré-authentifié ; le délai humain et le TTS n'ont pas d'équivalent en v2. Vous partez plutôt de zéro ? Lisez notre guide OpenClaw sur Mac mini et notre guide Hermes Agent avant de choisir.
11. FAQ
NanoClaw est-il gratuit ?
Oui. NanoClaw est sous licence MIT avec plus de 30 000 étoiles GitHub, créé par Gavriel Cohen et maintenu par NanoCo. Vous payez le Mac mini (dès $85/mois pour le M4, $149/mois pour le M6 chez MyRemoteMac) et la consommation Claude sur votre clé API Anthropic. Docker Desktop est gratuit pour un usage personnel et pour les entreprises de moins de 250 employés et de 10 millions de dollars US de chiffre d'affaires ; les entreprises plus grandes et les entités gouvernementales ont besoin d'un abonnement Docker payant.
Ai-je vraiment besoin de Docker Desktop sur un Mac mini ?
Oui. Sous macOS, NanoClaw exige Docker Desktop, que son installeur ajoute avec brew install --cask docker ; Docker est le runtime livré (NANOCLAW_RUNTIME_DRIVER=docker, derrière une couche de driver sélectionnable depuis la 2.3.0). L'outil de conteneurs d'Apple n'est pas un runtime pris en charge aujourd'hui, le travail /add-apple-container de la v2 est une pull request en brouillon encore ouverte. Chaque session d'agent tourne dans son propre conteneur Linux, ce qui est tout l'intérêt du modèle de sécurité de NanoClaw.
Puis-je utiliser mon abonnement Claude à la place d'une clé API ?
L'assistant de NanoClaw propose « Sign in with my Claude subscription » et accepte un token OAuth. Les conditions légales d'Anthropic précisent cependant que l'authentification OAuth est réservée exclusivement à l'usage ordinaire de Claude Code et des applications natives Anthropic par les abonnés, que les développeurs qui construisent sur l'Agent SDK doivent utiliser l'authentification par clé API, et qu'Anthropic peut faire appliquer cette règle sans préavis. Pour un déploiement professionnel ou toujours allumé, utilisez une clé API de la Console, et ne stockez ni ne partagez jamais vos identifiants Claude.ai.
Quelle configuration de Mac mini choisir pour NanoClaw ?
NanoClaw demande au moins 4 Go de RAM et ne publie aucun chiffre d'empreinte au-delà, le conseil reste donc qualitatif : le Mac mini M4 16 Go à $85/mois héberge confortablement un assistant personnel ou un bot de petite équipe avec deux ou trois canaux. Choisissez le Mac mini M6 dès $149/mois quand plusieurs groupes d'agents font tourner des conteneurs en même temps à côté de la VM Docker Desktop, ou quand le même Mac exécute aussi des builds Xcode ou d'autres charges de travail.
NanoClaw survit-il à un redémarrage du Mac mini ?
Oui, à condition qu'une session utilisateur revienne : l'installeur enregistre un LaunchAgent par utilisateur (com.nanoclaw-v2-<slug>, KeepAlive) et Docker Desktop est une application graphique, donc sur un Mac mini sans écran activez l'ouverture de session automatique pour le même compte utilisateur que celui qui a lancé bash nanoclaw.sh (les deux sont par utilisateur ; indisponible avec FileVault activé), activez le démarrage à l'ouverture de session de Docker Desktop et désactivez la mise en veille avec pmset. Vérifiez avec launchctl list | grep nanoclaw et docker info après un redémarrage de test. Cette recette headless est notre recommandation ; la documentation de NanoClaw dit seulement de garder l'ordinateur allumé et connecté.
Puis-je migrer ma configuration OpenClaw existante vers NanoClaw ?
Oui. Lancez /migrate-from-openclaw dans Claude Code depuis la racine du projet NanoClaw : il fait correspondre les agents OpenClaw aux groupes d'agents, les chats aux groupes de messagerie, IDENTITY.md et SOUL.md à instructions.prepend.md et memory/, les skills à container/skills (même format), les tokens de canaux à .env, les clés API au vault OneCLI, les tâches cron aux tâches ncl et les allowlists aux politiques d'expéditeur. WhatsApp n'est volontairement pas migré, vous rescannez le QR code, et le délai humain et le TTS n'ont pas d'équivalent en v2.
12. Sources et lectures complémentaires
Chaque commande, chemin, variable et prérequis de ce guide a été vérifié le 28 septembre 2026 par rapport au dépôt officiel de NanoClaw (nanocoai/nanoclaw, v2.4.0 publiée le 23 septembre 2026, l'ancienne URL qwibitai y redirige) et à docs.nanoclaw.dev, plus la documentation de Docker, d'Anthropic et d'Apple pour les faits liés à la plateforme. Les versions épinglées, comme le build de Claude Code à l'intérieur des agents, changent à chaque version, consultez donc ces pages pour les valeurs actuelles :
- GitHub : nanocoai/nanoclaw (README, LICENSE, package.json, nanoclaw.sh)
- docs.nanoclaw.dev : Quickstart
- docs.nanoclaw.dev : Installation
- docs.nanoclaw.dev : Modèle de sécurité
- docs.nanoclaw.dev : Niveaux d'isolation
- docs.nanoclaw.dev : Configuration
- docs.nanoclaw.dev : Identifiants (credentials)
- docs.nanoclaw.dev : Passerelles d'identifiants (OneCLI, Iron Proxy)
- docs.nanoclaw.dev : Durcissement
- docs.nanoclaw.dev : Mise à niveau
- docs.nanoclaw.dev : Dépannage
- docs.nanoclaw.dev : Référence des variables d'environnement
- docs.nanoclaw.dev : Vue d'ensemble des canaux
- docs.nanoclaw.dev : Telegram
- docs.nanoclaw.dev : WhatsApp
- docs.nanoclaw.dev : iMessage
- docs.nanoclaw.dev : Fournisseurs (Claude, Codex, OpenCode, statut d'Ollama)
- docs.nanoclaw.dev : Image runtime durcie Echo
- docs.nanoclaw.dev : Migrer depuis la v1 / OpenClaw
- docs.nanoclaw.dev : Changelog (v2.4.0, 2026-09-23)
- GitHub : docs/release-2.4-update.md (changement de modèle par défaut, épinglage)
- GitHub : setup/install-docker.sh (Docker via Homebrew)
- Docker : Installer Docker Desktop sur Mac
- Docker : FAQ tarifaire (licence Docker Desktop)
- Docker Desktop : Réglages (démarrage à l'ouverture de session)
- Claude Code : Mentions légales et conformité (OAuth vs clé API)
- platform.claude.com : Vue d'ensemble et tarifs des modèles Claude
- Assistance Apple : Ouverture de session automatique et FileVault
- TechCrunch (2026-03-13) : Le créateur de NanoClaw et l'accord avec Docker
- Docker Docs : Exigences de permissions de Docker Desktop pour Mac (tourne en utilisateur non privilégié)
Guides associés
Installer OpenClaw sur Mac mini
L'alternative plus légère, sans Docker : installation npm globale, un seul processus Gateway, configuration JSON5 et canaux intégrés.
Installer Hermes Agent sur Mac mini
L'agent auto-hébergé de Nous Research avec boucle d'apprentissage, installeur en une ligne et prise en charge d'Ollama en local.
Exécuter des LLM sur Mac mini M4
Exécutez Ollama, llama.cpp et des modèles de langage locaux nativement sur Apple Silicon pour une inférence IA sans coût.
Louer un Mac mini M6
Les configurations M6 dès $149/mois : plus de marge pour les conteneurs d'agents simultanés et la VM Docker Desktop.