# GrokBoy Minimal local **GrokBot-like** CLI agent. Phase **P3**: optional Playwright DOM browser tools. ## Status | Phase | Status | |-------|--------| | P0 streaming chat | done | | P1 shell / files + ReAct | done | | P2 completion / loop guard / truncation | done | | P3 browser (Playwright DOM) | done (optional) | No Docker desktop, no Codex/LazyBoy fork. ## Setup (macOS) ```bash export GROKBOY_API_KEY=your_key # or XAI_API_KEY # optional: # export GROKBOY_BASE_URL=https://api.x.ai/v1 # export GROKBOY_MODEL=grok-4.6 # export GROKBOY_CONTEXT_CHARS=100000 cd ~/GrokBoy cargo run -p grokboy -- chat ``` ### Optional: Playwright browser tools Browser tools are always registered but **fail closed** until you install the helper: ```bash cd ~/GrokBoy/tools/playwright npm install npx playwright install chromium ``` Then the agent can use `browser_navigate`, `browser_snapshot`, `browser_click`, `browser_type`, `browser_eval` (DOM/selector/role — not screenshot-first). ## Commands - `grokboy chat` — interactive streaming chat (no tools) - `grokboy run ""` — one-shot agent with tools - `grokboy run --session ""` — continue a saved session - `grokboy smoke` — offline checks (no API key / no Chromium required) - `grokboy help` Tools: `shell`, `list_dir`, `read_file`, `write_file`, `report_done`, `report_blocked`, `browser_navigate`, `browser_snapshot`, `browser_click`, `browser_type`, `browser_eval`. Sessions are stored under `~/.grokboy/sessions/.json` (may include `last_browser_url`). The agent stops on `report_done` / `report_blocked`, blocks identical tool rounds (×3), and truncates old context when over budget. ## 繁體中文 本機終端機 coding assistant。P3 可選 Playwright DOM 瀏覽器工具(非截圖優先)。 ```bash export GROKBOY_API_KEY=你的金鑰 cd ~/GrokBoy cargo run -p grokboy -- smoke # 可選瀏覽器: cd tools/playwright && npm install && npx playwright install chromium cargo run -p grokboy -- run "打開 example.com 並 snapshot" cargo run -p grokboy -- chat ``` ## Layout ``` crates/grokboy-core/ # config, model, tools, browser, agent, session crates/grokboy/ # CLI binary tools/playwright/ # optional Node Playwright helper (JSONL) docs/ACCEPTANCE.md ```