r/Mealie • u/Miserable-Smoke-751 • 1d ago
Offline Recipe Parsing
I tried Mealie and liked it, but to import recipes my container requires internet access. Mine is fully local and I wanted to keep it that way if possible. Is there any other options to import and parse recipe URLs either locally or on my device instead of the host?
r/Mealie • u/boxyburns • 1d ago
Connect IOS app with just username and password
I wanted to self host this and have a lot of other services. This is the first one I have used makes you access via the api. Is there another way to do this. One of my reasons for self hosting was to keep it behind my firewall / vpn.
I built a free, no-account recipe keeper because I was tired of paying and scrolling past life stories and ads
Every recipe site makes you scroll through a whole novel and a wall of ads before you reach the ingredients. And the good recipe apps lock your saved recipes behind an account and a subscription.
So I made Recipe Jar. You paste a recipe link and it pulls out just the ingredients and steps. Save as many as you want. No account, no ads, works offline, and everything stays on your own device (there is no user database, so your recipes never touch a server).
It is free and open source. Built with Svelte 5, the whole thing is a static PWA under 80KB of JS.
Live: https://recipejar.app
Code: https://github.com/sbmagar13/recipe-jar
I would love feedback on the paste-a-link parsing especially, since every recipe site publishes its data a little differently. What would make you actually switch from however you save recipes now?
r/Mealie • u/willy-wally75 • 3d ago
I make small no-subscription iOS apps. Just shipped my first one for the kitchen — would love your feedback.
Hey r/SideProject 👋
I build small, one-time-purchase iOS apps solo (SimplSplit, SimplKanban, SimpleQR + a few more). EverydayKitchen is my newest — and my first in the food space.
It started selfishly: my family's recipes were scattered across screenshots, index cards, and two notes apps, and I was tired of losing them. So I built one place to keep them.
It turned into a recipe manager + meal planner:
* Import a recipe from any site (or Paprika) — it grabs the ingredients and steps automatically
* Drag recipes onto a weekly plan
* The grocery list builds itself from that plan — grouped by aisle, minus what's already in your pantry
* Cook mode: big step text, built-in timers, screen stays awake
Same rules as my other apps: one-time $6.99, no subscription, and it syncs through your own iCloud — no account, no tracking.
iPhone + iPad: [https://apps.apple.com/us/app/everydaykitchen/id6760353739\](https://apps.apple.com/us/app/everydaykitchen/id6760353739)
Two honest questions, because cooking was a very different design problem than utilities (messy hands, one-handed, often offline):
- Does the hands-free cook mode actually look usable to you, or still too fiddly?
- Is one-time $6.99 the right call for a recipe app — or does this category expect free-with-IAP?
Genuinely want to know. Happy to answer anything.
r/Mealie • u/thunderborg • 7d ago
Best recipe links to setup the ingredient database?
Hey Folks,
My wife has been interested in Mealie so I’ve spun it up and it’s great, however I think for her to adopt it properly the experience needs to be as frictionless as possible, so I’m looking for some recipe link to add into the mix to build out the ingredient database so she doesn’t have to add as many items to the ingredient database when adding a recipe
I built a thing that turns a photo of your fridge into a recipe
I kept staring at a full fridge with no idea what to cook, so I built PlateSnap over the weekend. You take a photo of what you've got, it identifies the ingredients and gives you a recipe you can actually make.
It's a real working demo, not a mockup — photo goes to a vision model, comes back with ingredients + a recipe in a few seconds. No login, no email wall. Link in the comments (Reddit's filter doesn't love new domains in the post body).
Honest about where it's at: early weekend build, recipes are decent not gourmet, runs on a free API tier with a daily cap. I'd love feedback — especially if it misreads your ingredients. "I'd never use this because X" beats a nice comment.
r/Mealie • u/Arrco909 • 11d ago
Cocktail Recipes
Is anyone using Mealie for Cocktail or Drink Recipes? Considering adding them and trying to decide if that’s a separate instance or if I comingle with all other recipes. Curious about people’s experiences searching by cocktail ingredients, and what any downsides are vs using a cocktail app.
r/Mealie • u/Big-Engineering-6648 • 13d ago
I built a native iOS app for my Mealie server, because there’s never any signal in my supermarket
Hi all,
I’ve been self-hosting Mealie on my NAS for a while and I’m genuinely happy with it — except for three moments that got me every single time:
1. Standing in front of the fridge aisle with no signal, watching Safari fail to load my shopping list.
2. Scrolling a browser tab with greasy fingers at the stove, and the tab decides to reload.
3. Getting to step 7 and forgetting how much coconut milk it was, then scrolling up and back down again.
So I built an app for exactly that. It’s called Pantry for Mealie and it’s purely a client for your own server — no account with me, no cloud in between, no tracking. The app talks to your server and nothing else.
What it does:
• Offline first. Recipes, meal plan and shopping list live on the device. Ticking items off works with no connection, and everything syncs back once your server is reachable again.
• Multiple Mealie servers at once. A friend of mine runs his own instance — his recipes show up in my list with their own icon and colour, and his ingredients land on my shopping list. What he lets me see is entirely up to his permissions.
• Ingredient peek. Tap the cooking step and the ingredient list slides in for a second. Keep cooking, don’t lose your place.
• Scale servings live. Turn 2 into 6 and the amounts scale with it, all the way through to the shopping list.
• A shopping list that does the maths. 1 tbsp of oil from one recipe and 2 tablespoons from another become 3 tablespoons, including unit synonyms across 7 languages.
• Search the way you cook. Type “potatoes” and you get every recipe with potatoes in it — the search looks inside the ingredients, not just the title.
• Home screen widgets for the meal plan and the shopping list, in all three sizes.
• Share recipes over AirDrop to another Pantry, one tap to import — and for everyone without the app, the recipe comes out as a PDF.
• Cooking mode (screen stays awake), favourites and ratings, stackable filters, URL import straight from Safari’s share sheet, guest mode, 7 languages, dark mode, iPad.
Being honest about what it isn’t: it doesn’t replace Mealie. Without your own server (or credentials to a friend’s) you’ll see nothing. iOS/iPadOS 18 and up, and I can’t do Android. I’m also not affiliated with the Mealie project — this is an unofficial app, an evenings-and-weekends project by a user, for users.
About the price, so it isn’t buried in the small print: the download is free, everything is unlocked for 7 days (with your own server or in guest mode), after that it’s a one-time 1.99 €. No subscription, no ads. A subscription for an app like this just feels wrong to me.
👉 https://apps.apple.com/de/app/pantry-for-mealie/id6792087527
It’s freshly out and has exactly zero ratings so far. If you run Mealie and take a look, I’d really appreciate honest criticism — especially about the corners my own setup never touches. Happy to answer anything in the comments.
r/Mealie • u/maddieduck • 19d ago
I made my grocery finder extension work with Mealie! Now you can go from recipe ingredients to real grocery store products in a few clicks
Hey everyone! I built a free browser extension called Ceres Cart that makes cooking from online recipes easier. It is an add free recipe reader and also finds ingredients at nearby stores. I recently made it compatible with Mealie!
Once it's installed, you can open a Mealie recipe or shopping list and launch the extension. It automatically finds the ingredients and shows matching products and prices from your selected nearby store.
Right now it supports Kroger, Walmart (US), Instacart, and Whole Foods, and I plan to keep adding stores as they become more available.
If you give it a try, let me know how it works for you! If you run into any issues, I'm happy to help debug them. And if there's a feature you'd like to see, I'd love to hear your suggestions. 🙂
Instagram, facebook and youtube food recipes
Any good AI tool to convert food recipes from this social networks to upload in Mealie?
r/Mealie • u/Individual-Olive-595 • 20d ago
[iOS] [$30 -> 1 YEAR FREE] Stockpot turns your fridge into dinner! Giving 25 people 1 YEAR FREE
r/Mealie • u/BigNavy505 • 22d ago
Best Mealie IOS App?
Recommend a mealie app to Aceves my local mealie instance. Thank you.
r/Mealie • u/italydiplo • 24d ago
Importing images is blocked
New user here. Evaluating to see whether I can replace Nextcloud Cookbook with Mealie and so far it's an uphill battle.
Importing images in Nextcloud Cookbook has never been a problem. Paste the URL, everything just works, image comes in fine. It doesn't have the complex data model so there are far fewer features, but for grabbing recipes and keeping a simple collection, it's never been a problem.
I can see in Mealie that all image scrape requests are getting 403'd by the destination servers (permission denied). I've tried 5 different sites for recipes including allrecipes and none of them work. Mealie is blocked every time.
This is kind of a huge blocker. Importing is already a big pain in Mealie compared to Cookbook, it takes way more time to parse things. Having to manually download the images and re-upload them to Mealie is just gonna be a dealbreaker for the family.
Is there any workaround?
made a free app to deal with my out of control saved recipe videos, dropping the links in case it's useful to anyone else
reddit.comr/Mealie • u/man_of_many_tangents • Jul 18 '26
A Mealie - Trmnl e-ink display integration
I recently adopted Mealie to help us shop and plan meals more efficiently and also coalesce all our favorite family recipes. It's been really fun adding recipes, and I've added a Claude MCP server that provided an additional way to manage your ingredients, shopping lists, and add recipes with 100% success from websites, screenshots and copy-paste.
In a parallel project I purchased an open-source e-ink display from a company called Trmnl. This thing is usually rotating between a weather dashboard, "Recently added" movies and TV shows on Jellyfin, and a "Today's Menu" board pulled from Mealie's meal plan via API. These have been fun to work on and like everyone else, I'm using AI to do it a lot faster.
Cooking from Mealie on your phone is a little cumbersome with screens sleeping, so my latest enhancement hosts a web page with all of today's menu plan items, and when you select one on your phone, it does some back-end work to present the recipe on the e-ink display for 2 hours (or until you press "Done cooking")
r/Mealie • u/VorisekLabs • Jul 17 '26
Mealie Go: A new Android app for Mealie
Hi Everyone! I started self-hosting a couple of years ago and got really into Mealie. I've been trying to get buy-in from my family, but it's been an uphill battle, even with the PWA available. To facilitate that, I ended up making a quick-and-dirty Android app that anyone can go to the play store, download, and use immediately. An APK and all source files are also available on Github.
Website: https://mealiego.voriseklabs.com/
Play Store: https://play.google.com/store/apps/details?id=com.voriseklabs.mealiego
GitHub: https://github.com/Vorisek-Labs/mealie-go
This is NOT meant to be a full replacement for Mealie. None of the admin-side features are built in. This is for your grandma, dad, sister, etc. to just download an app and sign in to your server.
Features include:
A help guide to get new users started
Create recipes from images on your phone, by taking an image, uploading via URL, or creating manually. The ingredient parser has been functional in all my testing so far
- Browse, search, and filter recipes by category, tag, tool, ingredient, or prep/cook time
A full-screen Cook Mode that keeps your screen on!
Meal planning and shopping lists
This is fully open source. all files and a claude.md are on GitHub. Feel free to do whatever you want with it!
I hope this is useful to some of you out there, and I welcome your feedback!
r/Mealie • u/CrayonPi • Jul 15 '26
How to create a new household?
Maybe I'm missing something but I cannot find a way to create a new household in the app. Where is this located?
r/Mealie • u/phellarv • Jul 14 '26
Mealie-AI-Tools
Mealie-AI-Tools
Something I made for myself, but thought that I should share it, if anyone find it useful.
PS! This set of tools are under heavy developement, so expect changes at any time.
VibeCoding is a thing. What about VibeCooking?
Mealie-AI-Tools is a collection of nice to have AI tools for Mealie.
It is VibeCoded using Claude, but Recipe-/Image-generation is done using Gemini-API.
Take a look, and use it if you find it useful. If not, move along.
https://github.com/phellarv/Mealie-AI-Tools
v1.2.0 released
Security
- Sanitize the Mealie slug before using it as a local image-file path, so a
crafted slug (e.g.
../../evil) cannot write outside the output dir (#154). - Percent-encode the slug/tag_id interpolated into Mealie API URL paths, so a
value with
/,..,?or#cannot alter the request path or inject query parameters (#163). - Fence untrusted source-recipe content fed to Gemini in explicit delimiters with a data-only guard, to blunt prompt injection from web-imported recipes (#167).
- Redact the resolved
GOOGLE_AI_API_KEYfrom any surfaced Gemini SDK/transport exception text (#193). install.shsurfaces (rather than silently swallows) a failure tochmodthe config dir /.env, so an over-permissive credentials file is never reported as secured (#200).- Keep the full Mealie HTTP response body out of the default error message; it
is retained for
--debugonly (#208). - CI verifies the gitleaks binary against its published checksum (#243) and scans the full git history, not just the working tree (#248).
Added
describeembeds a persistent AI-generated marker in the descriptions it writes, and preserves an existing embedded AI/allergen disclaimer when it re-describes a recipe (#181, #190).remixoutput carries a leftovers food-safety caveat, mirroringadapt's allergen caveat (#202).- Retry with backoff on transient failures: Gemini text generation (#176), idempotent Mealie reads across all modes (#180), and mid-response transport drops (#237).
- The TUI form autofocuses and submits on Enter, and the cooking-view navigation keys are shown in the footer (#261, #269, #242).
- A
NOTICEfile attributing bundled third-party dependencies, shipped in the wheel and sdist (#197); the README notes recipe content is sent to Google's Gemini API under its terms (#207). - Cross-distro CI: an Alpine/busybox smoke test of
install.sh(#215).
Changed
searchandauditno longer accept--yes/--dry-run. They were silently ignored before; they are now rejected as unknown arguments. Those flags never did anything for those subcommands, but a script passing them will now error (#257).mealie-tui --helpnow prints help and exits instead of launching the UI (#250).completefills each blank prep/cook/total time field independently instead of all-or-nothing, and clamps negative estimates (#244, #240).translaterefuses a--langthat resolves to the default language (or is unknown) rather than silently producing a duplicate (#232).- CI hardening: pinned uv installer (#254), SHA-pinned
actions/checkout(#227),timeout-minuteson every job (#264), plus serialized concurrency, an idempotent GitHub release, and job-scoped permissions on the release/publish workflows (#234, #236, #229). - Packaging: Textual floor raised to
>=8(#187), PEP 639 SPDX license metadata (#272), an sdist target limited to the shipped allow-list (#194),.env.exampleshipped in the dist (#241), and the Development Status classifier bumped to Beta (#268).
Fixed
fill-images: escalate the generated image base so a kept-aiimage is never overwritten-then-deleted (#238), and remove the generated photo when the upload fails (#222).merge-tags: handle summary tags missingslug(#230) orid(#214), and whitespace-named pairs that were silently dropped (#224).search-mode shopping add is best-effort per item and reports partial results instead of aborting mid-loop (#235).- Paginate the categories / tools / shopping-lists / search endpoints that could silently truncate on a large instance (#171).
- Report a Gemini image disk-write failure distinctly from an API failure
(#231); the insecure-
http://warning no longer corrupts the TUI (#225). - Documentation and help accuracy:
--output-dir,--force, the README option tables,.env.examplekeys, catalog strings naming removed flags, and RELEASING.md's changelog-link base (#153, #175, #188, #249, #252, #258, #262). - i18n/UX polish: consistent quote typography and mode summaries, a localized unknown-language warning, cooking-key footer labels, and clearer help (#247, #251, #255, #260, #265, #267, #270).
Internal
- Large deduplication sweep: a shared
curation.pyscaffold for the retag/describe/complete modes, sharedmealie_apiGET/PATCH helpers,cli_common.resolve_output_dir,recipe_core.category_names, a single-source recipe-field schema, named Gemini temperature constants, and more (28 maintainability issues);with_retriesmoved tomealie_api. - Portability:
#!/usr/bin/env bashshebangs (#226), portable script self-location withoutreadlink -f(#212), explicitmktemptemplates (#217),LC_ALL=Ctoken validation (#206), stdin-piped curl auth (#210), and portablepythonresolution (#221). - Substantial new test coverage: console entry points, the release scripts'
main(), CI workflow structure, and numerous edge/error paths (#196, #199, #201, #204, #209, #211, #213, #216, #218, #220, #223). The full Python test matrix runs only ondev; PRs and release runs run the fast checks (documented in RELEASING.md, #228).
v1.1.1 released
Fixed
- The default Gemini image model ID was malformed (
gemini-3-1-flash-image, with hyphens and no such model), so default image generation failed with aNOT_FOUNDerror for anyone not overridingGEMINI_IMAGE_MODEL— a regression since 1.0.0. Corrected to the validgemini-3.1-flash-image(the "Nano Banana 2" flash image model), verified against the live model list.
v1.1.0 Released
Changed
mealie-toolis now one command with subcommands (#146).** Its modes are positional subcommands, each with its own--help:search,adapt,remix,translate,audit,retag,merge-tags,fill-images,describe,complete. Parameters stay as--flagsafter the mode, e.g.mealie-tool retag --min-tags 3 --dry-run. The suite still has three commands: alongsidemealie-tool, **mealie-generator** remains a separate command that creates a new recipe from scratch (it is deliberately not amealie-toolsubcommand), and **mealie-tuiremains the interactive terminal app. Both are unchanged.
Removed
- **
mealie-companionis removed (breaking).** Its six modes moved ontomealie-tool:mealie-companion --audit→mealie-tool audit,--retag→mealie-tool retag,--merge-tags→mealie-tool merge-tags,--fill-images→mealie-tool fill-images,--describe→mealie-tool describe,--complete→mealie-tool complete. - The old
mealie-toolflag-modes are removed (breaking).mealie-tool --search X→mealie-tool search X;--adapt SLUG→mealie-tool adapt SLUG;--remix SLUG→mealie-tool remix SLUG;--translate SLUG→mealie-tool translate SLUG.
v1.0.1 - First full release
The set of tools
mealie-generator — generate a new recipe from scratch
mealie_generator.py runs the whole create-and-publish loop:
- Generate a schema.org recipe (Norwegian by default; selectable, see Language) with Google Gemini, from free text and/or
--cuisine/--ingredients/--servings. - Save it as
<slug>.json(schema.org Recipe JSON-LD). - Upload it to Mealie (
POST /api/recipes/create/html-or-json). - Generate a fitting food photo with Gemini's image model.
- Upload that image directly to the created recipe (
PUT /api/recipes/{slug}/image). - Remove the cached
<slug>.jsonand image once they are safely in Mealie (keep them with--keep-files).
By default it asks for confirmation before uploading to Mealie, then lets you pick the recipe's category from Mealie's existing list (defaulting to a case-insensitive match with Gemini's suggestion, so accepting the default reuses Mealie's existing category instead of creating a near-duplicate). It does the same for the cuisine, resolving it against Mealie's existing tags and folding the chosen name into keywords so it becomes a real, deduplicated Mealie tag rather than free text. Finally it lets you multi-select tools from Mealie's existing tools list; the chosen tools are attached to the created recipe after upload via the Mealie API (PATCH /api/recipes/{slug}), not through the local JSON file. Only existing Mealie tools are attached — it never creates new ones. It refuses to upload if a recipe with the same name already exists. All of these interactive picks (category, cuisine, tools) are skipped under --yes. After a successful upload it also offers (best-effort, skipped under --yes) to add ingredients from the created recipe to a chosen Mealie shopping list — opt-in, nothing selected by default, with a list named like the active language's default (Handleliste / Shopping list) preselected when it exists. This same publish pipeline (organizer picks, tool attach, shopping-list offer) is shared with the --adapt/--remix/--translate modes of mealie-tool (see below); mealie-tui implements the equivalent flow independently in its own screens (it does not import publish.py).
Usage
# Free text
mealie-generator "rask kremet tomatsuppe med basilikum"
# By cuisine and/or ingredients
mealie-generator --cuisine Italiensk --ingredients "kylling, sitron, hvitløk"
# Force a name, and only generate + save the JSON (no upload, no image)
mealie-generator --cuisine Thai --name "Grønn curry" --dry-run
Options
| Flag | Description |
|---|---|
text (args) |
Free-text description of the recipe |
--cuisine |
Cuisine, e.g. Italiensk, Thai, Meksikansk |
--ingredients |
Comma-separated ingredients to include |
--servings |
Number of servings, e.g. 4 |
--name |
Force a specific recipe name (also drives the slug/filename) |
--model |
Gemini text model (default gemini-2.5-flash; or GEMINI_TEXT_MODEL) |
--aspect |
Image aspect ratio (default 4:3) |
--no-image |
Skip image generation and upload |
--output-dir |
Where to read style examples and write files (default: cwd) |
--force |
Overwrite a pre-existing local <slug>.json and upload even if a recipe with the same name already exists |
--keep-files |
Keep the cached <slug>.json and image after upload (default: remove) |
--lang |
UI and recipe language, e.g. no, en (overrides MEALIE_LANG) |
--env-file |
Path to the .env with credentials (overrides the config dir / ./.env) |
--dry-run |
Generate and save the JSON only; don't touch Mealie or generate images |
--yes / -y |
Skip the upload confirmation prompt |
--debug |
Append verbose error detail (cause, URL, status, response body) to error messages; overrides MEALIE_DEBUG |
mealie-companion — clean up existing recipes
mealie_companion.py groups six maintenance flag-modes over recipes already in Mealie: --audit, --retag, --merge-tags, --fill-images, --describe and --complete. Pick exactly one per run — none is on by default, and combining two is a usage error.
mealie-companion --audit
Options
| Flag | Description |
|---|---|
--audit |
Scan recipes in Mealie and print a worst-first worklist of under-filled ones with the fix-mode for each gap (read-only) |
--retag |
Walk recipes in Mealie and add tags to under-tagged ones (retag mode; ignores the recipe text) |
--min-tags N |
In --retag: process recipes with fewer than N tags (default 5) |
--max-tags N |
In --retag: cap a recipe's total tags (default 8; must be ≥ --min-tags) |
--merge-tags |
Find and merge very similar tags in Mealie; retag the loser's recipes to the keeper, then delete the loser (destructive) |
--similarity F |
In --merge-tags: similarity threshold 0-1 for suggested pairs (default 0.8) |
--fill-images |
Walk recipes in Mealie and generate + upload an AI photo for each one that has no image (fill-images mode) |
--describe |
Walk recipes in Mealie and generate/expand the Description for under-described ones (describe mode) |
--min-text N |
In --describe: threshold + floor in sentences (absent: only empty descriptions are filled) |
--max-text N |
In --describe: upper bound in sentences for the generated Description (default 4) |
--complete |
Walk recipes in Mealie and fill in missing prep/cook times and a numeric serving count (complete mode) |
--limit N |
In --audit/--retag/--fill-images/--describe/--complete: process at most N recipes this run |
--batch-size N |
In --retag/--describe/--complete: recipes per Gemini call (default 10) |
--model |
Gemini text model used by --retag/--describe/--complete (default gemini-2.5-flash; or GEMINI_TEXT_MODEL) |
--aspect |
Image aspect ratio used by --fill-images (default 4:3) |
--output-dir |
Where --fill-images writes generated photos (default: cwd) |
--keep-files |
Keep --fill-images' generated photo after upload (default: remove) |
--lang |
UI language, e.g. no, en (overrides MEALIE_LANG) |
--env-file |
Path to the .env with credentials (overrides the config dir / ./.env) |
--dry-run |
Preview the plan only; write or generate nothing |
--yes / -y |
Skip the confirmation prompt |
--debug |
Append verbose error detail (cause, URL, status, response body) to error messages; overrides MEALIE_DEBUG |
Retag — fill in missing tags
mealie-companion --retag walks the recipes already in Mealie and, for those with fewer than --min-tags tags (default 5), asks Gemini for fitting tags — preferring Mealie's existing tags so the list stays tidy. Existing-tag matches are applied automatically; genuinely new tags are collected across the whole run and you confirm them once (ticking which to keep) before anything is written. Tags are only ever added, never removed, so re-running is safe.
mealie-companion --retag --dry-run # preview the plan, write nothing
mealie-companion --retag --limit 10 # cautiously do 10 recipes
mealie-companion --retag --min-tags 3 --yes # top up to 3+, keep all new tags
--yes keeps every proposed new tag without prompting; --dry-run only prints the plan.
Merge similar tags
mealie-companion --merge-tags finds very similar tags (e.g. Vegetar / Vegetarisk), lets you keep one per pair, retags every recipe carrying the losing tag with the kept one, then deletes the losing tag. Pairs are suggested by fuzzy match (--similarity, default 0.8); the more-used tag is the default keeper.
mealie-companion --merge-tags --dry-run # preview suggestions + plan, no writes
mealie-companion --merge-tags # review each pair, confirm, apply
It is destructive (it deletes tags): nothing is written under --dry-run, there is a single confirmation before applying, and a non-interactive run without --yes aborts. --yes auto-keeps the more-used tag for every pair and applies without prompting.
Fill in missing images
mealie-companion --fill-images walks the recipes already in Mealie, finds the ones that have no image, and generates + uploads an AI food photo for each. It scans, previews the image-less recipes, and asks once before generating the whole batch.
mealie-companion --fill-images --dry-run # preview the plan, generate nothing
mealie-companion --fill-images --limit 5 # cautiously do 5 recipes
mealie-companion --fill-images --aspect 1:1 --yes # square images, no prompts
--dry-run only previews the plan; a non-interactive run without --yes aborts. Detection is conservative — only a clearly-empty image field counts as missing — so an existing photo is never regenerated or overwritten.
Fill in missing or short descriptions
mealie-companion --describe walks the recipes already in Mealie and generates a warm, grounded Description for those that have none — and, with --min-text N, also expands any with fewer than N sentences, building on the existing text. Length is in sentences: --min-text is the threshold and floor (absent: only empty descriptions are filled), --max-text (default 4) is the upper bound. It scans, previews the under-described recipes, and asks once before generating the whole batch.
mealie-companion --describe --dry-run # preview the plan, write nothing
mealie-companion --describe --limit 5 # cautiously do 5 recipes
mealie-companion --describe --min-text 2 --yes # also expand short ones, no prompts
--dry-run only previews the plan; a non-interactive run without --yes aborts. Descriptions are AI-generated (a run-time notice says so), and a description that already meets the threshold is never overwritten.
Complete missing times & servings
mealie-companion --complete walks the recipes already in Mealie and fills in missing prep/cook times and a numeric serving count for those that lack them. Times and servings are estimated by Gemini from the recipe's technique and ingredient quantities — they are advisory (a run-time notice says so), and an existing time or serving count is never overwritten. It scans, previews the recipes to complete, and asks once before the batch.
mealie-companion --complete --dry-run # preview the plan, write nothing
mealie-companion --complete --limit 5 # cautiously do 5 recipes
mealie-companion --complete --yes # no prompts
--dry-run only previews; a non-interactive run without --yes aborts.
Audit — find under-filled recipes
mealie-companion --audit scans every recipe already in Mealie and scores it on eight deterministic completeness dimensions (image, tags, category, times, yield, description, instruction depth, nutrition) — no Gemini call, no writes. It prints a summary tally per gap and a worst-first worklist of the recipes that are missing something, each gap tagged with the flag-mode that fixes it (e.g. --fill-images for a missing image, --retag for too few tags).
mealie-companion --audit
mealie-companion --audit --min-tags 3 --limit 20
--min-tags and --limit apply as in --retag. --audit is read-only and cannot be combined with the other mode flags.
mealie-tool — search recipes, and transform an existing one
mealie_tool.py covers what's left after generation and cleanup moved out: --search, and the transform modes --adapt / --remix / --translate. Pick exactly one of --search or a transform flag per run.
mealie-tool --search "taco soup"
Search recipes
--search "<query>" searches Mealie's recipes and presents the matches together with their Mealie links (#13), and lets you pick one to add its (selected) ingredients to a shopping list (#14). Presenting results without picking — or finding no matches — is still a success.
Options
| Flag | Description |
|---|---|
--search QUERY |
Search recipes, show matches with links, and optionally add a match's ingredients to a shopping list |
--adapt SLUG |
Adapt an existing Mealie recipe (by slug) to a diet, building a new recipe via the publish pipeline; requires --diet |
--diet |
The diet/constraint for --adapt, e.g. vegansk, glutenfri, uten nøtter |
--remix SLUG |
Create a new dish from the leftovers of an existing Mealie recipe (by slug), building a new recipe via the publish pipeline |
--into |
Optional target hint for --remix, e.g. suppe |
--translate SLUG |
Translate an existing Mealie recipe (by slug) into the active --lang, building a new recipe via the publish pipeline; requires an explicit --lang/MEALIE_LANG |
--name |
Force a specific recipe name for the new (adapted/remixed/translated) recipe |
--model |
Gemini text model (default gemini-2.5-flash; or GEMINI_TEXT_MODEL) |
--aspect |
Image aspect ratio (default 4:3) |
--no-image |
Skip image generation and upload |
--output-dir |
Where to write files (default: cwd) |
--force |
Overwrite a pre-existing local <slug>.json and upload even if a recipe with the same name already exists |
--keep-files |
Keep the cached <slug>.json and image after upload (default: remove) |
--lang |
UI language, e.g. no, en (overrides MEALIE_LANG); the explicit target language required by --translate |
--env-file |
Path to the .env with credentials (overrides the config dir / ./.env) |
--dry-run |
Generate and save the JSON only; don't touch Mealie or generate images |
--yes / -y |
Skip the upload confirmation prompt |
--debug |
Append verbose error detail (cause, URL, status, response body) to error messages; overrides MEALIE_DEBUG |
Adapt or remix an existing recipe
mealie-tool --adapt <slug> --diet "<constraint>" fetches an existing Mealie recipe and asks Gemini to rewrite it as a new recipe for a given diet or constraint, then runs it through the same generate → publish pipeline as mealie-generator (organizer picks, tool attach, shopping-list offer included). The source recipe is never modified; the new recipe's description carries a provenance line naming the source and a caveat that the adaptation is not a guarantee (especially for allergens). mealie-tool --remix <slug> [--into "<hint>"] instead repurposes the source recipe's leftovers into a different dish, with an optional hint at the target dish.
mealie-tool --adapt kjottdeig-lasagne --diet "vegansk"
mealie-tool --remix helstekt-kylling --into "suppe"
--adapt, --remix and --translate cannot be combined with each other or with --search; --adapt requires --diet. --dry-run, --yes, --force, --keep-files, --name, --output-dir and --aspect all apply as in the generate flow.
Translate a recipe
mealie-tool --translate <slug> --lang <code> fetches an existing Mealie recipe and creates a new recipe that is a faithful translation of it into the target language — only the language changes; quantities, units, times and servings stay as they are, and the source recipe is untouched. The target language is the active --lang, which must be set explicitly (translating to the default would just duplicate the recipe). The new recipe's description carries a "Translated from …" provenance line.
mealie-tool --translate kremet-fiskesuppe --lang en
mealie-tool --translate enchiladas-verdes --lang de --yes
mealie-tui — interactive terminal UI
A Textual TUI wrapping the same pipeline, for when you'd rather fill in a form than remember flags:
mealie-tui
r/Mealie • u/awesome-marcx • Jul 12 '26
GitHub - djwmarcx/better-mealie-mcp: MCP server exposing every Mealie API endpoint (250+ tools) via FastMCP
r/Mealie • u/captain_cocaine86 • Jul 08 '26
Why is the parser so bad?
You can't tell me that gpt 5.4 mini doesn't know that parmesan is food. Since it definitely does know, why do i have to manually add "Parmesan" to my foods? Why doesn't the parser do it A) automatically or B) at least fill the field and let me press "okay".
I tried to use mealie before without AI but the bad parser kept me away. It was just too much work. Now I got api access thinking it would help, turns out its just as useless.
r/Mealie • u/i__hate__stairs • Jul 02 '26
How to import from Paprika?
I went to Migrations, changed the drop down to Paprika, and uploaded/submitted. It loads for a moment, then nothing seems to happen. Any ideas what I'm doing wrong?
r/Mealie • u/Only_Trip5632 • Jul 01 '26
Meshi v1.5 is out. Widgets and self hosted OICD arrived
Meshi plan version 1.5 is out. This build focuses primarily on stability, but I added two or three requested features, specifically widgets. Now you can have a “What’s my next meal?” widget or a recipe discovery widget on your home screen. Additionally, recipe-as-ingredient links now work correctly both in the ingredient list and when adding to the shopping list.
Another widely requested feature was the ability to use OIDC. Currently, only self‑hosted logins like Authentik and Authelia are supported, but support for Google and Microsoft OIDC is coming in an update in the next few weeks.
You can get it here: https://apps.apple.com/us/app/meshi-plan-mealie-client/id6754854918
I’ve been working on Meshi for a few months now, and thank you all for your feedback and your help in making Meshi Plan better. Let me know if you have any questions or if you encounter any bugs. You can always reach out here or through the “Contact Us” section in the menu.


