workflow-use is a free, open source data extraction & web scraping project written in Python and released under AGPL-3.0. It has 4,184 GitHub stars, 353 forks and 61 open issues, and was last pushed 5 days ago. On this registry it ranks #43 of 116 tracked projects in Data Extraction & Web Scraping, with 5 head-to-head comparisons available.

What is workflow-use?

Workflow Use is a Python, AGPL-3.0-licensed tool for creating and executing deterministic browser workflows — captured by demonstration or generated from a natural-language prompt — that fall back to Browser Use whenever a recorded step fails, and it is aimed at developers and automation teams that need repeatable web tasks rather than one-off AI agent runs.

What it is

Workflow Use (the browser-use/workflow-use repository) is a Python project in the Data & Analytics / Data Extraction & Web Scraping category, published under the AGPL-3.0 licence by the team behind Browser Use. Its own description is "Deterministic, Self Healing Workflows (RPA 2.0)", and it is tagged with the topics browser-automation, browser-use-box, rpa and telegram-automation. The README presents it as the easiest way to create and execute deterministic workflows with variables, where any step that fails falls back to Browser Use instead of aborting the run. The public repository carries 4,184 stars, 353 forks and 61 open issues.

The concrete problem it solves is the cost and unpredictability of re-running an AI browser agent for a task that is performed the same way every time. The README states that the project was originally born out of customer demand to make Browser Use more reliable and deterministic. Rather than invoking an agent on every execution, Workflow Use records or generates a workflow once, saves it, and then replays it with different inputs, "no AI needed". It also removes the need to write the automation by hand: you show the recorder the workflow, and the workflow is generated automatically.

Key capabilities

  • Demonstration-based authoring, in which showing the recorder a workflow causes Workflow Use to generate that workflow automatically.
  • Generation Mode, which turns a natural-language task into a reusable semantic workflow through python cli.py generate-workflow "Find GitHub stars for browser-use repo", running Browser Use once and storing the result in a database.
  • Self-healing execution, where a failed step falls back to Browser Use rather than breaking the run.
  • A complete CLI lifecycle covering list-workflows (optionally --generation-mode browser_use), run-stored-workflow --prompt, workflow-info and delete-workflow.
  • Workflow storage under workflows/storage/, consisting of a searchable metadata.json index and individual .workflow.json files.
  • Model selection at generation time through --agent-model, --extraction-model and --workflow-model, plus --output-file and --no-save-to-storage for one-off runs.
  • A programmatic API through HealingService in workflow_use.healing.service and WorkflowStorageService in workflow_use.storage.service, with an optional Browser-Use Cloud browser via --use-cloud.

Who uses it and how

  • Teams already running Browser Use that need a frequent task executed identically each time, since the stored workflow is replayed without a fresh agent run.
  • Data extraction and web scraping practitioners, the registry category this project is filed under, who need the same pages parsed repeatedly with different inputs.
  • RPA-oriented users moving from conventional robotic process automation to the recorder-driven model the project labels "RPA 2.0", as reflected in the rpa topic.
  • Developers embedding a workflow in another system: python cli.py run-as-tool examples/example.workflow.json --prompt "fill the form with example data" executes a stored workflow as a tool, and workflows can also be run with predefined variables.
  • Automation that touches messaging, given the telegram-automation topic.

Getting started

Clone the repository with git clone https://github.com/browser-use/workflow-use, build the browser extension with npm install && npm run build inside extension/, then in workflows/ run uv sync, activate the virtual environment, run playwright install chromium, and copy .env.example to .env with an OPENAI_API_KEY. A first run is python cli.py run-as-tool examples/example.workflow.json --prompt "fill the form with example data".

How it compares

The only adjacent tool named in the available facts is Browser Use itself, which Workflow Use treats as a fallback engine rather than a competitor: when a stored step fails, execution hands control to Browser Use. No paid products or other comparable recorders are listed in the facts supplied here, so beyond that relationship the project stands alone in this registry.

When to use it — and when not

A self-hoster has to operate a Python environment managed with uv, a Node and npm build of the browser extension, Playwright's Chromium, an LLM API key (the README uses OPENAI_API_KEY), and the workflow store under workflows/storage/. The README is explicit that the project is in very early development, that it does not recommend production use, and that there is no release schedule, so teams needing stable and supported automation should wait. Organisations with copyleft constraints should also weigh the AGPL-3.0 licence before adopting it.

project readme (upstream, from github) — read inline

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/.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

Frequently asked questions

Is workflow-use free to use?

workflow-use is open source under the AGPL-3.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does workflow-use do?

⚙️ Create and run workflows (RPA 2.0)

What is workflow-use written in?

workflow-use is primarily written in Python. Its source is publicly available at https://github.com/browser-use/workflow-use, and it has 4,184 GitHub stars.