Dokumentation · 02

Eine Maschine verbinden.

Eine Maschine erreicht CommandAGI über einen Host — das Programm auf dem Computer, an den sie angeschlossen ist — oder direkt von der Browserseite aus.

Der Host

Der Host ist das Programm, das der Werkbank die Dateien dieses Computers und die daran angeschlossenen Maschinen gibt. Es gibt genau einen Host pro Computer. Die Desktop-App ist ein Host; ebenso der Hintergrunddienst, der mit commandagi daemon start gestartet wird. Wenn die Desktop-App startet, übernimmt sie von einem laufenden Dienst.

Der Host hört nur auf 127.0.0.1 (standardmäßig Port 4173 oder ein beliebiger freier Port) und speichert seinen Zustand in ~/.commandagi:

DateiInhalt
host.jsondas Konto, mit dem dieser Host verknüpft ist, seine ID und seine Verknüpfungseinstellungen (nur für den Eigentümer)
grants.jsondie auf diesem Host erteilten Dauerberechtigungen (nur für den Eigentümer)
principals.jsonHashes der Zugangsdaten von Prinzipalen und die vertrauenswürdigen Kontoschlüssel (nur für den Eigentümer)
mcp.jsonder lokale MCP-Endpunkt und sein Token pro Start (nur für den Eigentümer)
daemon.jsonwelcher Prozess hostet, auf welchem Port
settings.json, recents.json, devices/, worlds/Ihre Einstellungen auf Benutzerebene und Ihre Definitionen
daemon.logdas Protokoll des Hosts

Woher er kommt: Der Host wird mit der Desktop-App ausgeliefert und allein als npm-Paket @commandagi/host (npm install -g @commandagi/host, Node 22 oder neuer), dessen Befehl commandagi der Befehlszeile des Hosts unten entspricht. Das Paket commandagi auf npm ist nur das SDK; siehe SDK und MCP.

Der Befehl 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 startet den Host im Hintergrund und schreibt das Protokoll nach ~/.commandagi/daemon.log. --no-platform hostet lokal, ohne Verknüpfung mit einem Konto.
  • daemon stop verweigert, solange die Desktop-App der Host ist — beenden Sie sie stattdessen in der App.
  • mcp ist die stdio-Weiterleitung für Agenten (siehe SDK und MCP). grant erstellt und widerruft Dauerberechtigungen (siehe Agenten und Dauerberechtigungen).
  • threed installiert den lokalen 3D-Designdienst; code eval wertet einen Codeteil ohne Oberfläche aus und gibt seinen Operationsgraphen als JSON aus.

Den Host mit Ihrem Konto verknüpfen

Ein Host, der mit einem Konto verknüpft ist, ist von der Werkbank dieses Kontos überall erreichbar und handelt als dieses Konto. Verknüpfen heißt anmelden:

  • in der Desktop-App melden Sie sich an, wenn sie danach fragt;
  • auf der Werkbankseite, die der Host ausliefert, melden Sie sich im linken Dock an — der Host prüft den Schlüssel und behält ihn;
  • aus einer Shell setzen Sie COMMANDAGI_API_KEY auf einen API-Schlüssel, bevor Sie den Daemon starten.

Der Kontoschlüssel wird in host.json gespeichert, einer einfachen Datei, die nur der Eigentümer lesen kann, damit ein kopiertes ~/.commandagi angemeldet bleibt. Abmelden entfernt ihn.

Hosts untereinander koppeln

Hosts auf verschiedenen Computern können sich in beide Richtungen in einem Schritt koppeln: Ein Host bietet an, der andere nimmt an. Das Koppeln ist immer eine Entscheidung einer Person. Nach dem Koppeln können Agenten die anderen Hosts auflisten und aufrufen — im Rahmen der dort bestehenden Berechtigungen.

Seitentreiber: USB und Bluetooth aus dem Browser

Einige Treiber laufen auf der Werkbankseite selbst und nutzen WebSerial und Web Bluetooth. Ein Browser öffnet einen Port nur, wenn Sie ihn auswählen; so nutzt ein Agent immer eine Verbindung, die eine Person hergestellt hat, und öffnet nie selbst eine. Netzwerkmaschinen (die HTTP-API eines Druckers, ein FluidNC-Controller über TCP) werden vom Host gesteuert.

Treiber, die auf Maschinen warten, die sich über das LAN einwählen, brauchen die Einstellung "devices.lanListener": true.

Treiberkatalog

Jeder Treiber sagt, wogegen er geprüft wurde: keine, Loopback (gegen eine getreue Software-Attrappe des Protokolls), Prüfstand oder Hardware. Ein Treiber behauptet nie mehr, als getan wurde. Noch keine Maschine wurde an Hardware in Betrieb genommen.

TreiberMaschine und Protokollläuft ingeprüft
grbl-serialGRBL 1.1, USB-SeriellSeiteLoopback
grbl-tcpFluidNC / grblHAL, Telnet (TCP 23)HostLoopback
marlin-serialMarlin, USB-SeriellSeiteLoopback
smoothie-serialSmoothieware, USB-SeriellSeiteLoopback
linuxcnc-rshLinuxCNC 2.9 linuxcncrsh (TCP 5007)HostLoopback
octoprint-httpOctoPrint 1.xHostLoopback
moonraker-httpKlipper über MoonrakerHostLoopback
prusalink-httpPrusaLinkHostLoopback
repetier-httpRepetier-ServerHostLoopback
duet-httpDuet / RepRapFirmware 3.1+HostLoopback
feetech-sts-serialFeetech-STS/SCS-Servobus (SO-100/101)SeiteLoopback
dynamixel2-serialDynamixel-Protokoll 2.0 (Koch, WidowX)SeiteLoopback
xarm-tcpUFACTORY xArm / Lite 6 (TCP 502)HostLoopback
host-relayCommandAGI-ESP32-Roboterarm, LAN-HTTPHostLoopback
wifi8k-droneWIFI_8K- / E99-Drohne über eine ESP32-VerbindungSeiteLoopback
ble-hid-relayBLE-HID-Relais (ESP32)SeiteLoopback
openpnp-filesOpenPnP-Auftragsübergabe (Dateien)HostLoopback
os-inputTastatur und Zeiger dieses ComputersHostLoopback
cdp-tabein Browser-Tab (Chrome DevTools Protocol)HostLoopback
cdp-screencastdas Video eines Browser-TabsHostLoopback
pty-shelleine Shell auf diesem ComputerHostLoopback
python-kernelein Python-Kernel (Notebooks)HostLoopback
display-captureBildschirmaufnahmeSeitekeine
uvc-cameraUSB-KameraSeitekeine
microphoneMikrofonSeitekeine

Simulationswelten verwenden stattdessen zwei Simulatoren: gcode-sim für G-Code-Kanäle und servo-sim für Servobusse.

Weiter

Geben Sie einem Agenten Befugnis über eine Maschine: Agenten und Dauerberechtigungen.