Skip to content

Troubleshooting

Common issues and how to fix them.

Server Issues

Port 9876 already in use

Error: listen EADDRINUSE: address already in use :::9876

Solution:

bash
# Find what's using the port
lsof -i :9876

# Kill the process
kill -9 <PID>

# Or use a different port (not yet supported)

Server won't start

Check Node.js version:

bash
node --version
# Requires Node.js 18+

Check for missing dependencies:

bash
pnpm install
pnpm build

"Command not found: sidebutton"

If globally installed but not found:

bash
# Check npm bin path
npm bin -g

# Add to PATH if needed
export PATH="$PATH:$(npm bin -g)"

Extension Issues

Extension not connecting

  1. Is the server running?

    bash
    curl http://localhost:9876/health
  2. Refresh the page and click "Connect This Tab" again

  3. Check extension console:

    • Right-click extension icon
    • Click "Inspect popup"
    • Check Console for errors

"Connect This Tab" doesn't appear

  • Make sure you're on a regular webpage (not chrome:// pages)
  • Check that Developer mode is enabled in chrome://extensions/
  • Try reloading the extension

Automation doesn't work on specific sites

Some sites block automation. Check:

  1. Content Security Policy — Some sites block injected scripts
  2. Login state — Some actions require authentication
  3. Selector validity — Use capture_page to find correct selectors

Extension disconnects frequently

This can happen if:

  • The server restarts
  • Chrome suspends the service worker
  • Network issues

Solution: Click the extension icon and reconnect.

Restricted Pages

Chrome enforces restrictions on certain URLs that prevent all extensions — including SideButton — from attaching the debugger, injecting content scripts, or performing any automation. These are Chrome-level restrictions, not SideButton limitations.

Fully Blocked

SideButton cannot operate on these pages at all:

URL PatternDescription
chrome://*Chrome internal pages (settings, extensions, flags, etc.)
chrome-extension://*Other extensions' pages
devtools://*Chrome DevTools
chrome-search://*New Tab Page
chrome-untrusted://*Sandboxed Chrome content
chrome-distiller://*Reader mode pages
view-source:*View source pages
chrome.google.com/webstore/*Chrome Web Store (legacy)
chromewebstore.google.com/*Chrome Web Store (current)
about:*About pages (about:blank, about:newtab, etc.)
edge://*Edge internal pages (Edge browser only)

Partially Restricted

These pages have limited functionality:

URL PatternIssue
file://*Requires user opt-in: go to chrome://extensions/, find SideButton, and enable "Allow access to file URLs"
PDF viewer pagesContent scripts run but cannot interact with the PDF content itself
Sites with strict CSPSome content script features may be blocked by the site's Content Security Policy

What Happens on Restricted Pages

  • "Connect This Tab" will show an error: "Cannot connect to restricted URL"
  • Embed buttons will not appear
  • Workflows that target restricted pages will fail at the browser step

Solution: Navigate to a regular webpage (any http:// or https:// URL) before connecting.

Workflow Issues

"Workflow not found"

Error: Workflow not found: my_workflow

Check:

  1. Workflow file exists in workflows/, actions/, or skills/ directory
  2. File has .yaml extension
  3. id in YAML matches the requested ID
  4. If from a knowledge pack, verify it's installed: sidebutton install --list

"Browser not connected"

Error: BrowserNotConnected

Solution:

  1. Install the Chrome extension
  2. Navigate to a webpage
  3. Click extension icon → "Connect This Tab"
  4. Verify connection at localhost:9876

"Selector not found"

Error: Element not found: .my-selector

Check:

  1. The selector is correct (use browser DevTools)
  2. The element exists on the page
  3. The page has fully loaded (add browser.wait step)

Find correct selector:

bash
# Use the capture_page tool
curl -X POST http://localhost:9876/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"capture_page","arguments":{}}}'

"OpenAI API key not configured"

Error: OpenAI API key not configured

Solution:

Set the environment variable:

bash
export OPENAI_API_KEY=sk-your-key-here
npx sidebutton

Or configure in Settings (dashboard).

LLM step returns error

Common causes:

  • Invalid API key
  • Rate limiting
  • Model not available

Check:

bash
# Test API key directly
curl https://api.openai.com/v1/models \
  -H "Authorization: Bearer $OPENAI_API_KEY"

MCP Issues

Claude/Cursor doesn't see SideButton

  1. Check config file location:

    • Claude Code: ~/.claude/settings.json
    • Cursor: ~/.cursor/mcp.json
    • VS Code: .vscode/mcp.json
  2. Verify JSON syntax — Use a JSON validator

  3. Restart the AI tool after config changes

  4. Check server is accessible:

    bash
    curl http://localhost:9876/health

"Server returned error"

MCP error -32603: ...

Common causes:

  • Server not running
  • Invalid parameters
  • Browser not connected

Debug:

  1. Check server logs (terminal where server is running)
  2. Try the operation via dashboard first
  3. Check run logs for details

Tools not appearing in AI tool

  1. Restart the AI tool
  2. Check config URL is exactly http://localhost:9876/mcp
  3. Verify server responds to tools/list:
    bash
    curl -X POST http://localhost:9876/mcp \
      -H "Content-Type: application/json" \
      -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'

Dashboard Issues

Dashboard shows "Server Disconnected"

  1. Check server is running
  2. Refresh the page
  3. Check browser console for errors (F12)

Workflows don't appear

  1. Check workflows/, actions/, and skills/ directories exist
  2. Verify YAML files have correct structure
  3. Check server logs for parsing errors

Run log is empty

Run logs are stored in run_logs/ directory. Check:

  1. Directory exists and is writable
  2. Workflows have been executed
  3. Try running a workflow and check again

Getting Help

If you can't resolve your issue:

  1. Check existing issues: GitHub Issues
  2. Search discussions: GitHub Discussions
  3. Open a new issue with:
    • Error message (full text)
    • Steps to reproduce
    • OS and Node.js version
    • Relevant logs

Debug Mode

For more detailed logs, set the DEBUG environment variable:

bash
DEBUG=* npx sidebutton

This will show detailed information about:

  • WebSocket connections
  • Workflow execution
  • MCP requests/responses

Released under the Apache-2.0 License.