L’hôte
L’hôte est le programme qui donne à l’atelier les fichiers de cet ordinateur et les machines qui y sont reliées. Il y a exactement un hôte par ordinateur. L’application de bureau est un hôte ; le service en arrière-plan, lancé avec commandagi daemon start, en est un aussi. Quand l’application de bureau démarre, elle prend le relais d’un service en cours d’exécution.
L’hôte écoute uniquement sur 127.0.0.1 (port 4173 par défaut, ou tout port libre) et conserve son état dans ~/.commandagi :
| fichier | contenu |
|---|---|
host.json | le compte auquel cet hôte est lié, son identifiant et ses paramètres de liaison (propriétaire seul) |
grants.json | les autorisations permanentes accordées sur cet hôte (propriétaire seul) |
principals.json | les hachages des justificatifs des mandants et les clés de compte de confiance (propriétaire seul) |
mcp.json | le point de terminaison MCP local et son jeton de chaque lancement (propriétaire seul) |
daemon.json | quel processus héberge, et sur quel port |
settings.json, recents.json, devices/, worlds/ | vos paramètres au niveau utilisateur et vos définitions |
daemon.log | le journal de l’hôte |
D’où il vient : l’hôte est fourni avec l’application de bureau, et seul sous forme du paquet npm @commandagi/host (npm install -g @commandagi/host, Node 22 ou plus récent), dont la commande commandagi est la ligne de commande de l’hôte ci-dessous. Le paquet commandagi sur npm n’est que le SDK ; voir SDK et MCP.
La commande commandagi
commandagi daemon start [--port N] [--project DIR] [--name X] [--no-platform]
commandagi daemon status | stop | logs
commandagi daemon run [same flags, in the foreground]
commandagi mcp [--credential-file F]
commandagi grant add | list | revoke …
commandagi threed install | status
commandagi code eval <path> [--input name=value]…daemon startlance l’hôte en arrière-plan et journalise dans~/.commandagi/daemon.log.--no-platformhéberge en local, sans lien vers un compte.daemon stoprefuse tant que l’application de bureau est l’hôte. Quittez-la depuis l’application.mcpest le relais stdio pour les agents (voir SDK et MCP).grantcrée et révoque les autorisations permanentes (voir Agents et autorisations permanentes).threedinstalle le service local de conception 3D ;code evalévalue une pièce de code sans interface et affiche son graphe d’opérations en JSON.
Lier l’hôte à votre compte
On peut joindre un hôte lié à un compte depuis l’atelier de ce compte, où qu’il soit, et il agit comme ce compte. Lier, c’est se connecter :
- dans l’application de bureau, connectez-vous quand elle le demande ;
- sur la page de l’atelier servie par l’hôte, connectez-vous depuis le dock gauche : l’hôte vérifie la clé et la conserve ;
- depuis un shell, définissez
COMMANDAGI_API_KEYavec une clé d’API avant de lancer le daemon.
La clé de compte est conservée dans host.json, un fichier en clair réservé au propriétaire, afin qu’un ~/.commandagi copié reste connecté. La déconnexion la supprime.
Appairer des hôtes entre eux
Des hôtes sur des ordinateurs différents peuvent s’appairer, dans les deux sens, en un seul geste : un hôte propose, l’autre accepte. L’appairage est toujours une décision d’une personne. Une fois appairés, les agents peuvent lister les autres hôtes et les appeler, dans les limites des autorisations qui existent là-bas.
Pilotes de page : USB et Bluetooth depuis le navigateur
Certains pilotes tournent dans la page de l’atelier elle-même, avec WebSerial et Web Bluetooth. Un navigateur n’ouvre un port que lorsque vous le choisissez : un agent utilise donc toujours une connexion faite par une personne et n’en ouvre jamais une seule. Les machines réseau (l’API HTTP d’une imprimante, un contrôleur FluidNC en TCP) sont pilotées par l’hôte.
Les pilotes qui écoutent les machines qui se connectent par le LAN ont besoin du paramètre "devices.lanListener": true.
Catalogue des pilotes
Chaque pilote indique face à quoi il a été vérifié : none, loopback (face à une imitation logicielle fidèle du protocole), bench ou hardware. Un pilote ne revendique jamais plus que ce qui a été fait. Aucune machine n’a encore été mise en service sur du matériel réel.
| pilote | machine et protocole | s’exécute dans | vérifié |
|---|---|---|---|
grbl-serial | GRBL 1.1, série USB | page | loopback |
grbl-tcp | FluidNC / grblHAL, telnet (TCP 23) | hôte | loopback |
marlin-serial | Marlin, série USB | page | loopback |
smoothie-serial | Smoothieware, série USB | page | loopback |
linuxcnc-rsh | LinuxCNC 2.9 linuxcncrsh (TCP 5007) | hôte | loopback |
octoprint-http | OctoPrint 1.x | hôte | loopback |
moonraker-http | Klipper via Moonraker | hôte | loopback |
prusalink-http | PrusaLink | hôte | loopback |
repetier-http | Repetier-Server | hôte | loopback |
duet-http | Duet / RepRapFirmware 3.1+ | hôte | loopback |
feetech-sts-serial | bus de servos Feetech STS/SCS (SO-100/101) | page | loopback |
dynamixel2-serial | Dynamixel Protocol 2.0 (Koch, WidowX) | page | loopback |
xarm-tcp | UFACTORY xArm / Lite 6 (TCP 502) | hôte | loopback |
host-relay | bras ESP32 CommandAGI, HTTP sur LAN | hôte | loopback |
wifi8k-drone | drone WIFI_8K / E99 via une liaison ESP32 | page | loopback |
ble-hid-relay | relais BLE HID (ESP32) | page | loopback |
openpnp-files | transfert de tâche OpenPnP (fichiers) | hôte | loopback |
os-input | clavier et pointeur de cet ordinateur | hôte | loopback |
cdp-tab | un onglet de navigateur (Chrome DevTools Protocol) | hôte | loopback |
cdp-screencast | la vidéo d’un onglet de navigateur | hôte | loopback |
pty-shell | un shell sur cet ordinateur | hôte | loopback |
python-kernel | un noyau Python (notebooks) | hôte | loopback |
display-capture | capture d’écran | page | none |
uvc-camera | caméra USB | page | none |
microphone | microphone | page | none |
Les mondes de simulation utilisent deux simulateurs à la place : gcode-sim pour les canaux G-code et servo-sim pour les bus de servos.
Suite
Donnez à un agent l’autorité sur une machine : Agents et autorisations permanentes.