/$$ /$$ /$$ /$$ /$$$$$$$ /$$$$$$
| $$ /$$/| $$ | $$| $$__ $$ /$$__ $$
| $$ /$$/ | $$ | $$| $$ \ $$| $$ \ $$
| $$$$$/ | $$ | $$| $$$$$$$/| $$ | $$
| $$ $$ | $$ | $$| $$__ $$| $$ | $$
| $$\ $$ | $$ | $$| $$ \ $$| $$ | $$
| $$ \ $$| $$$$$$/| $$ | $$| $$$$$$/
|__/ \__/ \______/ |__/ |__/ \______/
Background HTTP Cron Scheduler
Lightweight โข Fast โข Easy to Use โข Cross-Platform
Features โข Installation โข Usage โข Examples
โจ Easy to Use
- Beautiful interactive CLI interface
- Paste curl commands directly - no manual configuration needed
- Intuitive task management with visual feedback
โก Lightweight & Fast
- Built with Bun for maximum performance
- SQLite for minimal resource usage (~50MB RAM)
- Single binary - no external dependencies
๐ Full Auth Support
- Bearer tokens
- Basic authentication
- API keys
- Custom authorization headers
๐ Powerful Monitoring
- Real-time task execution logs
- Success/failure statistics
- Error tracking and storage
- Health monitoring
๐ Reliable Execution
- Automatic retry with exponential backoff
- Configurable timeouts
- Cron expression validation
- Background daemon mode
๐ Cross-Platform
- Linux (x64, ARM64)
- macOS (x64, Apple Silicon)
- Windows (x64)
Linux / macOS:
curl -fsSL https://raw.githubusercontent.com/ilhamjaya08/kuro/refs/heads/master/install/install.sh | bashWindows (PowerShell as Admin):
irm https://raw.githubusercontent.com/ilhamjaya08/kuro/refs/heads/master/install/install.ps1 | iex- Download the binary for your platform from Releases
- Extract and move to your PATH:
# Linux/macOS
chmod +x kuro-linux-x64
sudo mv kuro-linux-x64 /usr/local/bin/kuro
# Windows
move kuro-windows-x64.exe C:\Program Files\Kuro\kuro.exe- (Optional) Install as a system service:
# Linux with systemd
sudo cp install/kuro.service /etc/systemd/system/
sudo systemctl enable kuro
sudo systemctl start kuro
# macOS with launchd
cp install/com.kuro.daemon.plist ~/Library/LaunchAgents/
launchctl load ~/Library/LaunchAgents/com.kuro.daemon.plist-
Launch Kuro:
kuro
-
Create your first task:
- Select "Create new task"
- Choose a schedule (presets or custom cron expression)
- Paste your curl command or configure manually
- Done! Your task will run in the background
-
Manage tasks:
- View all tasks with real-time status
- Start/stop individual tasks
- Edit configurations
- View execution logs
kuro # Launch interactive menu
kuro --daemon # Run as background daemon (auto-started by service)Curl command:
curl -X GET https://api.example.com/healthIn Kuro:
- Create new task
- Name: "API Health Check"
- Schedule: "Every 5 minutes"
- Paste the curl command above
- โ Task created and running!
Curl command:
curl -X POST https://api.example.com/webhook \
-H "Authorization: Bearer your-token-here" \
-H "Content-Type: application/json" \
-d '{"event": "daily_report", "timestamp": "2024-01-01"}'In Kuro:
- Create new task
- Name: "Daily Report Webhook"
- Schedule: "Daily at midnight"
- Paste the curl command
- Kuro automatically detects:
- Method: POST
- Auth: Bearer token (masked in UI)
- Headers: Content-Type
- Body: JSON payload
Curl command:
curl -X GET https://api.service.com/data \
-H "X-API-Key: your-api-key-12345"In Kuro:
- Kuro detects API key authentication automatically
- Stores securely in SQLite
- Shows masked value in UI:
****12345
Cron expression: 0 */6 * * * (Every 6 hours)
Create tasks with any valid cron expression:
* * * * *- Every minute*/15 * * * *- Every 15 minutes0 9 * * 1-5- Weekdays at 9 AM0 0 1 * *- First day of every month
- From curl: Just paste your curl command
- Manual: Step-by-step configuration
- Presets: Choose from common schedules
- View all tasks with status indicators
- Start/Stop individual tasks
- Edit task configuration
- Run now for manual execution
- Delete tasks (with confirmation)
- All logs: See complete execution history
- Errors only: Filter failed executions
- By task: View logs for specific task
- Auto-cleanup after 30 days (configurable)
- Start/Stop background daemon
- View status: PID, uptime, running tasks
- Restart: Quick daemon restart
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Interactive CLI Menu โ
โ (Beautiful @clack/prompts UI) โ
โโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Background Daemon โ
โ โข Cron Scheduler (cron-parser) โ
โ โข Task Executor (fetch API) โ
โ โข SQLite Database (better-sqlite3) โ
โโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ HTTP Executor โ
โ โข GET/POST/PUT/DELETE/PATCH โ
โ โข Auth: Bearer/Basic/API Key/Custom โ
โ โข Auto-retry with exponential backoff โ
โ โข Timeout handling โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Kuro stores all data in platform-specific directories:
- Linux:
~/.kuro/ - macOS:
~/Library/Application Support/Kuro/ - Windows:
%APPDATA%\Kuro\
- tasks: Task configurations and schedules
- logs: Execution history (auto-cleanup)
- daemon_state: Daemon status tracking
- settings: User preferences
- Log retention: 30 days
- Default timeout: 30 seconds
- Default retry count: 3
- Max concurrent tasks: 10
- Bun >= 1.0
# Clone repository
git clone https://github.com/ilhamjaya08/kuro.git
cd kuro
# Install dependencies
bun install
# Run in development mode
bun run dev# Build for current platform
bun run build
# Build for all platforms
bun run build:allBinaries will be in dist/ directory.
kuro/
โโโ src/
โ โโโ cli/ # Interactive CLI interface
โ โ โโโ menu.ts # Main menu system
โ โ โโโ prompts.ts # User prompts
โ โ โโโ ascii.ts # Logo and styling
โ โโโ core/ # Core functionality
โ โ โโโ scheduler.ts # Cron scheduler
โ โ โโโ executor.ts # HTTP executor
โ โ โโโ daemon.ts # Daemon manager
โ โโโ db/ # Database layer
โ โ โโโ index.ts # SQLite setup
โ โ โโโ models.ts # Data models
โ โโโ utils/ # Utilities
โ โ โโโ curl-parser.ts # Curl command parser
โ โ โโโ cron-validator.ts # Cron validation
โ โโโ index.ts # Entry point
โโโ install/ # Installation scripts
โ โโโ install.sh # Linux/macOS installer
โ โโโ install.ps1 # Windows installer
โ โโโ kuro.service # systemd service
โโโ scripts/
โโโ build-all.ts # Multi-platform build
Q: Do I need Bun installed to use Kuro? A: No! The installation provides a standalone binary with no dependencies.
Q: Can I use Kuro without the daemon? A: Yes, but tasks won't execute automatically. The daemon is required for scheduled execution.
Q: How do I update Kuro? A: Re-run the installation script. It will download the latest version.
Q: Where are my tasks stored? A: In an SQLite database in your platform's data directory (see Configuration).
Q: Can I import/export tasks? A: Not yet, but it's planned for a future release!
Q: What happens if my VPS restarts? A: The daemon auto-starts on boot (when installed as a service).
Q: Can I run multiple instances? A: Currently no. The daemon uses a PID file to prevent multiple instances.
# Check daemon status
kuro
# Select "Daemon control" โ "Show status"
# Check logs (Linux)
journalctl -u kuro -f
# Check PID file
cat ~/.kuro/kuro.pid- Verify daemon is running
- Check task status (should be "running")
- View task logs for errors
- Verify cron expression is valid
- Ensure you have write permissions
- On Linux/macOS, try with
sudo - On Windows, run PowerShell as Administrator
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
MIT License - see LICENSE for details
Built with:
- Bun - Fast JavaScript runtime (with native SQLite)
- @clack/prompts - Beautiful CLI prompts
- cron-parser - Cron expression parser
- curlconverter - Curl command parser
Made with โค๏ธ by the Kuro contributors
โญ Star on GitHub โข ๐ Report Bug โข ๐ก Request Feature