Agentium is an AI-native browser engine written in Go. It drives Chrome or Chromium through CDP with go-rod, exposes a REST API for browser sessions, and ships MCP tools for agent-native integrations.
Build:
go build -o agentium ./cmd/agentiumRun REST + MCP SSE in the default headful mode:
./agentiumRun headless:
./agentium -headless=trueRun MCP over stdio:
./agentium -mode mcp-stdioPrint the effective startup config:
./agentium -print-configAgentium supports both environment variables and CLI flags. CLI flags override env values.
-mode=http|mcp-stdio-http-addr=:8080-chrome-bin=/absolute/path/to/chrome-headless=true|false-leakless=true|false-viewport-width=1280-viewport-height=800-print-config
AGENTIUM_HTTP_ADDRdefault::8080AGENTIUM_CHROME_BINdefault: emptyAGENTIUM_HEADLESSdefault:falseAGENTIUM_LEAKLESSdefault:trueAGENTIUM_VIEWPORT_WIDTHdefault:1280AGENTIUM_VIEWPORT_HEIGHTdefault:800AGENTIUM_GEOIP_ENDPOINTdefault:https://ipwho.is/AGENTIUM_GEOIP_TIMEOUT_SECONDSdefault:8
A ready-to-copy example is available in agentium.env.example.
Session creation supports two isolation modes:
incognito: default. Lightweight isolated browser contexts.persistent: dedicated browser profile directory per session. Use this for stealth-sensitive work and sites that penalize incognito mode.
Recommended:
- Use
persistentfor Pixelscan, BrowserScan, login flows, and long-lived profiles. - Use
incognitofor short isolated tasks when stealth quality matters less than throughput.
Headful HTTP server on a custom port:
./agentium -http-addr :9090 -headless=falseHeadless MCP stdio server:
./agentium -mode mcp-stdio -headless=trueUse a specific Chrome binary:
./agentium -chrome-bin "/usr/bin/google-chrome"On Windows PowerShell:
$env:AGENTIUM_CHROME_BIN="C:\Program Files\Google\Chrome\Application\chrome.exe"
.\agentium.exe -headless=falseThe runtime image is based on Debian bookworm, not Ubuntu. Ubuntu 24.04 moves Chromium to a snap-oriented package flow, which is a poor fit for this minimal Xvfb container.
Build:
docker build -t agentium:latest .Run headful:
docker run --rm -p 8080:8080 agentium:latestRun headless:
docker run --rm -p 8080:8080 -e AGENTIUM_HEADLESS=true agentium:latestThe container starts Xvfb only when AGENTIUM_HEADLESS=false.
Health check:
curl http://127.0.0.1:8080/healthzCreate session:
curl -X POST http://127.0.0.1:8080/v1/sessions \
-H "Content-Type: application/json" \
-d '{
"session_mode": "persistent",
"timezone_id": "Europe/Prague",
"locale": "cs-CZ"
}'Get snapshot:
curl http://127.0.0.1:8080/v1/sessions/<session_id>/snapshotPerform action:
curl -X POST http://127.0.0.1:8080/v1/sessions/<session_id>/action \
-H "Content-Type: application/json" \
-d '{
"action": "navigate",
"value": "https://example.com"
}'Close session:
curl -X DELETE http://127.0.0.1:8080/v1/sessions/<session_id>Available tools:
agentium_create_sessionagentium_get_snapshotagentium_perform_actionagentium_close_session
Launch:
./agentium -mode mcp-stdio -headless=falseWhen Agentium runs in HTTP mode, MCP SSE is exposed under:
GET /mcpPOST /mcp/*
The recommended agent workflow is documented in agent-playbook.md.
Ready-made Claude Desktop configs:
- headful:
claude_desktop_config.json - headless:
claude_desktop_config.headless.json
REST smoke test:
pwsh ./scripts/smoke-http.ps1MCP stdio smoke test:
pwsh ./scripts/smoke-mcp-stdio.ps1 -BinaryPath .\agentium.exeMCP SSE smoke test:
pwsh ./scripts/smoke-mcp-sse.ps1Local HTTP + SSE smoke run:
pwsh ./scripts/run-local-http-smokes.ps1 -BinaryPath .\agentium.exeIf local Windows antivirus blocks Rod's leakless helper:
pwsh ./scripts/run-local-http-smokes.ps1 -BinaryPath .\agentium.exe -DisableLeaklessStealth validation against bot.sannysoft.com:
pwsh ./scripts/run-local-http-smokes.ps1 -BinaryPath .\agentium.exe -DisableLeakless -TargetUrl https://bot.sannysoft.com/ -DelayAfterNavigateMs 8000Stealth validation against browserscan.net:
pwsh ./scripts/run-local-stealth-browserscan.ps1 -BinaryPath .\agentium.exe -DisableLeaklessStealth validation against pixelscan.net:
pwsh ./scripts/run-local-stealth-pixelscan.ps1 -BinaryPath .\agentium.exe -DisableLeakless- Browser pooling is keyed by proxy configuration.
persistentsessions launch dedicated browser profiles and intentionally trade some startup cost for better real-world browser parity.wait_network_idlefocuses on XHR and Fetch activity, which is usually the useful signal for form submissions and SPA mutations.