Self-hosted service
TomBursch/kitchenowl avatar
TomBursch/kitchenowl

KitchenOwl: A Self-Hosted Grocery List, Recipe Manager, and Household Finance Tracker

KitchenOwl is a self-hosted grocery list and recipe manager. The backend is made with Flask and the frontend with Flutter. Easily add items to your shopping list before you go shopping. You can also create recipes and add items based on what you want to cook.

3,706 stars244 forksDartAGPL-3.0

At a glance

What is it?
KitchenOwl is a self-hosted AGPL-3.0 app that combines grocery list management, recipe organization, meal planning, and household expense tracking in native mobile and web clients. It is built for households that want to run their own data rather than depend on a cloud service.
Who is it for?
Households that want to self-host their grocery and recipe tooling, avoid cloud services, and use native Android, iOS, or web apps should try KitchenOwl. The critical thing to verify before deployment is the JWT_SECRET_KEY in docker-compose.yml, which ships as PLEASE_CHANGE_ME.
Can I use it commercially?
Yes, with strict conditions. AGPL-3.0 is a network copyleft licence: if people use a modified version over a network, for example as a hosted service, you must offer them its source code under the same licence.
Is it still maintained?
Yes. The repository last received commits 3 days ago.
What is it written in?
Mainly Dart, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 27, 2026, and from our analysis. They are not legal advice.

Editorial analysis

What KitchenOwl Solves and Who It Is For

KitchenOwl addresses a specific household coordination problem: keeping a shopping list in sync across multiple people, connecting it directly to recipes and meal plans, and tracking what the household spends. Cloud-based grocery apps solve the sync problem but keep the data off your machines. KitchenOwl keeps everything on a server you control.

The self-hosting requirement is the defining constraint. Running KitchenOwl means maintaining a Docker host, not just downloading an app. The intended users are households that already run home servers or have a NAS with Docker, and want a purpose-built tool rather than a generic notes or spreadsheet solution.

The feature set as described in the README covers: adding items to a shopping list and syncing them in real-time with multiple users; creating and managing recipes; generating shopping lists from selected recipes; building a meal plan; sharing recipes with friends and family; and tracking expenses and balances across the household. A partial offline mode lets the shopping list remain usable when there is no network connection.

Architecture: Flutter Frontend, Flask Backend, Docker Deployment

KitchenOwl uses two separate technology stacks joined through Docker. The backend is a Python Flask application housed in the kitchenowl-backend repository. The frontend is written in Dart using Flutter, which compiles to native Android, iOS, Windows, macOS, Linux, and web targets. The Dockerfile in this repository builds both the Flutter web app and the Flask backend into a combined container image.

The Flutter web build step in the Dockerfile shows the process: it clones the Flutter stable branch, enables web support, runs flutter packages get, and then builds for production with:

dockerfile
RUN flutter build web --release --no-web-resources-cdn

The backend builder uses python:3.14-slim and uv as the package installer, building C extensions for a set of native dependencies including libxml2, libxslt, OpenBLAS, LAPACK, and libicu.

For production deployment, Docker Hub hosts the pre-built images as tombursch/kitchenowl-web and tombursch/kitchenowl-backend. This means most users do not need to build from source. The repository also hosts a Python client library and a Home Assistant integration as separate projects.

Self-Hosting KitchenOwl with Docker Compose

The standard deployment uses the included docker-compose.yml with two services. The web frontend listens on port 80, and the backend stores data in a named Docker volume:

yaml
services:
  front:
    image: tombursch/kitchenowl-web:latest
    restart: unless-stopped
    ports:
      - "80:80"
    depends_on:
      - back
  back:
    image: tombursch/kitchenowl-backend:latest
    restart: unless-stopped
    environment:
      - JWT_SECRET_KEY=PLEASE_CHANGE_ME
    volumes:
      - kitchenowl_data:/data

The JWT_SECRET_KEY value ships as PLEASE_CHANGE_ME and must be replaced with a random secret before exposing the instance to any network. This is the only mandatory configuration change for a basic deployment.

Alternative compose files are included for specific setups: docker-compose-postgres.yml for PostgreSQL storage, docker-compose-rabbitmq.yml for RabbitMQ message brokering, and docker-compose-single.yml as a single-container variant. A Home Assistant integration is also available through HACS.

An optional MCP endpoint is available in the backend; enabling it requires setting KITCHENOWL_MCP_ENABLED=true in the backend environment. The README's self-hosting guide at docs.kitchenowl.org/latest/self-hosting/ documents additional configuration for production environments.

Recipe Import, Mobile Apps, and Home Assistant

KitchenOwl integrates with the recipe-scrapers Python library to import recipes directly from web pages. This allows users to point at a recipe URL and have the ingredients and steps pulled into the app without manual entry. The README credits recipe-scrapers as a dependency for this feature. What sites are supported depends on what that library covers, not on KitchenOwl itself.

