A command-line manager for delicious kitchen recipes


Version on this page:
LTS Haskell 11.22:
Stackage Nightly 2018-09-28:
Latest on Hackage:

See all snapshots herms appears in

GPL-3.0-only licensed by Jack Kiefer
This version can be pinned in stack with:herms-,3719

Module documentation for

There are no documented modules for this package.


Travis build

HeRM’s: a Haskell-based Recipe Manager (yes, food recipes) for the command line.

Herm’s Interface


  • Add recipes! :)
  • Look at recipes! :D
  • Edit recipes! :DD
  • Serving size adjustment! :DDD
  • Remove recipes :(
  • View metric recipes in imperial units and vice-versa
  • Import recipe files
  • Generate shopping lists
  • Keep track of recipes with tags

What’s new:

  • Set default unit systems, serving sizes, and recipe file path in config.hs!
    • Coming soon: Multi-language support
  • Added support for multi-word tags
  • Check your Herm’s version with -v or --version
  • Herm’s is now on Stackage!


PATH setup

Firstly, make sure that the following is added to your PATH:


Download and install

At the moment, Herm’s can only be compiled from source, but binaries are in the works!

Manually cloning and installing from source with Stack (recommended):
git clone https://github.com/JackKiefer/herms
cd herms
stack update
stack install
Via Hackage and Cabal:
cabal update
cabal install herms
Manually with Cabal:

Your milage may vary with dependency resolution

git clone https://github.com/JackKiefer/herms
cd herms
cabal update
cabal install -j


Command-line interface

Herm’s has a pretty intuitive interface for users familiar with other command-line programs!

Below is the exhaustive list of all commands and their functionalities. Take a gander!


        herms list [-g|--group] [--tags TAGS]           list recipes
                   [--name-only ]
        herms add                                       add a new recipe (interactively)

        herms edit RECIPE_NAME                          edit a recipe

        herms import FILE_NAME                          import a recipe file

        herms remove RECIPE_NAMES                       remove the particular recipes

        herms view RECIPE_NAMES [-s|--serving INT]      view the particular recipes
                                [-c|--convert CONV_UNIT] 

        herms shopping RECIPE_NAMES [-s|--serving INT] generate shopping list for particular recipes

        herms datadir                                  print location of recipe and config files

Available options:

        -h|--help                                      Show this help text

        -v|--version                                   Show version

        RECIPE_NAME                                    index or Recipe name

        --sort SORT_ORDER                              'tags' to sort by tags

        -s|--serving INT                               specify serving size when viewing.
                                                       E.g., 'herms view -s 2 {recipe}' for two servings

        -t|--step                                      View recipe in "one-step-at-a-time" mode
                                                       (press enter between each direction)

        -g|--group                                     group recipes by tags

        --tags TAGS                                    show recipes with particular flags

        --name-only                                    only list recipes by name

        -c|--convert CONV_UNIT                         view the recipe converted to imperial or metric
                                                       E.g., 'herms view 2 -c imperial'

Configuring Herm’s and managing recipe files

Herm’s stores its recipes file, recipes.herms, and configuration file, config.hs, in the same directory. Herm’s keeps track of its location! Run herms datadir to see the full directory path.

config.hs is a pseudo-Haskell-source-code file with several options for configuring the behaviour of Herm’s. It currently supports the following options:

  • defaultUnit : The default unit system to show recipes in. Options: Imperial, Metric, None. Setting to None will simply show recipes in whatever unit system they’re stored in.
  • defaultServingSize : Default serving size to calculate when showing recipes. Can be any non-negative integer; set to 0 for no default. This can be useful when you’re always cooking for the same number of people!
  • recipesFile : The recipes file and relative location. Make sure the file already exists by running touch FILENAME before running Herm’s or it will throw a fit. This option currently supports relative location, as well; if your data directory is ~/herms/data, for example, and you want a recipe file in your home directoy called ~/GrandmasHugeCookbook.herms, set this option to "../../GrandmasHugeCookbook.herms".

In honor of Logan, Utah’s greatest Breakfast & Brunch.

Herm’s Inn