Skip to content

Cron-as-a-service. Hoody Cron wraps the system crontab in a REST API with managed entries, enable/disable toggles, auto-expiration, and per-user isolation. Standard 5-field cron expressions plus macros like @hourly and @daily.

  • Managed Entries - Create, update, delete cron jobs via JSON API with UUIDs
  • Enable/Disable - Toggle jobs on and off without deleting them
  • Auto-Expiration - Set expires_at for temporary jobs that clean themselves up
  • Per-User Isolation - Each system user has their own crontab
  • Raw Crontab - Read and write the full crontab file directly
  • Standard Cron - 5-field expressions (* * * * *) plus macros (@hourly, @daily, @weekly, @monthly, @yearly)
  • Comments & Metadata - Attach human-readable comments to managed entries

All endpoints accessed relative to your Cron service URL:

https://PROJECT_ID-CONTAINER_ID-cron-1.SERVER.containers.hoody.icu

Managed Entries:

Raw Crontab:

System:

Terminal window
# Create a cron job that runs daily at 9 AM
hoody cron entries create root \
--schedule "0 9 * * *" \
--command "/usr/local/bin/backup.sh" \
--comment "Daily backup at 9 AM"
# List all cron entries
hoody cron entries list root
# Update a job's schedule
hoody cron entries update root $ENTRY_ID \
--schedule "0 12 * * *"
# View the raw crontab
hoody cron crontabs get root

1. Create a managed cron entry:

POST Create a cron job that runs every day at 9 AM
/users/root/entries
Click "Run" to execute the request

2. List all managed entries:

GET List all cron entries for root user
/users/root/entries
Click "Run" to execute the request

3. Disable a job temporarily:

PATCH Disable a cron entry without deleting it
/users/root/entries/{id}
Click "Run" to execute the request

Standard 5-field cron expressions:

┌───────────── minute (0-59)
│ ┌───────────── hour (0-23)
│ │ ┌───────────── day of month (1-31)
│ │ │ ┌───────────── month (1-12)
│ │ │ │ ┌───────────── day of week (0-6, Sun=0)
│ │ │ │ │
* * * * *

Common patterns:

ScheduleExpression
Every minute* * * * *
Every hour0 * * * *
Every day at midnight0 0 * * *
Weekdays at 9 AM0 9 * * 1-5
Every Sunday at 3 AM0 3 * * 0
First day of month0 0 1 * *

Macros: @yearly, @monthly, @weekly, @daily, @hourly

Set expires_at on managed entries for temporary jobs that automatically remove themselves:

POST Create a temporary monitoring job that expires in 24 hours
/users/root/entries
Click "Run" to execute the request

For full control, read and write the raw crontab directly:

Read the current crontab:

GET Get the raw crontab for root
/users/root/crontab
Click "Run" to execute the request

Replace the entire crontab:

PUT Replace the raw crontab for root
/users/root/crontab
Click "Run" to execute the request
  • Scheduled backups - Run backup scripts at regular intervals
  • Data processing - ETL jobs, report generation, log rotation
  • Health monitoring - Periodic health checks with auto-expiring entries
  • Temporary tasks - Time-limited monitoring or data collection
  • Maintenance - Cache cleanup, database optimization, certificate renewal