Install & configure — step by stepInstalar y configurar — paso a paso
RuleFlow is self-hosted and listens on http://0.0.0.0:8080 by default. Pick your environment below.
RuleFlow es autohospedado y escucha en http://0.0.0.0:8080 por defecto. Elegí tu ambiente abajo.
Docker (Windows · Linux · macOS)
1. Run the container (one line):
1. Corré el contenedor (una línea):
docker run -d --name ruleflow --restart unless-stopped -p 8080:8080 -v ruleflow-data:/app/App_Data -v ruleflow-plugins:/app/pluginstore ghcr.io/roberthdudiver/ruleflow:latest
2. Open http://localhost:8080 and complete the wizard. --restart unless-stopped is required so the wizard can restart the app.
2. Abrí http://localhost:8080 y completá el asistente. --restart unless-stopped es necesario para que el wizard pueda reiniciar la app.
Compose: download docker-compose.yml and run:
Compose: descargá docker-compose.yml y corré:
docker compose up -d
Linux (no Dockersin Docker)
1. One-command install (downloads the self-contained build to ~/ruleflow):
1. Instalación de un comando (baja el build self-contained a ~/ruleflow):
curl -fsSL https://raw.githubusercontent.com/RoberthDudiver/ruleflow/main/install.sh | bash
2. Start it:
2. Arrancalo:
cd ~/ruleflow && ./Dudiver.RuleFlow.Server
Or install as a systemd service (starts on boot, restarts on crash):
O instalalo como servicio systemd (arranca con el sistema, reinicia si falla):
curl -fsSL https://raw.githubusercontent.com/RoberthDudiver/ruleflow/main/install.sh | sudo RULEFLOW_SERVICE=1 bash
# manage: sudo systemctl status ruleflow · sudo journalctl -u ruleflow -f
Windows (no Dockersin Docker)
1. In PowerShell, one command (installs to %LOCALAPPDATA%\RuleFlow):
1. En PowerShell, un comando (instala en %LOCALAPPDATA%\RuleFlow):
irm https://raw.githubusercontent.com/RoberthDudiver/ruleflow/main/install.ps1 | iex
2. Start it (it listens on 8080):
2. Arrancalo (escucha en 8080):
cd "$env:LOCALAPPDATA\RuleFlow"; .\Dudiver.RuleFlow.Server.exe
Or install as a Windows Service (run PowerShell as Administrator):
O instalalo como Servicio de Windows (PowerShell como Administrador):
$env:RULEFLOW_SERVICE=1; irm https://raw.githubusercontent.com/RoberthDudiver/ruleflow/main/install.ps1 | iex
Note: don't use \ to split commands in PowerShell (that's bash). Keep each command on one line.
Nota: en PowerShell no uses \ para cortar comandos (eso es de bash). Dejá cada comando en una línea.
IIS (Windows)
1. Install the ASP.NET Core Hosting Bundle (adds the ASP.NET Core Module to IIS), then net stop was /y && net start w3svc.
1. Instalá el ASP.NET Core Hosting Bundle (agrega el módulo ASP.NET Core a IIS), y luego net stop was /y && net start w3svc.
2. Unzip the win-x64 release into a folder, e.g. C:\inetpub\ruleflow. It includes a web.config that runs the app via the ASP.NET Core Module (IIS hosts it in-process — no port needed).
2. Descomprimí el release win-x64 en una carpeta, ej. C:\inetpub\ruleflow. Trae un web.config que corre la app con el módulo ASP.NET Core (IIS la hostea in-process — sin puerto).
3. In IIS Manager: add a website pointing to that folder; set its Application Pool to “No Managed Code”; give the app-pool identity write permission on the folder (for App_Data and pluginstore).
3. En el Administrador de IIS: agregá un sitio apuntando a esa carpeta; poné su Application Pool en “Sin código administrado”; dale permiso de escritura a la identidad del pool sobre la carpeta (para App_Data y pluginstore).
4. Add an https binding with a certificate. For free auto-renewing certs use win-acme. Browse the site to run the wizard.
4. Agregá un binding https con un certificado. Para certificados gratis que se auto-renuevan usá win-acme. Entrá al sitio para correr el wizard.
Reverse proxy with HTTPS (nginx)Proxy inverso con HTTPS (nginx)
For a public domain, put nginx in front of RuleFlow (running on :8080). Same config on Linux and Windows:
Para un dominio público, poné nginx delante de RuleFlow (corriendo en :8080). Misma config en Linux y Windows:
server {
listen 80;
server_name ruleflow.example.com;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header Upgrade $http_upgrade; # WebSockets (Blazor)
proxy_set_header Connection "upgrade";
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 86400s;
}
}
Linux — HTTPS with auto-renewal (certbot's timer renews automatically):
Linux — HTTPS con auto-renovación (el timer de certbot renueva solo):
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d ruleflow.example.com
sudo certbot renew --dry-run # verify
Windows — run RuleFlow as a service, install nginx for Windows with the same block, and use win-acme for an auto-renewing certificate.
Windows — corré RuleFlow como servicio, instalá nginx para Windows con el mismo bloque, y usá win-acme para un certificado que se auto-renueva.
First run — the wizardPrimer arranque — el wizard
On first launch (no config yet) RuleFlow shows an installation wizard:
En el primer arranque (sin configurar) RuleFlow muestra un asistente de instalación:
- Database — pick SQLite (zero-config), PostgreSQL, SQL Server or MongoDB, and test the connection. Base de datos — elegí SQLite (sin config), PostgreSQL, SQL Server o MongoDB, y probá la conexión.
- Administrator — set the admin username and password. Administrador — definí usuario y contraseña del admin.
- AI (optional) — enable it and pick a provider (OpenAI, Claude, Gemini, LM Studio…), or leave it off. IA (opcional) — activala y elegí proveedor (OpenAI, Claude, Gemini, LM Studio…), o dejala apagada.
It saves the config and restarts, ready to use. To skip the wizard and configure by environment, set Setup__Skip=true and the Persistence__* variables.
Guarda la config y se reinicia, listo. Para saltear el wizard y configurar por variables de entorno, poné Setup__Skip=true y las variables Persistence__*.
Use the API from your systemUsar la API desde tu sistema
Every /api call authenticates with a per-tenant API key (create it in Settings → API keys) sent as X-Api-Key. The key sets the tenant. Full reference at /scalar.
Cada llamada a /api se autentica con una API key por tenant (creala en Configuración → Claves API) enviada como X-Api-Key. La key define el tenant. Referencia completa en /scalar.
# Start an instance
curl -X POST https://your-host/api/instances \
-H "Content-Type: application/json" -H "X-Api-Key: rfk_your_key" \
-d '{ "definitionKey": "credit-approval", "input": { "income": 120000, "debts": 30000 } }'
# Query it
curl https://your-host/api/instances/<id> -H "X-Api-Key: rfk_your_key"
# Wake a waiting instance
curl -X POST https://your-host/api/instances/<id>/signal \
-H "Content-Type: application/json" -H "X-Api-Key: rfk_your_key" \
-d '{ "data": { "decision": "approve" } }'
ExamplesEjemplos
Real, step-by-step guides — build the process in the designer, then drive it over the API with live curl requests. Each guide lists exactly which states, actions, transitions and rules to create.
Guías reales paso a paso — armás el proceso en el diseñador y lo consumís por la API con curl real. Cada guía lista exactamente qué estados, acciones, transiciones y reglas crear.
A plugin (DLL) computes the credit score, plain rules route the clear cases, an AI step judges the borderline band, and a human signal makes the final call — the whole engine in one process.
Un plugin (DLL) calcula el score, reglas simples rutean lo claro, un paso de IA juzga la banda gris y una señal humana da el veredicto final — todo el motor en un solo flujo.
Without a DLL — pure configurationSin DLL — pura configuración
A full approval flow with zero code: auto-approve under a threshold, else a human approves/rejects via a signal.
Un flujo de aprobación completo sin código: auto-aprueba bajo un umbral, si no un humano aprueba/rechaza con una señal.
A built-in AI step makes the fuzzy decision (approve/review/reject) and rules route on it — still no DLL.
Un paso de IA integrado toma la decisión difusa (approve/review/reject) y las reglas rutean — sin DLL.
With a DLL — custom computationCon DLL — cómputo a medida
Classify by weight, VIP priority, a waiting state, and a retry → return loop driven by signals.
Clasificación por peso, prioridad VIP, estado de espera y loop reintento → devolución por señales.
Geo mismatch, velocity attack, monthly-limit aggregation → hold / reject / clear, plus an account-block cascade.
Geo, ataque de velocidad, agregación de límite mensual → retener / rechazar / liberar, más cascada que bloquea la cuenta.
Plugins
1. In Plugins → Template download a ready-to-build project (the SDK is bundled).
2. Implement IProcess, build the DLL (dotnet build -c Release).
3. Upload it in Plugins → Upload plugin. Each upload is a new version; roll back to any previous one in one click.
1. En Plugins → Template descargá un proyecto listo para compilar (trae el SDK).
2. Implementá IProcess, compilá el DLL (dotnet build -c Release).
3. Subilo en Plugins → Subir plugin. Cada subida es una versión nueva; volvés a cualquier anterior en un clic.
Data & backupsDatos y backups
Everything lives on your server: App_Data (SQLite database + config) and pluginstore (uploaded plugin versions). Back up those folders (or your external database). With Docker they are named volumes (ruleflow-data, ruleflow-plugins).
Todo vive en tu servidor: App_Data (base SQLite + config) y pluginstore (versiones de plugins subidas). Respaldá esas carpetas (o tu base externa). Con Docker son volúmenes nombrados (ruleflow-data, ruleflow-plugins).
More detail on GitHub: deployment guide · downloads. Más detalle en GitHub: guía de despliegue · descargas.