API de Controle de Computadores
Controle remoto de computadores registrados — enfileirar comandos, capturar screenshots, executar scripts em máquinas remotas.
API de Controle de Computadores
A API de Controle de Computadores permite controlar remotamente computadores
registrados. Um pequeno agente (screen-remote-agent) roda na máquina-alvo,
faz poll por comandos, executa-os e envia os resultados de volta. Isso permite
automação de GUI orientada por LLM.
Arquitetura
┌─────────────┐ queue cmd ┌──────────┐ poll ┌─────────────────┐
│ LLM Agent │ ───────────▶ │ Synapse │ ◀───── │ screen-remote │
│ (user-side) │ │ Server │ ──────▶│ (on target PC) │
└─────────────┘ └──────────┘ result └─────────────────┘
▲
│
┌─────────────┐
│ Human UI │
│ (browser) │
└─────────────┘Endpoints voltados ao usuário (Mind Key ou JWT)
GET /computers/list
Lista todos os computadores registrados.
curl -H "Authorization: Bearer YOUR_MIND_KEY" \
https://synapse.schaefer.zone/computers/listGET /computers/:id
Obtém detalhes de um único computador.
curl -H "Authorization: Bearer YOUR_MIND_KEY" \
https://synapse.schaefer.zone/computers/comp_001POST /computers/install-code
Gera um código de instalação para registrar um novo computador.
curl -X POST https://synapse.schaefer.zone/computers/install-code \
-H "Authorization: Bearer YOUR_MIND_KEY" \
-H "Content-Type: application/json" \
-d '{"computer_name": "office-mac"}'Resposta: { "install_code": "ic_xyz789", "expires_at": "..." }
POST /computers/:id/commands
Enfileira um comando para o agente remoto executar.
curl -X POST https://synapse.schaefer.zone/computers/comp_001/commands \
-H "Authorization: Bearer YOUR_MIND_KEY" \
-H "Content-Type: application/json" \
-d '{
"type": "screenshot",
"payload": {}
}'Resposta: { "command_id": "cmd_001", "status": "queued" }
GET /computers/:id/command (via query)
Enfileira um comando via GET (para casos simples).
curl -H "Authorization: Bearer YOUR_MIND_KEY" \
"https://synapse.schaefer.zone/computers/comp_001/command?type=screenshot"GET /computers/:id/commands
Lista comandos recentes de um computador.
curl -H "Authorization: Bearer YOUR_MIND_KEY" \
"https://synapse.schaefer.zone/computers/comp_001/commands?limit=50"GET /computers/:id/commands/:cid
Obtém o status + resultado de um comando específico.
curl -H "Authorization: Bearer YOUR_MIND_KEY" \
https://synapse.schaefer.zone/computers/comp_001/commands/cmd_001GET /computers/:id/screenshot
One-shot: enfileira um comando de screenshot e aguarda até 30s pelo resultado.
curl -H "Authorization: Bearer YOUR_MIND_KEY" \
https://synapse.schaefer.zone/computers/comp_001/screenshot > screenshot.pngPOST /computers/:id/disable
Desativa um computador (revoga seu token, mantém o registro para auditoria).
curl -X POST -H "Authorization: Bearer YOUR_MIND_KEY" \
https://synapse.schaefer.zone/computers/comp_001/disableDELETE /computers/:id
Exclui um computador permanentemente.
curl -X DELETE -H "Authorization: Bearer YOUR_MIND_KEY" \
https://synapse.schaefer.zone/computers/comp_001Endpoints voltados ao agente (Computer Token)
Esses endpoints são usados pelo screen-remote-agent em execução na
máquina-alvo. Eles usam um Computer Token (retornado por /computers/register),
não uma Mind Key.
POST /computers/register
Resgata um código de instalação e obtém um Computer Token.
curl -X POST https://synapse.schaefer.zone/computers/register \
-H "Content-Type: application/json" \
-d '{
"code": "ic_xyz789",
"computer_name": "office-mac",
"platform": "darwin",
"platform_release": "14.5.0",
"python": "3.12.4"
}'Resposta: { "computer_id": "comp_001", "computer_token": "ct_..." }
GET /computers/me/poll
Long-poll por novos comandos. O agente chama isso em loop.
curl -H "Authorization: Bearer ct_YOUR_COMPUTER_TOKEN" \
"https://synapse.schaefer.zone/computers/me/poll?wait=30"Retorna imediatamente se houver comandos pendentes, ou após wait segundos se
não houver.
POST /computers/me/commands/:cid/result
Envia o resultado da execução de um comando.
curl -X POST https://synapse.schaefer.zone/computers/me/commands/cmd_001/result \
-H "Authorization: Bearer ct_YOUR_COMPUTER_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"status": "done",
"result": { "screenshot_b64": "iVBORw0KG..." }
}'Tipos de comando
| Tipo | Payload | Descrição |
|---|---|---|
screenshot |
{} |
Captura a tela como PNG (base64) |
click |
{x, y} |
Clica nas coordenadas |
move |
{x, y} |
Move o mouse para as coordenadas |
type |
{text} |
Digita texto no cursor |
key |
{keys: ["Ctrl","c"]} |
Pressiona combinação de teclas |
scroll |
{deltaX, deltaY} |
Rola a roda do mouse |
drag |
{fromX, fromY, toX, toY} |
Arrasta e solta |
Padrão comum: automação de GUI orientada por LLM
# LLM agent workflow
1. List computers: GET /computers/list
2. Take screenshot: GET /computers/:id/screenshot
3. Analyze screenshot (vision model)
4. Queue click: POST /computers/:id/commands {type:"click", payload:{x,y}}
5. Wait for result: GET /computers/:id/commands/:cid
6. Take new screenshot to verify
7. Repeat until task donePróximos passos
- Proxy de navegador — serviço separado para automação de navegador
- Guia de agentes auto-hospedados