diff --git a/install.sh b/install.sh
index deaf06a..05bb3b2 100755
--- a/install.sh
+++ b/install.sh
@@ -1,16 +1,16 @@
#!/bin/sh
-# agent-browser-stealth installer — downloads the prebuilt binary from the
+# chrome-use installer — downloads the prebuilt binary from the
# GitHub Release (no npm, no auth for you or your users).
#
-# curl -fsSL https://raw.githubusercontent.com/leeguooooo/agent-browser-stealth/main/install.sh | sh
+# curl -fsSL https://raw.githubusercontent.com/leeguooooo/chrome-use/main/install.sh | sh
#
# Env overrides:
# AGENT_BROWSER_VERSION=v0.27.0-fork.11 pin a specific release tag
# AGENT_BROWSER_BIN_DIR=/usr/local/bin install location (auto-detected otherwise)
set -eu
-REPO="leeguooooo/agent-browser-stealth"
-BIN_NAME="agent-browser"
+REPO="leeguooooo/chrome-use"
+BIN_NAME="chrome-use"
err() { printf '\033[31merror:\033[0m %s\n' "$1" >&2; exit 1; }
info() { printf '\033[36m==>\033[0m %s\n' "$1" >&2; }
@@ -39,7 +39,7 @@ if [ "$plat" = "linux" ] && ! ldd /bin/sh 2>/dev/null | grep -qi 'gnu\|glibc'; t
libc="-musl"
fi
fi
-asset="agent-browser-${plat}${libc}-${cpu}"
+asset="chrome-use-${plat}${libc}-${cpu}"
# --- resolve release tag --------------------------------------------------
tag="${AGENT_BROWSER_VERSION:-}"
@@ -95,14 +95,8 @@ fi
mkdir -p "$bindir"
mv "$tmp/${BIN_NAME}" "$bindir/${BIN_NAME}"
-# Aliases pointing at the same binary: `abs` (short) and `agent-browser-stealth`
-# (the fork's package name). All three names work, and an upgrade refreshes
-# whichever name you actually run.
-for alias_name in abs agent-browser-stealth; do
- ln -sf "$bindir/${BIN_NAME}" "$bindir/${alias_name}" 2>/dev/null || true
-done
-info "installed -> ${bindir}/ (agent-browser, agent-browser-stealth, abs)"
+info "installed -> ${bindir}/${BIN_NAME}"
"$bindir/${BIN_NAME}" --version 2>/dev/null || true
case ":$PATH:" in
diff --git a/package.json b/package.json
index 2d54bae..746f784 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
{
- "name": "agent-browser-stealth",
- "version": "0.27.0-fork.51",
- "description": "Browser automation CLI for AI agents — stealth fork with anti-detection",
+ "name": "chrome-use",
+ "version": "1.0.0",
+ "description": "chrome-use — drive your real, logged-in Chrome from any AI agent, stealth by default",
"type": "module",
"packageManager": "pnpm@11.1.3",
"files": [
@@ -12,9 +12,7 @@
"extensions"
],
"bin": {
- "agent-browser-stealth": "bin/agent-browser.js",
- "agent-browser": "bin/agent-browser.js",
- "abs": "bin/agent-browser.js"
+ "chrome-use": "bin/chrome-use.js"
},
"scripts": {
"prepare": "husky || true",
@@ -22,10 +20,10 @@
"version": "npm run version:sync && git add cli/Cargo.toml",
"build:native": "npm run version:sync && cargo build --release --manifest-path cli/Cargo.toml && node scripts/copy-native.js",
"build:linux": "npm run version:sync && docker compose -f docker/docker-compose.yml run --rm build-linux",
- "build:macos": "npm run version:sync && bash -c 'cargo build --release --manifest-path cli/Cargo.toml --target aarch64-apple-darwin & PID1=$!; cargo build --release --manifest-path cli/Cargo.toml --target x86_64-apple-darwin & PID2=$!; wait $PID1 || exit 1; wait $PID2 || exit 1' && cp cli/target/aarch64-apple-darwin/release/agent-browser bin/agent-browser-darwin-arm64 && cp cli/target/x86_64-apple-darwin/release/agent-browser bin/agent-browser-darwin-x64",
+ "build:macos": "npm run version:sync && bash -c 'cargo build --release --manifest-path cli/Cargo.toml --target aarch64-apple-darwin & PID1=$!; cargo build --release --manifest-path cli/Cargo.toml --target x86_64-apple-darwin & PID2=$!; wait $PID1 || exit 1; wait $PID2 || exit 1' && cp cli/target/aarch64-apple-darwin/release/chrome-use bin/chrome-use-darwin-arm64 && cp cli/target/x86_64-apple-darwin/release/chrome-use bin/chrome-use-darwin-x64",
"build:windows": "npm run version:sync && docker compose -f docker/docker-compose.yml run --rm build-windows",
"build:all-platforms": "npm run version:sync && npm run build:linux && npm run build:windows && npm run build:macos",
- "build:docker": "docker build -t agent-browser-builder -f docker/Dockerfile.build .",
+ "build:docker": "docker build -t chrome-use-builder -f docker/Dockerfile.build .",
"release": "npm run version:sync && npm run build:all-platforms && npm publish --tag fork",
"postinstall": "node scripts/postinstall.js"
},
@@ -43,12 +41,12 @@
"license": "Apache-2.0",
"repository": {
"type": "git",
- "url": "git+https://github.com/leeguooooo/agent-browser-stealth.git"
+ "url": "git+https://github.com/leeguooooo/chrome-use.git"
},
"bugs": {
- "url": "https://github.com/leeguooooo/agent-browser-stealth/issues"
+ "url": "https://github.com/leeguooooo/chrome-use/issues"
},
- "homepage": "https://github.com/leeguooooo/agent-browser-stealth",
+ "homepage": "https://github.com/leeguooooo/chrome-use",
"devDependencies": {
"husky": "^9.0.11"
}
diff --git a/scripts/build-all-platforms.sh b/scripts/build-all-platforms.sh
index 277843e..7b3f9a6 100755
--- a/scripts/build-all-platforms.sh
+++ b/scripts/build-all-platforms.sh
@@ -1,7 +1,7 @@
#!/bin/bash
set -e
-# Build agent-browser for all platforms using Docker
+# Build chrome-use for all platforms using Docker
# Usage: ./scripts/build-all-platforms.sh
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
@@ -14,7 +14,7 @@ GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
-echo -e "${YELLOW}Building agent-browser for all platforms...${NC}"
+echo -e "${YELLOW}Building chrome-use for all platforms...${NC}"
echo ""
# Ensure output directory exists
@@ -22,7 +22,7 @@ mkdir -p "$OUTPUT_DIR"
# Build the Docker image if needed
echo -e "${YELLOW}Building Docker cross-compilation image...${NC}"
-docker build -t agent-browser-builder -f "$PROJECT_ROOT/docker/Dockerfile.build" "$PROJECT_ROOT"
+docker build -t chrome-use-builder -f "$PROJECT_ROOT/docker/Dockerfile.build" "$PROJECT_ROOT"
# Function to build for a target
build_target() {
@@ -34,8 +34,8 @@ build_target() {
docker run --rm \
-v "$PROJECT_ROOT/cli:/build" \
-v "$OUTPUT_DIR:/output" \
- agent-browser-builder \
- -c "cargo zigbuild --release --target ${target} && cp /build/target/${target}/release/agent-browser* /output/${output_name} && chmod +x /output/${output_name} 2>/dev/null || true"
+ chrome-use-builder \
+ -c "cargo zigbuild --release --target ${target} && cp /build/target/${target}/release/chrome-use* /output/${output_name} && chmod +x /output/${output_name} 2>/dev/null || true"
if [ -f "$OUTPUT_DIR/$output_name" ]; then
echo -e "${GREEN}✓ Built ${output_name}${NC}"
@@ -47,28 +47,28 @@ build_target() {
# Build for each platform
# Linux x64
-build_target "x86_64-unknown-linux-gnu" "agent-browser-linux-x64"
+build_target "x86_64-unknown-linux-gnu" "chrome-use-linux-x64"
# Linux ARM64
-build_target "aarch64-unknown-linux-gnu" "agent-browser-linux-arm64"
+build_target "aarch64-unknown-linux-gnu" "chrome-use-linux-arm64"
# Windows x64
-build_target "x86_64-pc-windows-gnu" "agent-browser-win32-x64.exe"
+build_target "x86_64-pc-windows-gnu" "chrome-use-win32-x64.exe"
# macOS x64 (via zig for cross-compilation)
-build_target "x86_64-apple-darwin" "agent-browser-darwin-x64"
+build_target "x86_64-apple-darwin" "chrome-use-darwin-x64"
# macOS ARM64 (via zig for cross-compilation)
-build_target "aarch64-apple-darwin" "agent-browser-darwin-arm64"
+build_target "aarch64-apple-darwin" "chrome-use-darwin-arm64"
# Linux musl x64 (Alpine)
-build_target "x86_64-unknown-linux-musl" "agent-browser-linux-musl-x64"
+build_target "x86_64-unknown-linux-musl" "chrome-use-linux-musl-x64"
# Linux musl ARM64 (Alpine)
-build_target "aarch64-unknown-linux-musl" "agent-browser-linux-musl-arm64"
+build_target "aarch64-unknown-linux-musl" "chrome-use-linux-musl-arm64"
echo ""
echo -e "${GREEN}Build complete!${NC}"
echo ""
echo "Binaries are in: $OUTPUT_DIR"
-ls -la "$OUTPUT_DIR"/agent-browser-*
+ls -la "$OUTPUT_DIR"/chrome-use-*
diff --git a/scripts/copy-native.js b/scripts/copy-native.js
index 864b326..a5c1a07 100644
--- a/scripts/copy-native.js
+++ b/scripts/copy-native.js
@@ -13,13 +13,13 @@ const __dirname = dirname(fileURLToPath(import.meta.url));
const projectRoot = join(__dirname, '..');
const sourceExt = platform() === 'win32' ? '.exe' : '';
-const sourcePath = join(projectRoot, `cli/target/release/agent-browser${sourceExt}`);
+const sourcePath = join(projectRoot, `cli/target/release/chrome-use${sourceExt}`);
const binDir = join(projectRoot, 'bin');
// Determine platform suffix
const platformKey = `${platform()}-${arch()}`;
const ext = platform() === 'win32' ? '.exe' : '';
-const targetName = `agent-browser-${platformKey}${ext}`;
+const targetName = `chrome-use-${platformKey}${ext}`;
const targetPath = join(binDir, targetName);
if (!existsSync(sourcePath)) {
diff --git a/scripts/postinstall.js b/scripts/postinstall.js
index 51142ec..e9cd9ae 100644
--- a/scripts/postinstall.js
+++ b/scripts/postinstall.js
@@ -1,7 +1,7 @@
#!/usr/bin/env node
/**
- * Postinstall script for agent-browser
+ * Postinstall script for chrome-use
*
* Downloads the platform-specific native binary if not present.
* On global installs, patches npm's bin entry to use the native binary directly:
@@ -35,7 +35,7 @@ function isMusl() {
const osKey = platform() === 'linux' && isMusl() ? 'linux-musl' : platform();
const platformKey = `${osKey}-${arch()}`;
const ext = platform() === 'win32' ? '.exe' : '';
-const binaryName = `agent-browser-${platformKey}${ext}`;
+const binaryName = `chrome-use-${platformKey}${ext}`;
const binaryPath = join(binDir, binaryName);
// Package info
@@ -82,7 +82,7 @@ async function downloadFile(url, dest) {
/**
* Detect which package manager ran this postinstall and write a marker file
- * next to the binary so `agent-browser upgrade` can use the correct one
+ * next to the binary so `chrome-use upgrade` can use the correct one
* without fragile path heuristics or slow subprocess probing.
*
* npm_config_user_agent is set by npm/pnpm/yarn/bun during lifecycle scripts,
@@ -193,7 +193,7 @@ function showInstallReminder() {
if (systemChrome) {
console.log('');
console.log(` ✓ System Chrome found: ${systemChrome}`);
- console.log(' agent-browser will use it automatically.');
+ console.log(' chrome-use will use it automatically.');
console.log('');
return;
}
@@ -202,12 +202,12 @@ function showInstallReminder() {
console.log(' ⚠ No Chrome installation detected.');
console.log(' If you plan to use a local browser, run:');
console.log('');
- console.log(' agent-browser install');
+ console.log(' chrome-use install');
if (platform() === 'linux') {
console.log('');
console.log(' On Linux, include system dependencies with:');
console.log('');
- console.log(' agent-browser install --with-deps');
+ console.log(' chrome-use install --with-deps');
}
console.log('');
console.log(' You can skip this if you use --cdp, --provider, --engine, or --executable-path.');
@@ -240,7 +240,7 @@ async function fixUnixSymlink() {
return; // npm not available
}
- const symlinkPath = join(npmBinDir, 'agent-browser');
+ const symlinkPath = join(npmBinDir, 'chrome-use');
// Check if symlink exists (indicates global install)
try {
@@ -277,19 +277,19 @@ async function fixWindowsShims() {
return;
}
- const cmdShim = join(npmBinDir, 'agent-browser.cmd');
- const ps1Shim = join(npmBinDir, 'agent-browser.ps1');
+ const cmdShim = join(npmBinDir, 'chrome-use.cmd');
+ const ps1Shim = join(npmBinDir, 'chrome-use.ps1');
// Shims may not exist yet during postinstall (npm creates them after
// lifecycle scripts). If missing, fall back: the JS wrapper at
- // bin/agent-browser.js handles Windows correctly via child_process.spawn.
+ // bin/chrome-use.js handles Windows correctly via child_process.spawn.
if (!existsSync(cmdShim)) {
return;
}
// Point the shims at the binary's ABSOLUTE path. The previous code rebuilt a
- // relative `node_modules\agent-browser\bin\...` path, but this fork's package
- // is `agent-browser-stealth`, so that path never existed → the rewrite was
+ // relative `node_modules\chrome-use\bin\...` path, but this fork's package
+ // is `chrome-use`, so that path never existed → the rewrite was
// skipped and the shim stayed the (slower) JS wrapper. `binaryPath` is the
// real absolute path to the native binary inside this package.
if (!existsSync(binaryPath)) {
diff --git a/scripts/sync-version.js b/scripts/sync-version.js
index d08fa1d..aaabace 100644
--- a/scripts/sync-version.js
+++ b/scripts/sync-version.js
@@ -44,7 +44,7 @@ let cargoToml = readFileSync(cargoTomlPath, "utf-8");
const cargoVersionRegex = /^version\s*=\s*"[^"]*"/m;
const newCargoVersion = `version = "${version}"`;
const cargoNameMatch = cargoToml.match(/^name\s*=\s*"([^"]+)"/m);
-const cargoPackageName = cargoNameMatch?.[1] ?? "agent-browser-stealth";
+const cargoPackageName = cargoNameMatch?.[1] ?? "chrome-use";
let cargoTomlUpdated = false;
if (cargoVersionRegex.test(cargoToml)) {
diff --git a/scripts/windows-debug/provision.sh b/scripts/windows-debug/provision.sh
index c8ccad0..d3d1cf5 100755
--- a/scripts/windows-debug/provision.sh
+++ b/scripts/windows-debug/provision.sh
@@ -3,7 +3,7 @@ set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
INSTANCE_FILE="$SCRIPT_DIR/.instance"
-NAME_PREFIX="agent-browser-debug"
+NAME_PREFIX="chrome-use-debug"
INSTANCE_TYPE="${INSTANCE_TYPE:-t3.xlarge}"
if [[ -f "$INSTANCE_FILE" ]]; then
@@ -103,7 +103,7 @@ if [[ "$SG_ID" == "None" || -z "$SG_ID" ]]; then
echo "Creating security group: $SG_NAME"
SG_ID=$(aws ec2 create-security-group \
--group-name "$SG_NAME" \
- --description "agent-browser Windows debug instance (SSM only, no inbound)" \
+ --description "chrome-use Windows debug instance (SSM only, no inbound)" \
--vpc-id "$VPC_ID" \
--query "GroupId" --output text)
@@ -161,19 +161,19 @@ Start-Process -FilePath $vsInstaller -ArgumentList "--quiet --wait --norestart -
Log "Build tools installed."
# Clone repo
-Log "Cloning agent-browser..."
-git clone https://github.com/vercel-labs/agent-browser.git C:\agent-browser
-Set-Location C:\agent-browser
+Log "Cloning chrome-use..."
+git clone https://github.com/vercel-labs/agent-browser.git C:\chrome-use
+Set-Location C:\chrome-use
Log "Repo cloned."
# Build CLI
-Log "Building agent-browser CLI..."
+Log "Building chrome-use CLI..."
cargo build --release --manifest-path cli\Cargo.toml
Log "Build complete."
# Install Chrome
-Log "Installing Chrome via agent-browser..."
-.\cli\target\release\agent-browser.exe install
+Log "Installing Chrome via chrome-use..."
+.\cli\target\release\chrome-use.exe install
Log "Chrome installed."
Log "--- Bootstrap complete ---"
@@ -214,7 +214,7 @@ echo " ./scripts/windows-debug/run.sh \"Get-Content C:\\bootstrap.log\""
echo ""
echo "Once ready, sync your branch and start debugging:"
echo " ./scripts/windows-debug/sync.sh"
-echo " ./scripts/windows-debug/run.sh \"cd C:\\agent-browser && cargo test\""
+echo " ./scripts/windows-debug/run.sh \"cd C:\\chrome-use && cargo test\""
echo ""
echo "Stop when done to save costs:"
echo " ./scripts/windows-debug/stop.sh"
diff --git a/scripts/windows-debug/run.sh b/scripts/windows-debug/run.sh
index 59f9dd5..fbc25d4 100755
--- a/scripts/windows-debug/run.sh
+++ b/scripts/windows-debug/run.sh
@@ -13,9 +13,9 @@ if [[ $# -eq 0 ]]; then
echo "Usage: ./scripts/windows-debug/run.sh \"
\""
echo ""
echo "Examples:"
- echo " ./scripts/windows-debug/run.sh \"cd C:\\agent-browser && cargo test\""
+ echo " ./scripts/windows-debug/run.sh \"cd C:\\chrome-use && cargo test\""
echo " ./scripts/windows-debug/run.sh \"Get-Content C:\\bootstrap.log\""
- echo " ./scripts/windows-debug/run.sh \"cd C:\\agent-browser && cargo test e2e -- --ignored --test-threads=1\""
+ echo " ./scripts/windows-debug/run.sh \"cd C:\\chrome-use && cargo test e2e -- --ignored --test-threads=1\""
exit 1
fi
diff --git a/scripts/windows-debug/sync.sh b/scripts/windows-debug/sync.sh
index c4a3ea7..6b6d9d0 100755
--- a/scripts/windows-debug/sync.sh
+++ b/scripts/windows-debug/sync.sh
@@ -10,7 +10,7 @@ REMOTE_URL=$(git remote get-url origin 2>/dev/null || echo "https://github.com/v
echo "Syncing branch '$BRANCH' on Windows instance..."
"$RUN" "
-cd C:\agent-browser
+cd C:\chrome-use
git remote set-url origin '$REMOTE_URL'
git fetch origin
git checkout -B '$BRANCH' 'origin/$BRANCH'
@@ -21,7 +21,7 @@ echo ""
echo "Branch synced. Rebuilding..."
"$RUN" "
-cd C:\agent-browser
+cd C:\chrome-use
cargo build --release --manifest-path cli\Cargo.toml
Write-Host 'Build complete.'
"
diff --git a/skill-data/agentcore/SKILL.md b/skill-data/agentcore/SKILL.md
index 7f9652a..331f1fe 100644
--- a/skill-data/agentcore/SKILL.md
+++ b/skill-data/agentcore/SKILL.md
@@ -1,12 +1,12 @@
---
name: agentcore
-description: Run agent-browser on AWS Bedrock AgentCore cloud browsers. Use when the user wants to use AgentCore, run browser automation on AWS, use a cloud browser with AWS credentials, or needs a managed browser session backed by AWS infrastructure. Triggers include "use agentcore", "run on AWS", "cloud browser with AWS", "bedrock browser", "agentcore session", or any task requiring AWS-hosted browser automation.
-allowed-tools: Bash(agent-browser:*), Bash(agent-browser-stealth:*), Bash(abs:*), Bash(npx agent-browser:*), Bash(npx agent-browser-stealth:*)
+description: Run chrome-use on AWS Bedrock AgentCore cloud browsers. Use when the user wants to use AgentCore, run browser automation on AWS, use a cloud browser with AWS credentials, or needs a managed browser session backed by AWS infrastructure. Triggers include "use agentcore", "run on AWS", "cloud browser with AWS", "bedrock browser", "agentcore session", or any task requiring AWS-hosted browser automation.
+allowed-tools: Bash(chrome-use:*), Bash(chrome-use:*), Bash(abs:*), Bash(npx chrome-use:*), Bash(npx chrome-use:*)
---
# AWS Bedrock AgentCore
-Run agent-browser on cloud browser sessions hosted by AWS Bedrock AgentCore. All standard agent-browser commands work identically; the only difference is where the browser runs.
+Run chrome-use on cloud browser sessions hosted by AWS Bedrock AgentCore. All standard chrome-use commands work identically; the only difference is where the browser runs.
## Setup
@@ -21,13 +21,13 @@ No additional setup is needed if the user already has working AWS credentials.
```bash
# Open a page on an AgentCore cloud browser
-agent-browser -p agentcore open https://example.com
+chrome-use -p agentcore open https://example.com
# Everything else is the same as local Chrome
-agent-browser snapshot -i
-agent-browser click @e1
-agent-browser screenshot page.png
-agent-browser close
+chrome-use snapshot -i
+chrome-use click @e1
+chrome-use screenshot page.png
+chrome-use close
```
## Environment Variables
@@ -46,15 +46,15 @@ Use `AGENTCORE_PROFILE_ID` to persist browser state across sessions. This is use
```bash
# First run: log in
-AGENTCORE_PROFILE_ID=my-app agent-browser -p agentcore open https://app.example.com/login
-agent-browser snapshot -i
-agent-browser fill @e1 "user@example.com"
-agent-browser fill @e2 "password"
-agent-browser click @e3
-agent-browser close
+AGENTCORE_PROFILE_ID=my-app chrome-use -p agentcore open https://app.example.com/login
+chrome-use snapshot -i
+chrome-use fill @e1 "user@example.com"
+chrome-use fill @e2 "password"
+chrome-use click @e3
+chrome-use close
# Future runs: already authenticated
-AGENTCORE_PROFILE_ID=my-app agent-browser -p agentcore open https://app.example.com/dashboard
+AGENTCORE_PROFILE_ID=my-app chrome-use -p agentcore open https://app.example.com/dashboard
```
## Live View
@@ -70,10 +70,10 @@ Live View: https://us-east-1.console.aws.amazon.com/bedrock-agentcore/browser/aw
```bash
# Default: us-east-1
-agent-browser -p agentcore open https://example.com
+chrome-use -p agentcore open https://example.com
# Explicit region
-AGENTCORE_REGION=eu-west-1 agent-browser -p agentcore open https://example.com
+AGENTCORE_REGION=eu-west-1 chrome-use -p agentcore open https://example.com
```
## Credential Patterns
@@ -82,14 +82,14 @@ AGENTCORE_REGION=eu-west-1 agent-browser -p agentcore open https://example.com
# Explicit credentials (CI/CD, scripts)
export AWS_ACCESS_KEY_ID=AKIA...
export AWS_SECRET_ACCESS_KEY=...
-agent-browser -p agentcore open https://example.com
+chrome-use -p agentcore open https://example.com
# SSO (interactive)
aws sso login --profile my-profile
-AWS_PROFILE=my-profile agent-browser -p agentcore open https://example.com
+AWS_PROFILE=my-profile chrome-use -p agentcore open https://example.com
# IAM role / default credential chain
-agent-browser -p agentcore open https://example.com
+chrome-use -p agentcore open https://example.com
```
## Using with AGENT_BROWSER_PROVIDER
@@ -100,10 +100,10 @@ Set the provider via environment variable to avoid passing `-p agentcore` on eve
export AGENT_BROWSER_PROVIDER=agentcore
export AGENTCORE_REGION=us-east-2
-agent-browser open https://example.com
-agent-browser snapshot -i
-agent-browser click @e1
-agent-browser close
+chrome-use open https://example.com
+chrome-use snapshot -i
+chrome-use click @e1
+chrome-use close
```
## Common Issues
diff --git a/skill-data/core/SKILL.md b/skill-data/core/SKILL.md
index bdeb402..9532c55 100644
--- a/skill-data/core/SKILL.md
+++ b/skill-data/core/SKILL.md
@@ -1,10 +1,10 @@
---
name: core
-description: Core agent-browser usage guide. Read this before running any agent-browser commands. Covers the snapshot-and-ref workflow, navigating pages, interacting with elements (click, fill, type, select), extracting text and data, taking screenshots, managing tabs, handling forms and auth, waiting for content, running multiple browser sessions in parallel, and troubleshooting common failures. Use when the user asks to interact with a website, fill a form, click something, extract data, take a screenshot, log into a site, test a web app, or automate any browser task.
-allowed-tools: Bash(agent-browser:*), Bash(agent-browser-stealth:*), Bash(abs:*), Bash(npx agent-browser:*), Bash(npx agent-browser-stealth:*)
+description: Core chrome-use usage guide. Read this before running any chrome-use commands. Covers the snapshot-and-ref workflow, navigating pages, interacting with elements (click, fill, type, select), extracting text and data, taking screenshots, managing tabs, handling forms and auth, waiting for content, running multiple browser sessions in parallel, and troubleshooting common failures. Use when the user asks to interact with a website, fill a form, click something, extract data, take a screenshot, log into a site, test a web app, or automate any browser task.
+allowed-tools: Bash(chrome-use:*), Bash(chrome-use:*), Bash(abs:*), Bash(npx chrome-use:*), Bash(npx chrome-use:*)
---
-# agent-browser core
+# chrome-use core
Fast browser automation CLI for AI agents. Chrome/Chromium via CDP, no
Playwright or Puppeteer dependency. Accessibility-tree snapshots with compact
@@ -18,17 +18,17 @@ web pages — see [When to load another skill](#when-to-load-another-skill).
> **Hit a rough edge? Please report it.** If a command surprised you — a
> confusing error, a stale `@ref`, an occluded click, a flaky wait, a missing
> feature, or anything that cost you extra turns — open a quick issue at
-> **** with the exact
+> **** with the exact
> command and what happened vs. what you expected. Agent-filed friction reports
> are how this tool gets sharper; a 30-second issue is genuinely valuable.
## The core loop
```bash
-agent-browser open # 1. Open a page
-agent-browser snapshot -i # 2. See what's on it (interactive elements only)
-agent-browser click @e3 # 3. Act on refs from the snapshot
-agent-browser snapshot -i # 4. Re-snapshot after any page change
+chrome-use open # 1. Open a page
+chrome-use snapshot -i # 2. See what's on it (interactive elements only)
+chrome-use click @e3 # 3. Act on refs from the snapshot
+chrome-use snapshot -i # 4. Re-snapshot after any page change
```
Refs (`@e1`, `@e2`, ...) are assigned fresh on every snapshot. They become
@@ -38,15 +38,15 @@ next ref interaction.
## Before you automate: pick the cheapest tool
-Driving a browser is the heavy option. agent-browser earns its keep when you
+Driving a browser is the heavy option. chrome-use earns its keep when you
need a **real, logged-in browser** — not for reading text off a public page.
| You need | Use |
|---|---|
| Discover what exists / find sources | `WebSearch` |
| Specific facts from a static or public page | `WebFetch` or `curl` (no browser) |
-| Login state, interaction, JS-rendered or anti-bot pages | **agent-browser** (this skill) |
-| A page the user saved before / an internal system | `agent-browser find-url ` (their bookmarks), then open it |
+| Login state, interaction, JS-rendered or anti-bot pages | **chrome-use** (this skill) |
+| A page the user saved before / an internal system | `chrome-use find-url ` (their bookmarks), then open it |
| The user's **own already-open, logged-in** Chrome window | the **extension connect** flow (below) |
Don't hand-build deep URLs with query params — links discovered by *interacting*
@@ -58,24 +58,24 @@ hand-constructed URL often doesn't.
When the task needs the user's *live* logged-in window (their real session, the
window they're looking at — not a fresh browser), use the extension connect flow.
One-time setup:
-1. `agent-browser extension install` — registers the native-messaging host.
-2. Install the **agent-browser-stealth** extension. Easiest (and restart-stable):
+1. `chrome-use extension install` — registers the native-messaging host.
+2. Install the **chrome-use** extension. Easiest (and restart-stable):
the **Chrome Web Store**, one-click *Add to Chrome*:
-
+
(Dev fallback: `chrome://extensions` → Developer mode → *Load unpacked* →
`extensions/ab-connect`. Load-unpacked can be disabled on Chrome restart, so
prefer the Store build for unattended setups.)
-Once installed, plain `agent-browser open ` auto-connects through the
+Once installed, plain `chrome-use open ` auto-connects through the
extension relay — `auto_connect_cdp` **prefers the live relay over a raw
`--remote-debugging-port`**, so Chrome 136+'s "Allow remote debugging?" consent
-popup never fires. `agent-browser extension connect` is the explicit form of the
+popup never fires. `chrome-use extension connect` is the explicit form of the
same path. Zero-confirmation, zero-token. Use `--launch` instead when a fresh,
isolated browser is fine.
`--launch` opens an **isolated, empty test profile** — no cookies, no login, no
extensions (so the extension-relay path is off). Its window is labelled
-`agent-browser ()` in Chrome's profile menu so a human watching the
+`chrome-use ()` in Chrome's profile menu so a human watching the
desktop knows which session owns it. If a launched session needs more:
- **Real cookies / login / extensions** → drop `--launch`, use `--profile auto`
@@ -88,17 +88,17 @@ desktop knows which session owns it. If a launched session needs more:
attempt re-pops it). One of two things is true:
1. **You're on a stale build.** The relay-preference that avoids this dialog
- landed in **fork.30**. Run `agent-browser --version`: if it's below
+ landed in **fork.30**. Run `chrome-use --version`: if it's below
`0.27.0-fork.30`, upgrade and retry:
```bash
- curl -fsSL https://raw.githubusercontent.com/leeguooooo/agent-browser-stealth/main/install.sh | sh
+ curl -fsSL https://raw.githubusercontent.com/leeguooooo/chrome-use/main/install.sh | sh
```
- If `which -a agent-browser` shows more than one install, an old **npm/pnpm**
+ If `which -a chrome-use` shows more than one install, an old **npm/pnpm**
copy (the npm registry lags behind — Releases are the source of truth) may be
shadowing the upgraded one; remove the stale copy
- (`npm rm -g agent-browser-stealth` / `pnpm rm -g agent-browser-stealth`) so the
+ (`npm rm -g chrome-use` / `pnpm rm -g chrome-use`) so the
`install.sh` build wins. A tool that bundles its *own* pinned copy
- (e.g. `node .../agent-browser-stealth@0.24.x/.../agent-browser`) needs that
+ (e.g. `node .../chrome-use@0.24.x/.../chrome-use`) needs that
copy upgraded too.
2. **The extension/relay isn't live.** Tell the user to install the Store
extension (one click, above); after that the relay stays up and the dialog
@@ -135,7 +135,7 @@ You have a **real Chrome with the user's DOM**. Two layers, mix them freely:
readable; best for straightforward forms and navigation. But the a11y view is
*lossy and fragile*: refs go stale on any change, hidden inputs never show up,
overlays can block coordinate clicks.
-2. **eval-first** (`agent-browser eval ""`) — your eyes and hands on the real
+2. **eval-first** (`chrome-use eval ""`) — your eyes and hands on the real
DOM: read hidden inputs, reach into Shadow DOM / iframes, inspect
`form.elements` and `.validity`, extract the exact shape you want, or call
`el.click()` directly. **The moment the structured path fights you, drop to
@@ -144,47 +144,47 @@ You have a **real Chrome with the user's DOM**. Two layers, mix them freely:
```bash
# "what's actually in this form / why won't it submit?"
-agent-browser eval "[...document.forms[0].elements].map(e=>[e.name,e.type,e.value,e.checked])"
-agent-browser eval "document.querySelector('[name=point_choice]')?.value"
-agent-browser eval "[...document.forms[0].elements].filter(e=>!e.validity.valid).map(e=>e.name+': '+e.validationMessage)"
-agent-browser eval "document.querySelector('#stubborn').click()" # direct DOM click, bypasses overlays
+chrome-use eval "[...document.forms[0].elements].map(e=>[e.name,e.type,e.value,e.checked])"
+chrome-use eval "document.querySelector('[name=point_choice]')?.value"
+chrome-use eval "[...document.forms[0].elements].filter(e=>!e.validity.valid).map(e=>e.name+': '+e.validationMessage)"
+chrome-use eval "document.querySelector('#stubborn').click()" # direct DOM click, bypasses overlays
```
## Quickstart
```bash
# Install once
-npm i -g agent-browser && agent-browser install
+npm i -g chrome-use && chrome-use install
# Take a screenshot of a page
-agent-browser open https://example.com
-agent-browser screenshot home.png
-agent-browser close
+chrome-use open https://example.com
+chrome-use screenshot home.png
+chrome-use close
# Search, click a result, and capture it
-agent-browser open https://duckduckgo.com
-agent-browser snapshot -i # find the search box ref
-agent-browser fill @e1 "agent-browser cli"
-agent-browser press Enter
-agent-browser wait --load networkidle
-agent-browser snapshot -i # refs now reflect results
-agent-browser click @e5 # click a result
-agent-browser screenshot result.png
+chrome-use open https://duckduckgo.com
+chrome-use snapshot -i # find the search box ref
+chrome-use fill @e1 "chrome-use cli"
+chrome-use press Enter
+chrome-use wait --load networkidle
+chrome-use snapshot -i # refs now reflect results
+chrome-use click @e5 # click a result
+chrome-use screenshot result.png
```
The browser stays running across commands so these feel like a single
-session. Use `agent-browser close` (or `close --all`) when you're done.
+session. Use `chrome-use close` (or `close --all`) when you're done.
## Reading a page
```bash
-agent-browser snapshot # full tree (verbose)
-agent-browser snapshot -i # interactive elements only (preferred)
-agent-browser snapshot -i -u # include href urls on links
-agent-browser snapshot -i -c # compact (no empty structural nodes)
-agent-browser snapshot -i -d 3 # cap depth at 3 levels
-agent-browser snapshot -s "#main" # scope to a CSS selector
-agent-browser snapshot -i --json # machine-readable output
+chrome-use snapshot # full tree (verbose)
+chrome-use snapshot -i # interactive elements only (preferred)
+chrome-use snapshot -i -u # include href urls on links
+chrome-use snapshot -i -c # compact (no empty structural nodes)
+chrome-use snapshot -i -d 3 # cap depth at 3 levels
+chrome-use snapshot -s "#main" # scope to a CSS selector
+chrome-use snapshot -i --json # machine-readable output
```
Snapshot output looks like:
@@ -207,32 +207,32 @@ assigned fresh on every snapshot.
For unstructured reading (no refs needed):
```bash
-agent-browser get text @e1 # visible text of an element
-agent-browser get html @e1 # innerHTML
-agent-browser get attr @e1 href # any attribute
-agent-browser get value @e1 # input value
-agent-browser get title # page title
-agent-browser get url # current URL
-agent-browser get count ".item" # count matching elements
+chrome-use get text @e1 # visible text of an element
+chrome-use get html @e1 # innerHTML
+chrome-use get attr @e1 href # any attribute
+chrome-use get value @e1 # input value
+chrome-use get title # page title
+chrome-use get url # current URL
+chrome-use get count ".item" # count matching elements
```
## Interacting
```bash
-agent-browser click @e1 # click
-agent-browser click @e1 --new-tab # open link in new tab instead of navigating
-agent-browser dblclick @e1 # double-click
-agent-browser hover @e1 # hover
-agent-browser focus @e1 # focus (useful before keyboard input)
-agent-browser fill @e2 "hello" # clear then type
-agent-browser type @e2 " world" # type without clearing
-agent-browser press Enter # press a key at current focus
-agent-browser press Control+a # key combination
-agent-browser check @e3 # check checkbox
-agent-browser uncheck @e3 # uncheck
-agent-browser select @e4 "option-value" # native