Mobile apps are available on three channels: Google Play, F-Droid for users who prefer open-source distribution without Play Services, and the Apple App Store for iOS. Desktop apps for the platforms Flutter supports are also available from the releases page. These all connect to the self-hosted backend, so the app is useful only if you have an instance running.

The Home Assistant integration installs via HACS at the standard HACS repository URL and connects KitchenOwl's shopping lists to Home Assistant automations. The exact capabilities of the integration are documented separately in the kitchenowl-ha repository, not in this repository's README.

Translation is handled through Weblate. The app supports multiple languages, and new translations can be contributed through the Weblate project without requiring a code change in the repository.

Alpha Status, AGPL-3.0 License, and Real Limitations

The README is explicit about the project's status. The current status checkbox reads: "Public Alpha: Still working on stuff (rarely things might break)." The two subsequent milestones, Public Beta and full Public release, are unchecked. This is not hedging language; it is a documented statement that stability is not guaranteed at the current release.

The AGPL-3.0 license carries specific obligations. If you run KitchenOwl as a network service and modify the code, you must make those modifications available under the same license. For households running a private instance with no modifications, this typically has no practical impact. For any commercial deployment or custom-fork scenario, AGPL-3.0 requires careful legal review of the distribution and network service clauses.

Offline support is described as partial. The README says you "don't lose track of what to buy even when there is no signal," which implies read access to the shopping list works offline. Full functionality including recipe management, expense tracking, and multi-user sync requires an active connection to the backend.

The repository is split across multiple GitHub projects: the main Flutter frontend here, the Flask backend in kitchenowl-backend, the website in kitchenowl-website, a Python client in kitchenowl-python, and the HA integration in kitchenowl-ha. Issues, pull requests, and changelogs are split across these repositories.

Mealie as the Primary Alternative for Recipe-Focused Users

Mealie is a self-hosted recipe manager that covers recipe storage, meal planning, and shopping list generation. It is a well-known project in the self-hosted community and is frequently compared to KitchenOwl in user discussions, as the related searches confirm.

The key difference in scope is that KitchenOwl combines the recipe and meal planning features with real-time multi-user grocery list sync and household expense tracking. Mealie focuses primarily on the recipe and meal planning side. KitchenOwl's expense and balance tracking has no equivalent in Mealie's core feature set.

For teams that only need recipe management and meal planning and prefer a different UI model or license, Mealie is the direct comparison. KitchenOwl is the stronger fit when the shopping list and household expense tracking are as important as the recipe library. Both require self-hosting and both use Docker for deployment, so the operational overhead is similar. KitchenOwl's native Flutter apps on Android, iOS, and desktop are a concrete advantage if the team uses those platforms; Mealie's frontend is web-only.

Editorial conclusion

Households that want to self-host their grocery and recipe tooling, avoid cloud services, and use native Android, iOS, or web apps should try KitchenOwl. The critical thing to verify before deployment is the JWT_SECRET_KEY in docker-compose.yml, which ships as PLEASE_CHANGE_ME. The project is explicitly in public alpha, so minor breakage is acknowledged as possible. Teams that need an AGPL-3.0-compatible license posture or production-grade stability should check the roadmap and current release status before committing. The most recent release is v0.7.10, published on 2026-07-26, and the last push to the repository was on 2026-09-26.

Frequently asked questions

How do I use KitchenOwl?

KitchenOwl requires a self-hosted backend. The standard setup uses docker-compose.yml from the repository: set JWT_SECRET_KEY to a random secret, run docker compose up, and then access the web UI at port 80. Mobile apps connect to the same backend from Android (Google Play or F-Droid) or iOS (App Store). Full setup documentation is at docs.kitchenowl.org/latest/self-hosting/.

How does KitchenOwl compare to Mealie?

Both are self-hosted recipe and meal planning tools deployable via Docker. KitchenOwl adds real-time multi-user grocery list sync and household expense tracking that Mealie does not include in its core feature set. KitchenOwl also ships native Flutter apps for Android, iOS, and desktop; Mealie's frontend is web-based.

How does KitchenOwl compare to Bring?

Bring is a cloud-based grocery list app. KitchenOwl is self-hosted under AGPL-3.0, meaning your data stays on your own server. KitchenOwl also adds recipe management, meal planning, and household expense tracking beyond the shared grocery list that Bring focuses on.

Official sources

  1. License: AGPL-3.0
  2. Project website
  3. README
  4. Releases
  5. TomBursch/kitchenowl on GitHub
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/tombursch-kitchenowl.svg)](https://hysenlabs.com/projects/tombursch-kitchenowl)