A lightweight, scalable, and visual distributed task scheduling and execution platform built with Go + Vue 3
- You have partitioned your server into multiple Docker containers by CPU/memory resources
- You have many scheduled tasks and want to dynamically distribute them to containers for execution
- You want to write your own load balancing strategy
- You want to visually manage these nodes and tasks
- You want to manually execute commands on these nodes at any time
git clone&cdthis repocp config.example.yaml config.yaml- edit
config.yaml - run
make allto build - run
bin/managerfor manager node - run
bin/workerfor worker node - visit
http://[manager_ip]:[http_port] - default account:
admin/admin123
- 🔄 Distributed Architecture: Manager-Worker mode with horizontal scaling support
- 🎯 Scheduled Execution: Cron expression support for flexible task scheduling
- 📊 Real-time Monitoring: WebSocket real-time push for task status and logs
- 📝 Log Streaming: Real-time log push with support for long-running tasks
- ⚖️ Custom Load Balancing: User-defined load balancing strategy functions (based on node CPU, memory, etc.)
┌──────────────┐
│ Web │
└──────┬───────┘
│ HTTP/WS
┌──────▼──────┐
│ Manager │ (Scheduler/API)
└──────┬──────┘
│ gRPC Dispatch
┌─────────┴─────────┐
▼ ▼ ▼
┌─────┐ ┌─────┐ ┌─────┐
│ W-1 │ │ W-2 │ │ W-N │ Worker Nodes (Executor)
└─────┘ └─────┘ └─────┘
- Language: Go 1.25+
- Web Framework: Gin
- RPC: gRPC
- Scheduling: robfig/cron/v3
- Database: SQLite (default) / PostgreSQL (to be improved)
- Core Component: Redis
- WebSocket: Melody
- Framework: Vue 3 + TypeScript
- Build Tool: Vite
- UI: PrimeVue + Tailwind CSS
- State Management: Pinia
- Data Fetching: TanStack Query
- Log Terminal: xterm.js
- Build both images:
make docker - Build manager only:
docker build --target manager -t cronicle-manager:latest . - Build worker only:
docker build --target worker -t cronicle-worker:latest . - Run with compose:
make docker-up
- Dockerfile
- English Version
Inspired by Cronicle.






