
Une alternative légère à OpenClaw qui s'exécute dans des conteneurs pour la sécurité. Se connecte à WhatsApp, Telegram, Slack, Discord, Gmail et d'autres applications de messagerie,, dispose d'une mémoire, de tâches planifiées et s'exécute directement sur le SDK Agents d'Anthropic.
Un assistant IA qui exécute des agents en toute sécurité dans leurs propres conteneurs. Léger, conçu pour être facilement compris et entièrement personnalisé selon vos besoins.
nanoclaw.dev •
docs •
中文 •
日本語 •
한국어 •
•
OpenClaw est un projet impressionnant, mais je n'aurais pas pu dormir si j'avais donné à un logiciel complexe que je ne comprenais pas un accès complet à ma vie. OpenClaw a près d'un demi-million de lignes de code, 53 fichiers de configuration et plus de 70 dépendances. Sa sécurité est au niveau application (listes blanches, codes d'appairage) plutôt qu'une véritable isolation au niveau OS. Tout tourne dans un seul processus Node avec mémoire partagée.
NanoClaw offre la même fonctionnalité centrale, mais dans une base de code suffisamment petite pour être comprise : un processus et une poignée de fichiers. Les agents s'exécutent dans leurs propres conteneurs Linux avec isolation du système de fichiers, pas simplement derrière des vérifications de permissions.
git clone https://github.com/nanocoai/nanoclaw.git nanoclaw-v2
cd nanoclaw-v2
bash nanoclaw.sh
nanoclaw.sh vous accompagne d'une machine vierge à un agent nommé que vous pouvez contacter. Il installe Node, pnpm et Docker si manquants, enregistre votre identifiant Anthropic avec OneCLI, construit le conteneur de l'agent et apparie votre premier canal (Telegram, Discord, WhatsApp ou une CLI locale). Si une étape échoue, Claude Code est invoqué automatiquement pour diagnostiquer et reprendre là où ça a cassé.
Exécutez à partir d'un nouveau checkout v2 à côté de votre installation v1 :
git clone https://github.com/nanocoai/nanoclaw.git nanoclaw-v2
cd nanoclaw-v2
bash migrate-v2.sh
migrate-v2.sh trouve votre installation v1 (dossier frère, ou NANOCLAW_V1_PATH=/chemin/vers/nanoclaw), migre l'état dans le checkout v2, puis exec dans Claude Code pour terminer les parties qui nécessitent du jugement (amorçage du propriétaire, nettoyage de CLAUDE.local.md, rejeu de la personnalisation du fork).
Exécutez le script directement, pas depuis une session Claude — la partie déterministe a besoin des invites interactives et d'E/S shell réelles pour le bootstrap Node/pnpm, Docker, OneCLI et la construction du conteneur.
Ce qu'il fait : fusionne .env, alimente la base v2 à partir de registered_groups, copie les dossiers de groupe + données de session + tâches planifiées, installe les adaptateurs de canal que vous sélectionnez, copie l'état d'authentification du canal (y compris le magasin de clés Baileys pour WhatsApp — le mappage LID est désormais résolu par message par l'adaptateur Baileys v7, pas migré), construit le conteneur de l'agent.
Ce qu'il ne fait pas : basculer le service système. Choisissez "passer à v2" à l'invite, ou faites-le manuellement après test — votre installation v1 reste intacte.
Voir docs/v1-to-v2-changes.md pour les différences et pour les notes de développement.
Assez petit pour être compris. Un processus, quelques fichiers source et pas de microservices. Si vous voulez comprendre l'ensemble du code de NanoClaw, demandez simplement à Claude Code de vous le parcourir.
Sécurisé par isolation. Les agents s'exécutent dans des conteneurs Linux et ne voient que ce qui est explicitement monté. L'accès Bash est sûr car les commandes s'exécutent à l'intérieur du conteneur, pas sur votre hôte.
Conçu pour l'utilisateur individuel. NanoClaw n'est pas un cadre monolithique ; c'est un logiciel qui s'adapte aux besoins exacts de chaque utilisateur. Au lieu de devenir un logiciel encombrant, NanoClaw est conçu pour être sur mesure. Vous créez votre propre fork et demandez à Claude Code de le modifier pour l'adapter à vos besoins.
Personnalisation = modifications du code. Pas de prolifération de configuration. Vous voulez un comportement différent ? Modifiez le code. La base de code est suffisamment petite pour qu'il soit sûr d'y apporter des modifications.
Natif IA, hybride par conception. Le flux d'installation et d'intégration est un chemin scripté optimisé, rapide et déterministe. Lorsqu'une étape nécessite un jugement — que ce soit une installation échouée, une décision guidée ou une personnalisation — le contrôle passe de manière transparente à Claude Code. Au-delà de la configuration, il n'y a pas de tableau de bord de surveillance ni d'interface de débogage non plus : décrivez le problème dans le chat et Claude Code s'en charge.
Compétences plutôt que fonctionnalités. Trunk livre le registre et l'infrastructure, pas des adaptateurs de canal spécifiques ni des fournisseurs d'agents alternatifs. Les canaux (Discord, Slack, Telegram, WhatsApp, ...) vivent sur une branche channels de longue durée ; les fournisseurs alternatifs (OpenCode, Ollama) vivent sur providers. Vous exécutez /add-telegram, /add-opencode, etc. et la compétence copie exactement le(s) module(s) dont vous avez besoin dans votre fork. Aucune fonctionnalité que vous n'avez pas demandée.
Meilleur harnais, meilleur modèle. NanoClaw utilise nativement Claude Code via le SDK officiel Claude Agent d'Anthropic, vous obtenez donc les derniers modèles Claude et l'ensemble d'outils complet de Claude Code, y compris la capacité de modifier et d'étendre votre propre fork NanoClaw. D'autres fournisseurs sont des options plug-and-play : /add-codex pour OpenAI Codex (abonnement ChatGPT ou clé API), /add-opencode pour OpenRouter, Google, DeepSeek et plus via OpenCode, et /add-ollama-provider pour les modèles locaux à poids ouverts. Le fournisseur est configurable par groupe d'agents.
/add-<canal>. Exécutez un ou plusieurs à la fois./manage-channels. Voir docs/isolation-model.md.CLAUDE.md, sa propre mémoire, son propre conteneur et uniquement les montages que vous autorisez. Rien ne traverse la limite sauf si vous le câblez.ncl groups create --template <ref>. Les modèles se chargent depuis le dossier local ; remplissez-le manuellement ou en copiant depuis la . Voir .Parlez à votre assistant avec le mot déclencheur (par défaut : @Andy) :
@Andy envoie un aperçu du pipeline de ventes chaque matin de semaine à 9h (a accès à mon dossier Obsidian vault)
@Andy passe en revue l'historique git de la semaine chaque vendredi et met à jour le README s'il y a une dérive
@Andy chaque lundi à 8h, compile les actualités sur les développements IA de Hacker News et TechCrunch et envoie-moi un briefing par message
Depuis un canal que vous possédez ou administrez, vous pouvez gérer les groupes et les tâches :
@Andy liste toutes les tâches planifiées de tous les groupes
@Andy mets en pause la tâche de briefing du lundi
@Andy rejoins le groupe Family Chat
NanoClaw n'utilise pas de fichiers de configuration. Pour apporter des modifications, dites simplement à Claude Code ce que vous voulez :
Ou exécutez /customize pour des modifications guidées.
La base de code est suffisamment petite pour que Claude puisse la modifier en toute sécurité.
N'ajoutez pas de fonctionnalités. Ajoutez des compétences.
Si vous souhaitez ajouter un nouveau canal ou un nouveau fournisseur d'agent, ne l'ajoutez pas à trunk. Les nouveaux adaptateurs de canal atterrissent sur la branche channels ; les nouveaux fournisseurs d'agent atterrissent sur providers. Les utilisateurs les installent dans leur propre fork avec les compétences /add-<nom>, qui copient le(s) module(s) concerné(s) dans les chemins standard, câblent l'enregistrement et épinglent les dépendances.
Cela maintient trunk comme un pur registre et infrastructure, et chaque fork reste léger — les utilisateurs obtiennent les canaux et fournisseurs qu'ils ont demandés et rien d'autre.
Aucune compétence de canal ou de fournisseur n'est actuellement demandée — proposez-en une via une issue.
/customize, /debug, la récupération d'erreur pendant la configuration, et toutes les compétences /add-<canal>applications de messagerie → processus hôte (routeur) → inbound.db → conteneur (Bun, SDK Claude Agent) → outbound.db → processus hôte (livraison) → applications de messagerie
Un seul hôte Node orchestre les conteneurs d'agents par session. Quand un message arrive, l'hôte le route via le modèle d'entité (utilisateur → groupe de messagerie → groupe d'agents → session), l'écrit dans inbound.db de la session, et réveille le conteneur. L'exécuteur d'agent à l'intérieur du conteneur interroge inbound.db, exécute l'agent et écrit les réponses dans outbound.db. L'hôte interroge outbound.db et livre via l'adaptateur de canal.
Deux fichiers SQLite par session, chacun avec un seul rédacteur — pas de conflit de montage croisé, pas d'IPC, pas de tuyauterie stdin. Les canaux et fournisseurs alternatifs s'enregistrent automatiquement au démarrage ; trunk livre le registre et le pont SDK Chat, tandis que les adaptateurs eux-mêmes sont installés par compétence par fork.
Pour une description complète de l'architecture, voir docs/architecture.md ; pour le modèle d'isolation à trois niveaux, voir docs/isolation-model.md.
Fichiers clés :
src/index.ts — point d'entrée : initialisation de la base de données, adaptateurs de canal, sondes de livraison, balayagesrc/router.ts — routage entrant : groupe de messagerie → groupe d'agents → session → inbound.dbsrc/delivery.ts — interroge outbound.db, livre via adaptateur, gère les actions systèmesrc/host-sweep.ts — balayage toutes les 60s : détection de session inactive, réveil pour message en attente, récurrencesrc/session-manager.ts — résout les sessions, ouvre inbound.db / outbound.dbsrc/container-runner.ts — lance les conteneurs par groupe d'agents, injection d'identifiants OneCLIsrc/db/ — base de données centrale (utilisateurs, rôles, groupes d'agents, groupes de messagerie, câblage, migrations)src/channels/ — infrastructure d'adaptateur de canal (adaptateurs installés via compétences )Pourquoi Docker ?
Docker offre une prise en charge multiplateforme (macOS, Linux et Windows via WSL2) et un écosystème mature.
Puis-je l'exécuter sur Linux ou Windows ?
Oui. Docker est l'exécution par défaut et fonctionne sur macOS, Linux et Windows (via WSL2). Exécutez simplement bash nanoclaw.sh.
Est-ce sécurisé ?
Les agents s'exécutent dans des conteneurs, pas derrière des vérifications de permissions au niveau application. Ils ne peuvent accéder qu'aux répertoires explicitement montés. Les identifiants n'entrent jamais dans le conteneur — les requêtes API sortantes sont routées via le Coffre d'Agent d'OneCLI, qui injecte l'authentification au niveau du proxy et prend en charge les limites de débit et les politiques d'accès. Vous devriez toujours examiner ce que vous exécutez, mais la base de code est suffisamment petite pour que vous puissiez réellement le faire. Voir la documentation de sécurité pour le modèle de sécurité complet.
Pourquoi pas de fichiers de configuration ?
Nous ne voulons pas de prolifération de configuration. Chaque utilisateur doit personnaliser NanoClaw pour que le code fasse exactement ce qu'il veut, plutôt que de configurer un système générique. Si vous préférez les fichiers de configuration, vous pouvez demander à Claude de les ajouter.
Puis-je utiliser des modèles tiers ou open-source ?
Oui. Le chemin pris en charge est /add-opencode (OpenRouter, OpenAI, Google, DeepSeek et plus via la configuration OpenCode) ou /add-ollama-provider (modèles locaux à poids ouverts via Ollama). Les deux sont configurables par groupe d'agents, donc différents agents peuvent fonctionner sur différents backend dans la même installation.
Pour des expériences ponctuelles, tout point de terminaison compatible avec l'API Claude fonctionne également via .env :
ANTHROPIC_BASE_URL=https://votre-point-de-term- api.com
ANTHROPIC_AUTH_TOKEN=votre-token-ici
Comment déboguer les problèmes ?
Demandez à Claude Code. "Pourquoi le planificateur ne tourne-t-il pas ?" "Qu'y a-t-il dans les journaux récents ?" "Pourquoi ce message n'a-t-il pas reçu de réponse ?" C'est l'approche native IA qui sous-tend NanoClaw.
Pourquoi l'installation ne fonctionne-t-elle pas pour moi ?
Si une étape échoue, nanoclaw.sh passe la main à Claude Code pour diagnostiquer et reprendre. Si cela ne résout pas le problème, exécutez claude, puis /debug. Si Claude identifie un problème susceptible d'affecter d'autres utilisateurs, ouvrez une PR sur l'étape de configuration ou la compétence concernée.
Comment désinstaller NanoClaw ?
bash nanoclaw.sh --uninstall
Chaque installation est marquée avec un identifiant par checkout, donc le désinstalleur ne supprime que ce qui appartient à cette copie : le service en arrière-plan, les conteneurs et l'image, les données d'application et les journaux, les fichiers de vos agents, et les agents du coffre OneCLI de cette copie. Les éléments partagés — l'application OneCLI et vos identifiants, les autres copies de NanoClaw sur la machine — sont laissés intacts. Il montre exactement ce qu'il a trouvé et demande confirmation par groupe ; rien n'est supprimé tant que vous n'avez pas dit oui. Utilisez --dry-run pour prévisualiser sans rien changer, ou --yes pour ignorer les invites. Votre .env est sauvegardé avant la suppression. Pour terminer, supprimez le dossier de checkout lui-même.
Quels changements seront acceptés dans la base de code ?
Seules les corrections de sécurité, les corrections de bugs et les améliorations claires seront acceptées dans la configuration de base. C'est tout.
Tout le reste (nouvelles capacités, compatibilité OS, support matériel, améliorations) doit être contribué sous forme de compétences : code de canal et de fournisseur sur les branches channels/providers du registre, tout le reste comme une compétence autonome. Voir docs/customizing.md et CONTRIBUTING.md.
Cela maintient le système de base minimal et permet à chaque utilisateur de personnaliser son installation sans hériter de fonctionnalités qu'il ne souhaite pas.
Des questions ? Des idées ? Rejoignez le Discord.
Voir CHANGELOG.md pour les changements majeurs, ou l'historique complet des versions sur le site de documentation.
MIT

templates//add-<canal>src/providers/ — configuration des fournisseurs côté hôte (claude inclus ; autres via compétences)container/agent-runner/ — exécuteur d'agent Bun : boucle d'interrogation, outils MCP, abstraction de fournisseurgroups/<dossier>/ — système de fichiers par groupe d'agents (CLAUDE.md, compétences, configuration du conteneur)