Deployment Guide
Transition from local development to a production-grade deployment on your own infrastructure.
Development (Local)
Run directly on your laptop using npm scripts. Ideal for building and testing workflows.
Production (Docker Compose)
Deploy the complete stack with MongoDB, backend, worker, frontend, and optional nginx proxy.
Docker Compose Deployment
The recommended production setup uses Docker Compose. It provisions MongoDB with a replica set, the Express API, the worker runtime, the Next.js frontend, and an optional nginx reverse proxy.
services:
mongo:
image: mongo:7
command: ["--replSet", "rs0", "--bind_ip_all"]
ports:
- "27017:27017"
volumes:
- mongo_data:/data/db
healthcheck:
test: ["CMD", "mongosh", "--eval", "db.adminCommand('ping')"]
interval: 10s
timeout: 5s
retries: 10
backend:
build:
context: ..
dockerfile: infra/Dockerfile
target: backend
ports:
- "5000:5000"
depends_on:
mongo:
condition: service_healthy
worker:
build:
context: ..
dockerfile: infra/Dockerfile
target: backend
command: ["npm", "run", "worker"]
depends_on:
backend:
condition: service_healthy
frontend:
build:
context: ..
dockerfile: infra/Dockerfile
target: frontend
ports:
- "3000:3000"
depends_on:
backend:
condition: service_healthy
nginx:
image: nginx:1.27-alpine
profiles: ["proxy"]
ports:
- "80:80"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf:roEnvironment Configuration
Create an .env file in the infra/ directory before starting Docker Compose. Key variables include MongoDB URI, JWT secret, LLM provider keys, worker settings, and integration tokens.
Production Considerations
On-Premises
Deploy to your own bare-metal hardware for maximum data control and performance.
Cloud VPC
Deploy to a private cloud network with restricted external access for high-security workflows.
Hybrid
Keep the execution engine local but interact with cloud-based LLM providers via encrypted tunnels.
Network Configuration
If you plan to access the dashboard remotely, ensure you set up an Nginx reverse proxy with SSL (Let's Encrypt). We recommend keeping the API server behind a firewall and only exposing the necessary ports. If using local LLMs, ensure the worker instances have high-bandwidth network access to your model server.