Skip to main content
An agent on a server needs the same three things as one on a laptop: the browser, the fonts its persona lists, and an MCP server or package to drive it. A GPU and a display are optional.

Set up the host

1

Runtime

Node 22 or later for the MCP server, Python 3.10 or later for scripts, and git and fontconfig for the font installer. On Debian or Ubuntu:
Install Node 22 from your distribution or from nodejs.org. Chromium’s own libraries are listed in Linux servers, and Docker has a tested image.
2

Browser and fonts

The default persona on Linux is Windows. Without the Windows fonts it shows almost none, which no Windows machine does. Fonts has the details.
3

Agent

Add the MCP server to your agent as on any other machine. Pre-downloading the browser in the previous step keeps the first tool call inside the client’s timeout.

Headless or headed

The MCP server and the packages run headless by default, and a GPU-less server needs nothing else for that. For --headed (a real window on a virtual display), install Xvfb and the package starts a display sized to the persona’s screen and stops it afterwards:

Non-interactive runs

Both agent CLIs run one task and exit, which suits cron jobs and CI.
Put the server in the project’s .mcp.json (Claude Code), then:
claude -p needs ANTHROPIC_API_KEY in the environment or a logged-in Claude Code.

In GitHub Actions

These are the steps for an ubuntu-24.04 job. The agent’s own steps and secrets are yours.
.github/workflows/browse.yml
The job’s .mcp.json names the server. Hosted Linux runners for public repositories have 4 cores and 16 GB, and a persona never claims more cores or memory than the host has, so every persona on them reports 4 cores. Choosing a host explains what that means for the machines a site sees.

Several agents at once

Each browser locks its profile, so give every agent that runs at the same time its own profile: --profile agent-1, --profile agent-2, and so on, or --isolated for throwaway sessions. Many sessions at once has memory figures per browser.