স্কিপ করে মূল কন্টেন্ট এ যান

sctl Browser (Control Your Browser from the CLI and AI)

sctl Browser is the browser extension that ships with sctl. Once it is paired, the command line and MCP-capable AI clients can control the browser through sctl:

  • manage tabs, windows and tab groups;
  • manage bookmarks, the reading list, history, recently closed items, downloads, cookies, browsing data and installed extensions;
  • automate pages in background tabs — accessibility snapshots, clicking, filling, screenshots, running JavaScript — without switching away from the tab you are looking at;
  • read a page's console messages, uncaught exceptions and network requests;
  • open a CDP endpoint so existing Playwright / Puppeteer scripts can use your signed-in browser.

sctl Browser uses the same sctl serve as External Access, but the two are paired separately and do not depend on each other: you can use sctl Browser without installing ScriptCat.

Most operations need no confirmation

Unlike ScriptCat's External Access, sctl Browser runs operations immediately, with no confirmation page. Any program that can run sctl commands — including the AI clients you connect — can read and change this browser's tabs, cookies and history, and read page content and network request headers and bodies (unmasked).

Only deleting bookmarks and uninstalling extensions need your approval in the browser, and destructive commands such as clearing history or cookies need an explicit --yes. Only let programs you trust use sctl, and consider pairing a separate browser profile.

1. Prepare sctl​

Install sctl and keep sctl serve running as described in External Access. If you have already connected ScriptCat, this step is done.

2. Install the extension​

sctl Browser requires Chrome 125 or later, or a Chromium-based browser of the same version (such as Edge). Install it from an extension store:

BrowserInstall from
ChromeChrome Web Store
EdgeMicrosoft Edge Add-ons

Most other Chromium-based browsers can install it from the Chrome Web Store as well. Store installs update automatically.

Manual installation​

If you cannot reach the extension stores, install it manually:

  1. Download sctl-browser-extension-<version>.zip from GitHub Releases (its version matches sctl) and unzip it to a folder that will not be deleted or moved.
  2. Open the browser's extensions page (chrome://extensions in Chrome, edge://extensions in Edge) and turn on Developer mode.
  3. Click Load unpacked and select the unzipped folder. This works the same way as installing ScriptCat manually.

A manual install does not update itself. To update, unzip the new version over the old one and click reload on the extensions page.

3. Pair​

  1. Keep sctl serve running and run this in another terminal:

    sctl connect
  2. Click the sctl Browser icon in the toolbar, enter the code shown in the terminal, and click Pair:

    sctl Browser popup: entering the pairing code
  3. The popup shows Connected when pairing is done. You can rename this browser instance there and copy the flag that targets it in commands:

    sctl Browser popup: connected, with instance details
  4. Confirm in the terminal that the browser is listed as online:

    sctl browsers

One code pairs one extension. To pair both ScriptCat and sctl Browser, run sctl connect once for each. If the daemon listens on a non-default address, change the daemon address in the settings at the top right of the popup.

4. Common commands​

sctl tabs list # list tabs
sctl tabs open https://example.com # open a tab, print its ID
sctl page snapshot --tab <id> # snapshot with refs like e5
sctl page click e5 --tab <id> # click a ref
sctl page fill e7 "hello" --tab <id> # fill an input
sctl page screenshot --tab <id> -f page.png # screenshot
sctl debug console --tab <id> --level error # console errors
sctl debug network --tab <id> --failed # failed network requests
sctl history search github # search history
sctl cookies list --url https://example.com # list cookies
Command groupPurpose
sctl browsersList paired browser instances, or forget one
sctl tabs / windows / groupsTabs, windows and tab groups
sctl bookmarks / reading-listBookmarks and the reading list
sctl history / recent / downloadsHistory, recently closed tabs and windows, downloads
sctl cookies / browsing-data / extensionsCookies, browsing data, installed extensions
sctl pagePage automation: snapshot, click, fill, navigate, wait, screenshot, run scripts
sctl debugRecord and read a tab's console and network requests
sctl cdpSend raw CDP commands, or open an endpoint for Playwright / Puppeteer

Without --tab, page and debug commands act on the active tab of the last-focused window. Add -o json for machine-readable output, run sctl <command> --help for every option, and see the command-line reference in the sctl repository for details.

The debugging infobar​

page, debug and cdp commands attach the browser's debugger to a tab, and the browser then shows an infobar ("sctl Browser" started debugging this browser) at the top of the window. It is the browser's own security notice and the extension cannot hide it.

  • The debugger detaches after the tab has been idle for 5 minutes; sctl page detach detaches it at once.
  • Closing the infobar also detaches the debugger, and a command that is running exits with code 2.
  • To suppress the infobar, start the browser with --silent-debugger-extension-api.

Several browsers​

You can pair several browsers (or several profiles of one browser) by running sctl connect once for each. When more than one instance is online, pick one with --browser <name> or the SCTL_BROWSER environment variable; without a target, tabs list and windows list combine every online instance.

5. Operations that need confirmation​

OperationHow it is confirmed
Deleting bookmarks (bookmarks rm), uninstalling extensions (extensions uninstall)The browser opens an approval window and nothing happens until you approve
Removing reading list entries, deleting or clearing history, clearing browsing data, deleting or clearing cookies, cancelling downloads, erasing download records or deleting downloaded files, disabling extensionsRequires --yes; without it nothing runs and the command exits with code 3
Everything elseRuns immediately
Approval window for deleting a bookmark: Reject or Delete

Clicking Reject or closing the window makes the command exit with code 1; if nobody decides within 5 minutes or you press Ctrl-C, it exits with code 2.

6. Use it from an AI client​

The MCP configuration is exactly the same as in External Access: one sctl mcp serves both the ScriptCat and the sctl Browser tools, such as tabs_list, page_snapshot, page_click, debug_console and cdp_endpoint. The full tool list is in the sctl repository's MCP documentation.

If your AI tool works better with the command line, install the agent skill from the sctl repository instead.

7. Connect Playwright / Puppeteer​

sctl cdp endpoint

The command prints two addresses: http://127.0.0.1:8643/cdp/<secret> for Playwright and ws://…/devtools/browser/<id> for Puppeteer. With Playwright, use the browser's own context to keep your signed-in state:

const { chromium } = require("playwright");

const browser = await chromium.connectOverCDP("http://127.0.0.1:8643/cdp/<secret>");
const context = browser.contexts()[0];
const page = await context.newPage();
await page.goto("https://example.com");
await browser.close(); // disconnects only; the browser and its tabs stay open
  • The endpoint address is itself the credential: whoever has it fully controls this browser, so treat it like a password.
  • One client can connect at a time; while it is connected, sctl page, sctl debug and sctl cdp send are unavailable.
  • Run sctl cdp close when you are done; the endpoint also expires after 60 minutes without a connected client.

8. Disconnect and remove​

  • Click Disconnect and forget in the popup, or run sctl browsers forget <name> in the terminal, to remove the pairing.
  • Removing the extension also removes the pairing on the extension's side. Run sctl connect again to pair later.

Privacy​

sctl Browser collects and uploads nothing; everything travels only between the browser and the sctl you run yourself. See the sctl Browser Privacy Policy.