MCPcopy
hub / github.com/browser-use/workflow-use

github.com/browser-use/workflow-use @v0.2.11 sqlite

repository ↗ · DeepWiki ↗ · release v0.2.11 ↗
783 symbols 2,801 edges 120 files 525 documented · 67%
README

Workflow Use logo - a product by Browser Use.

Deterministic, Self Healing Workflows (RPA 2.0)

GitHub stars Discord Cloud Twitter Follow Twitter Follow

⚙️ Workflow Use is the easiest way to create and execute deterministic workflows with variables which fallback to Browser Use if a step fails. You just show the recorder the workflow, we automatically generate the workflow.

❗ This project is in very early development so we don't recommend using this in production. Lots of things will change and we don't have a release schedule yet. Originally, the project was born out of customer demand to make Browser Use more reliable and deterministic.

🚀 NEW: Generation Mode

Automatically generate workflows from natural language! Describe your task, we run browser-use once, then create a reusable semantic workflow stored in a database.

Quick Commands

# Generate workflow from task description
python cli.py generate-workflow "Find GitHub stars for browser-use repo"

# List all workflows
python cli.py list-workflows

# Filter by generation mode
python cli.py list-workflows --generation-mode browser_use

# Run stored workflow
python cli.py run-stored-workflow <workflow-id> --prompt "Find stars for playwright repo"

# View workflow details
python cli.py workflow-info <workflow-id>

# Delete workflow
python cli.py delete-workflow <workflow-id>

How It Works

  1. Describe: Give a task in natural language
  2. Execute: Browser-use completes the task once
  3. Generate: Execution history → semantic workflow with parameters
  4. Store: Save to database with metadata
  5. Reuse: Run the workflow with different inputs, no AI needed

Advanced Options

# Custom models for generation
python cli.py generate-workflow "Your task" \
  --agent-model "gpt-4.1-mini" \
  --extraction-model "gpt-4.1-mini" \
  --workflow-model "gpt-4o"

# Use Browser-Use Cloud browser
python cli.py generate-workflow "Your task" --use-cloud

# Save to custom location
python cli.py generate-workflow "Your task" --output-file ./my-workflow.json

# Skip database storage
python cli.py generate-workflow "Your task" --no-save-to-storage

Storage

Workflows stored at workflows/storage/: - metadata.json - Searchable index of all workflows - workflows/<id>.workflow.json - Individual workflow files

Programmatic Usage

from workflow_use.healing.service import HealingService
from workflow_use.storage.service import WorkflowStorageService
from browser_use.llm import ChatOpenAI

healing_service = HealingService(llm=ChatOpenAI(model='gpt-4.1'))
storage_service = WorkflowStorageService()

# Generate workflow
workflow = await healing_service.generate_workflow_from_prompt(
    prompt="Fill contact form on example.com",
    agent_llm=ChatOpenAI(model='gpt-4.1-mini'),
    extraction_llm=ChatOpenAI(model='gpt-4.1-mini'),
    use_cloud=True  # Optional: use Browser-Use Cloud
)

# Save to storage
metadata = storage_service.save_workflow(
    workflow=workflow,
    generation_mode='browser_use',
    original_task="Fill contact form on example.com"
)

# Retrieve and execute
loaded_workflow = storage_service.get_workflow(metadata.id)

Quick start

git clone https://github.com/browser-use/workflow-use

Build the extension

cd extension && npm install && npm run build

Setup workflow environment

cd .. && cd workflows
uv sync
source .venv/bin/activate # for mac / linux
playwright install chromium
cp .env.example .env # add your OPENAI_API_KEY to the .env file

Run workflow as tool

python cli.py run-as-tool examples/example.workflow.json --prompt "fill the form with example data"

Run workflow with predefined variables

python cli.py run-workflow examples/example.workflow.json

Record your own workflow

python cli.py create-workflow

See all commands

python cli.py --help

Usage from python

Running the workflow files is as simple as:

from workflow_use import Workflow

workflow = Workflow.load_from_file("example.workflow.json")
result = asyncio.run(workflow.run_as_tool("I want to search for 'workflow use'"))

Cloud Browser Support

Run workflows in Browser-Use Cloud (new signups get $10 free credits via OAuth or $1 via email) with semantic abstraction (no AI): (NOTE: Set BROWSER_USE_API_KEY environment variable)

from workflow_use import Workflow

workflow = Workflow.load_from_file("workflow.json", llm, use_cloud=True)
result = await workflow.run_with_no_ai()  # No LLM calls, uses semantic mapping

Examples: - examples/cloud_browser_demo.py - Load recorded workflow and run on cloud

Launch the GUI

The Workflow UI provides a visual interface for managing, viewing, and executing workflows.

Option 1: Using the CLI command (Recommended)

The easiest way to start the GUI is with the built-in CLI command:

cd workflows
python cli.py launch-gui

This command will: - Start the backend server (FastAPI) - Start the frontend development server - Automatically open http://localhost:5173 in your browser - Capture logs to the ./tmp/logs directory

Press Ctrl+C to stop both servers when you're done.

