Rune is a low‑code workflow automation platform that enables users to create, manage, and execute complex workflows through a visual interface.
rune/
├── apps/
│ └── web/ # Next.js frontend application
├── services/
│ ├── api/ # FastAPI backend service (Python)
│ └── rune-worker/ # Workflow worker service (Go)
├── docker-compose.yml # Main Docker Compose configuration
└── Makefile
| Component | Responsibilities | Location |
|---|---|---|
| Frontend | Visual workflow builder, run history UI, auth flows | apps/web |
| API | Workflow definitions, scheduling, user/org management, REST/GraphQL APIs | services/api |
| Worker | Executes workflow steps, manages retries, interacts with external services | services/rune-worker |
| Infrastructure | Shared dependencies: PostgreSQL, Redis, RabbitMQ, MinIO (optional) | docker-compose.yml |
- Frontend: Next.js 15, React, TypeScript
- API: FastAPI, Python 3.13, PostgreSQL
- Worker: Go 1.25, RabbitMQ
- Infrastructure: Docker, PostgreSQL, Redis, RabbitMQ
- Visual workflow designer for composing multi-step automations with branching logic, retry policies, and scheduling.
- Reusable integration blocks for common SaaS tools (HTTP, queues, databases) that can be combined into new workflows quickly.
- Observability first: central run history, live logs, and per-step metrics to debug production runs without diving into logs manually.
- Environment aware deployments so you can promote workflows from staging to production with consistent secrets and infra settings.
The fastest way to get started is using Docker, which runs all services in containers.
- Docker Desktop (or Docker Engine + Docker Compose)
- Git
# 1. Clone the repository
git clone https://github.com/rune-org/rune.git
cd rune
# 2. Copy environment file
cp .env.example .env
# 3. Start all services
make up
# 4. Access the application
- Frontend: http://localhost:3000
- API: http://localhost:8000
- RabbitMQ Management: http://localhost:15672make up # Start all services
make down # Stop all services
make restart # Rebuild and restart all services
make status # Show container status
make logs # View logs from all services
# Service-specific logs
make logs-api
make logs-worker
make logs-frontend
# Database access
make db-shell # Connect to PostgreSQL
# Cleanup
make docker-clean # Remove all containers, volumes, and images
docker image prune # Remove dangling imagesRun everything in Docker containers. Great for testing the complete system.
make upRun infrastructure in Docker, but run services locally for faster development.
# Start infrastructure (PostgreSQL, Redis, RabbitMQ)
make api-dev
# In separate terminals, run services locally:
# 1. Run API locally
cd services/api
source .venv/bin/activate # or create venv: python -m venv .venv
pip install -r requirements.txt
uvicorn src.app:app --reload --port 8000
# 2. Run frontend locally
cd apps/web
pnpm install
pnpm dev
# 3 (optional).: Run worker locally
cd services/rune-worker
go run cmd/worker/main.go# Database
POSTGRES_USER=rune
POSTGRES_PASSWORD=rune_password
POSTGRES_DB=rune_db
# RabbitMQ
RABBITMQ_USER=rune
RABBITMQ_PASSWORD=rune_password
# API Settings
JWT_SECRET_KEY=your-secret-key-here
ENCRYPTION_KEY=your-encryption-key-here
# Worker Settings
WORKFLOW_PREFETCH=10
WORKFLOW_CONCURRENCY=1Each service has its own .env file for local development:
services/api/.env- API configurationservices/rune-worker/.env- Worker configurationapps/web/.env.local- Frontend configuration
If you prefer to run services locally without Docker:
cd apps/web
corepack enable
pnpm install
pnpm devRequirements: Node.js 22, pnpm 9
cd services/api
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
# Run migrations and seed data
python -m scripts.seed_user
# Start server
uvicorn src.app:app --reload --port 8000Requirements: Python 3.13+
cd services/rune-worker
go mod download
go run cmd/worker/main.goRequirements: Go 1.25+
| Category | Command | Description |
|---|---|---|
| Development | make install |
Install all dependencies |
| Development | make dev |
Start all services in development mode |
| Development | make build |
Build all services |
| Docker | make up |
Start all services with Docker |
| Docker | make down |
Stop all services |
| Docker | make restart |
Rebuild and restart all services |
| Docker | make status |
Show container status |
| Docker | make logs |
View all logs |
| Testing & Quality | make test |
Run all tests |
| Testing & Quality | make lint |
Run linters for all services |
| Testing & Quality | make format |
Format code for all services |
| Testing & Quality | make typecheck |
Run type checking |
| Cleanup | make clean |
Clean build artifacts |
| Cleanup | make docker-clean |
Remove all Docker resources |
If you get port binding errors, check if ports are already in use:
# Check what's using a port
lsof -i :3000 # Frontend
lsof -i :8000 # API
lsof -i :5432 # PostgreSQL# Reset the database
make down
docker volume rm rune_postgres_data
make upNew issues, feature proposals, and pull requests are very welcome. Please read CONTRIBUTING.md for the full development workflow, coding standards, and commit message conventions.
See LICENSE file for details.