# Solace Browser Integration for Devin # Source: solaceagi.com/agents/devin | Drop in: .devin/playbooks/ Use Solace Hub to start Solace Browser, then connect to the Yinyang runtime at http://localhost:8888. ## Check if available ```bash curl -s http://localhost:8888/api/status | python3 -c "import sys,json; d=json.load(sys.stdin); ready = bool(d.get('running')) or d.get('status') in ('ready','ok','healthy'); print('OK' if ready else 'NOT RUNNING')" ``` ## Auth (OAuth3) Local runtime tokens are minted by the Hub-owned runtime itself: ```bash curl -X POST http://localhost:8888/oauth3/token \ -H "Content-Type: application/json" \ -d '{"user_id":"local-agent","scopes":["browser.navigate","browser.click","browser.fill","browser.screenshot","browser.evaluate"],"ttl_seconds":300}' # Then include: -H "Authorization: Bearer " on action calls. ``` Cloud tokens on solaceagi.com use a separate contract: ```bash # Mint a cloud bearer from your paid API key curl -X POST https://solaceagi.com/api/v1/oauth3/token \ -H "Content-Type: application/json" \ -d '{"api_key":"sw_sk_..."}' # Mint a scoped vault token for sync/storage APIs curl -X POST https://solaceagi.com/api/v1/oauth3/tokens \ -H "Authorization: Bearer sw_sk_..." \ -H "Content-Type: application/json" \ -d '{"scopes":["files.read","files.write"]}' # Response field is "token" — send it back as: X-OAuth3-Token: o3_... ``` ## Core commands Navigate: POST /api/navigate {"url": "..."} Click: POST /api/click {"selector": "..."} Fill: POST /api/fill {"selector": "...", "value": "..."} Screenshot: POST /api/screenshot {} Evaluate JS: POST /api/evaluate {"expression": "..."} Page Snapshot: GET /api/page-snapshot Response contract: parse JSON and require success == true. Do not rely on HTTP status alone. ## Evidence Every action is SHA-256 captured automatically.