Skip to main content

Computer Control API

Bedien geregistreerde computers op afstand — commando's in de wachtrij, schermafbeeldingen, scripts uitvoeren op externe machines.


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.

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

GET /computers/:id

Haal details op van één computer.

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.

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.

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).

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.

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.

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.

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).

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

DELETE /computers/:id

Verwijder een computer permanent.

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.

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

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.

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.

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

# 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