├── .gitignore ├── README.md ├── _ENVIRONMENT ├── icon.png ├── install.js ├── pinokio.js ├── pinokio_meta.json ├── reset.js ├── start.js └── update.js /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .DS_Store -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # browser-use 2 | 3 | A pinokio script for https://github.com/browser-use/web-ui 4 | 5 | -------------------------------------------------------------------------------- /_ENVIRONMENT: -------------------------------------------------------------------------------- 1 | OPENAI_ENDPOINT=https://api.openai.com/v1 2 | OPENAI_API_KEY= 3 | 4 | ANTHROPIC_API_KEY= 5 | 6 | GOOGLE_API_KEY= 7 | 8 | AZURE_OPENAI_ENDPOINT= 9 | AZURE_OPENAI_API_KEY= 10 | 11 | DEEPSEEK_ENDPOINT=https://api.deepseek.com 12 | DEEPSEEK_API_KEY= 13 | 14 | # Set to false to disable anonymized telemetry 15 | ANONYMIZED_TELEMETRY=true 16 | 17 | # LogLevel: Set to debug to enable verbose logging, set to result to get results only. Available: result | debug | info 18 | BROWSER_USE_LOGGING_LEVEL=info 19 | 20 | # Chrome settings 21 | CHROME_PATH= 22 | CHROME_USER_DATA= 23 | CHROME_DEBUGGING_PORT=9222 24 | CHROME_DEBUGGING_HOST=localhost 25 | CHROME_PERSISTENT_SESSION=false # Set to true to keep browser open between AI tasks 26 | 27 | # Display settings 28 | RESOLUTION=1920x1080x24 # Format: WIDTHxHEIGHTxDEPTH 29 | RESOLUTION_WIDTH=1920 # Width in pixels 30 | RESOLUTION_HEIGHT=1080 # Height in pixels 31 | 32 | # VNC settings 33 | VNC_PASSWORD=youvncpassword 34 | -------------------------------------------------------------------------------- /icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pinokiofactory/browser-use/6167ae0fc0dfd49120d215a4962143a87fd14c98/icon.png -------------------------------------------------------------------------------- /install.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | run: [ 3 | { 4 | method: "shell.run", 5 | params: { 6 | message: [ 7 | "git clone https://github.com/browser-use/web-ui app", 8 | ] 9 | } 10 | }, 11 | { 12 | method: "shell.run", 13 | params: { 14 | venv: "env", // Edit this to customize the venv folder path 15 | venv_python: "3.11", 16 | path: "app", // Edit this to customize the path to start the shell from 17 | message: [ 18 | "uv pip install -r requirements.txt", 19 | "playwright install", 20 | "ollama pull qwen2.5:7b" 21 | ] 22 | } 23 | }, 24 | { 25 | method: "fs.copy", 26 | params: { 27 | src: "app/.env.example", 28 | dest: "app/.env" 29 | } 30 | }, 31 | // { 32 | // method: "fs.link", 33 | // params: { 34 | // venv: "app/env" 35 | // } 36 | // } 37 | ] 38 | } 39 | -------------------------------------------------------------------------------- /pinokio.js: -------------------------------------------------------------------------------- 1 | const path = require('path') 2 | module.exports = { 3 | version: "3.6", 4 | title: "browser-use", 5 | description: "Run AI Agent in your browser. https://github.com/browser-use/web-ui", 6 | icon: "icon.png", 7 | menu: async (kernel, info) => { 8 | let installed = info.exists("app/env") 9 | let running = { 10 | install: info.running("install.js"), 11 | start: info.running("start.js"), 12 | update: info.running("update.js"), 13 | reset: info.running("reset.js") 14 | } 15 | if (running.install) { 16 | return [{ 17 | default: true, 18 | icon: "fa-solid fa-plug", 19 | text: "Installing", 20 | href: "install.js", 21 | }] 22 | } else if (installed) { 23 | if (running.start) { 24 | let local = info.local("start.js") 25 | if (local && local.url) { 26 | return [{ 27 | default: true, 28 | icon: "fa-solid fa-rocket", 29 | text: "Open Web UI", 30 | href: local.url, 31 | }, { 32 | icon: 'fa-solid fa-terminal', 33 | text: "Terminal", 34 | href: "start.js", 35 | }] 36 | } else { 37 | return [{ 38 | default: true, 39 | icon: 'fa-solid fa-terminal', 40 | text: "Terminal", 41 | href: "start.js", 42 | }] 43 | } 44 | } else if (running.update) { 45 | return [{ 46 | default: true, 47 | icon: 'fa-solid fa-terminal', 48 | text: "Updating", 49 | href: "update.js", 50 | }] 51 | } else if (running.reset) { 52 | return [{ 53 | default: true, 54 | icon: 'fa-solid fa-terminal', 55 | text: "Resetting", 56 | href: "reset.js", 57 | }] 58 | } else { 59 | return [{ 60 | default: true, 61 | icon: "fa-solid fa-power-off", 62 | text: "Start", 63 | href: "start.js", 64 | }, { 65 | icon: "fa-solid fa-plug", 66 | text: "Update", 67 | href: "update.js", 68 | }, { 69 | icon: "fa-solid fa-plug", 70 | text: "Install", 71 | href: "install.js", 72 | }, { 73 | icon: "fa-regular fa-circle-xmark", 74 | text: "Reset", 75 | href: "reset.js", 76 | }] 77 | } 78 | } else { 79 | return [{ 80 | default: true, 81 | icon: "fa-solid fa-plug", 82 | text: "Install", 83 | href: "install.js", 84 | }] 85 | } 86 | } 87 | } 88 | -------------------------------------------------------------------------------- /pinokio_meta.json: -------------------------------------------------------------------------------- 1 | { 2 | "posts": [ 3 | "https://x.com/cocktailpeanut/status/1887899227147166112", 4 | "https://x.com/cocktailpeanut/status/1886451071356391815" 5 | ], 6 | "links": [{ 7 | "title": "cocktailpeanut", 8 | "links": [{ 9 | "type": "bitcoin", 10 | "value": "bc1qx90z3ce9qz4p2pnt06gd0ytntl86qw4d6qv39k" 11 | }, { 12 | "title": "X", 13 | "value": "https://x.com/cocktailpeanut" 14 | }, { 15 | "title": "Github", 16 | "value": "https://github.com/cocktailpeanut" 17 | }, { 18 | "title": "Discord", 19 | "value": "https://discord.gg/TQdNwadtE4" 20 | }] 21 | }] 22 | } 23 | -------------------------------------------------------------------------------- /reset.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | run: [{ 3 | method: "fs.rm", 4 | params: { 5 | path: "app" 6 | } 7 | }] 8 | } 9 | -------------------------------------------------------------------------------- /start.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | daemon: true, 3 | run: [ 4 | { 5 | method: "shell.run", 6 | params: { 7 | venv: "env", // Edit this to customize the venv folder path 8 | env: { }, // Edit this to customize environment variables (see documentation) 9 | path: "app", // Edit this to customize the path to start the shell from 10 | message: [ 11 | "python webui.py" 12 | ], 13 | on: [{ 14 | // The regular expression pattern to monitor. 15 | // When this pattern occurs in the shell terminal, the shell will return, 16 | // and the script will go onto the next step. 17 | "event": "/http:\/\/\\S+/", 18 | 19 | // "done": true will move to the next step while keeping the shell alive. 20 | // "kill": true will move to the next step after killing the shell. 21 | "done": true 22 | }] 23 | } 24 | }, 25 | { 26 | // This step sets the local variable 'url'. 27 | // This local variable will be used in pinokio.js to display the "Open WebUI" tab when the value is set. 28 | method: "local.set", 29 | params: { 30 | // the input.event is the regular expression match object from the previous step 31 | url: "{{input.event[0]}}" 32 | } 33 | } 34 | ] 35 | } 36 | -------------------------------------------------------------------------------- /update.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | run: [{ 3 | method: "shell.run", 4 | params: { 5 | message: "git pull" 6 | } 7 | }, { 8 | method: "shell.run", 9 | params: { 10 | path: "app", 11 | message: "git pull" 12 | } 13 | }] 14 | } 15 | --------------------------------------------------------------------------------