What Penguin Dinner Actually Is
Penguin Dinner is a small open-source utility that handles meal planning and grocery list generation using a Linux-style workflow. It runs in your terminal, reads from recipe databases, and spits out a shopping list organized by store aisle. Nothing groundbreaking, but it works reliably once you get it set up. It's on GitHub under penguin-dinner/penguin-dinner. Clone it, run the install script, and make sure you have Python 3.9 or newer. The docs say 3.10 is preferred. I skipped that detail the first time and spent an hour debugging import errors that had nothing to do with my setup and everything to do with the version mismatch. After installing, you initialize a config file with penguin init. This creates ~/.config/penguin-dinner/config.yaml. That's where you put your dietary restrictions, store preferences, and recipe sources. The default store mapping covers most major US chains — Whole Foods, Trader Joe's, Kroger, Walmart. If you're shopping at a regional chain, you add it manually. The format is straightforward YAML.
Using It Day to Day
The core command is penguin plan --days 7. It pulls recipes from whichever sources you've configured, builds a week of meals, and generates a consolidated shopping list. By default it tries to balance protein and vegetables. You can override this with flags like --max-protein or --vegetarian-only. One thing the README doesn't emphasize enough: the recipe fetcher will quietly skip any recipe that doesn't have a complete ingredient list. I ran into this when my Italian recipe source was missing measurements for several spices. The plan still generated, but those ingredients were absent from my shopping list, which meant I ended up buying everything except the red pepper flakes. I added a required-fields check to my config and it stopped happening.
Penguin Dinner Edge Cases
Here's what nobody tells you about the pantry deduplication system. If you have leftover ingredients from a previous week that aren't marked as consumed, the tool double-counts them as needed. I discovered this after a Tuesday run showed I needed two jars of pasta sauce when I already had one open in my fridge. The workaround is running penguin consume --all at the end of each week before generating the next plan. It marks everything in your current shopping list as used, which clears the cache for the next cycle. Another gotcha: the tool assumes standard US measurements. If your recipes are in grams or milliliters, you need to add a conversion layer. There's a community plugin for metric conversion, but it hasn't been updated since 2023 and breaks on newer Python versions. I wrote a small wrapper script that converts ingredients before feeding them into penguin, and it's been stable for six months.
Get the Full Details

When It Falls Apart
Penguin Dinner isn't going to handle complex dietary needs well. If you're managing celiac disease, nut allergies, or diabetic meal planning across multiple family members, you'll hit limitations fast. The ingredient cross-contamination warnings are basic text checks, not real safety analysis. For serious allergy management, you're better off using a dedicated nutrition app and just pulling the shopping list manually. It also doesn't integrate with delivery services. You get a text list. If you want to shop online, you copy-paste into your grocery app. I built a simple export to CSV that feeds into Instacart's list importer, but that's custom work. If out-of-the-box delivery integration matters to you, look at Planned Kitchen or Mealime instead. The biggest bottleneck is recipe quality. The tool is only as good as the sources it pulls from. I've seen it suggest meals that require six different obscure spices for a single weeknight dinner. The variety algorithm favors novelty over practicality unless you cap it with --max-ingredients 8 or similar constraints.
Bottom Line
It's a solid tool for a straightforward weekly meal plan if you cook at home most days and don't have restrictive dietary needs. Set it up properly from the start, run the consume command every Sunday, and keep your recipe sources clean. It saves me about twenty minutes per week on planning and list-making, which adds up over a year. Not revolutionary, but reliable once you stop fighting its assumptions.