API Computer Control
Contrôle à distance d'ordinateurs enregistrés — file d'attente de commandes, captures d'écran, exécution de scripts sur machines distantes.
API Computer Control
L'API Computer Control permet de télécommander des ordinateurs enregistrés. Un
petit agent (screen-remote-agent) s'exécute sur la machine cible, effectue le
polling des commandes, les exécute et renvoie les résultats. Cela permet
l'automatisation d'interface graphique pilotée par LLM.
Architecture
┌─────────────┐ queue cmd ┌──────────┐ poll ┌─────────────────┐
│ LLM Agent │ ───────────▶ │ Synapse │ ◀───── │ screen-remote │
│ (user-side) │ │ Server │ ──────▶│ (on target PC) │
└─────────────┘ └──────────┘ result └─────────────────┘
▲
│
┌─────────────┐
│ Human UI │
│ (browser) │
└─────────────┘Endpoints côté utilisateur (Mind Key ou JWT)
GET /computers/list
Liste tous les ordinateurs enregistrés.
curl -H "Authorization: Bearer YOUR_MIND_KEY" \
https://synapse.schaefer.zone/computers/listGET /computers/:id
Récupère les détails d'un seul ordinateur.
curl -H "Authorization: Bearer YOUR_MIND_KEY" \
https://synapse.schaefer.zone/computers/comp_001POST /computers/install-code
Génère un code d'installation pour enregistrer un nouvel ordinateur.
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"}'Réponse : { "install_code": "ic_xyz789", "expires_at": "..." }
POST /computers/:id/commands
Met en file d'attente une commande à exécuter par l'agent distant.
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": {}
}'Réponse : { "command_id": "cmd_001", "status": "queued" }
GET /computers/:id/command (via requête)
Met en file d'attente une commande via GET (pour les cas simples).
curl -H "Authorization: Bearer YOUR_MIND_KEY" \
"https://synapse.schaefer.zone/computers/comp_001/command?type=screenshot"GET /computers/:id/commands
Liste les commandes récentes d'un ordinateur.
curl -H "Authorization: Bearer YOUR_MIND_KEY" \
"https://synapse.schaefer.zone/computers/comp_001/commands?limit=50"GET /computers/:id/commands/:cid
Récupère le statut et le résultat d'une commande spécifique.
curl -H "Authorization: Bearer YOUR_MIND_KEY" \
https://synapse.schaefer.zone/computers/comp_001/commands/cmd_001GET /computers/:id/screenshot
Action unique : met en file d'attente une commande de capture d'écran et attend jusqu'à 30 s le résultat.
curl -H "Authorization: Bearer YOUR_MIND_KEY" \
https://synapse.schaefer.zone/computers/comp_001/screenshot > screenshot.pngPOST /computers/:id/disable
Désactive un ordinateur (révoque son jeton, conserve l'enregistrement pour audit).
curl -X POST -H "Authorization: Bearer YOUR_MIND_KEY" \
https://synapse.schaefer.zone/computers/comp_001/disableDELETE /computers/:id
Supprime définitivement un ordinateur.
curl -X DELETE -H "Authorization: Bearer YOUR_MIND_KEY" \
https://synapse.schaefer.zone/computers/comp_001Endpoints côté agent (Computer Token)
Ces endpoints sont utilisés par le screen-remote-agent s'exécutant sur la machine
cible. Ils utilisent un Computer Token (renvoyé par /computers/register), pas une
Mind Key.
POST /computers/register
Échange un code d'installation contre un 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"
}'Réponse : { "computer_id": "comp_001", "computer_token": "ct_..." }
GET /computers/me/poll
Long-polling de nouvelles commandes. L'agent l'appelle en boucle.
curl -H "Authorization: Bearer ct_YOUR_COMPUTER_TOKEN" \
"https://synapse.schaefer.zone/computers/me/poll?wait=30"Renvoie immédiatement si des commandes sont en attente, ou après wait secondes sinon.
POST /computers/me/commands/:cid/result
Publie le résultat de l'exécution d'une commande.
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..." }
}'Types de commandes
| Type | Payload | Description |
|---|---|---|
screenshot |
{} |
Capture l'écran en PNG (base64) |
click |
{x, y} |
Clique aux coordonnées |
move |
{x, y} |
Déplace la souris aux coordonnées |
type |
{text} |
Saisit du texte au curseur |
key |
{keys: ["Ctrl","c"]} |
Appuie sur une combinaison de touches |
scroll |
{deltaX, deltaY} |
Fait défiler à la molette |
drag |
{fromX, fromY, toX, toY} |
Glisser-déposer |
Schéma courant : automatisation d'interface graphique pilotée par LLM
# Workflow de l'agent 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 doneProchaines étapes
- Proxy navigateur — service distinct pour l'automatisation de navigateur
- Guide des agents auto-hébergés