Robotic Process Automation Studio
Download · Getting Started · Documentation · Libraries · Roadmap · Contributing
RPAForge is a modern, open-source Robotic Process Automation studio. Design automation workflows visually, debug them step by step, and execute them with a production-grade Python engine — no vendor lock-in, no license fees.
from rpaforge import StudioEngine
from rpaforge_libraries.DesktopUI import DesktopUI
engine = StudioEngine()
engine.executor.register_library("DesktopUI", DesktopUI())
builder = engine.create_process("Notepad Automation")
builder.add_task("Open and Type", [
("DesktopUI.Open Application", {"executable": "notepad.exe"}),
("DesktopUI.Wait For Window", {"title": "Notepad", "timeout": "10s"}),
("DesktopUI.Input Text", {"text": "Hello from RPAForge!"}),
("DesktopUI.Close Window", {}),
])
result = engine.run(builder.build())
print(f"Status: {result.status}")Just want to use RPAForge? Grab the latest Windows installer from the Releases page. The installer bundles the Python engine, so no separate Python installation is required — install, launch, and start building automations.
To build from source instead, see the Quick Start below.
| Visual Designer | Drag-and-drop workflow builder powered by React Flow — nodes, edges, sub-diagrams, zoom/pan, and a mini-map |
| Integrated Debugger | Breakpoints, step over/into/out, variable inspection, call stacks, conditional stops |
| 14 RPA Libraries | 120+ ready-made activities covering Desktop, Web, Excel, DataFrames, Database, OCR, HTTP, Credentials and more |
| Python Bridge | Asyncio JSON-RPC server — Electron talks to Python over IPC with full type safety |
| Code Generation | Diagram → Python, with topology validation before every run |
| Security First | SQL injection, path traversal, unsafe getattr, and IPC payload validation built-in (v0.3.1) |
| Persistent Storage | IndexedDB autosave for processes, variables, and execution history |
| Multi-Language | UI and library logging in English (en), Russian (ru), German (de), Spanish (es), Chinese (zh) — contribute new languages |
| Cross-Platform | Windows, macOS, Linux — one codebase |
┌──────────────────────────────────────────────────────────────────┐
│ RPAForge Studio (Electron 42 + React 19 + TailwindCSS 4) │
│ │
│ Designer │ Debugger │ Console │ Recorder │
│ React Flow · Monaco Editor · Zustand · Vite 8 │
└────────────────────────────┬─────────────────────────────────────┘
│ JSON-RPC over IPC / Stdio
┌────────────────────────────┴─────────────────────────────────────┐
│ Python Bridge Server (asyncio JSON-RPC) │
│ │
│ StudioEngine · ProcessRunner · Debugger · Recorder │
│ CodeGenerator · Topology Validator │
└────────────────────────────┬─────────────────────────────────────┘
│
┌────────────────────────────┴─────────────────────────────────────┐
│ RPA Libraries (14 modules · 120+ activities) │
│ │
│ DesktopUI WebUI Excel Database OCR Credentials │
│ File HTTP DateTime String Flow Variables Spy … │
└──────────────────────────────────────────────────────────────────┘
rpaforge/
├── packages/
│ ├── core/ # Python engine — runner, debugger, bridge, codegen
│ ├── libraries/ # RPA library modules
│ ├── studio/ # Electron + React desktop application
│ └── orchestrator/ # Control Tower (planned)
├── docs/ # MKDocs documentation
├── .github/ # CI/CD workflows (ci, release, codeql, docs)
└── tools/ # Release scripts
| Tool | Version |
|---|---|
| Python | 3.10 – 3.13 |
| Node.js | 20+ |
| pnpm | 9+ (or npm 9+) |
| Git | any |
| VS Build Tools | Windows only, for native modules |
# 1. Clone
git clone https://github.com/chelslava/rpaforge.git
cd rpaforge
# 2. Python packages (development mode)
pip install -r requirements-dev.txt
pre-commit install
pip install -e packages/core
pip install -e packages/libraries
# 3. Studio UI
cd packages/studio
pnpm install # or: npm ci --include=optional
# 4. Verify
cd ../..
pytest packages/core/tests -v
cd packages/studio && pnpm test && cd ../..cd packages/studio
pnpm dev # Vite dev server + Electron hot-reloadThe installer bundles a frozen Python engine, so end users do not need Python installed — activities work out of the box.
cd packages/studio
pnpm build:dist # freezes the engine + builds the NSIS installerThe installer is written to packages/studio/dist-electron/*.exe. Building one
requires Python + PyInstaller on the build machine; see
Building the Installer for
prerequisites, bundled libraries, and CI details.
🪟 Windows 11
Prerequisites:
- Python 3.10+ (download from python.org)
- Node.js 20+ and pnpm (download from nodejs.org)
- Visual Studio Build Tools (required for native modules)
# Download from: https://visualstudio.microsoft.com/visual-cpp-build-tools/
Installation:
# Clone and setup
git clone https://github.com/chelslava/rpaforge.git
cd rpaforge
# Create virtual environment
python -m venv .venv
.venv\Scripts\activate
# Install dependencies
pip install -r requirements-dev.txt
pre-commit install
pip install -e packages/core
pip install -e packages/libraries
# Install Studio
cd packages/studio
pnpm install
pnpm devRunning from PowerShell:
# Python tests
pytest packages/core/tests -v
pytest packages/libraries/tests -v
# Studio
cd packages/studio
pnpm dev
pnpm test🍎 macOS (Intel & Apple Silicon)
Prerequisites:
# Install Xcode Command Line Tools
xcode-select --install
# Install Homebrew (if not installed)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Install required tools
brew install python@3.12 node pnpmInstallation:
# Clone and setup
git clone https://github.com/chelslava/rpaforge.git
cd rpaforge
# Create virtual environment
python3 -m venv .venv
source .venv/bin/activate
# Install dependencies
pip install -r requirements-dev.txt
pre-commit install
pip install -e packages/core
pip install -e packages/libraries
# Install Studio
cd packages/studio
pnpm install
pnpm devNote for Apple Silicon (M1/M2/M3):
# Some dependencies may require native builds, ensure Xcode is fully installed
xcode-select --install
# If issues persist, reset Xcode path
sudo xcode-select --reset🐧 Linux (Ubuntu/Debian/Fedora)
Prerequisites for Ubuntu/Debian:
# Update package lists
sudo apt-get update
# Install system dependencies
sudo apt-get install -y \
python3.12 python3.12-venv python3.12-dev \
nodejs npm \
build-essential \
git
# Install pnpm
npm install -g pnpmPrerequisites for Fedora/RHEL:
# Install system dependencies
sudo dnf install -y \
python3.12 python3.12-devel \
nodejs npm \
gcc g++ make \
git
# Install pnpm
npm install -g pnpmPrerequisites for desktop automation (optional):
# Ubuntu/Debian
sudo apt-get install -y libnss3 libnspr4 libatk-bridge2.0-0 libdrm2 libxkbcommon0 libgbm1
# Fedora/RHEL
sudo dnf install -y nss nspr atk libdrm libxkbcommon libgbmInstallation:
# Clone and setup
git clone https://github.com/chelslava/rpaforge.git
cd rpaforge
# Create virtual environment
python3.12 -m venv .venv
source .venv/bin/activate
# Install dependencies
pip install -r requirements-dev.txt
pre-commit install
pip install -e packages/core
pip install -e packages/libraries
# Install Studio
cd packages/studio
pnpm install
pnpm devOCR support (all platforms)
pip install -e "packages/libraries[ocr]"
# Windows: https://github.com/UB-Mannheim/tesseract/wiki
# Linux: sudo apt-get install tesseract-ocr
# macOS: brew install tesseractWeb automation (Playwright)
pip install -e "packages/libraries[web]"
playwright install # Downloads browser binaries| Library | Activities | Description | Extra deps |
|---|---|---|---|
| DesktopUI | 20+ | Windows UI automation — Win32, WPF, and Java | pywinauto, pillow |
| WebUI | 15+ | Browser automation (Chrome, Firefox, and Safari) | playwright |
| Excel | 8+ | Read/write XLSX spreadsheets | openpyxl |
| DataFrames | 28+ | Tabular data operations — filter, sort, join, aggregate | polars |
| Database | 6+ | SQL queries via SQLAlchemy ORM | sqlalchemy |
| OCR | 5+ | Text recognition — Tesseract + EasyOCR | pytesseract, easyocr |
| Credentials | 4+ | Encrypted OS credential store | cryptography, keyring |
| File | 8+ | File and folder operations | — |
| HTTP | 5+ | REST API requests | requests |
| DateTime | 6+ | Date/time utilities | — |
| String | 7+ | String manipulation | — |
| Variables | 4+ | Variable management and scoping | — |
| Flow | 4+ | Control flow — if, while, for | — |
| Spy | 3+ | Live UI element inspector overlay | uiautomation, pynput |
Install only what you need:
pip install -e "packages/libraries[desktop]" # DesktopUI
pip install -e "packages/libraries[web]" # WebUI
pip install -e "packages/libraries[dataframes]" # DataFrames (polars)
pip install -e "packages/libraries[all]" # Everythingmake test # Run all Python tests
make lint # ruff + mypy
make format # ruff format
make docs # Build MKDocs
make docs-serve # Serve docs locally
make studio-dev # Studio hot-reload
cd packages/studio
pnpm test # Vitest
pnpm build # Production buildBackend (Python)
asyncioJSON-RPC bridgeRufffor linting and formattingpytest+pytest-asynciofor testingmypyfor type checking
Frontend (TypeScript)
- React 19 + Vite 8
- React Flow 11 — visual diagram editor
- Zustand 5 — state management
- Monaco Editor — embedded code editor
- TailwindCSS 4 — utility styling
- Electron 42 — desktop packaging
| Package | Description | Version | Status |
|---|---|---|---|
rpaforge-core |
Engine, debugger, JSON-RPC bridge | v0.3.5 | ✅ Stable |
rpaforge-libraries |
14 RPA library modules | v0.3.5 | ✅ Stable |
rpaforge-studio |
Electron + React desktop UI | v0.3.5 | 🔄 Alpha |
rpaforge-orchestrator |
Control Tower | — | 🔜 Planned |
- ✅ SQL injection, path traversal, unsafe
getattrmitigations - ✅ IPC payload validation with strict schema enforcement
- ✅ IndexedDB infrastructure — autosave, variables, history
- ✅ Ruff-based inline Python validation with error highlighting
- ✅ Persistent logging with file rotation
- ✅ Freeze mode for Spy overlay
- ✅ Serialized lifecycle lock for
_handle_run_diagram— eliminates race conditions under concurrent execution - ✅ Secure
ruffexecutable resolution viashutil.which() - ✅ Dependency security audit — resolved 14 Dependabot alerts via npm overrides
- ✅ DataFrames library — 28 tabular data activities powered by Polars (load, filter, sort, join, aggregate, and more)
- ✅ DataFrame variable type — first-class
DataFrametype in the visual designer - ✅ Visual table preview in debugger — inspect DataFrame contents inline when stopped at a breakpoint
- ✅ i18n fixes — all UI strings translated to English and Russian
- ✅ Onboarding tour — guided welcome tour with splash screen and progress indicator
- ✅ App icon and splash screen — polished startup experience with initialization flow
- ✅ Error boundary — improved error handling for component failures
- ✅ i18n: onboarding tour fully translated to all supported languages (en, ru, de, es, zh)
- ✅ Chinese (zh) language — complete UI translation added
- ✅ Bundled locales for offline and
file://protocol support
- ✅ Self-contained Windows installer — the Python engine is frozen with PyInstaller and bundled, so end users need no separate Python install
- ✅ Bundled Playwright Chromium and Tesseract OCR for web automation and OCR out of the box
- ✅ Fixed "Failed to load activities" in installed builds — the bridge now spawns the bundled engine with a generous cold-start window
- ✅ Smart activity recorder — capture and replay user actions (UI implemented)
- ✅ Selector extraction and self-healing locators (SelectorBuilder panel implemented)
- ✅ Variable Explorer panel improvements (scope-based grouping and type badges implemented)
- ✅ Execution history browser (panel and Zustand store implemented)
- ✅ Sub-diagram parameter mapping UI (ParameterMappingDialog implemented)
- Plugin system and Library Development SDK
- Project templates marketplace
- Version control integration (Git-aware projects)
- Orchestrator — Control Tower for multi-machine execution
- Scheduler and trigger engine
- Advanced monitoring and alerting
- Enterprise authentication (LDAP/SSO)
| Resource | Description |
|---|---|
| Getting Started | Installation and system setup |
| Quick Start | Build your first automation |
| Developer Guide | Architecture, patterns, code conventions |
| Contributing | How to contribute code or docs |
| Translation Guide | Add translations for new languages |
| Changelog | Release notes |
| Roadmap | Detailed feature roadmap |
Contributions are welcome — bug reports, feature requests, documentation, and code.
# Fork → clone → branch
git checkout -b feat/my-feature
# Make changes, then
make test && make lint
# Commit (Conventional Commits)
git commit -m "feat(libraries): add PDF extraction keyword"
# Open a PR against mainSee CONTRIBUTING.md for the full workflow, coding standards, and PR checklist.
- Visual designer powered by React Flow and Electron
- Desktop automation via pywinauto
- Web automation via Playwright
- Inspired by UiPath, Blue Prism, and Automation Anywhere
GitHub Discussions · Issue Tracker
Apache License 2.0 — Made with care by the RPAForge Community
