# Computer Control API De Computer Control API stelt u in staat geregistreerde computers op afstand te bedienen. Een kleine agent (`screen-remote-agent`) draait op de doelmachine, pollt naar commando's, voert ze uit en stuurt de resultaten terug. Dit maakt door LLM aangestuurde GUI-automatisering mogelijk. ## Architectuur ``` ┌─────────────┐ queue cmd ┌──────────┐ poll ┌─────────────────┐ │ LLM Agent │ ───────────▶ │ Synapse │ ◀───── │ screen-remote │ │ (user-side) │ │ Server │ ──────▶│ (on target PC) │ └─────────────┘ └──────────┘ result └─────────────────┘ ▲ │ ┌─────────────┐ │ Human UI │ │ (browser) │ └─────────────┘ ``` ## Gebruikersgerichte eindpunten (Mind Key of JWT) ### GET /computers/list Toon alle geregistreerde computers. ```bash curl -H "Authorization: Bearer YOUR_MIND_KEY" \ https://synapse.schaefer.zone/computers/list ``` ### GET /computers/:id Haal details op van één computer. ```bash curl -H "Authorization: Bearer YOUR_MIND_KEY" \ https://synapse.schaefer.zone/computers/comp_001 ``` ### POST /computers/install-code Genereer een installatiecode voor het registreren van een nieuwe computer. ```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"}' ``` Respons: `{ "install_code": "ic_xyz789", "expires_at": "..." }` ### POST /computers/:id/commands Plaats een commando in de wachtrij voor uitvoering door de externe agent. ```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": {} }' ``` Respons: `{ "command_id": "cmd_001", "status": "queued" }` ### GET /computers/:id/command (via query) Plaats een commando via GET (voor eenvoudige gevallen). ```bash curl -H "Authorization: Bearer YOUR_MIND_KEY" \ "https://synapse.schaefer.zone/computers/comp_001/command?type=screenshot" ``` ### GET /computers/:id/commands Toon recente commando's voor een computer. ```bash curl -H "Authorization: Bearer YOUR_MIND_KEY" \ "https://synapse.schaefer.zone/computers/comp_001/commands?limit=50" ``` ### GET /computers/:id/commands/:cid Haal status + resultaat van een specifiek commando op. ```bash curl -H "Authorization: Bearer YOUR_MIND_KEY" \ https://synapse.schaefer.zone/computers/comp_001/commands/cmd_001 ``` ### GET /computers/:id/screenshot Eenmalig: plaats een screenshot-commando in de wachtrij en wacht tot 30s op het resultaat. ```bash curl -H "Authorization: Bearer YOUR_MIND_KEY" \ https://synapse.schaefer.zone/computers/comp_001/screenshot > screenshot.png ``` ### POST /computers/:id/disable Schakel een computer uit (trekt het token in, behoudt het record voor controle). ```bash curl -X POST -H "Authorization: Bearer YOUR_MIND_KEY" \ https://synapse.schaefer.zone/computers/comp_001/disable ``` ### DELETE /computers/:id Verwijder een computer permanent. ```bash curl -X DELETE -H "Authorization: Bearer YOUR_MIND_KEY" \ https://synapse.schaefer.zone/computers/comp_001 ``` ## Agent-gerichte eindpunten (Computer Token) Deze eindpunten worden gebruikt door de `screen-remote-agent` die draait op de doelmachine. Ze gebruiken een Computer Token (geretourneerd door `/computers/register`), geen Mind Key. ### POST /computers/register Wissel een installatiecode in en ontvang een 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" }' ``` Respons: `{ "computer_id": "comp_001", "computer_token": "ct_..." }` > [!CRITICAL] > Sla het `computer_token` op — het wordt slechts één keer getoond en is vereist > voor alle agent-gerichte eindpunten. ### GET /computers/me/poll Long-poll voor nieuwe commando's. De agent roept dit aan in een lus. ```bash curl -H "Authorization: Bearer ct_YOUR_COMPUTER_TOKEN" \ "https://synapse.schaefer.zone/computers/me/poll?wait=30" ``` Retourneert onmiddellijk als er commando's klaarstaan, of na `wait` seconden als dat niet zo is. ### POST /computers/me/commands/:cid/result Stuur het resultaat van het uitvoeren van een commando. ```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..." } }' ``` ## Commando-typen | Type | Payload | Beschrijving | |------|---------|--------------| | `screenshot` | `{}` | Maak schermafbeelding als PNG (base64) | | `click` | `{x, y}` | Klik op coördinaten | | `move` | `{x, y}` | Verplaats muis naar coördinaten | | `type` | `{text}` | Typ tekst op cursorpositie | | `key` | `{keys: ["Ctrl","c"]}` | Druk toetsencombinatie in | | `scroll` | `{deltaX, deltaY}` | Scroll-wiel | | `drag` | `{fromX, fromY, toX, toY}` | Slepen en neerzetten | ## Veelvoorkomend patroon: door LLM aangestuurde GUI-automatisering ```python # 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 done ``` ## Volgende stappen - [Browser Proxy](/docs/api/browser) — aparte service voor browserautomatisering - [Self-Hosted Agents Guide](/docs/guides/self-hosted-agents)