Open-Source RPA Studio — Visual Automation, Built for Developers
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}")| 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 | 80+ 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 |
| 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 6 │
└────────────────────────────┬─────────────────────────────────────┘
│ JSON-RPC over IPC / Stdio
┌────────────────────────────┴─────────────────────────────────────┐
│ Python Bridge Server (asyncio JSON-RPC) │
│ │
│ StudioEngine · ProcessRunner · Debugger · Recorder │
│ CodeGenerator · Topology Validator │
└────────────────────────────┬─────────────────────────────────────┘
│
┌────────────────────────────┴─────────────────────────────────────┐
│ RPA Libraries (14 modules · 55+ 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-reloadLinux (Ubuntu/Debian)
sudo apt-get install -y libnss3 libnspr4 libatk-bridge2.0-0 libdrm2 libxkbcommon0 libgbm1macOS
xcode-select --installOCR 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 6
- 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.3 | ✅ Stable |
rpaforge-libraries |
14 RPA library modules | v0.3.3 | ✅ Stable |
rpaforge-studio |
Electron + React desktop UI | v0.3.3 | 🔄 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
- Smart activity recorder — capture and replay user actions
- Selector extraction and self-healing locators
- Variable Explorer panel improvements
- Execution history browser
- Sub-diagram parameter mapping UI
- 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 |
| 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