Skip to content

fix(browser): SLM browser tool broken - missing backend routes and worker endpoints #1120

Closed

Description

@mrveiss

Problem

The browser tool at https://172.16.168.19/tools/browser cannot visit any web page.

Root Cause

Three-layer gap:

  1. SLM frontend (BrowserTool.vue) calls /api/browser/mcp/navigate, /api/browser/mcp/status, /api/browser/mcp/screenshot
  2. SLM backend (autobot-slm-backend/) has zero browser routes — these return 404
  3. Browser worker (.25:3000) only has /search, /test-frontend — missing /navigate, /screenshot, /status

Fix

  1. Add persistent-page navigate/screenshot/status endpoints to playwright-server.js on .25
  2. Add api/browser.py to SLM backend — MCP bridge that proxies to browser worker at .25:3000
  3. Register new router in autobot-slm-backend/main.py
  4. Deploy both components

Acceptance Criteria

  • GET /api/browser/mcp/status returns connected status
  • POST /api/browser/mcp/navigate {url} navigates to any http/https URL
  • POST /api/browser/mcp/screenshot returns base64 screenshot
  • Browser tool can visit any web page including external sites
  • Go back/forward/refresh work

Activity

  1. mrveiss commented on Feb 22, 2026

    @mrveiss
    OwnerAuthor

    Implementation Complete

    Root cause: Three-layer gap in the SLM stack:

    1. BrowserTool.vue (SLM frontend) calls /api/browser/mcp/*
    2. SLM backend had no browser routes → 404
    3. Browser worker (.25:3000) had no navigate/screenshot/status endpoints

    Fix applied:

    autobot-browser-worker/playwright-server.js (deployed to .25)

    • Added persistent navPage (Playwright page that stays open across requests)
    • GET /status — returns browser/page connection state
    • POST /navigate — navigates page; handles javascript: scheme for back/forward/refresh
    • POST /screenshot — returns current page as base64 PNG
    • Added --ignore-certificate-errors to Chromium args (self-signed cert on .19)

    autobot-slm-backend/api/browser.py (new file, commit 4aef565)

    • FastAPI router at /browser/mcp prefix
    • Proxies status/navigate/screenshot to browser worker at 172.16.168.25:3000
    • Uses BROWSER_WORKER_URL env var (defaults to http://172.16.168.25:3000)

    Registered in api/init.py and main.py (commit 4aef565)

    Verified:

    • GET /api/browser/mcp/status → {"status":"connected", ...} ✓
    • POST /api/browser/mcp/navigate with http://172.16.168.19/ → {"success":true,"url":"https://172.16.168.19/",...} ✓
    • POST /api/browser/mcp/screenshot → base64 PNG 384KB ✓

    Note: playwright-server.js local git copy not committed due to pre-existing console.log violations (#1087 followup tracked in #1124)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions