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:
| arquivo | o que guarda |
|---|---|
host.json | a conta à qual este host está vinculado, o id dela e as configurações de vínculo (somente o dono) |
grants.json | as concessões permanentes feitas neste host (somente o dono) |
principals.json | hashes das credenciais dos principais e as chaves de conta confiáveis (somente o dono) |
mcp.json | o endpoint MCP local e o token de cada execução (somente o dono) |
daemon.json | qual 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.log | o 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
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 startexecuta o host em segundo plano e grava o log em~/.commandagi/daemon.log.--no-platformhospeda localmente, sem vincular a uma conta.daemon stoprecusa enquanto o aplicativo de desktop for o host — feche-o pelo próprio aplicativo.mcpé o relé stdio para agentes (veja SDK e MCP).grantcria e revoga concessões permanentes (veja Agentes e concessões permanentes).threedinstala o serviço local de projeto 3D;code evalavalia 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_KEYcom 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.
| driver | máquina e protocolo | roda em | verificado |
|---|---|---|---|
grbl-serial | GRBL 1.1, USB serial | página | loopback |
grbl-tcp | FluidNC / grblHAL, telnet (TCP 23) | host | loopback |
marlin-serial | Marlin, USB serial | página | loopback |
smoothie-serial | Smoothieware, USB serial | página | loopback |
linuxcnc-rsh | LinuxCNC 2.9 linuxcncrsh (TCP 5007) | host | loopback |
octoprint-http | OctoPrint 1.x | host | loopback |
moonraker-http | Klipper via Moonraker | host | loopback |
prusalink-http | PrusaLink | host | loopback |
repetier-http | Repetier-Server | host | loopback |
duet-http | Duet / RepRapFirmware 3.1+ | host | loopback |
feetech-sts-serial | barramento de servos Feetech STS/SCS (SO-100/101) | página | loopback |
dynamixel2-serial | Dynamixel Protocol 2.0 (Koch, WidowX) | página | loopback |
xarm-tcp | UFACTORY xArm / Lite 6 (TCP 502) | host | loopback |
host-relay | braço ESP32 do CommandAGI, HTTP na LAN | host | loopback |
wifi8k-drone | drone WIFI_8K / E99 por um link ESP32 | página | loopback |
ble-hid-relay | relé BLE HID (ESP32) | página | loopback |
openpnp-files | entrega de job OpenPnP (arquivos) | host | loopback |
os-input | teclado e ponteiro deste computador | host | loopback |
cdp-tab | uma guia do navegador (Chrome DevTools Protocol) | host | loopback |
cdp-screencast | o vídeo de uma guia do navegador | host | loopback |
pty-shell | um shell neste computador | host | loopback |
python-kernel | um kernel Python (notebooks) | host | loopback |
display-capture | captura de tela | página | none (nenhum) |
uvc-camera | câmera USB | página | none (nenhum) |
microphone | microfone | página | none (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.