# 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 Список усіх зареєстрованих комп'ютерів. ```bash curl -H "Authorization: Bearer YOUR_MIND_KEY" \ https://synapse.schaefer.zone/computers/list ``` ### GET /computers/:id Отримати деталі конкретного комп'ютера. ```bash curl -H "Authorization: Bearer YOUR_MIND_KEY" \ https://synapse.schaefer.zone/computers/comp_001 ``` ### POST /computers/install-code Згенерувати код встановлення для реєстрації нового комп'ютера. ```bash 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 Поставити команду в чергу для виконання віддаленим агентом. ```bash 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 (для простих випадків). ```bash curl -H "Authorization: Bearer YOUR_MIND_KEY" \ "https://synapse.schaefer.zone/computers/comp_001/command?type=screenshot" ``` ### GET /computers/:id/commands Список нещодавніх команд для комп'ютера. ```bash curl -H "Authorization: Bearer YOUR_MIND_KEY" \ "https://synapse.schaefer.zone/computers/comp_001/commands?limit=50" ``` ### GET /computers/:id/commands/:cid Отримати статус + результат конкретної команди. ```bash curl -H "Authorization: Bearer YOUR_MIND_KEY" \ https://synapse.schaefer.zone/computers/comp_001/commands/cmd_001 ``` ### GET /computers/:id/screenshot Одноразове виконання: поставити команду знімка екрана в чергу та чекати до 30 с на результат. ```bash curl -H "Authorization: Bearer YOUR_MIND_KEY" \ https://synapse.schaefer.zone/computers/comp_001/screenshot > screenshot.png ``` ### POST /computers/:id/disable Вимкнути комп'ютер (відкликає його токен, зберігає запис для аудиту). ```bash curl -X POST -H "Authorization: Bearer YOUR_MIND_KEY" \ https://synapse.schaefer.zone/computers/comp_001/disable ``` ### DELETE /computers/:id Видалити комп'ютер назавжди. ```bash 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. ```bash 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_..." }` > [!CRITICAL] > Збережіть `computer_token` — він показується лише один раз і потрібен для всіх > кінцевих точок на боці агента. ### GET /computers/me/poll Довге опитування нових команд. Агент викликає це в циклі. ```bash curl -H "Authorization: Bearer ct_YOUR_COMPUTER_TOKEN" \ "https://synapse.schaefer.zone/computers/me/poll?wait=30" ``` Повертає негайно, якщо команди очікують, або через `wait` секунд, якщо ні. ### POST /computers/me/commands/:cid/result Надіслати результат виконання команди. ```bash 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 ```python # Робочий процес 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 ``` ## Наступні кроки - [Браузерний проксі](/docs/api/browser) — окрема служба для автоматизації браузера - [Посібник із self-hosted агентів](/docs/guides/self-hosted-agents)