Documentação · 02

Conectando uma máquina.

Uma máquina chega ao CommandAGI por meio de um host — o programa no computador ao qual ela está ligada — ou direto pela página do navegador.

O host

O host é o programa que dá à bancada de trabalho os arquivos deste computador e as máquinas ligadas a ele. Há exatamente um host por computador. O aplicativo de desktop é um host; o serviço em segundo plano também, iniciado com commandagi daemon start. Quando o aplicativo de desktop inicia, ele assume o lugar de um serviço em execução.

O host escuta apenas em 127.0.0.1 (porta 4173 por padrão, ou qualquer porta livre) e mantém o estado em ~/.commandagi:

arquivoo que guarda
host.jsona conta à qual este host está vinculado, o id dela e as configurações de vínculo (somente o dono)
grants.jsonas concessões permanentes feitas neste host (somente o dono)
principals.jsonhashes das credenciais dos principais e as chaves de conta confiáveis (somente o dono)
mcp.jsono endpoint MCP local e o token de cada execução (somente o dono)
daemon.jsonqual processo está hospedando, e em qual porta
settings.json, recents.json, devices/, worlds/suas configurações e definições no nível do usuário
daemon.logo log do host

De onde vem: o host vem dentro do aplicativo de desktop e, sozinho, como o pacote npm @commandagi/host (npm install -g @commandagi/host, Node 22 ou mais recente), cujo comando commandagi é a linha de comando do host descrita abaixo. O pacote commandagi no npm é só o SDK; veja SDK e MCP.

O comando 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 executa o host em segundo plano e grava o log em ~/.commandagi/daemon.log. --no-platform hospeda localmente, sem vincular a uma conta.
  • daemon stop recusa enquanto o aplicativo de desktop for o host — feche-o pelo próprio aplicativo.
  • mcp é o relé stdio para agentes (veja SDK e MCP). grant cria e revoga concessões permanentes (veja Agentes e concessões permanentes).
  • threed instala o serviço local de projeto 3D; code eval avalia uma peça de código sem interface e imprime o grafo de operações dela como JSON.

Vincule o host à sua conta

Um host vinculado a uma conta pode ser acessado pela bancada de trabalho dessa conta de qualquer lugar, e age como essa conta. Vincular é entrar:

  • no aplicativo de desktop, entre quando ele pedir;
  • na página da bancada de trabalho servida pelo host, entre pelo painel da esquerda — o host verifica a chave e a guarda;
  • a partir de um shell, defina COMMANDAGI_API_KEY com uma chave de API antes de iniciar o daemon.

A chave da conta fica em host.json, um arquivo simples acessível só ao dono, para que uma pasta ~/.commandagi copiada continue conectada. Sair remove a chave.

Pareie hosts entre si

Hosts em computadores diferentes podem parear, nos dois sentidos, em um único ato: um host oferece, o outro aceita. O pareamento é sempre uma decisão de uma pessoa. Depois de pareados, os agentes podem listar os outros hosts e chamá-los — dentro das concessões que existirem ali.

Drivers de página: USB e Bluetooth pelo navegador

Alguns drivers rodam na própria página da bancada de trabalho, usando WebSerial e Web Bluetooth. Um navegador abre uma porta apenas quando você a escolhe, então um agente sempre usa uma conexão que uma pessoa fez e nunca abre uma por conta própria. Máquinas de rede (a API HTTP de uma impressora, um controlador FluidNC por TCP) são controladas pelo host.

Drivers que escutam máquinas que se conectam pela LAN precisam da configuração "devices.lanListener": true.

Catálogo de drivers

Cada driver diz com o que foi verificado: none (nenhum), loopback (contra uma simulação de software fiel ao protocolo), bench (bancada de testes) ou hardware. Um driver nunca afirma mais do que foi feito. Nenhuma máquina foi comissionada em hardware ainda.

drivermáquina e protocoloroda emverificado
grbl-serialGRBL 1.1, USB serialpáginaloopback
grbl-tcpFluidNC / grblHAL, telnet (TCP 23)hostloopback
marlin-serialMarlin, USB serialpáginaloopback
smoothie-serialSmoothieware, USB serialpáginaloopback
linuxcnc-rshLinuxCNC 2.9 linuxcncrsh (TCP 5007)hostloopback
octoprint-httpOctoPrint 1.xhostloopback
moonraker-httpKlipper via Moonrakerhostloopback
prusalink-httpPrusaLinkhostloopback
repetier-httpRepetier-Serverhostloopback
duet-httpDuet / RepRapFirmware 3.1+hostloopback
feetech-sts-serialbarramento de servos Feetech STS/SCS (SO-100/101)páginaloopback
dynamixel2-serialDynamixel Protocol 2.0 (Koch, WidowX)páginaloopback
xarm-tcpUFACTORY xArm / Lite 6 (TCP 502)hostloopback
host-relaybraço ESP32 do CommandAGI, HTTP na LANhostloopback
wifi8k-dronedrone WIFI_8K / E99 por um link ESP32páginaloopback
ble-hid-relayrelé BLE HID (ESP32)páginaloopback
openpnp-filesentrega de job OpenPnP (arquivos)hostloopback
os-inputteclado e ponteiro deste computadorhostloopback
cdp-tabuma guia do navegador (Chrome DevTools Protocol)hostloopback
cdp-screencasto vídeo de uma guia do navegadorhostloopback
pty-shellum shell neste computadorhostloopback
python-kernelum kernel Python (notebooks)hostloopback
display-capturecaptura de telapáginanone (nenhum)
uvc-cameracâmera USBpáginanone (nenhum)
microphonemicrofonepáginanone (nenhum)

Mundos de simulação usam dois simuladores: gcode-sim para canais de G-code e servo-sim para barramentos de servos.

Próximo

Dê a um agente autoridade sobre uma máquina: Agentes e concessões permanentes.