{"id":39262601,"url":"https://github.com/wyseos/wyse-browser","last_synced_at":"2026-01-20T13:00:45.490Z","repository":{"id":307135757,"uuid":"1028391503","full_name":"WyseOS/wyse-browser","owner":"WyseOS","description":"A scalable browser for building intelligent AI agents","archived":false,"fork":false,"pushed_at":"2026-01-17T08:01:35.000Z","size":1357,"stargazers_count":78,"open_issues_count":0,"forks_count":9,"subscribers_count":3,"default_branch":"main","last_synced_at":"2026-01-17T17:37:03.575Z","etag":null,"topics":["agentic-browser","ai-agents","browser-automation","chromium","playwright","workflow"],"latest_commit_sha":null,"homepage":"https://wyseos.com/browser","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/WyseOS.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-07-29T13:12:03.000Z","updated_at":"2026-01-17T08:01:39.000Z","dependencies_parsed_at":"2025-07-29T18:16:48.554Z","dependency_job_id":"32ab25f6-5a35-4fd1-a491-d8e757689e46","html_url":"https://github.com/WyseOS/wyse-browser","commit_stats":null,"previous_names":["wyseos/wyse-browser"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/WyseOS/wyse-browser","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WyseOS%2Fwyse-browser","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WyseOS%2Fwyse-browser/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WyseOS%2Fwyse-browser/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WyseOS%2Fwyse-browser/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/WyseOS","download_url":"https://codeload.github.com/WyseOS/wyse-browser/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WyseOS%2Fwyse-browser/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28603402,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-20T12:01:53.233Z","status":"ssl_error","status_checked_at":"2026-01-20T12:01:46.545Z","response_time":117,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["agentic-browser","ai-agents","browser-automation","chromium","playwright","workflow"],"created_at":"2026-01-18T00:30:11.624Z","updated_at":"2026-01-20T13:00:45.475Z","avatar_url":"https://github.com/WyseOS.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Wyse Browser 🚀\n\n[English](README.md) [简体中文](README_zh-CN.md)\n\n[![Build Status](https://img.shields.io/badge/build-passing-brightgreen)](https://github.com/wyse-work/wyse-browser)\n[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](CONTRIBUTING.md)\n\nWyse Browser is a powerful, multi-process runtime engine designed for executing automated flows within a browser environment. It provides a robust platform for creating, managing, and executing complex automation workflows through a comprehensive REST API.\n\n## Key Features 🌟\n\n-   **Powerful \u0026 Scalable Automation Core** ✨: Built on NestJS and Playwright, Wyse Browser provides a reliable and efficient multi-process runtime engine. It orchestrates multiple sandboxed Chrome instances, enabling robust and scalable browser automation.\n-   **AI-Driven Workflow Orchestration** 🧠: Designed to integrate seamlessly with LLMs and AI Agents, facilitating the creation, management, and execution of sophisticated, AI-driven automation workflows.\n-   **Modular \u0026 Extensible Worklets** 🧩: Leverage Worklets as autonomous, reusable, and highly composable code blocks for specific tasks, allowing for flexible and extensible automation solutions.\n-   **Comprehensive REST API Control** 🔗: Offers a full-featured REST API for programmatic control over every aspect of the browser environment, including sessions, pages, flows, and individual browser actions.\n-   **Parallel \u0026 Isolated Session Execution** ⚡: Manages multiple independent browser sessions in parallel, each running in a sandboxed Chrome instance with isolated contexts (cookies, local storage), ensuring tasks run without interference.\n-   **Rich \u0026 Granular Action Space** 🤖: Provides a wide array of built-in, low-level browser actions—from navigation and clicking to executing custom JavaScript—offering precise control over browser interactions.\n\n## Architecture 🏗️\n\n```mermaid\ngraph TD\n    subgraph Intelligence Layer\n        M[LLM]\n        A[AI Agents]\n    end\n    M \u003c--\u003e A\n    \n    APIS -- Exposes --\u003e APIList[/api/session/\u003cbr\u003e/api/flow/\u003cbr\u003e/api/browser/]\n\n    subgraph Wyse Browser\n        B(RunTime)\n        C{Workflow}\n        AS[Browser Actions]\n        APIS[API Service]\n    end\n\n    subgraph \"(Playwright)\"\n        BIs[Chrome Instances]\n    end\n  \n    A \u003c--\u003e B\n    B \u003c--\u003e APIS\n    B --\u003e C\n    B --\u003e AS\n    \n    B -- Manages --\u003e BIs\n\n    AL[visit, history, search, refresh_page\u003cbr/\u003eclick, click_full, double_click, text\u003cbr/\u003escroll_up, scroll_down, scroll_element_up, scroll_element_down\u003cbr/\u003escroll_to, wait, key_press, hover\u003cbr/\u003eevaluate, init_js, content, create_tab\u003cbr/\u003eswitch_tab, close_tab, tabs_info, set_content\u003cbr/\u003eselect_option, drag, screenshot]\n    AS --\u003e AL\n\n    AL --\u003e W2[Website2]\n\n    C --\u003e D[Worklet1]\n    C --\u003e E[Worklet2]\n    C --\u003e F[Worklet3]\n    C --\u003e G[Worklet4]\n    \n    subgraph External Resource\n        D\n        E\n        F\n        G\n    end\n\n    D --\u003e I[Filesystem]\n    E --\u003e J[Datasource1]\n    F --\u003e K[Website1]\n    G --\u003e L[External API]\n\n    style M fill:#D9FFD9,stroke:#66CC66,stroke-width:2px,rx:5px,ry:5px;\n    style A fill:#D9FFD9,stroke:#66CC66,stroke-width:2px,rx:5px,ry:5px;\n    style B fill:#E0F2FF,stroke:#3399FF,stroke-width:2px;\n    style C fill:#E0F2FF,stroke:#3399FF,stroke-width:1px,rx:5px,ry:5px;\n    style AS fill:#E0F2FF,stroke:#3399FF,stroke-width:1px,rx:5px,ry:5px;\n    style APIS fill:#E0F2FF,stroke:#3399FF,stroke-width:2px;\n    style APIList fill:#FFF,stroke:#333,stroke-width:1px,rx:5px,ry:5px;\n    style D fill:#FFD9D9,stroke:#FF6666,stroke-width:1px,rx:5px,ry:5px;\n    style E fill:#FFD9D9,stroke:#FF6666,stroke-width:1px,rx:5px,ry:5px;\n    style F fill:#E6E6FA,stroke:#9370DB,stroke-width:1px,rx:5px,ry:5px;\n    style G fill:#E6E6FA,stroke:#9370DB,stroke-width:1px,rx:5px,ry:5px;\n    style I fill:#FFD9D9,stroke:#FF6666,stroke-width:1px,rx:5px,ry:5px;\n    style J fill:#FFD9D9,stroke:#FF6666,stroke-width:1px,rx:5px,ry:5px;\n    style K fill:#E6E6FA,stroke:#9370DB,stroke-width:1px,rx:5px,ry:5px;\n    style L fill:#E6E6FA,stroke:#9370DB,stroke-width:1px,rx:5px,ry:5px;\n    style W2 fill:#E6E6FA,stroke:#9370DB,stroke-width:1px,rx:5px,ry:5px;\n    style AL fill:#FFF,stroke:#333,stroke-width:1px,rx:5px,ry:5px;\n    style BIs fill:#D5F5E3,stroke:#2ECC71,stroke-width:1px,rx:5px,ry:5px;\n```\n\n## Core Concepts ✨\n\n-   **Session** 🌐: A dedicated, isolated browser environment (a sandboxed Chrome instance) that provides a consistent context for executing workflows and browser actions. Each session manages its own cookies, local storage, and pages (tabs), ensuring that automated tasks run without interference from other operations.\n-   **Browser Actions** 🤖: The fundamental building blocks for automation within a session. These are low-level, atomic operations that can be executed on a browser page, such as `visit` a URL, `click` an element, `type` text, or `take a screenshot`. These actions are exposed through a comprehensive API, allowing for granular control over browser interactions.\n-   **Workflow** 🚀: Defines a precise sequence of worklets executed in a specific order. Workflows are designed and created by AI agents to automate complex multi-step tasks within the browser. Each workflow maintains isolated data connections and state, ensuring independent and reliable execution.\n-   **Worklet** 🧩: A reusable, autonomous, and highly composable code block dedicated to performing a specific task. Worklets act as the modular units of automation, encapsulating logic for interactions with external resources or complex browser operations. They can be implemented in various languages and function as local processes or remote services, allowing for flexible and extensible automation.\n\n\n## Getting Started 🏁\n\n### Prerequisites 🛠️\n\n- Node.js (v20.x or later)\n- pnpm\n\n### Installation ⬇️\n\n1.  Clone the repository:\n    ```bash\n    git clone https://github.com/wyse-work/wyse-browser.git\n    cd wyse-browser\n    ```\n\n2.  Navigate to the browser engine directory and install dependencies:\n    ```bash\n    cd browser\n    pnpm install\n    ```\n\n3.  Build all worklets:\n    ```bash\n    ./build_worklets.sh\n    ```\n\n4.  Run the API development server:\n    ```bash\n    pnpm run start:dev\n    ```\n    The API server will be running at `http://127.0.0.1:13100`.\n\n## Quick Start: Usage Example ⚡\n\nHere's a quick example of how to use `curl` to create a session, navigate to a page, and take a screenshot.\n\n1.  **Create a new session:**\n    ```bash\n    SESSION_ID=$(curl -s -X POST http://127.0.0.1:13100/api/session/create \\\\\n    -H \"Content-Type: application/json\" \\\\\n    -d '{}' | grep -o '\\\"session_id\\\":\\\"[^\\\"]*\\' | cut -d\\'\\\"\\' -f4)\n\n    echo \"Session created with ID: $SESSION_ID\"\n    ```\n\n2.  **Perform a \"visit\" action:**\n    ```bash\n    curl -X POST http://127.0.0.1:13100/api/browser/action \\\\\\\n    -H \"Content-Type: application/json\" \\\\\\\n    -d \\'{\\n      \\\"session_id\\\": \\\"\\'\\\"$SESSION_ID\\\"\\'\\\",\\n      \\\"action_name\\\": \\\"visit\\\",\\n      \\\"data\\\": { \\\"url\\\": \\\"https://www.google.com\\\" }\\n    }\\'\n    ```\n\n3.  **Take a screenshot:**\n    ```bash\n    curl -X GET http://127.0.0.1:13100/api/session/$SESSION_ID/screenshot\n    ```\n\n## API Reference 📚\n\nPlease refer to [API_REFERENCE.md](API_REFERENCE.md) for the complete API reference.\n\n## Contributing 🤝\n\nContributions are welcome! Please feel free to submit a pull request.\n\n1.  Fork the repository.\n2.  Create your feature branch (`git checkout -b feature/AmazingFeature`).\n3.  Commit your changes (`git commit -m 'Add some AmazingFeature'`).\n4.  Push to the branch (`git push origin feature/AmazingFeature`).\n5.  Open a Pull Request.\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwyseos%2Fwyse-browser","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwyseos%2Fwyse-browser","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwyseos%2Fwyse-browser/lists"}