Skip to main content

Cronico

Cronico is a lightweight, YAML-based task scheduler for Unix-like systems.

It lets you define recurring jobs with flexible cron expressions — supporting traditional minute-based syntax, extended formats with seconds, and common shorthand aliases (@daily, @hourly, etc.).

Tasks can include:

  • Retry policies with configurable attempts.
  • Timeouts to kill long-running processes.
  • Environment injection from .env files or inline variables.
  • Working directory control per task.
  • Streaming or buffered logs for stdout/stderr.

Cronico is designed to run as a long-lived daemon (via systemd or similar) and can reload its configuration on SIGHUP without restarting the process.

tasks:
  example_task:
    description: |
      Classic cron expression: every 5 minutes
    cron: "*/5 * * * *"
    command: "echo 'Hello, World!'"
    retry_on_error: true
    max_attempts: 3
    env_file: ".env"
    timeout: 60  # seconds
    working_dir: "/path/to/dir"
    environment:
      MY_VAR: "value"

  custom_env:
    cron: "*/5 * * * *"
    environment:
      GREETING: "Hola"
    command: |
      echo "$GREETING from Bash at $(date)"

  every_minute_at_second_10:
    description: |
      Extended with seconds: every minute, at the 10th second
    cron:
      minute: "*"
      hour: "*"
      day: "*"
      month: "*"
      weekday: "*"
      second: 10
    command: "echo 'Run at second 10 of every minute'"

  every_30_seconds:
    description: |
      Classic with seconds: every 30 seconds
    cron: "*/1 * * * * 0,30"
    command: "echo 'This runs at second 0 and 30 of each minute'"

  daily_with_seconds:
    description: |
      Daily at 03:00:15
    cron:
      minute: 0
      hour: 3
      day: "*"
      month: "*"
      weekday: "*"
      second: 15
    command: "echo 'Daily at 03:00:15'"

  shorthand:
    description: |
      Shorthand: daily, at 00:00
    cron: "@daily"
    command: |
        echo "Supported aliases:"
        echo "- @yearly: 0 0 1 1 *"
        echo "- @annually: 0 0 1 1 *"
        echo "- @monthly: 0 0 1 * *"
        echo "- @weekly: 0 0 * * 0"
        echo "- @daily: 0 0 * * *"
        echo "- @midnight: 0 0 * * *"
        echo "- @hourly: 0 * * * *"

  with_shebang:
    description: |
      You can use a shebang to specify the interpreter to use.
    cron: "*/10 * * * *"
    command: |
      #!/usr/bin/env python3

      import datetime
      print("Hello from Python at", datetime.datetime.now())

  another_shebang_example:
    description: |
      Another one...
    cron: "*/10 * * * *"
    command: |
      #!/usr/bin/env perl

      use strict;
      use warnings;
      my ($sec,$min,$hour) = localtime();
      print "Hello from Perl at $hour:$min:$sec\n";

  and_another_shebang_example:
    description: |
      I think you get the idea.
    cron: "*/10 * * * *"
    command: |
      #!/usr/bin/env perl

      use strict;
      use warnings;
      my ($sec,$min,$hour) = localtime();
      print "Hello from Perl at $hour:$min:$sec\n";

Release files for cronico 0.9.18

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for cronico 0.9.18
File Size Uploaded
cronico-0.9.18.tar.gz 9.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for cronico 0.9.18
File Interpreter ABI Platform
cronico-0.9.18-py3-none-any.whl Python 3 none any Details

Total release size: 18.7 kB

Release files / cronico-0.9.18.tar.gz

Download URL cronico-0.9.18.tar.gz
Size 9.7 kB
Tags Source
SHA-256 checksum
How to use checksums
8a6f903834861cab45207cb97412ddb3d24f642917b494918e4ac99de602be19
BLAKE2b-256 checksum
How to use checksums
306c09d1093b17dd84bb26968955bdd9a3edb6dd97fe33d2ded886ef26ab7e20
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.12

Release files / cronico-0.9.18-py3-none-any.whl

Download URL cronico-0.9.18-py3-none-any.whl
Size 9.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
62146cefb69d3be678f973ee32edd3c8db61877884d4804306a908b3305e44ad
BLAKE2b-256 checksum
How to use checksums
21166192405f1ca56b57dfcb7f1497bd4bce747c78e0e4f8ff573d8df5a3073d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.12

Release history Release notifications | RSS feed

This release

0.9.18 This release

2 release files

0.9.17

2 release files

0.9.16

2 release files

0.9.15

2 release files

0.9.14

2 release files

0.9.13

2 release files

0.9.12

2 release files

0.9.11

2 release files

0.9.10

2 release files

0.9.9

2 release files

0.9.8

2 release files

0.9.7

2 release files

0.9.6

2 release files

0.9.5

2 release files

0.9.4

2 release files

0.9.2

2 release files

0.9.1

2 release files

0.9.0

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page