Skip to content

Docker

The repository includes a containerized runtime that starts:

  • noVNC on port 6080
  • Chromium with remote debugging on port 9222
  • the browser agent A2A server on port 8001
  • the desktop agent A2A server on port 8002

MobileAgent is available in the Python package and can run as an A2A server, but the default Docker runtime does not start a mobile A2A server or provision an Android emulator/device. Start mobile_agent --mode a2a separately with an ADB-reachable device when mobile automation is needed.

Environment File

The wrapper script uses .env from the repository root when it exists:

sh ./run.sh

Use a different file:

ENV_FILE=.env.local sh ./run.sh

Example .env

GEMINI_API_KEY=your_key_here
UISURF_PROVIDER=gemini
UISURF_MODEL_ID=gemini-3-flash-preview
AGENT_HOST=0.0.0.0
BROWSER_AGENT_PORT=8001
DESKTOP_AGENT_PORT=8002
BROWSER_AGENT_PUBLIC_URL=http://localhost:6080/browser/
DESKTOP_AGENT_PUBLIC_URL=http://localhost:6080/desktop/
BROWSER_FAST_MODE=true
SESSION_CONTROL_MODE=agent
INCLUDE_THOUGHTS=false
DESKTOP_OBSERVATION_DELAY_MS=750
MAX_OBSERVATION_IMAGES=2
OBSERVATION_SCALE=0.75
PASSWORD_REQUIRED=false

Session Control

SESSION_CONTROL_MODE controls the default for AUTO_MODE inside the container:

  • agent: automatic safety approval
  • manual: user confirmation required

Per-agent overrides:

  • BROWSER_AGENT_AUTO_MODE
  • DESKTOP_AGENT_AUTO_MODE

The default container starts only the browser and desktop A2A servers. Mobile settings such as MOBILE_AGENT_PORT, MOBILE_AGENT_PUBLIC_URL, and MOBILE_DEVICE_SERIAL apply when you start mobile_agent --mode a2a separately on a host with an ADB-reachable Android device or emulator.