briqbriq

Desktop

A screen with Chromium on it, for an agent to use a website like a person: Playwright MCP for the page, an MCP server for the whole screen in pixels (screenshot, click, type), and a view at the private URL to watch and take over. The browser profile stays on its volume, which is never forked or backed up.

  • sandbox
  • browser

Run it

stack: app
services:
  desktop:
    recipe: desktop
    # its defaults, each a field you can set:
    # image: ghcr.io/briq-cloud/sandbox:desktop
    # size: small
    # volume: { gb: 2 }

Fields

NameTypeOptionsDefault
imagestring—"ghcr.io/briq-cloud/sandbox:desktop"
envrecord{ key: string | { secret, value?, scope?, hosts?, locations? } }{}
sizeenumsmall, medium, large"small"
volumeobject{ gb? }{"gb":2}

Outputs

Returned by briq_run once the stack is healthy. Hosts resolve inside your team network; secrets are generated per run.

DESKTOP_MCP_URL
http://desktop.<stack>.internal:8931/mcp
BROWSER_MCP_URL
http://desktop.<stack>.internal:8931/playwright/mcp
DESKTOP_TOKEN
<DESKTOP_TOKEN>

What it runs

BriqImagePortsSizeVolume
desktopghcr.io/briq-cloud/sandbox:desktop8080, 8931small2 GB at /work

When to use it

  • An agent must use a website like a person: sign in, click through, fill a form, read what is on the screen.
  • You want to watch what it does, or take over for a sign-in or a second factor.
  • A browser session that keeps its tabs and sign-ins between tasks.
briq_run({ recipe: "desktop", stack: "home-ana", expose: "private" })

Connect an agent

The run's outputs give two MCP servers, on the team's private network:

OutputWhat it drives
BROWSER_MCP_URLThe page, by its accessibility tree: Playwright MCP (navigate, click an element, fill, read)
DESKTOP_MCP_URLThe whole screen in pixels: screenshot, zoom, click, type, key, scroll, drag

Both take Authorization: Bearer <DESKTOP_TOKEN>. A briq of the same stack has the token in its env when run after the desktop with env: { DESKTOP_TOKEN: "{{secret:DESKTOP_TOKEN}}" }, or for one command with briq_exec's env. Then, for Claude Code there:

{ "mcpServers": {
  "browser": { "type": "http", "url": "<BROWSER_MCP_URL>", "headers": { "Authorization": "Bearer ${DESKTOP_TOKEN}" } },
  "desktop": { "type": "http", "url": "<DESKTOP_MCP_URL>", "headers": { "Authorization": "Bearer ${DESKTOP_TOKEN}" } }
} }

Tips

  • The page first, pixels when the page is not enough: the accessibility tree is faster and cheaper than screenshots; pixels reach dialogs, file pickers and canvas apps.
  • Watch it: open the URL; the view connects by itself, view only. To take the mouse and keyboard, turn off View only in its side panel.
  • Signed in once: the browser profile is on the volume, so sites stay signed in through sleep and restarts. The volume is never copied: a desktop cannot be forked.
  • Screen size: env: { DESKTOP_SIZE: "1280x800" }, the default, fits the computer-use tools without scaling.
  • Private URL only: the view takes the mouse of a signed-in browser, so expose: "public" and a TCP endpoint are refused.
  • No CAPTCHA solving, no stealth: when a site asks for a person, take over in the view.
  • small for a few tabs; medium for heavy pages.
  • Every version (Chromium, Playwright MCP, noVNC): the image's REFERENCE-desktop.md.

On this page

Free to try

Let your agent try it, on us.

Every new account starts with €10 of credits. No card.

Connect your agent

How can we help?

Message to the briq team
hello@briq.cloud