Local Browser

Run a Firefox browser on your own machine for maximum privacy

The built-in browser runs on your local machine using Camoufox — a Firefox fork patched for automation and anti-detection. All browsing activity stays on your machine.

Requirements

  • macOS or Linux (Windows not yet supported)
  • 4 GB RAM minimum, 8 GB recommended

Setup

Install Bun (v1.0+), then run:

bunx @ev3ry/camoufox-server

The browser binary is downloaded automatically on first run. A local server starts on port 2026.

Options:

bunx @ev3ry/camoufox-server --port 9090        # Custom port
bunx @ev3ry/camoufox-server --no-tunnel         # Disable Cloudflare tunnel
bunx @ev3ry/camoufox-server --token my-secret   # Set an API token

Pull and run the pre-built image:

docker run -d -p 2026:2026 ghcr.io/baixianger/camoufox-server

With optional environment variables:

docker run -d -p 2026:2026 \
  -e CAMOUFOX_API_TOKEN=your-secret-token \
  -e PROXY_SERVER=http://proxy:8080 \
  ghcr.io/baixianger/camoufox-server

The Docker image runs the browser headless inside a virtual display (Xvfb). Recommended for VPS and server deployments.

Connecting to Ev3ry

In the dashboard, go to Settings > Browser and set:

  • Connection method: Built-in Browser
  • Server URL: http://localhost:2026

If you're running the server on a remote machine or through a tunnel, replace localhost:2026 with the appropriate address.

How it works

  1. Ev3ry sends a request to your local server to create a new browser session
  2. The agent controls the browser through an HTTP API
  3. Screenshots are polled every ~500ms for the live view
  4. All browsing data stays on your machine
  5. The session is closed and cleaned up after the run ends

Anti-detection

Camoufox patches Firefox at the binary level to resist fingerprinting:

  • Browser fingerprint matches a real Firefox user profile
  • Canvas, WebGL, and font fingerprints are normalized
  • Bot-detection scripts (Cloudflare Turnstile, DataDome, PerimeterX) are significantly less likely to trigger than with standard Chromium

Troubleshooting

Port already in use — check lsof -i :2026 and stop the conflicting process, or use --port to pick a different port.

Browser won't start — ensure at least 2 GB of free RAM is available.

Live view appears slow — polling-based screenshots update every ~500ms by design. This does not affect extraction speed.