YAML‑first task runner for humans

Makim lets you define repeatable tasks with arguments, conditionals, hooks, scheduling, and remote execution — all in a single .makim.yaml. Clean, documented, CI‑friendly.

CI PyPI version Python versions License Discord
Example .makim.yaml
groups:
  build:
    env:
      GROUP_ENV: group_value
    tasks:
      clean:
        help: Clean build artifacts
        args:
          cache:
            type: bool
            action: store_true
            help: Remove all cache files
        log:
          path: ./logs/clean.txt
          level: err
          format: "% (asctime)s - % (file)s - % (levelname)s - % (message)s"
        run: |
          echo "Cleaning build directory..."
          rm -rf build/
      compile:
        help: Compile the project
        hooks:
          pre-run:
            - task: build.clean
        run: |
          echo "Compiling the project..."

scheduler:
  daily-clean:
    task: build.clean
    schedule: "0 0 * * *"

Install

Makim is a Python package. Install it with pip and add a .makim.yaml to your repo.

pip install makim
# run a task
makim build.compile
# run with an argument
makim build.clean --cache
Why Makim?
Help as first‑class
Every task/arg documents itself.
Smart dependencies
Conditional if and hooks.
Matrix runs
Fan‑out parameters for CI/CD.
Remote exec
Run via SSH with ease.

Features

Everything you need to tame your helper commands.

Help text, everywhere

Detailed help for tasks/args flows straight into the CLI help screen.

Typed task arguments

Types, defaults, and descriptions with validation.

Conditional dependencies

Chain tasks with if rules to adapt at runtime.

Jinja2 templating

Interpolate args, variables, and env in commands and files.

Matrix configuration

Expand tasks over parameter combinations—perfect for CI.

Scheduler

Cron‑like periodic jobs powered by APScheduler.

Remote execution

Execute tasks via SSH with flexible inventory.

File logging

Structured logs with custom format and stream control.

Validation

Schema checks ensure your .makim.yaml stays correct.

How it works

Define tasks in YAML, then run them from the CLI with discoverable help. Hooks and conditionals let you compose robust flows.

makim --help
makim build.clean --help
makim build.compile
makim cron run  # example extension
Read the full documentation
CLI help preview
Usage: makim [OPTIONS] COMMAND [ARGS]...

Makim is a tool that helps you to organize and simplify your helper commands.

Options:
  --version   -v       Show the version and exit
  --file TEXT          Makim config file [default: .makim.yaml]
  --dry-run            Execute the command in dry mode
  --verbose            Execute the command in verbose mode
  --skip-hooks         Skip hooks while executing the command
  --install-completion / --show-completion
  --help               Show this message and exit.

Groups:
  build.clean    Clean build artifacts
  build.compile  Compile the project

Extensions:
  cron           Tasks Scheduler

Playground

Experiment with Makim directly in your browser using Google Colab. Fork the notebook, tweak tasks, and run.

Open Colab notebook
Tip

Use Makim for repeatable dev flows: bootstrapping, lint + test, release pipelines, DB snapshots, or multi‑host ops. Put knowledge in code, not in wikis.

Status & Links

Releases, Python compatibility, license, and community.

CI PyPI version Python versions License Discord