SecuFocus
ProjetProjets IA

Moltis : un binaire chez vous, pas une garantie de sécurité

Moltis est un serveur d’agent en Rust, livré en un binaire. Il tourne sur votre machine et parle aux messageries que vous branchez. La page d’accueil dit que les clés ne partent pas. La documentation, elle, dit logiciel alpha. Et une question envoyée à un modèle distant quitte quand même la machine.

Nature morte : un bocal de verre fermé, une clé posée à côté et une bande de papier qui n’entre pas. Illustration, pas une capture du logiciel.

Illustration originale générée avec une IA · SecuFocus

En bref

L’essentiel

Prenez Moltis si vous voulez un serveur d’agent installé, un bac à sable choisi parmi les moteurs présents, et des canaux déjà dans le binaire. Ne le prenez pas parce que le site dit sécurisé. Sans conteneur, le repli documenté n’isole pas le système de fichiers. Le mode d’approbation par défaut peut être coupé. Cette lecture décrit la documentation publiée. Elle ne remplace pas une installation.

Pour qui

Moltis convient si vous administrez la machine, et si vous acceptez qu’un agent exécute des commandes dans la limite de ce que vous avez autorisé. Le binaire distribué vise macOS et Linux. L’image Docker publiée couvre amd64 et arm64. Le site parle aussi d’un Mac mini, d’un Raspberry Pi ou d’un serveur à vous. Ce n’est pas un essai que nous avons fait tourner.

Il convient mal si vous voulez une fenêtre de chat, sans rien installer. Il convient mal aussi si personne ne peut approuver une commande, ou si vous comptez exposer le service sur Internet le premier soir. La documentation d’introduction le classe en logiciel alpha : environnement isolé, outils relus, secrets limités et tournés, pas d’exposition publique sans authentification forte et sans contrôle du réseau.

Ce que c’est

Moltis se présente comme un serveur d’agent personnel, persistant, écrit en Rust. Le binaire distribué embarque l’interface web, les fournisseurs de modèles et les outils. Vous n’avez pas un runtime Node à faire vivre à côté, contrairement à un agent qui s’installe par npm. Compiler le projet depuis les sources est une autre affaire : la page d’installation demande Rust 1.91 ou plus, un compilateur C, l’outil just, et Node pour construire le CSS.

Le site dit que ce n’est pas un habillage de chatbot, ni un service cloud lié à un seul fournisseur. La documentation liste des fournisseurs distants, Anthropic, OpenAI, Google, DeepSeek, Mistral et d’autres, et des modèles locaux, Ollama, LM Studio, un fichier GGUF, un point d’accès au format OpenAI. Le serveur est chez vous. Le modèle, lui, est celui que vous choisissez.

Le site publie aussi un témoignage qui compare Moltis à OpenClaw, et qui parle de garde-fous absents ou coupés ailleurs. Un message sur Discord n’est pas une mesure. La différence que les deux documentations permettent de vérifier est plus étroite : Moltis choisit un bac à sable s’il en trouve un. OpenClaw laisse le bac à sable éteint tant que vous ne l’allumez pas.

Comment on l’installe

Le chemin rapide documenté, sur macOS ou Linux, est un script du site, qui dépose le binaire dans ~/.local/bin. Homebrew a une formule, moltis-org/tap/moltis. Le même script peut installer un paquet Debian, RPM, Arch ou une AppImage. Snap a sa propre commande. Docker tire ghcr.io/moltis-org/moltis:latest.

Au premier lancement, moltis ouvre une adresse locale. La page d’installation dit qu’un port libre est choisi, puis enregistré dans la configuration, pour éviter un conflit. Le site et l’exemple Docker publient le port 13131, plus le port 1455 dans la commande Docker. Ce n’est pas la même phrase. Retenez le port affiché dans le terminal, pas seulement celui de la page d’accueil.

Sur localhost, la documentation dit que l’authentification n’est pas exigée. Dès que l’accès ne vient plus de la machine, un code de mise en place s’affiche dans le terminal. Ouvrir le port sur le réseau sans lire cette ligne, c’est découvrir le service avant d’avoir posé l’authentification.

Faites défiler le tableau horizontalement pour lire toutes les colonnes.

