NanoClaw – assistant Claude en TypeScript de 500 lignes exécuté dans un environnement isolé de conteneurs Apple
(github.com/gavrielc)- NanoClaw est un assistant IA personnel basé sur Claude qui fonctionne dans des conteneurs Apple, avec une architecture légère composée d’un seul processus et d’un petit nombre de fichiers
- Grâce à une isolation des conteneurs par groupe, il sépare l’historique des conversations et le système de fichiers, tout en prenant en charge la messagerie WhatsApp, les tâches planifiées, l’accès web, etc.
- Sans fichier de configuration, Claude Code guide l’installation et la personnalisation, et l’utilisateur peut modifier directement le code pour l’adapter à ses besoins
- Les nouvelles fonctionnalités sont étendues via des fichiers de « Skills » plutôt que par ajout de code, avec diverses demandes d’extension comme
/add-telegram,/convert-to-docker, etc. - En privilégiant une structure de sécurité compréhensible et la simplicité plutôt que des frameworks complexes, le projet fournit une base permettant aux développeurs indépendants ou aux startups de construire un assistant IA de manière sûre
Aperçu du projet
- NanoClaw est un assistant Claude personnel fonctionnant dans l’environnement Apple Container, conçu avec la légèreté et la sécurité comme priorités
- Il s’exécute dans un unique processus Node.js, et chaque agent utilise un système de fichiers isolé à l’intérieur d’un conteneur Linux
- La base de code se compose d’environ 500 lignes de TypeScript, et le projet affirme qu’un utilisateur peut comprendre toute la structure en 8 minutes
- Il est publié sous licence MIT et a obtenu plus de 500 Stars sur GitHub
Philosophie de conception
- Une taille compréhensible : un unique processus, sans microservices, file de messages ni abstractions complexes
- La sécurité par l’isolation : seuls les répertoires montés explicitement sont accessibles, et les commandes Bash ne s’exécutent qu’à l’intérieur des conteneurs
- Pensé pour un utilisateur unique : il ne s’agit pas d’un framework mais d’un logiciel personnalisé, que l’on peut forker puis modifier directement
- Modifier le code plutôt que configurer : les fichiers de configuration sont réduits au minimum, et le comportement souhaité s’implémente par modification du code
- Une approche nativement IA : installation, débogage et supervision passent tous par l’interface conversationnelle de Claude Code
- Une extensibilité fondée sur les Skills : l’ajout de fonctionnalités passe non par des changements de code, mais par des fichiers de compétences dans le répertoire
.claude/skills
Fonctionnalités principales
- WhatsApp I/O : échange direct de messages avec Claude depuis le téléphone
- Isolation du contexte par groupe : chaque groupe dispose de sa propre mémoire
CLAUDE.mdet de son propre système de fichiers conteneurisé - Canal principal : canal personnel d’administration, complètement séparé des autres groupes
- Tâches planifiées : exécution de tâches périodiques et envoi automatique de messages
- Accès web : recherche et collecte de contenu
- Intégrations optionnelles : possibilité de connecter Gmail et d’autres services externes via des Skills comme
/add-gmail
Personnalisation
- Les modifications peuvent être faites directement via une conversation avec Claude Code, sans fichier de configuration
- Exemples : « changer le mot de déclenchement en @Bob », « raccourcir les réponses », « enregistrer chaque semaine un résumé des conversations », etc.
- La commande
/customizeaccompagne les modifications étape par étape - La base de code est suffisamment petite pour que Claude puisse la modifier directement en toute sécurité
Extension et mode de contribution
- Les nouvelles fonctionnalités ne sont pas ajoutées directement via des PR, mais fournies sous forme de Skills
- Exemples : extension des canaux de communication avec
/add-telegram,/add-slack,/add-discord, etc. - Conversion d’Apple Container vers Docker avec
/convert-to-docker - Prise en charge de Windows via WSL2 avec
/setup-windows - Ajout de fonctions de résumé et de compression de session avec
/add-clear
- Exemples : extension des canaux de communication avec
- Les contributeurs transforment leur fork via des Skills, puis repartagent le résultat au projet
Exigences système et structure
- Requiert macOS Tahoe(26) ou version ultérieure, Node.js 20+, Claude Code et Apple Container
- Flux d’architecture :
WhatsApp (baileys) → SQLite → Polling loop → Container (Claude Agent SDK) → Response - Principaux fichiers :
src/index.ts: application principale et connexion WhatsAppsrc/container-runner.ts: gestion de l’exécution des conteneurssrc/task-scheduler.ts: fonctionnalités de planificationsrc/db.ts: intégration SQLitegroups/*/CLAUDE.md: stockage de la mémoire par groupe
Résumé de la FAQ
- Pourquoi WhatsApp ? : parce que l’auteur utilise WhatsApp personnellement, et les autres canaux peuvent être remplacés via des Skills
- Pourquoi Apple Container ? : parce qu’il est intégré à macOS, léger et rapide
- Peut-il fonctionner sous Linux ? : un portage serait possible en environ 30 minutes via Claude Code
- Sécurité : fondée sur l’isolation des conteneurs, sans accès en dehors des montages explicites
- Pourquoi l’absence de fichier de configuration ? : pour éviter la prolifération des réglages et conserver une personnalisation centrée sur le code
- Comment déboguer ? : en posant directement des questions à Claude Code pour résoudre les problèmes
- Quelles modifications sont autorisées ? : uniquement les correctifs de sécurité, de bugs et les améliorations de la configuration par défaut
Licence
- Distribué sous licence MIT
- Chacun peut librement le modifier et le redistribuer
1 commentaires
Réactions sur Hacker News
Faire tourner ça en conditions réelles me paraît dangereusement risqué
Ça a l’air acceptable tant que tout va bien, mais au premier problème, c’est terminé
Connecter un système comme Claw à un espace de conversation partagé, c’est littéralement une expérience dangereuse
Les black hats regardent déjà ça de près, et au final beaucoup de gens risquent de se brûler sérieusement
On est peut-être en train de vivre un âge d’or où l’on utilise des LLM à bas prix, sans publicité
En ce moment, les résultats de recherche sont devenus tellement pollués par le spam que j’utilise plutôt l’IA pour lui demander directement des comparatifs ou des devis
Mais j’ai peur qu’on finisse bientôt avec des réponses mêlées de pubs et de recommandations sponsorisées
Quand je publie du code que j’ai écrit ces temps-ci, j’essaie de rédiger la doc ou le README moi-même
Quand un document sent trop le texte généré par LLM, ça me fait perdre de l’intérêt même si le projet est bon
On n’y sent pas une vraie intention de s’adresser à des humains
Même avec quelques fautes, je trouve une explication humaine bien meilleure
À noter que l’auteur a modifié le README après mon commentaire
Lien vers le commit modifié
J’ai corrigé les passages qui faisaient trop IA, comme tu l’as signalé, et c’est bien mieux maintenant
Ce code n’est pas un chef-d’œuvre, c’est du code pratique qui m’est utile
J’espère qu’il pourra aussi servir de référence à d’autres
J’ai passé le week-end à travailler sur l’architecture de sécurité, mais je dois m’arrêter là pour l’instant, donc c’est encore un peu rough
Le README donne un bien meilleur contexte sur le projet
Utiliser l’IA pour le code, très bien, mais le texte de présentation devrait être écrit par une personne
Avant, le code était une « preuve d’effort » en soi, mais maintenant c’est tellement facile à produire que ça a perdu de son poids
Lien vers le fil associé
L’un des avantages de Clawdbot, c’est qu’il autorise toutes les permissions
Cela dit, je me demande comment ce type d’actions externes est sandboxé
Apple Container semble assez solide, car chaque conteneur est mappé en 1:1 à une VM légère
Il existe par exemple instavm/coderunner, un sandbox d’exécution de code générique qui exploite cette approche
Il peut aussi s’intégrer à des IA comme Claude Code
Clawdbot, c’est comme si 100 étudiants de deuxième année frappaient à la porte en demandant les droits root
Ce projet a l’air chouette
Je me demandais justement si on pouvait utiliser l’Agent SDK avec un abonnement Claude Pro/Max,
et d’après la documentation officielle Quickstart, ce serait possible
Il est indiqué qu’après l’installation, si on se connecte dans le terminal, le SDK utilise automatiquement l’authentification
Donc, à première vue, il semble impossible d’utiliser directement le SDK avec un compte d’abonnement
J’aimerais qu’Anthropic clarifie ce point
Comme j’utilise l’Agents SDK, je pense que ce n’est probablement pas contraire aux CGU
En revanche, je ne savais pas comment conserver la session d’authentification dans le conteneur, donc j’ai utilisé un contournement en injectant le token OAuth comme variable d’environnement
C’est la seule faille de sécurité ici. Un utilisateur malveillant pourrait extraire le token via une prompt injection
Si quelqu’un sait comment relier correctement une authentification de session dans un conteneur, je veux bien de l’aide
Si on suit cette documentation, on dirait qu’on peut tout à fait créer des applications de type agent avec un compte d’abonnement
Les non-techniciens ont tendance à surestimer les modèles en ne regardant que la baisse du taux d’hallucination
Mais le vrai danger, ce sont les attaques par prompts malveillants
Comme aux débuts de la carte de crédit, les dégâts ne sont simplement pas encore visibles
Il faudra probablement plusieurs cas concrets avant qu’une vraie prise de conscience n’arrive
J’espérais que quelqu’un finirait par créer une version plus sûre comme celle-ci
OpenClaw est utile, mais il fait aussi peur
Du coup, mon Mac mini est éteint pour l’instant
C’est intéressant qu’ils aient utilisé Apple Container au lieu de Docker
C’est probablement pour économiser les ressources sur un Mac Mini
En revanche, je me demande si ça ne limite pas les outils Linux standard
J’aime bien l’idée d’une petite version d’OpenClaw
Le code semble faire environ 2 500 lignes, et l’architecture Apple Container est intéressante
Dans le Quick Start, il est écrit
git clone https://github.com/anthropics/nanoclaw.git, maisce dépôt n’existe pas. Je me demande si c’est un projet officiel d’Anthropic
On peut aussi se demander si le README n’a pas été halluciné
Lien vers le commit associé
J’y ai branché Claude Code sur un vault Obsidian, avec la possibilité de planifier des tâches cron via WhatsApp
C’est beaucoup plus simple qu’OpenClaw, et suffisamment limité pour que je puisse vraiment le comprendre, ce qui me rassure
J’aimerais surtout que d’autres s’en servent comme référence
Quand je vois des apps vibe codées en ce moment, je finis par faire quelque chose de similaire moi-même avec Claude Code
C’est plus efficace de construire exactement ce dont j’ai besoin que d’utiliser le projet de quelqu’un d’autre
donc la valeur des bibliothèques externes diminue
Ça supprime aussi les risques d’attaques sur la supply chain ou de changement de licence
On entre dans une époque où le code devient à la fois documentation et configuration
C’est pour ça que je préfère ce type de version légère et sur mesure à OpenClaw
On peut la forker pour s’en servir comme point de départ, ou la donner à Claude comme référence pour générer immédiatement sa propre version