Docs

Browser

Bots can browse the web, and you watch it live in the app's browser panel. Take control at any time to sign in or solve a CAPTCHA yourself.

How it works

kwant runs one long-lived Chromium per installation, with a separate browser context for each bot, channel or team. The app connects to kwant over a same-origin WebSocket. kwant relays the screen frames and your input, so your browser never talks to Chromium directly.

  • Take Control gives you an exclusive hold. Bot navigation waits until you hand it back, close the panel or disconnect.
  • Closing the panel stops its stream. Slow viewers don't build up a backlog of frames.
  • Restarting kwant reconnects to the existing sessions while Chromium keeps running.

Local or VM mode

Choose where bots' browser and shell commands run in Settings → Computer, or with the browser panel's mode toggle. Switching takes effect at once, without a restart.

Local computerVM
Default onmacOSEverywhere else, including a VPS
BrowserYour installed Chrome or Chromium, windowless, with its own profileA Chromium container
kwant's shellOn your computer, in the bot's folder. Every command asks first.A separate execution container
NeedsA Chrome binaryDocker, or your own Chromium service

In Local mode, Open as window reopens the same profile as a real window, with each bot's page, so you can sign in yourself. Show it here instead brings it back into the panel. kwant never uses your everyday Chrome profile.

Local mode gives up isolation. Commands run with your user's access to your files, and other programs on the computer can reach Chrome's debugging port while it runs. Use VM mode for untrusted browsing and shell work. In both modes, the Claude, Codex and Grok CLIs run on the host with their own tools.

VM mode with Docker

Install Docker and start kwant. The first browser request builds the browser image from a recipe embedded in the binary and starts a private container, so a VPS with only the binary works too. No desktop or display server is needed. Prebuild the images to skip the first-use wait:

docker build -t kwnt-browser:v1 -f docker/browser.Dockerfile docker
docker build -t kwnt-executor:v1 -f docker/executor.Dockerfile docker

The browser shares a 1.5 GiB memory limit across all bots, rather than one Chromium per bot. Browser contexts keep cookies and local storage apart. They aren't OS isolation between users who don't trust each other.

Your own Chromium service

If you manage Chromium separately, point kwant at its debugging endpoint:

KWNT_BROWSER_CDP_URL=http://browser:9222 kwnt serve --host 0.0.0.0 --port 8799

Keep that endpoint private: it grants full control of the browser. Use a dedicated browser, never a person's everyday profile.

Settings

EnvironmentWhat it does
KWNT_COMPUTER_MODElocal or vm, unless a choice is saved in Settings
KWNT_CHROME_PATHThe browser binary Local mode launches
KWNT_BROWSER_CDP_URLUse an existing Chromium service

Saved website logins for the browser are covered in Approvals & saved passwords.