CheminCe que la documentation en ditPoint à connaître
Script ou HomebrewBinaire dans ~/.local/bin, ou formule du tapLe script vient du site du projet. Vous lui faites confiance au moment de l’exécuter.
Paquet deb, rpm, Arch, AppImage, SnapMême installeur, avec une méthode, ou snap install moltisLes noms de fichiers de version changent. La page renvoie au script plutôt qu’à une URL figée.
DockerImage ghcr.io/moltis-org/moltis, amd64 et arm64L’exemple du site publie les ports 13131 et 1455, et des volumes pour la configuration et les données.
SourcesRust 1.91, compilateur C, just, Node pour le CSSCe n’est pas le chemin du binaire. Le WASM du bac à sable se construit à part.
  1. Choisissez le binaire, Homebrew, un paquet, ou l’image ghcr.io/moltis-org/moltis.
  2. Lancez moltis et ouvrez l’adresse affichée, pas une adresse devinée.
  3. Ajoutez un fournisseur. Une clé d’API se colle dans l’interface. Des accès OAuth, comme GitHub Copilot, sont présentés sans clé à coller.
  4. Vérifiez quel bac à sable a été retenu avant de brancher une messagerie.
  5. N’exposez le service qu’une fois le code de mise en place utilisé, et le réseau limité.

Le bac à sable n’est pas une promesse unique

La page d’accueil dit que l’agent ne touche pas au système de fichiers tant que vous ne l’avez pas dit. La page des bacs à sable est plus précise. Le réglage par défaut s’appelle auto. Moltis prend le moteur le plus fort qu’il trouve, dans un ordre fixé.

Apple Container passe en premier, sur Mac seulement. C’est une machine virtuelle : le conteneur a son propre noyau. Ensuite Podman, puis Docker. Les deux isolent par les espaces de noms Linux. Si rien de cela n’est là, le repli s’appelle restricted-host : des variables d’environnement vidées et des limites de ressources, sans isolation du système de fichiers. Le dernier cran est l’exécution sur l’hôte, sans isolation.

Le bac WASM n’entre pas dans cette chaîne. Il ne sait pas lancer une commande shell arbitraire. Il faut le demander explicitement. Installer Moltis sur une machine sans Podman, sans Docker et sans Apple Container, ce n’est donc pas le même produit que celui décrit par la phrase de la page d’accueil.

Faites défiler le tableau horizontalement pour lire toutes les colonnes.

PrioritéMoteurOùIsolement documenté
1Apple ContainermacOSMachine virtuelle, noyau à part
2PodmanLà où il est installéEspaces de noms, sans démon, rootless par défaut
3DockerLà où il est installéEspaces de noms, noyau partagé avec l’hôte
4Restricted hostRepliPas d’isolement du système de fichiers
5HôteRepliPas d’isolement

Qui approuve une commande

Par défaut, une commande jugée dangereuse demande une approbation. Le mode s’appelle smart. Vous pouvez passer à always, pour tout faire approuver, ou à never, que la page de sécurité appelle dangereux. Le réglage est dans moltis.toml, sous tools.exec.

Même en never, une liste codée en dur bloque des motifs très destructeurs, comme un effacement récursif de la racine, un git reset --hard, un DROP TABLE, un mkfs ou un terraform destroy. Ces commandes redemandent une approbation. Vous pouvez retirer un motif en l’ajoutant à votre liste d’autorisation. Et cette liste ne s’applique qu’à l’exécution sur l’hôte. Une commande déjà dans un bac à sable n’est pas reprise par ce filet.

Dans une messagerie, la demande d’approbation doit aussi arriver sur le canal, pour que l’exécution ne reste pas bloquée en silence. La documentation cite /approvals, puis /approve ou /deny, depuis Telegram ou WhatsApp. Un agent joignable sans personne pour répondre à ces messages n’est pas le déploiement décrit.

Où il vous répond

Les canaux sont dans le binaire, pas dans une boutique à installer un par un. Ce n’est pas la même chose qu’une absence de compétences tierces : la page de sécurité renvoie à un durcissement des skills et plugins venus d’ailleurs. Le site, lui, insiste sur l’absence de marketplace comme surface d’attaque. Les deux phrases ne se recouvrent pas. Lisez la page de sécurité si vous activez une compétence qui n’est pas dans le binaire.

