Distributed Job Scheduling
Built for Scale
Separate your scheduler from workers. Scale independently. Monitor everything. Milvaion is the open-source distributed job scheduling system for .NET that grows with your infrastructure.
# Run with Docker Compose $ git clone https://github.com/Milvasoft/milvaion.git $ cd milvaion $ docker compose up -d # Dashboard at http://localhost:5000
Features
Everything You Need
A complete job scheduling platform with enterprise-grade features, built from the ground up for distributed systems.
Cron Scheduling
6-field cron expressions with second-level precision. Schedule jobs from every second to once a year.
Distributed Architecture
Separate scheduler (API) from workers. Scale each independently based on workload demands.
Reliability Built-In
Exponential backoff retries, Dead Letter Queue, zombie detection, and auto-disable for failing jobs.
Real-Time Dashboard
Beautiful UI powered by SignalR. Monitor jobs, workers, and executions in real-time.
Enterprise Management
User, role & permission management with granular access control. User activity tracking and audit logs.
Multi-Channel Alerting
Google Chat, Slack, Microsoft Teams, Email, and internal notifications with configurable routing.
Graceful Shutdown
Workers complete in-progress jobs before shutting down. Offline resilience with SQLite fallback.
OpenTelemetry
Built-in Prometheus metrics, distributed tracing, and pre-configured Grafana dashboards.
Auto-Scaling
Kubernetes HPA, KEDA queue-based scaling, and concurrency policies per job type.
Built-In Workers
HTTP, SQL, Email, and Maintenance workers out of the box. No code required for common tasks.
External Schedulers
Integrate Quartz.NET or Hangfire. Keep your scheduler, add Milvaion monitoring and dashboards.
Mobile Responsive
Dashboard works on all devices. Monitor your jobs from anywhere.
Architecture
How Milvaion Works
A clean separation between scheduling and execution, connected by battle-tested messaging infrastructure.

Schedule
API Server
Create jobs with cron expressions via API or Dashboard. Jobs are stored in Redis ZSET sorted by next fire time.
- Cron scheduling
- Redis ZSET
- Leader election
Dispatch
RabbitMQ
When fire time arrives, the dispatcher publishes job messages to RabbitMQ topic exchange with routing keys.
- Topic exchange
- Routing keys
- Worker affinity
Execute
Workers
Workers consume messages, execute your IJob implementations with full DI support, and report back status.
- IJob interface
- DI support
- Parallel execution
Monitor
Dashboard
Results flow back through RabbitMQ. Dashboard updates in real-time via SignalR. Metrics exported to Prometheus.
- SignalR real-time
- Prometheus metrics
- Grafana dashboards
Built-In Workers
Zero-Code Workers
Common jobs that work out of the box. Configure through the dashboard — no code deployment needed.
HTTP Worker
Make REST API calls, send webhooks, monitor health endpoints. Supports all HTTP methods, auth types, retry policies, proxy, and mTLS.
{
"method": "POST",
"url": "https://api.example.com/notify",
"headers": { "Authorization": "Bearer {{token}}" },
"body": { "message": "Job completed" },
"expectedStatusCode": 200,
"retryCount": 3
}SQL Worker
Execute queries across PostgreSQL, SQL Server, and MySQL. Parameterized queries, stored procedures, and transactions.
{
"connectionAlias": "reporting-db",
"commandType": "Text",
"commandText": "SELECT cleanup_old_records($1)",
"parameters": [
{ "name": "$1", "value": "30" }
]
}Email Worker
Send emails via SMTP with HTML/plain text, attachments, CC/BCC, priority levels, and multiple SMTP configurations.
{
"smtpConfigName": "transactional",
"to": ["user@example.com"],
"subject": "Report Ready",
"isHtml": true,
"body": "<h1>Your report is ready</h1>",
"priority": "High"
}Maintenance Worker
Automated Milvaion's database maintenance, execution retention, failed execution cleanup, Redis cleanup, and archival.
// Built-in maintenance jobs: • DatabaseMaintenance - VACUUM, ANALYZE • OccurrenceRetention - Delete old records • FailedOccurrenceCleanup - Purge resolved • RedisCleanup - Remove stale keys • OccurrenceArchive - Archive to cold store
Dashboard
Beautiful Real-Time UI
Monitor everything from a single, responsive dashboard. Dark mode, light mode, mobile ready.

Dashboard Overview
Real-time metrics: total executions, success rate, active workers, capacity utilization, and EPM.
Comparison
Why Milvaion?
See how Milvaion compares to other popular .NET job scheduling solutions.
| Feature | Milvaion | Hangfire | Quartz.NET |
|---|---|---|---|
| Architecture | Distributed | Monolithic | Embedded |
| Separate Workers | |||
| Independent Scaling | |||
| Real-Time Dashboard | |||
| Built-in Workers (HTTP, SQL, Email) | |||
| Multi-Channel Alerting | |||
| OpenTelemetry / Prometheus | |||
| Grafana Dashboards | |||
| Zombie Detection | |||
| Offline Resilience | |||
| Cron Precision | Second-level | Minute-level | Second-level |
| External Scheduler Integration | |||
| Open Source |
Get Started
Up and Running in Minutes
One command to start. Choose your preferred deployment method.
# Clone the repository git clone https://github.com/Milvasoft/milvaion.git cd milvaion # Start all services docker compose up -d # Services started: # Milvaion API → http://localhost:5000 # Dashboard → http://localhost:5000 # PostgreSQL → localhost:5432 # Redis → localhost:6379 # RabbitMQ → localhost:5672 (Management: 15672) # Seq → http://localhost:8081 # Grafana → http://localhost:3000