AI-Powered Cron Job Generator with Modern Web UI
Transform natural language into cron expressions using AI. Built with privacy in mind, supporting both local (Ollama) and cloud AI models (Google Gemini, OpenAI, Anthropic Claude, etc.).
-
🤖 Multi-Model AI Support
- Local Privacy: Ollama (Llama 3, Mistral) - No internet required
- Cloud Power: Google Gemini, OpenAI GPT-4o, Anthropic Claude, DeepSeek, xAI Grok
- Smart Fallback: Automatic model switching when Ollama is unavailable
-
💻 Modern Web UI
- Natural Language Chat: Generate cron jobs conversationally
- Backup Wizard: Guided file backup scheduling with progress tracking
- AI Settings: Configure models, API keys, and endpoints
-
⚡ Smart Features
- Instant Validation: Verify cron expressions before scheduling
- Next Run Preview: See upcoming execution times
- One-Click Deploy: Add to system crontab directly from UI
- Python 3.10+
- Poetry (recommended) or pip
git clone https://github.com/dev-droid/ai-cron.git
cd ai-cron
poetry installgit clone https://github.com/dev-droid/ai-cron.git
cd ai-cron
pip install -r requirements.txt # Or: pip install -e .- Windows: Download Ollama
- macOS:
brew install ollama - Linux:
curl -fsSL https://ollama.com/install.sh | sh
After installing Ollama, pull a model:
ollama pull llama3The easiest way to run ai-cron with all dependencies:
# Clone the repository
git clone https://github.com/dev-droid/ai-cron.git
cd ai-cron
# Start with Docker Compose
docker-compose up -d
# Access Web UI at http://localhost:8080See DOCKER.md for detailed Docker configuration and deployment options.
# Using Poetry
poetry run python -m aicron.main web --port 8080
# Using pip
python -m aicron.main web --port 8080Then open http://localhost:8080 in your browser.
# Using Poetry
poetry run python -m aicron.main "Backup home folder every Friday at 5pm"
# Using pip
python -m aicron.main "Backup home folder every Friday at 5pm"For users in regions requiring a proxy (e.g., China for Google Gemini):
# Set proxy for AI API requests
export AICRON_PROXY="http://127.0.0.1:7890"
# Or set system-wide proxy (automatically detected)
export HTTP_PROXY="http://127.0.0.1:7890"
export HTTPS_PROXY="http://127.0.0.1:7890"Configure via the Web UI Settings tab or export as environment variables:
# Google Gemini
export GEMINI_API_KEY="<YOUR_GEMINI_API_KEY>"
# OpenAI
export OPENAI_API_KEY="<YOUR_OPENAI_API_KEY>"
# Anthropic Claude
export ANTHROPIC_API_KEY="<YOUR_ANTHROPIC_API_KEY>"ai-cron/
├── aicron/
│ ├── __init__.py # Package version
│ ├── main.py # CLI entry point (Typer)
│ ├── web.py # Web UI (NiceGUI)
│ ├── llm.py # AI model integration (LiteLLM)
│ ├── cron.py # Cron validation & system integration
│ ├── llm_tools.py # File system context tools
│ └── ollama_utils.py # Ollama installation checks
├── tests/
│ └── test_llm_logic.py # Unit tests
├── pyproject.toml # Poetry dependencies
├── LICENSE # MIT License
└── README.md # This file
Run tests:
poetry run pytestThis project is licensed under the MIT License. See the LICENSE file for details.
Copyright (c) 2025 dev-droid. All rights reserved.
Contributions are welcome! Please feel free to submit pull requests or open issues for bugs and feature requests.