{"_id":"@albro3459/br0wser","_rev":"3-ed3eab28be3005c491be1368bae737d0","name":"@albro3459/br0wser","dist-tags":{"latest":"0.1.2"},"versions":{"0.1.0":{"name":"@albro3459/br0wser","version":"0.1.0","keywords":["browser","cdp","chrome","chromium","cli","playwright"],"author":{"name":"Albro3459"},"license":"MIT","_id":"@albro3459/br0wser@0.1.0","maintainers":[{"name":"albro3459","email":"brodsky.alex22@gmail.com"}],"bin":{"br0wser":"scripts/br0wser.js"},"dist":{"shasum":"f508634da02835c275ab1a93d61272f2c68261df","tarball":"https://registry.npmjs.org/@albro3459/br0wser/-/br0wser-0.1.0.tgz","fileCount":5,"integrity":"sha512-C571lJtxc4h/motUt9FP/sXUyCaFB0Cg0vHbng8UwwILjbopIJ7DCRkdm1SFKk+hEhf57K2ZqVYoHoTCW+LmwQ==","signatures":[{"sig":"MEYCIQCojL2a1szIWeS3a0dNWV3GArVwTLazxqgnQkx9neXU7gIhAIF6GDSeTPoK11duG8NmabEExKjKWxMDCDYI6X/YVg5b","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17264},"type":"module","gitHead":"fa0d80ca5ad1dc05072393a74d0f072c47cc15b7","_npmUser":{"name":"albro3459","email":"brodsky.alex22@gmail.com"},"_npmVersion":"10.8.2","description":"Local CDP helper for attaching to or launching a persistent debug browser","directories":{},"_nodeVersion":"20.19.5","dependencies":{"playwright":"^1.40.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/br0wser_0.1.0_1773683389623_0.6010655345697957","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@albro3459/br0wser","version":"0.1.1","keywords":["browser","cdp","chrome","chromium","cli","playwright"],"author":{"name":"Albro3459"},"license":"MIT","_id":"@albro3459/br0wser@0.1.1","maintainers":[{"name":"albro3459","email":"brodsky.alex22@gmail.com"}],"bin":{"br0wser":"scripts/br0wser.js"},"dist":{"shasum":"cc1dbeced9f2e6229fbab6278f140288696f778a","tarball":"https://registry.npmjs.org/@albro3459/br0wser/-/br0wser-0.1.1.tgz","fileCount":11,"integrity":"sha512-BDS+v+Y+KenUZr/0pOvx6ZJc4dhmBrR2URbHcl+efjpaxyia4Z9Li2N39kRhEl9HskLtJzZB6ghY8rXFvPtgPA==","signatures":[{"sig":"MEUCIQCpuoHktjiji5vojjuuu7rYycvvW4oggok4ivko2p5hfgIgYfOZzTN1jfWPYkFZsXa5Wb5H/36dpsyJdpbtwMUbLe4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41261},"type":"module","gitHead":"ca09d66a607900c883499a02a8b776c40c8dd1ed","scripts":{"publish":"npm publish --access=public","version:update":"npm version patch --no-git-tag-version"},"_npmUser":{"name":"albro3459","email":"brodsky.alex22@gmail.com"},"_npmVersion":"10.8.2","description":"Local CDP helper for attaching to or launching a persistent debug browser","directories":{},"_nodeVersion":"20.19.5","dependencies":{"playwright":"^1.40.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/br0wser_0.1.1_1773689618130_0.4789078028598781","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@albro3459/br0wser","version":"0.1.2","author":{"name":"Albro3459"},"license":"MIT","type":"module","description":"Local CDP helper for attaching to or launching a persistent debug browser","keywords":["browser","cdp","chrome","chromium","cli","playwright"],"dependencies":{"playwright":"^1.40.0"},"bin":{"br0wser":"scripts/br0wser.js"},"scripts":{"version:update":"npm version patch --no-git-tag-version","publish":"npm publish --access=public"},"_id":"@albro3459/br0wser@0.1.2","gitHead":"a78591c139c5c32b76861ac3a6c57b56e67794b5","_nodeVersion":"20.19.5","_npmVersion":"10.8.2","dist":{"integrity":"sha512-1HcqRnWlzi91gvfc8WDs5laMeDeOgW1ixUUsIxuuD9YHKODS1amz17A2OSHNHPdzLvMTgtY0qSBwNHVGTIqFnw==","shasum":"b4e225c1bde8d6300d57ee34944899982513ea33","tarball":"https://registry.npmjs.org/@albro3459/br0wser/-/br0wser-0.1.2.tgz","fileCount":11,"unpackedSize":41273,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIFbMFOYfhXJLzX6TkmXM37Hcqgjy2O/aGFs/H+0CqxXlAiEA1ftihP29VadEHc3HWt456oLMWNGTb1ZR2U5l4d31ljo="}]},"_npmUser":{"name":"albro3459","email":"brodsky.alex22@gmail.com"},"directories":{},"maintainers":[{"name":"albro3459","email":"brodsky.alex22@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/br0wser_0.1.2_1773689902965_0.8993258713980481"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-16T17:49:49.516Z","modified":"2026-03-16T19:38:23.235Z","0.1.0":"2026-03-16T17:49:49.787Z","0.1.1":"2026-03-16T19:33:38.309Z","0.1.2":"2026-03-16T19:38:23.121Z"},"author":{"name":"Albro3459"},"license":"MIT","keywords":["browser","cdp","chrome","chromium","cli","playwright"],"description":"Local CDP helper for attaching to or launching a persistent debug browser","maintainers":[{"name":"albro3459","email":"brodsky.alex22@gmail.com"}],"readme":"# br0wser\n\n`br0wser` is a small CLI for launching Chrome/Chromium with a debug port or attaching to an existing browser over the Chrome DevTools Protocol.\n\nIt is primarily meant to be used as a skill or helper tool by an agent that needs to reconnect to a live browser session across steps, turns, or debugging loops. Humans can use it directly too, but the main design goal is agent-friendly browser reuse instead of one-shot automation.\n\nIt is designed for workflows where browser state should stick around between runs: signed-in sessions, open tabs, localStorage, cookies, or a browser that was started by VS Code debugging.\n\n## Why this exists\n\nMost browser automation tools assume they own the browser lifecycle. `br0wser` is built for the opposite case:\n\n- open a browser once\n- keep it alive\n- reconnect to it whenever you need to inspect, click, fill, evaluate, or screenshot\n\nThat makes it useful for agent skills, local app development, debugger-driven flows, and any workflow where starting from a fresh browser each time is annoying.\n\n## Install\n\nInstall the CLI:\n```bash\nnpm install -g @albro3459/br0wser\n```\n\nInstall the bundled Claude skill:\n```bash\nbr0wser install --skills claude\n```\n\nInstall the bundled Codex skill:\n```bash\nbr0wser install --skills codex\n```\n\nThose commands copy the packaged skill bundle into the matching agent skill directory:\n- Claude: `~/.claude/skills/br0wser`\n- Codex: `$CODEX_HOME/skills/br0wser` or `~/.codex/skills/br0wser` when `CODEX_HOME` is not set\n\nYou can also run the CLI without a global install:\n\n```bash\nnpx @albro3459/br0wser info\n```\n\nUse `br0wser --help` to see the install flow again and print the resolved paths for:\n\n- the package `README.md`\n- the bundled skill `SKILL.md`\n- the bundled skill `references/` directory\n- the installed skill target directory\n\nOptional convenience alias:\n\n```bash\nalias brwsr=\"br0wser --chrome-port 9222\"\n```\n\nThe helper defaults to Chrome debug port `9222`, so `--chrome-port` is optional unless you need a different port. The alias is still handy if you want to make that default explicit.\n\n## Quick start\n\nLaunch or reuse a browser on the default port `9222`:\n\n```bash\nbr0wser open http://localhost:4200\n```\n\nSee what tabs are available:\n\n```bash\nbr0wser info\n```\n\nTarget a specific tab and interact with it:\n\n```bash\nbr0wser --chrome-port 9222 --page-url localhost:4200 click-text \"Login\"\nbr0wser --chrome-port 9222 --page-url localhost:4200 fill-selector 'input[name=\"email\"]' 'user@example.com'\nbr0wser --chrome-port 9222 --page-url localhost:4200 eval \"location.href\"\n```\n\n## Common commands\n\n```bash\nbr0wser --chrome-port 9222 open https://example.com\nbr0wser --chrome-port 9222 info\nbr0wser --chrome-port 9222 goto https://example.org\nbr0wser --chrome-port 9222 --page-url example.org click-selector 'button[type=\"submit\"]'\nbr0wser --chrome-port 9222 --page-url example.org click-text 'Continue'\nbr0wser --chrome-port 9222 --page-url example.org fill-selector 'input[name=\"email\"]' 'user@example.com'\nbr0wser --chrome-port 9222 --page-url example.org eval \"document.title\"\nbr0wser --chrome-port 9222 --page-url example.org screenshot page.png\nbr0wser install --skills <claude|codex>\n```\n\n## How it works\n\n- `open` launches a debug browser if one is not already listening on the chosen port\n- if a browser is already running on that port, `open` reuses it\n- each command connects, does one job, and detaches cleanly\n- the browser keeps running until you close it\n- `install --skills <claude|codex>` copies the bundled skill files into the selected agent skills directory\n\nThat means session state persists naturally across commands.\n\n## Useful flags\n\n- `--chrome-port <port>`: debug port to attach to or launch with; defaults to `9222`\n- `--page-url <fragment>`: select the tab whose URL includes the fragment\n- `--headless`: launch in headless mode when using `open`\n- `--user-data-dir <path>`: use a dedicated browser profile\n- `--endpoint <url>`: connect directly to a CDP endpoint instead of building one from a port\n- `--help`: print usage, install flow, and the local doc paths bundled with the package\n\n## VS Code example\n\nIf VS Code launches Chrome with a remote debugging port, `br0wser` can hop into that same session. This is especially useful when an agent needs to share the exact browser instance that your debugger owns.\n\nExample launch config in your project's `.vscode/launch.json`:\n\n```json\n{\n  \"name\": \"Launch Chrome\",\n  \"type\": \"pwa-chrome\",\n  \"request\": \"launch\",\n  \"url\": \"http://localhost:4200\",\n  \"webRoot\": \"${workspaceFolder}/client\",\n  \"runtimeArgs\": [\n    \"--remote-debugging-port=9222\"\n  ]\n}\n```\n\nOnce that browser is running, your agent can connect:\n\n```bash\nbr0wser --chrome-port 9222 info\nbr0wser --chrome-port 9222 --page-url localhost:4200 eval \"location.href\"\nbr0wser --chrome-port 9222 --page-url localhost:4200 screenshot debug-session.png\n```\n\n## Tips\n\n- Provide the [VsCodeDebugger-MCP](https://github.com/Albro3459/VsCodeDebugger-MCP) to your agent to query and run your VSCode launch configs.\n- Treat `br0wser` as an attach-first tool for agents: keep the browser alive and reconnect instead of opening fresh sessions unless you need a clean profile.\n- Run `info` before interacting when multiple tabs may be open.\n- Use `--page-url` when you want to avoid clicking in the wrong tab.\n- Prefer stable selectors over repeated button text.\n- After route-changing clicks, verify with `info` or `eval \"location.href\"`.\n- If a click appears to hang during a debugger-driven flow, check whether execution is paused at a breakpoint.\n- `screenshot` writes into the OS temp directory under `.br0wser/` and appends a timestamp and hash to the filename.\n\n## Headed vs Headless\n\n`open` is headed by default. Pass `--headless` only when you do not need a visible browser window.\n\n## Command summary\n\n- `open [url]`\n- `info`\n- `goto <url>`\n- `click-text <text>`\n- `click-selector <selector>`\n- `fill-selector <selector> <text>`\n- `screenshot [filename]`\n- `eval <expression>`\n- `install --skills <claude|codex>`\n\n## Docs layout\n\nRepository docs live here:\n\n- `README.md`\n\nThe npm package also bundles the Codex skill at `skills/br0wser/` with:\n\n- `skills/br0wser/SKILL.md`\n- `skills/br0wser/references/`\n- `skills/br0wser/agents/openai.yaml`\n- `skills/br0wser/assets/`\n\n`br0wser install --skills <claude|codex>` copies that bundled directory into the selected agent skills folder.\n\n## Notes\n\n- `br0wser` does not try to close the browser for you.\n- A dedicated `--user-data-dir` is a good idea when you launch your own debug browser.\n- This tool is intentionally small and works best as an agent skill or persistent-browser helper, not a full test runner.\n","readmeFilename":"README.md"}