Camofox Browser — Remote Mode (Docker / Shared Server)
Stealth browser automation via Camoufox. Drives an externally-managed server over HTTP — no install, no local Node process.
Setup (required)
export CAMOFOX_URL=http://172.17.0.1:9377 # required — no default
The server runs externally (Docker container, shared staging, CI). This skill only drives it.
See references/docker.md for Docker networking details.
If camofox-remote is not found on PATH: set an alias using the script that ships with this skill. Replace <SKILL_DIR> with the directory containing this SKILL.md file:
alias camofox-remote="bash <SKILL_DIR>/scripts/camofox-remote.sh"
Example: if this SKILL.md is at ~/my-skills/camofox-browser-remote/SKILL.md, use ~/my-skills/camofox-browser-remote.
Trust requirement: Every command — page snapshots, screenshots, typed text, navigation history — is sent over HTTP to CAMOFOX_URL. Only point this at a server you own and control. Do not use a shared or third-party endpoint if you will visit sites with credentials or sensitive data.
Quick Start
camofox-remote open https://example.com # Create tab + navigate
camofox-remote snapshot # Get page elements with @refs
camofox-remote click @e1 # Click element
camofox-remote type @e2 "hello" # Type text
camofox-remote screenshot # Save PNG
camofox-remote close # Close tab
Core Workflow
- Navigate —
camofox-remote open <url>
- Snapshot — returns an accessibility tree with
@e1, @e2 refs (~90% smaller than raw HTML)
- Interact — use refs to click, type, scroll
- Re-snapshot — after any DOM change, refs are invalidated; get fresh ones
- Repeat — the server stays running between commands
camofox-remote open https://example.com/search
camofox-remote snapshot
# @e1 [input] Search box @e2 [button] Submit
camofox-remote type @e1 "camoufox anti-detection"
camofox-remote click @e2
camofox-remote snapshot # MUST re-snapshot after navigation
Commands (at a glance)
| Category | Commands |
|---|
| Server | health, start (no-op — manage container externally), stop (no-op — manage container externally) |
| Navigation | open <url>, navigate <url>, back, forward, refresh, scroll [down|up|left|right] |
| Page state | snapshot, screenshot [path], tabs, links |
| Interaction | click @eN, type @eN "text" |
| Search | search google "query" (13 macros — see references/macros.md) |
| Session | --session <name> <cmd>, close, close-all |
Full reference with curl equivalents: references/commands.md.
Ref Lifecycle (critical)
Refs (@e1, @e2) are invalidated whenever the DOM changes. Always re-snapshot after:
- Clicking links/buttons that navigate
- Form submissions
- Dynamic content loads (infinite scroll, SPA route change)
Environment Variables
| Variable | Default | Meaning |
|---|
CAMOFOX_URL | REQUIRED | Remote base URL — e.g. http://172.17.0.1:9377. No default. |
CAMOFOX_SESSION | default | Default session name (isolated cookies/storage) |
HTTPS_PROXY | (unset) | Outbound proxy for the browser |
When to Use camofox-browser-remote vs agent-browser
| Scenario | Tool |
|---|
| Normal websites, no bot detection | agent-browser (faster) |
| Cloudflare / Akamai protected | camofox-browser-remote |
| Sites that block Chromium automation | camofox-browser-remote |
| Need anti-fingerprinting | camofox-browser-remote |
| Need iOS / mobile simulation | agent-browser |
| Need video recording | agent-browser |
Deep-Dive References
Ready-to-Use Templates
Cleanup
Always close when done:
camofox-remote close-all
camofox-remote stop # no-op in remote mode; manage the container externally