Tous les canaux ne demandent pas la même ouverture réseau. Telegram interroge la plateforme. Discord, Matrix et WhatsApp ouvrent une connexion sortante. Slack utilise le Socket Mode. Aucun de ceux-là n’exige une URL publique. Microsoft Teams, si : la plateforme appelle un webhook chez vous. Signal est documenté, avec signal-cli, pour le texte, les messages directs et les groupes. Nostr couvre des messages directs chiffrés, pas le même ensemble de fonctions.

La page d’accueil ajoute la voix, la mémoire, le calendrier CalDAV, la navigation web et des tâches en langage naturel. La page des canaux, elle, détaille ce que chaque plateforme sait recevoir. Une pièce jointe ou un fil de discussion n’est pas garanti partout. Teams a besoin d’une URL publique. Signal, dans le tableau, n’a pas la voix en entrée.

Faites défiler le tableau horizontalement pour lire toutes les colonnes.

CanalComment il reçoitURL publique
TelegramInterrogation régulièreNon
Discord, Matrix, WhatsAppConnexion sortanteNon
SlackSocket ModeNon
Signalsignal-cliNon
NostrAbonnement à un relaisNon
Microsoft TeamsWebhookOui

Ce qui part, et ce qui reste

La configuration vit dans ~/.config/moltis. Les sessions, les bases et la mémoire vivent dans ~/.moltis. Les supprimer, c’est effacer l’agent, pas seulement le binaire. Un profil Unix partagé laisse ces dossiers lisibles par la même session de connexion.

La page d’accueil dit que les clés et les données privées ne quittent pas la machine. La page d’installation vous demande d’ajouter une clé de fournisseur, ou un accès OAuth. La clé peut rester dans la configuration locale. La question envoyée à Anthropic, OpenAI, Google ou un autre hôte distant, elle, quitte la machine. Un modèle local, Ollama ou un fichier sur disque, est le cas où cette phrase tient. Le projet liste les deux. Il ne les confond pas dans le tableau des fournisseurs. La page d’accueil, si.

Une mémoire persistante, avec recherche vectorielle, garde des extraits d’une session à l’autre. Ce n’est pas une preuve que ce qui est retenu est exact, ni que le fournisseur du modèle n’a rien conservé de son côté. Moltis ne devient pas privé parce qu’il est chez vous. Il est privé dans la mesure où le modèle, le réseau et les outils le sont.

Ce qu’il ne faut pas lui demander

Ne lui demandez pas d’être un audit. Le projet se dit alpha. Les refus par défaut et l’ordre des bacs à sable sont des réglages documentés. Ils ne disent pas que votre machine a Podman, ni que personne n’a passé approval_mode à never.

Ne lui demandez pas non plus d’être un service public. L’authentification n’est exigée qu’hors de localhost. Teams demande une URL joignable. Exposer l’un ou l’autre sans limiter qui peut écrire, c’est changer le produit.

Cette lecture suit le site et les pages d’installation, de sécurité, de bac à sable et de canaux. Elle n’a pas installé Moltis, ni mesuré un Raspberry Pi, ni comparé une vitesse avec OpenClaw. Le témoignage affiché sur le site reste un témoignage.

Le choix

Choisissez Moltis si vous voulez un serveur d’agent en un binaire, un bac à sable qui se branche sur le moteur déjà présent, et des canaux inclus. Vérifiez le moteur retenu avant la première messagerie. Laissez les approbations en smart, ou en always, tant que vous n’avez pas une raison de faire autrement. Préférez un modèle local si la phrase sur les données qui ne partent pas doit être vraie.

Regardez ailleurs si vous ne pouvez pas assumer un programme qui exécute, ou si la machine n’a aucun moteur de conteneur et que vous comptiez sur l’isolement des fichiers. Le cadre général est dans le guide sur l’IA générative. Hermes Agent est l’autre carte de la même section, avec un autre modèle de déploiement.

Vérifier, approfondir

Les sources de cet article

Les numéros relient chaque référence aux passages qui l’utilisent. La date indique quand la documentation a été consultée.

  1. Canaux, Moltis ↗docs.moltis.org ·

Cet article s’appuie sur les sources ci-dessus. Les exercices proposés sont à réaliser sur vos appareils ; SecuFocus ne les présente pas comme des essais menés par la rédaction. Les interfaces et les fonctions peuvent changer. Méthode et corrections.

Citer cet article

Pour retrouver cette lecture ou la partager avec sa référence.