
⚙️ 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.
Automatically generate workflows from natural language! Describe your task, we run browser-use once, then create a reusable semantic workflow stored in a database.
# 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>
# 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
Workflows stored at workflows/storage/:
- metadata.json - Searchable index of all workflows
- workflows/<id>.workflow.json - Individual workflow files
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)
git clone https://github.com/browser-use/workflow-use
cd extension && npm install && npm run build
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
python cli.py run-as-tool examples/example.workflow.json --prompt "fill the form with example data"
python cli.py run-workflow examples/example.workflow.json
python cli.py create-workflow
python cli.py --help
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'"))
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
The Workflow UI provides a visual interface for managing, viewing, and executing workflows.
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.
Alternatively, you can start the servers individually:
cd workflows
uvicorn backend.api:app --reload
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:
https://github.com/user-attachments/assets/cf284e08-8c8c-484a-820a-02c507de11d4
https://github.com/user-attachments/assets/379e57c7-f03e-4eb9-8184-521377d5c0f9
Show computer what it needs to do once, and it will do it over and over again without any human intervention.
.json files inside python code$ claude mcp add workflow-use \
-- python -m otcore.mcp_server <graph>