Option 2: Start servers separately

Alternatively, you can start the servers individually:

Start the backend server

cd workflows
uvicorn backend.api:app --reload

Start the frontend development server

cd ui
npm install
npm run dev

Once both servers are running, you can access the Workflow GUI at http://localhost:5173 in your browser. The UI allows you to:

  • Visualize workflows as interactive graphs
  • Execute workflows with custom input parameters
  • Monitor workflow execution logs in real-time
  • Edit workflow metadata and details

Demos

Workflow Use filling out form instantly

https://github.com/user-attachments/assets/cf284e08-8c8c-484a-820a-02c507de11d4

Gregor's explanation

https://github.com/user-attachments/assets/379e57c7-f03e-4eb9-8184-521377d5c0f9

Features

  • 🔁 Record Once, Reuse Forever: Record browser interactions once and replay them indefinitely.
  • Show, don't prompt: No need to spend hours prompting Browser Use to do the same thing over and over again.
  • ⚙️ Structured & Executable Workflows: Converts recordings into deterministic, fast, and reliable workflows which automatically extract variables from forms.
  • 🪄 Human-like Interaction Understanding: Intelligently filters noise from recordings to create meaningful workflows.
  • 🔒 Enterprise-Ready Foundation: Built for future scalability with features like self-healing and workflow diffs.

Vision and roadmap

Show computer what it needs to do once, and it will do it over and over again without any human intervention.

Workflows

  • [ ] Nice way to use the .json files inside python code
  • [ ] Improve LLM fallback when step fails (currently really bad)
  • [ ] Self healing, if it fails automatically agent kicks in and updates the workflow file
  • [ ] Better support for LLM steps
  • [ ] Take output from previous steps and use it as input for next steps
  • [ ] Expose workflows as MCP tools
  • [ ] Use Browser Use to automatically create workflows from websites

Developer experience

  • [ ] Improve CLI
  • [ ] Improve extension
  • [ ] Step editor

Agent

  • [ ] Allow Browser Use to use the workflows as MCP tools
  • [ ] Use workflows as website caching layer

Extension points exported contracts — how you extend this code

WorkflowStep (Interface)
(no doc)
ui/src/types/workflow-layout.types.ts
Workflow (Interface)
(no doc)
extension/src/lib/workflow-types.ts
WorkflowMetadata (Interface)
(no doc)
ui/src/types/workflow-layout.types.ts
RadioButtonInfo (Interface)
(no doc)
extension/src/lib/workflow-types.ts
WorkflowItemProps (Interface)
(no doc)
ui/src/types/workflow-layout.types.ts
BaseStep (Interface)
(no doc)
extension/src/lib/workflow-types.ts
SidebarProps (Interface)
(no doc)
ui/src/types/sidebar.types.ts
NavigationStep (Interface)
(no doc)
extension/src/lib/workflow-types.ts

Core symbols most depended-on inside this repo

run
called by 69
workflows/workflow_use/workflow/service.py
_get_elements_by_selector
called by 31
workflows/workflow_use/workflow/semantic_executor.py
click
called by 25
workflows/workflow_use/controller/service.py
generate_strategies
called by 24
workflows/workflow_use/healing/selector_generator.py
truncate_selector
called by 19
workflows/workflow_use/controller/utils.py
load_from_file
called by 18
workflows/workflow_use/workflow/service.py
extract_semantic_mapping
called by 16
workflows/workflow_use/workflow/semantic_extractor.py
_refresh_semantic_mapping
called by 16
workflows/workflow_use/workflow/semantic_executor.py

Shape

Method 393
Function 230
Class 113
Interface 36
Route 11

Languages

Python85%
TypeScript15%

Modules by API surface

workflows/workflow_use/workflow/semantic_executor.py64 symbols
workflows/cli.py39 symbols
workflows/workflow_use/recorder/recorder.py33 symbols
workflows/tests/test_xpath_optimization.py22 symbols
workflows/tests/test_progress_tracking.py21 symbols
workflows/workflow_use/workflow/service.py20 symbols
workflows/workflow_use/workflow/variable_identifier.py18 symbols
workflows/workflow_use/schema/views.py18 symbols
workflows/tests/test_element_finder.py17 symbols
workflows/backend/routers.py17 symbols
extension/src/entrypoints/content.ts17 symbols
workflows/workflow_use/workflow/tests/test_variable_identifier.py16 symbols

Dependencies from manifests, versioned

@radix-ui/react-slot1.2.0 · 1×
@rrweb/types2.0.0-alpha.18 · 1×
@tailwindcss/vite4.1.7 · 1×
@types/chrome0.0.318 · 1×
@types/node22.15.19 · 1×
@types/react18.2.53 · 1×
@types/react-dom18.2.18 · 1×
@typescript-eslint/eslint-plugin6.20.0 · 1×
@typescript-eslint/parser6.20.0 · 1×
@vitejs/plugin-react4.2.1 · 1×
@wxt-dev/module-react1.1.3 · 1×
@xyflow/react12.5.1 · 1×

For agents

$ claude mcp add workflow-use \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact