Sign inSign up

askalf/browser

By askalf

•Updated 3 months ago

AskAlf Browser Bridge — Stealth headless Chromium via CDP for agent web automation.

Image
0

2.3K

askalf/browser repository overview

⁠AskAlf Browser Bridge

⁠⚠️ Deprecated — no longer maintained

The AskAlf self-hosted distribution was sunset on 2026-08-14. This image is not receiving updates; the last published build is from 2026-07-18.

It stays public and pullable so that anything pinned to an existing tag keeps working, but nothing here tracks the platform any more, and no security patches will be published. Do not start new work against it.

The one-line installer this README used to point at (get.askalf.org) was never deployed and has no DNS record.

This deprecation is about THIS image, not about the browser bridge itself. askalf/browser was the copy bundled into the self-hosted platform. The stealth CDP bridge is a separate, actively maintained product — use ghcr.io/askalf/browser-bridge⁠ instead. It is what our own production runs.

Stealth headless Chromium via Chrome DevTools Protocol (CDP) for autonomous agent web automation.

⁠Features

  • puppeteer-extra with stealth plugin — evades bot detection
  • Chrome DevTools Protocol on port 9222 (origin-locked via --remote-allow-origins)
  • Built-in CDP proxy (cdp-proxy.mjs) fronts Chromium's loopback-bound debugger on 0.0.0.0:9222 — optional token auth (BRIDGE_TOKEN), DNS-name Host support (rebinding-guarded), root-path WebSocket resolution
  • Page reaper — reclaims orphaned/over-age tabs left by crashed clients
  • Health + metrics server on port 9224 (internal)
  • Lightweight: debian-slim + chromium only

⁠Usage

services:
  browser:
    image: askalf/browser:latest
    expose:
      - "9222"
    shm_size: '512mb'

Connect from other containers:

http://browser:9222/json/version

⁠Health & metrics

The launcher runs a small HTTP server bound to 127.0.0.1:9224:

  • GET /healthz → 200 while the CDP connection is live (the container's HEALTHCHECK uses this), 503 if Chrome is gone. Body includes a deep page-load check (pageCheck: ok|degraded, refreshed ≤ once/60s).
  • GET /metrics → JSON counters: pagesOpen, pagesCreated, pagesReaped, navCount, uptimeSec, connected.

⁠Reaper tunables (env)

VarDefaultMeaning
BRIDGE_MAX_PAGES25hard cap on open tabs (most-idle closed when exceeded)
BRIDGE_BLANK_TTL_MS120000close idle about:blank tabs after this
BRIDGE_MAX_IDLE_MS900000close any tab idle (no navigation) this long
BRIDGE_REAP_INTERVAL_MS30000how often the reaper runs
BRIDGE_HEALTH_PORT9224health/metrics port
BRIDGE_TOKENunsetrequire this token on every CDP request/WebSocket (Authorization: Bearer, X-Bridge-Token, or ?token=); unset = open
BRIDGE_ALLOW_HOSTNAMESunsetaccept DNS-name Hosts without a token (not needed when BRIDGE_TOKEN is set)
BROWSER_SESSION_IDunsetseed for the deterministic stealth UA — set to keep a stable fingerprint across restarts

Idle is measured from the last navigation, so a long-lived page that keeps navigating (e.g. the reused twitter session) is never reaped while in use.

⁠Part of AskAlf

The browser bridge is used by MCP Tools for web automation tasks — search, scrape, interact with web apps, and social media operations. It is shared across the agent fleet: clients must connect over CDP, use an isolated browser context, and disconnect() when done — never close() the shared browser.

askalf.org⁠ | GitHub⁠

Tag summary

Content type

Image

Digest

sha256:e7c252918…

Size

355.1 MB

Last updated

3 months ago

docker pull askalf/browser