Unblock web requests using Aluvia mobile carrier proxies. Use when hitting 403 Forbidden, Cloudflare challenges, CAPTCHAs, rate limits (429), IP bans, WAF blocks, empty responses, or when websites detect and block automated traffic. Routes traffic through real US mobile carrier IPs (AT&T, T-Mobile, Verizon) so websites treat your agent like a human.
Anti-bot systems block cloud-based and datacenter traffic. You get 403 Forbidden, CAPTCHAs, 429 rate limits, IP bans, or empty responses.
Aluvia routes traffic through real US mobile carrier IPs — the same IPs used by millions of people on their phones. Websites cannot distinguish your requests from legitimate mobile users.
The CLI manages headless Chromium sessions with automatic block detection and bypass. Every command returns structured JSON to stdout.
Aluvia provides browser session infrastructure for AI agents.
Some tools such as Browserbase, Steel, Hyperbrowser, and Browserless provide hosted cloud browsers. Aluvia instead runs locally and exposes a direct Chrome DevTools Protocol (CDP) endpoint for the active session.
Some platforms such as Apify or fully managed browser agents abstract the browser behind higher-level APIs. Aluvia does not abstract browser control. The agent connects directly to the CDP endpoint and retains full control using any compatible client such as Playwright, Puppeteer, OpenClaw, agent-browser, or other CDP tools.
Aluvia focuses on network-layer block mitigation using US mobile carrier IP routing, automatic block detection, IP rotation, and dynamic proxy rules, while keeping the existing browser automation stack unchanged.
Before using any command, verify the environment:
# 1. Check API key is set (never log the full value)
echo "${ALUVIA_API_KEY:0:8}..."
# 2. Verify the CLI binary is available
aluvia help --json
# 3. Verify Playwright is installed (required for browser sessions)
node -e "require('playwright')"
If the API key is missing, tell the user to set ALUVIA_API_KEY from the Aluvia dashboard. If aluvia is not found, run npm install @aluvia/cli. If Playwright is missing, run npm install playwright.
| Command | Purpose | Example |
|---|---|---|
session start <url> | Launch a headless browser session | aluvia session start https://example.com --auto-unblock --browser-session my-task |
session close | Stop a running session | aluvia session close --browser-session my-task |
session list | List all active sessions | aluvia session list |
session get | Get session details + block status | aluvia session get --browser-session my-task |
session rotate-ip | Rotate to a new upstream IP | aluvia session rotate-ip --browser-session my-task |
session set-geo <geo> | Target IPs from a US region | aluvia session set-geo us_ca --browser-session my-task |
session set-rules <rules> | Add hostnames to proxy routing | aluvia session set-rules "example.com,api.example.com" --browser-session my-task |
account | Show account info and balance | aluvia account |
account usage | Show bandwidth usage stats | aluvia account usage |
geos | List available geo-targeting regions | aluvia geos |
Always use --browser-session to name your session. Always use --auto-unblock unless you need manual block control.
aluvia session start https://example.com --auto-unblock --browser-session my-task
The start command returns:
{
"browserSession": "my-task",
"pid": 12345,
"startUrl": "https://example.com",
"cdpUrl": "http://127.0.0.1:38209",
"connectionId": 3449,
"blockDetection": true,
"autoUnblock": true
}
Save browserSession — you need it for every subsequent command.
aluvia session start returns JSON containing a cdpUrl.
This is the Chrome DevTools Protocol (CDP) endpoint for the active browser session.
cdpUrl is NOT a website URL.
Do not navigate to it.
cdpUrl. Only use tools that support CDP attach; skip tools that launch a new browser.import { chromium } from "playwright";
const browser = await chromium.connectOverCDP(cdpUrl);
const context = browser.contexts()[0];
const page = context.pages()[0];
aluvia session get --browser-session my-task
Check the lastDetection object. Block scores: blocked >= 0.7, suspected >= 0.4, clear < 0.4. With --auto-unblock, blocks are remediated automatically.
aluvia session rotate-ip --browser-session my-task
Returns a new sessionId (UUID). The next request uses a fresh IP.
aluvia session set-geo us_ca --browser-session my-task
If navigating to new domains that need proxying:
aluvia session set-rules "newsite.com,api.newsite.com" --browser-session my-task
Rules are appended to existing rules (not replaced).
Always close your session. Sessions consume resources until explicitly closed.
aluvia session close --browser-session my-task
session close. If uncertain whether a session exists, run session list first.ALUVIA_API_KEY by name only. Never log, print, or include its value in output.aluvia account and inspect balance_gb before long scraping tasks.--auto-unblock. Let the SDK handle block detection and remediation automatically.--headful for debugging.0 = success, 1 = error with {"error": "message"}. Do not blindly retry on failure.--browser-session <name> to avoid ambiguity.session close --all as a last resort.For detailed command specs, workflows, and troubleshooting: