Skip to main content

API керування комп'ютерами

Віддалене керування зареєстрованими комп'ютерами — постановка команд у чергу, знімки екрана, запуск скриптів на віддалених машинах.


API керування комп'ютерами

API керування комп'ютерами дозволяє віддалено керувати зареєстрованими комп'ютерами. Невеликий агент (screen-remote-agent) працює на цільовій машині, опитує сервер щодо команд, виконує їх та надсилає результати назад. Це забезпечує автоматизацію GUI під керуванням LLM.

Архітектура

┌─────────────┐  queue cmd   ┌──────────┐  poll   ┌─────────────────┐
│ LLM Agent   │ ───────────▶ │ Synapse  │ ◀───── │ screen-remote   │
│ (user-side) │              │  Server  │ ──────▶│ (on target PC)  │
└─────────────┘              └──────────┘ result  └─────────────────┘
                                     ▲
                                     │
                              ┌─────────────┐
                              │  Human UI   │
                              │ (browser)   │
                              └─────────────┘

Кінцеві точки для користувача (Mind Key або JWT)

GET /computers/list

Список усіх зареєстрованих комп'ютерів.

curl -H "Authorization: Bearer YOUR_MIND_KEY" \
     https://synapse.schaefer.zone/computers/list

GET /computers/:id

Отримати деталі конкретного комп'ютера.

curl -H "Authorization: Bearer YOUR_MIND_KEY" \
     https://synapse.schaefer.zone/computers/comp_001

POST /computers/install-code

Згенерувати код встановлення для реєстрації нового комп'ютера.

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"}'

Відповідь: { "install_code": "ic_xyz789", "expires_at": "..." }

POST /computers/:id/commands

Поставити команду в чергу для виконання віддаленим агентом.

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": {}
  }'

Відповідь: { "command_id": "cmd_001", "status": "queued" }

GET /computers/:id/command (через запит)

Поставити команду в чергу через GET (для простих випадків).

curl -H "Authorization: Bearer YOUR_MIND_KEY" \
     "https://synapse.schaefer.zone/computers/comp_001/command?type=screenshot"

GET /computers/:id/commands

Список нещодавніх команд для комп'ютера.

curl -H "Authorization: Bearer YOUR_MIND_KEY" \
     "https://synapse.schaefer.zone/computers/comp_001/commands?limit=50"

GET /computers/:id/commands/:cid

Отримати статус + результат конкретної команди.

curl -H "Authorization: Bearer YOUR_MIND_KEY" \
     https://synapse.schaefer.zone/computers/comp_001/commands/cmd_001

GET /computers/:id/screenshot

Одноразове виконання: поставити команду знімка екрана в чергу та чекати до 30 с на результат.

curl -H "Authorization: Bearer YOUR_MIND_KEY" \
     https://synapse.schaefer.zone/computers/comp_001/screenshot > screenshot.png

POST /computers/:id/disable

Вимкнути комп'ютер (відкликає його токен, зберігає запис для аудиту).

curl -X POST -H "Authorization: Bearer YOUR_MIND_KEY" \
     https://synapse.schaefer.zone/computers/comp_001/disable

DELETE /computers/:id

Видалити комп'ютер назавжди.

curl -X DELETE -H "Authorization: Bearer YOUR_MIND_KEY" \
     https://synapse.schaefer.zone/computers/comp_001

Кінцеві точки для агента (Computer Token)

Ці кінцеві точки використовує screen-remote-agent, що працює на цільовій машині. Вони використовують Computer Token (повертається /computers/register), а не Mind Key.

POST /computers/register

Активувати код встановлення та отримати 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"
  }'

Відповідь: { "computer_id": "comp_001", "computer_token": "ct_..." }

Збережіть `computer_token` — він показується лише один раз і потрібен для всіх кінцевих точок на боці агента.

GET /computers/me/poll

Довге опитування нових команд. Агент викликає це в циклі.

curl -H "Authorization: Bearer ct_YOUR_COMPUTER_TOKEN" \
     "https://synapse.schaefer.zone/computers/me/poll?wait=30"

Повертає негайно, якщо команди очікують, або через wait секунд, якщо ні.

POST /computers/me/commands/:cid/result

Надіслати результат виконання команди.

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..." }
  }'

Типи команд

Тип Payload Опис
screenshot {} Захоплення екрана як PNG (base64)
click {x, y} Клацання за координатами
move {x, y} Переміщення миші за координатами
type {text} Введення тексту в позиції курсора
key {keys: ["Ctrl","c"]} Натискання комбінації клавіш
scroll {deltaX, deltaY} Прокручування колеса
drag {fromX, fromY, toX, toY} Перетягування

Типовий шаблон: автоматизація GUI під керуванням LLM

# Робочий процес LLM-агента
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 done

Наступні кроки