Documentation · 02

Connecter une machine.

Une machine rejoint CommandAGI par un hôte — le programme de l’ordinateur auquel elle est branchée — ou directement depuis la page du navigateur.

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 :

fichiercontenu
host.jsonle compte auquel cet hôte est lié, son identifiant et ses paramètres de liaison (propriétaire seul)
grants.jsonles autorisations permanentes accordées sur cet hôte (propriétaire seul)
principals.jsonles hachages des justificatifs des mandants et les clés de compte de confiance (propriétaire seul)
mcp.jsonle point de terminaison MCP local et son jeton de chaque lancement (propriétaire seul)
daemon.jsonquel processus héberge, et sur quel port
settings.json, recents.json, devices/, worlds/vos paramètres au niveau utilisateur et vos définitions
daemon.logle 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

shell
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 start lance l’hôte en arrière-plan et journalise dans ~/.commandagi/daemon.log. --no-platform héberge en local, sans lien vers un compte.
  • daemon stop refuse tant que l’application de bureau est l’hôte. Quittez-la depuis l’application.
  • mcp est le relais stdio pour les agents (voir SDK et MCP). grant crée et révoque les autorisations permanentes (voir Agents et autorisations permanentes).
  • threed installe 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_KEY avec 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.

pilotemachine et protocoles’exécute dansvérifié
grbl-serialGRBL 1.1, série USBpageloopback
grbl-tcpFluidNC / grblHAL, telnet (TCP 23)hôteloopback
marlin-serialMarlin, série USBpageloopback
smoothie-serialSmoothieware, série USBpageloopback
linuxcnc-rshLinuxCNC 2.9 linuxcncrsh (TCP 5007)hôteloopback
octoprint-httpOctoPrint 1.xhôteloopback
moonraker-httpKlipper via Moonrakerhôteloopback
prusalink-httpPrusaLinkhôteloopback
repetier-httpRepetier-Serverhôteloopback
duet-httpDuet / RepRapFirmware 3.1+hôteloopback
feetech-sts-serialbus de servos Feetech STS/SCS (SO-100/101)pageloopback
dynamixel2-serialDynamixel Protocol 2.0 (Koch, WidowX)pageloopback
xarm-tcpUFACTORY xArm / Lite 6 (TCP 502)hôteloopback
host-relaybras ESP32 CommandAGI, HTTP sur LANhôteloopback
wifi8k-dronedrone WIFI_8K / E99 via une liaison ESP32pageloopback
ble-hid-relayrelais BLE HID (ESP32)pageloopback
openpnp-filestransfert de tâche OpenPnP (fichiers)hôteloopback
os-inputclavier et pointeur de cet ordinateurhôteloopback
cdp-tabun onglet de navigateur (Chrome DevTools Protocol)hôteloopback
cdp-screencastla vidéo d’un onglet de navigateurhôteloopback
pty-shellun shell sur cet ordinateurhôteloopback
python-kernelun noyau Python (notebooks)hôteloopback
display-capturecapture d’écranpagenone
uvc-cameracaméra USBpagenone
microphonemicrophonepagenone

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.