{"id":19462720,"url":"https://github.com/lvqq/intelli-browser","last_synced_at":"2026-02-27T01:01:50.139Z","repository":{"id":262074566,"uuid":"885459615","full_name":"lvqq/intelli-browser","owner":"lvqq","description":"✨ Use natural language to control your browser, powered by LLM and playwright","archived":false,"fork":false,"pushed_at":"2024-11-16T10:00:44.000Z","size":10252,"stargazers_count":45,"open_issues_count":0,"forks_count":3,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-03T01:03:08.898Z","etag":null,"topics":["anthropic","claude","claude-3-5-sonnet","computer-use","e2e","e2e-tests","playwright"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lvqq.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-11-08T16:16:13.000Z","updated_at":"2025-03-24T17:14:02.000Z","dependencies_parsed_at":"2025-02-25T12:48:14.397Z","dependency_job_id":"990a3735-9835-4738-bf77-acee588d5049","html_url":"https://github.com/lvqq/intelli-browser","commit_stats":null,"previous_names":["lvqq/intelli-browser"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/lvqq/intelli-browser","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lvqq%2Fintelli-browser","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lvqq%2Fintelli-browser/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lvqq%2Fintelli-browser/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lvqq%2Fintelli-browser/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lvqq","download_url":"https://codeload.github.com/lvqq/intelli-browser/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lvqq%2Fintelli-browser/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":284122919,"owners_count":26951149,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-11-12T02:00:06.336Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["anthropic","claude","claude-3-5-sonnet","computer-use","e2e","e2e-tests","playwright"],"created_at":"2024-11-10T18:05:06.056Z","updated_at":"2025-11-12T22:29:47.850Z","avatar_url":"https://github.com/lvqq.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch2 align=\"center\"\u003eIntelli-Browser\u003c/h2\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/lvqq/intelli-browser/releases\"\u003e\n    \u003cimg alt=\"GitHub tag (latest by date)\" src=\"https://img.shields.io/github/v/release/lvqq/intelli-browser\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/lvqq/intelli-browser/blob/main/LICENSE\"\u003e\n    \u003cimg alt=\"license\" src=\"https://img.shields.io/github/license/lvqq/intelli-browser\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\n## Introduction\nUse natural language to control your browser, powered by LLM and playwright\n\n\n## Features\n- ✨ Use natural language to write and run e2e test cases\n- 🧪 Generate traditional e2e test cases after executing the cases\n- 💭 More feautes are coming soon! Feel free to open an issue or submit a pull request\n\n## Demo\n[MDN Demo Video](https://github.com/user-attachments/assets/274d2f78-39b6-4a7d-ab15-79dc08a2c13a)\n\nUser Task\n\u003e Click search and input \"Web API\", press \"arrow down\" once to select the second result. Then press \"ENTER\" to search it. Find \"Keyboard API\" nearby title \"K\" and click it\n\n## Limitaions\n- Only *claude-3-5-sonnet* LLM is supported for now\n- Only *playwright* framework is supported for now\n\n## Requirement\n- NodeJS \u003e= 18\n\n## Usage\n\n### Example\nThe example is under directory `example`, try the following steps to have an experience:\n```bash\n# clone the repository\ngit clone https://github.com/lvqq/intelli-browser.git\n\n# install dependencies and browsers\npnpm i\n\n# build all packages\npnpm -r build\n\n# add your ANTHROPIC_API_KEY\n\n# run demo\npnpm run demo\n```\n\n\n### Installation\n```bash\n# use npm\nnpm install @intelli-browser/core\n\n# use yarn\nyarn add @intelli-browser/core\n\n# use pnpm\npnpm add @intelli-browser/core\n```\n\n### API reference\n```javascript\n  import { IntelliBrowser } from '@intelli-browser/core';\n\n  const client = new IntelliBrowser({\n    apiKey: '',  // add apiKey or provide ANTHROPIC_API_KEY in .env file\n  })\n\n  await client.run({\n    page,  // playwright Page instance\n    message: 'Click search and input \"Web API\", press \"arrow down\" to select the second result. then press \"ENTER\" to search it',  // user prompt\n  })\n```\n\n### Generate E2E cases\nIf you want to generate the tranditional E2E test cases after executing, just get the return data from `client.run`\n\n```javascript\n  import { IntelliBrowser } from '@intelli-browser/core';\n\n  const client = new IntelliBrowser({\n    apiKey: '',  // add apiKey or provide ANTHROPIC_API_KEY in .env file\n  })\n\n  // will return the generated e2e cases as string array\n  const e2e = await client.run({\n    page,  // playwright Page instance\n    message: 'Click search and input \"Web API\", press \"arrow down\" to select the second result. then press \"ENTER\" to search it',  // user prompt\n  })\n\n  console.log(e2e)\n\n```\n\nAs the demo video shows:\n\n```javascript\n  [\n    'await page.mouse.move(1241.61, 430.2)',\n    'await page.waitForTimeout(2266)',\n    'await page.mouse.down()',\n    'await page.mouse.up()',\n    'await page.waitForTimeout(3210)',\n    \"await page.mouse.type('Web API')\",\n    'await page.waitForTimeout(3064)',\n    \"await page.keyboard.press('ArrowDown')\",\n    'await page.waitForTimeout(2917)',\n    \"await page.keyboard.press('Enter')\",\n    'await page.waitForTimeout(6471)',\n    \"await page.keyboard.press('PageDown')\",\n    'await page.waitForTimeout(7021)',\n    'await page.mouse.move(687.39, 923.4)',\n    'await page.waitForTimeout(4501)',\n    'await page.mouse.down()',\n    'await page.mouse.up()'\n  ]\n```\n\n\n### Other options\nBy default, LLM conversations and actions are logged as the demo shows. If you don't want it, you can try:\n```javascript\nimport { IntelliBrowser } from '@intelli-browser/core';\n\nconst client = new IntelliBrowser({\n  apiKey: '',  // add apiKey or provide ANTHROPIC_API_KEY in .env file\n  verbose: false,  // don't log out conversations and actions\n})\n```\n\nBy default, context will be cleaned after each `client.run` to save tokens usage. If you want to retain context, you can try:\n```javascript\nimport { IntelliBrowser } from '@intelli-browser/core';\n\nconst client = new IntelliBrowser({\n  apiKey: '',  // add apiKey or provide ANTHROPIC_API_KEY in .env file\n  autoClean: false,  // don't auto clean context\n})\n```\n\n## How it works\n- Inspired by claude-3.5-sonnet **computer use** funtion, it simulates browser use and combines with e2e cases\n- User prompt and page info are sent to the LLM to analyze page content and interactive elements\n- Intelli-Browser executes the LLM planned actions and feeds it back\n- It ends when no more action or cannot achieve the goal of the task\n\n## Credits\n- [Computer Use](https://docs.anthropic.com/en/docs/build-with-claude/computer-use)\n- [agent.exe](https://github.com/corbt/agent.exe)\n\n## License\nBased on [MIT License](https://github.com/lvqq/intelli-browser/blob/main/LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flvqq%2Fintelli-browser","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flvqq%2Fintelli-browser","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flvqq%2Fintelli-browser/lists"}