WebPilot
Browser agent CLI. Type a goal; browser-use 0.13.10 drives Chrome, then WebPilot writes a replayable Playwright spec.
The engine is the browser-use service from test-agent-nexus, copied into this package (py/webpilot_engine). It keeps the nexus behaviour: error-recovery system prompt, fast-mode agent tuning, Chrome launch flags, the search/select loop breaker, the 600 s run timeout, browser-use-v2-compact workflow YAML with semantic locators, and the Playwright codegen. There is no dependency on test-agent-nexus, FastAPI, or a database.
The shell is OpenTUI. Headless run is for CI. See docs/ARCHITECTURE.md and HOW_TO_USE.md.
Install
OpenTUI needs Bun 1.3+. Node cannot load the native renderer. Live runs also need uv or Python 3.11+ for the browser-use engine.
The CLI is published on npm as @capagents/webpilot. PyPI package webpilot-cli is a pip launcher for the same webpilot command.
curl -fsSL https://bun.sh/install | bash
curl -LsSf https://astral.sh/uv/install.sh | sh # recommended for the engine
npm install -g @capagents/webpilot
# or
pip install webpilot-cli
webpilot setup # optional: the first live run does this too
webpilot setup creates ~/.webpilot/engine/.venv with browser-use 0.13.10. It uses installed Google Chrome, or installs Chromium when Chrome is missing. WEBPILOT_PYTHON points WebPilot at an existing Python that already has browser-use.
From this repo:
cd WebPilot
bun install
bun src/index.ts init
bun src/index.ts start
One-shot release (same version on both registries; assumes npm and twine are already logged in):
./scripts/publish.sh # current version
./scripts/publish.sh 0.2.0 # bump + publish
./scripts/publish.sh --dry-run # pack only
Configure
init writes:
| File | Purpose |
|---|---|
webpilot.yaml |
Browser, prompts, export, active profile |
llms.json |
Named LLM profiles (azure, openai, ollama, openai_compatible, mock) |
.env.example |
API key names |
webpilot models
webpilot run --goal "Read the homepage" --url https://example.com --profile mock --plain
mock is an offline demo on a synthetic page: no engine, browser, or model. Pick a live profile (Tab in the shell, or llm.active) for a real run.
CLI
webpilot start
webpilot start -g "Go to booking.com and search hotels in Mumbai" -p azure-gpt4o
webpilot run --goal "Get a quote" --url https://example.com --profile azure-gpt4o --headed
webpilot run --goal "..." --url https://example.com --profile mock --plain --out ./out/demo
Inside the shell: /url, /goal, /run, /stop, /headed, /steps, /profile, /export, /exit. A line without a slash is the goal and starts the run; the agent chooses which site to open. /url only pins a start page.
Metadata
Release files for webpilot-cli 0.1.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| webpilot_cli-0.1.3.tar.gz | 3.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| webpilot_cli-0.1.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 8.3 kB
Release files / webpilot_cli-0.1.3.tar.gz
| Download URL | webpilot_cli-0.1.3.tar.gz |
|---|---|
| Size | 3.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
37021321ee81be7af328f5a7b6e42564a5af249647c0ba034f75853e2dcecbd5
|
|
BLAKE2b-256 checksum How to use checksums |
8f940371e404a12e2a9a2180b76061f6f4107ab6ab633bc257e53c1af7446541
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.13
|
Release files / webpilot_cli-0.1.3-py3-none-any.whl
| Download URL | webpilot_cli-0.1.3-py3-none-any.whl |
|---|---|
| Size | 4.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
bc578ede76bf5624aa3b6c3eb904e4bf04ef4ccaa0e8f2ae78d897b70fd6afd3
|
|
BLAKE2b-256 checksum How to use checksums |
8f4cce2b2c89d5493250232b37d808386d4e1488480cc8a1a3e993fe6b6c8e6a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.13
|