The "browser-use" project is a Python-based tool designed to enable AI agents to interact with web browsers, facilitating tasks like price comparison and document creation. It is highly popular, with significant community engagement and ongoing development. The project is in a robust state with a clear trajectory towards enhancing browser automation capabilities for AI systems.
Magnus Müller (MagMueller)
Gregor Žunič (gregpr07)
Eshwar Tangirala (Eshwar1212-maker)
browser_use/agent/service.py
8 days ago.Shudaizi1989
Nino Risteski (NinoRisteski)
docs/cloud/quickstart.mdx
and docs/customize/real-browser.mdx
.Dilraj Singh (dsomel21)
load_dotenv()
in examples/models/claude-3.7-sonnet.py
.Pavel 'Strajk' Dolecek (Strajk)
docs/customize/custom-functions.mdx
.extract_content
, but highlights underlying issues needing further exploration.Timespan | Opened | Closed | Comments | Labeled | Milestones |
---|---|---|---|---|---|
7 Days | 36 | 4 | 34 | 1 | 1 |
30 Days | 167 | 83 | 319 | 3 | 1 |
90 Days | 329 | 135 | 807 | 56 | 1 |
All Time | 441 | 146 | - | - | - |
Like all software activity quantification, these numbers are imperfect but sometimes useful. Comments, Labels, and Milestones refer to those issues opened in the timespan in question.
Developer | Avatar | Branches | PRs | Commits | Files | Changes |
---|---|---|---|---|---|---|
Gregor Žunič | ![]() |
1 | 0/0/0 | 3 | 6 | 2530 |
None (codebeaver-ai[bot]) | 2 | 7/0/8 | 9 | 8 | 2197 | |
Magnus Müller | ![]() |
1 | 6/6/0 | 11 | 6 | 997 |
Nino Risteski | ![]() |
1 | 2/2/0 | 2 | 2 | 12 |
Dilraj Singh | ![]() |
1 | 1/1/0 | 1 | 1 | 10 |
shudaizi1989 | ![]() |
1 | 1/1/0 | 1 | 3 | 10 |
Pavel 'Strajk' Dolecek | ![]() |
1 | 1/1/0 | 1 | 1 | 2 |
Eshwar Tangirala | ![]() |
1 | 1/1/0 | 1 | 1 | 2 |
Zhener (Zhen3r) | 0 | 1/0/0 | 0 | 0 | 0 | |
None (neo773) | 0 | 1/0/0 | 0 | 0 | 0 | |
Cfomodz (Cfomodz) | 0 | 1/0/0 | 0 | 0 | 0 | |
SHYANIL MISHRA (Shyanil) | 0 | 1/0/1 | 0 | 0 | 0 | |
Christian Clauss (cclauss) | 0 | 2/0/0 | 0 | 0 | 0 | |
Deshraj Yadav (deshraj) | 0 | 1/0/0 | 0 | 0 | 0 | |
None (mkuts12) | 0 | 2/0/0 | 0 | 0 | 0 | |
Edison S (noggies) | 0 | 1/0/0 | 0 | 0 | 0 | |
Takuto Yuki (pppp606) | 0 | 1/0/0 | 0 | 0 | 0 | |
Viktor Nagy (NagyVikt) | 0 | 2/0/2 | 0 | 0 | 0 | |
Bart (b0rgcube) | 0 | 1/0/0 | 0 | 0 | 0 | |
Alin (AlinJiang) | 0 | 2/0/0 | 0 | 0 | 0 | |
None (Idanraman) | 0 | 1/0/1 | 0 | 0 | 0 | |
None (SpaceGlit) | 0 | 1/0/0 | 0 | 0 | 0 | |
Naymul Islam (ai-naymul) | 0 | 1/0/0 | 0 | 0 | 0 | |
Hoang Bang (hoangnb24) | 0 | 1/0/0 | 0 | 0 | 0 | |
Louis Kapp (louiskhub) | 0 | 1/0/0 | 0 | 0 | 0 | |
None (ramanidan) | 0 | 1/0/0 | 0 | 0 | 0 | |
மனோஜ்குமார் பழனிச்சாமி (SmartManoj) | 0 | 1/0/0 | 0 | 0 | 0 | |
Michael Bianco (iloveitaly) | 0 | 0/2/0 | 0 | 0 | 0 | |
None (Jonathanqjs) | 0 | 1/0/0 | 0 | 0 | 0 | |
Naman Garg (NamanGarg20) | 0 | 1/0/1 | 0 | 0 | 0 | |
None (jlogtenberg) | 0 | 1/0/0 | 0 | 0 | 0 | |
Daniel Goboňa (danielgobona) | 0 | 1/0/0 | 0 | 0 | 0 | |
Swapnil Sonker (SwapnilSonker) | 0 | 1/0/0 | 0 | 0 | 0 | |
None (guybensimhon1) | 0 | 2/0/0 | 0 | 0 | 0 | |
Manoj Tutika (manojsundayai) | 0 | 2/0/1 | 0 | 0 | 0 | |
None (adamdelezuch89) | 0 | 1/0/0 | 0 | 0 | 0 | |
Gaurav Bansal (gaurav-cointab) | 0 | 3/0/1 | 0 | 0 | 0 | |
David Anyatonwu (onyedikachi-david) | 0 | 1/0/0 | 0 | 0 | 0 | |
None (PaperBoardOfficial) | 0 | 1/0/0 | 0 | 0 | 0 | |
None (ashutoshjha-caliber) | 0 | 1/0/0 | 0 | 0 | 0 |
PRs: created by that dev and opened/merged/closed-unmerged during the period
Risk | Level (1-5) | Rationale |
---|---|---|
Delivery | 4 | The project faces significant delivery risks due to a growing backlog of unresolved issues. Over the past 90 days, 329 issues were opened compared to only 135 closed, indicating an increasing accumulation of unresolved problems. The minimal use of milestones suggests a lack of structured planning, potentially impacting delivery timelines. Additionally, the presence of numerous open pull requests (76) further exacerbates delivery risks as these need to be resolved to advance project goals. |
Velocity | 4 | The project's velocity is at risk due to the imbalance between opened and closed issues, with 36 issues opened and only 4 closed in the past week. This trend is consistent over longer periods, suggesting a backlog that could slow down progress. The reliance on a bot for significant code changes and the uneven distribution of workload among contributors indicate potential inefficiencies in development processes. |
Dependency | 3 | Dependency risks are present due to reliance on external systems like Golang SDK and Amazon Bedrock Client, as highlighted by issues #991 and #988. These dependencies may not be fully integrated or stable, posing risks to project timelines and functionality. The introduction of new features like pre-installed extensions (PR #979) also adds complexity and potential dependency challenges. |
Team | 3 | The team exhibits signs of uneven contribution levels, with key contributors like Magnus Müller and Gregor Žunič being highly active while others contribute minimally. This could lead to burnout or disengagement among less active members. However, active community engagement and collaboration suggest a generally positive team dynamic despite these disparities. |
Code Quality | 3 | Code quality is at risk due to the presence of numerous bug-related pull requests and issues, such as PR #980 addressing click errors and issue #989 regarding Chrome instance bugs. While there are efforts to resolve these issues, the accumulation suggests underlying code quality concerns that need addressing. The lack of comprehensive tests in some pull requests further exacerbates this risk. |
Technical Debt | 4 | Technical debt is accumulating as evidenced by the high number of unresolved issues and open pull requests. Quick fixes like PR #981's reduction in content extraction character count suggest temporary solutions rather than addressing root causes. The lack of documentation updates in several pull requests also points to potential future challenges in maintaining code clarity and understanding. |
Test Coverage | 3 | Test coverage is inconsistent, with some pull requests lacking additional tests despite significant changes (e.g., PR #981). While there are efforts to improve test coverage through automation (e.g., codebeaver-ai[bot]), gaps remain in ensuring comprehensive testing across all functionalities, which could lead to undetected regressions or bugs. |
Error Handling | 3 | Error handling practices are generally robust within specific components, as seen in 'tests/test_service.py'. However, certain areas like browser operations lack extensive error handling coverage beyond initialization scenarios. Pull requests such as PR #980 attempt to improve error handling but acknowledge incomplete coverage, indicating room for improvement in catching and managing errors effectively. |
The "browser-use" project has seen a flurry of recent activity with numerous issues being opened and closed. The issues range from bug reports, feature requests, to documentation improvements, indicating active development and community engagement.
#991: Golang SDK support
#989: Local instance of Chrome not running well
#988: Support for Amazon Bedrock Client: ValidationException error
#987: Difference Result for browser_use goto and get_playwright_browser() new_page() and goto
#986: 浏览器启动后,页面一直空白,没有执行任何操作,有没有遇到相同情况的?
#990: LangChainBetaWarning: The function load
is in beta.
#976: Request URL is missing an 'http://' or 'https://' protocol. (with ollama)
#930: Scrolling not working on PDFs
#922: viewportExpansion=-1 fails to detect interactive elements outside viewport
#914: Unable to identify non-index HTML element
Overall, the "browser-use" project is actively developed with a focus on improving browser automation capabilities for AI agents. The community plays a vital role in identifying areas for improvement and suggesting new features.
#981: Make the context in extract_content
action smaller
strip
option in Markdownify. It highlights a significant reduction in character count from 367,277 to 48,969 for an Amazon page.#980: Trying to click on missing element after a load timeout
#979: Added support to add extensions pre-installed
#978: Fix: typo
#973: Add logging of total tokens used to facilitate cost calculation
#969: adding MFA flow
#967: HAR file recording
#959: Separated internal output model from supplied model, and fixed a parsing bug of Enum fields
#956: Enabled downloads over CDP session, tested in browserbase.com
#953: Fix special case for viewport expansion in visibility check
viewportExpansion
is set to -1
.#955 & #926 (Closed without Merge):
#901 (Merged):
#896 & #894 (Closed without Merge):
The "browser-use" project is actively maintained with numerous open pull requests addressing various enhancements and bug fixes. Notable areas of focus include improving interaction reliability (e.g., click handling), expanding functionality (e.g., extension support), and optimizing performance (e.g., token logging). Closed pull requests indicate ongoing refinement of features and documentation improvements. The community's active engagement is evident from the diverse contributions aimed at enhancing both functionality and user experience.
browser_use/agent/service.py
Agent
class, which encapsulates the functionality for managing browser automation tasks.AgentSettings
, AgentState
, etc.) ensures data integrity and reduces runtime errors.Agent
class has a large number of parameters, which can make it difficult to manage. Consider refactoring to reduce complexity._handle_step_error
method includes specific exception handling for third-party libraries (e.g., RateLimitError
), which might need updating if dependencies change.browser_use/agent/views.py
AgentStepInfo
) alongside Pydantic models provides flexibility in defining lightweight data containers.model_dump
in AgentHistory
demonstrate custom serialization logic, which is useful for handling complex data structures.AgentOutput
model uses dynamic model creation (type_with_custom_actions
), which can complicate static analysis tools and IDE autocompletion.AgentError.format_error
could be expanded to include more specific error types or conditions.browser_use/controller/registry/service.py
Registry
class responsible for managing action registrations, indicating a clear separation of concerns.execute_action
, ensuring robustness in action execution._create_param_model
method dynamically creates models based on function signatures, which may lead to maintenance challenges if function signatures change frequently.browser_use/dom/views.py
hash
) improves performance by avoiding redundant calculations.clickable_elements_to_string
are well-designed for converting complex DOM structures into readable formats.docs/cloud/quickstart.mdx
examples/models/claude-3.7-sonnet.py
ChatAnthropic
).dotenv
indicates good practice for managing sensitive information like API keys.asyncio.run(main())
aligns with best practices for running asynchronous tasks in Python.langchain_anthropic
) are documented so users know what needs to be installed beforehand.browser_use/dom/buildDomTree.js
pyproject.toml
.gitignore
.vscode/settings.json
"editor.formatOnSave": true
help maintain code consistency automatically during development.Eshwar Tangirala (Eshwar1212-maker)
browser_use/agent/service.py
8 days ago.Shudaizi1989
Nino Risteski (NinoRisteski)
docs/cloud/quickstart.mdx
and docs/customize/real-browser.mdx
8 and 14 days ago respectively.Dilraj Singh (dsomel21)
load_dotenv()
in examples/models/claude-3.7-sonnet.py
8 days ago.Magnus Müller (MagMueller)
Gregor Žunič (gregpr07)
Pavel 'Strajk' Dolecek (Strajk)
docs/customize/custom-functions.mdx
14 days ago.Documentation Updates: There is a strong focus on updating documentation, with multiple team members involved in correcting typos, improving clarity, and expanding examples. This suggests an emphasis on maintaining comprehensive and user-friendly documentation.
Bug Fixes: Several commits address bug fixes, such as mutable default arguments and DOM extraction issues. This indicates ongoing efforts to improve software stability and functionality.
Collaboration: Magnus Müller appears to be a central figure in the project, actively merging pull requests and collaborating with other team members on various tasks. This highlights a collaborative team environment with shared responsibilities.
Feature Enhancements: The team is actively working on enhancing existing features, such as improving task completion handling and integrating new functionalities like system prompt customization.
Testing Improvements: There are several commits related to adding or updating tests, particularly by codebeaver-ai[bot], indicating a focus on ensuring code quality and coverage.
Overall, the development team is actively engaged in refining the project through documentation improvements, bug fixes, feature enhancements, and testing efforts. The collaboration among team members suggests a well-coordinated approach to managing the project's development activities.