# KitchenOwl

Grocery list and recipe manager with a Flask backend and Flutter app.

- Replaces: [AnyList](https://openlogs.fyi/alternatives/anylist)
- Summary: Paid grocery list and recipe services, such as AnyList.
- Stack: Dart (language)
- Deployment: docker_compose
- License: AGPL-3.0 (osi) [source](https://github.com/TomBursch/kitchenowl/blob/cac641c619963f13134aecb80fadfb81f0c9249b/LICENSE)
- Business model: unknown. The README at the pinned commit does not state a business model, so it stays unknown. ([source](https://github.com/TomBursch/kitchenowl/blob/cac641c619963f13134aecb80fadfb81f0c9249b/README.md), read 2026-10-22)
- Difficulty: easy. 2 services, 1 volume mount, no env values to set, no elevated host access. Heuristic score 1 of 11: easy.
- Requirements: not stated
- Repository: [TomBursch/kitchenowl](https://github.com/TomBursch/kitchenowl)

## Install

1. Docker with the Compose plugin ([source](https://github.com/TomBursch/kitchenowl/blob/cac641c619963f13134aecb80fadfb81f0c9249b/docker-compose.yml))

   ```text
   A host with Docker and the Docker Compose plugin. This entry runs from a compose file.
   ```

2. Save the compose file as docker-compose.yml ([source](https://github.com/TomBursch/kitchenowl/blob/cac641c619963f13134aecb80fadfb81f0c9249b/docker-compose.yml))

   ```yaml
   services:
     front:
       image: tombursch/kitchenowl-web:latest
       restart: unless-stopped
       # environment:
       #   - BACK_URL=back:5000 # Change this if you rename the containers
       ports:
         - "80:80"
       depends_on:
         - back
     back:
       image: tombursch/kitchenowl-backend:latest
       restart: unless-stopped
       environment:
         - JWT_SECRET_KEY=PLEASE_CHANGE_ME
         # - KITCHENOWL_MCP_ENABLED=true # Optional: enable MCP endpoint at /mcp
         # - FRONT_URL=http://localhost # Optional take a look at https://docs.kitchenowl.org/latest/self-hosting/advanced/ for more info
       volumes:
         - kitchenowl_data:/data
   
   volumes:
     kitchenowl_data:
   ```

3. Set the values the compose file needs ([source](https://github.com/TomBursch/kitchenowl/blob/cac641c619963f13134aecb80fadfb81f0c9249b/docker-compose.yml))

   ```text
   Replace the placeholder values listed under Gotchas.
   ```

4. Start it ([source](https://github.com/TomBursch/kitchenowl/blob/cac641c619963f13134aecb80fadfb81f0c9249b/docker-compose.yml))

   ```bash
   docker compose up -d
   ```

5. Open the app ([source](https://github.com/TomBursch/kitchenowl/blob/cac641c619963f13134aecb80fadfb81f0c9249b/docker-compose.yml))

   ```text
   Open http://localhost:80. The compose file publishes host port 80 for the front service.
   ```

Compose file check: config_ok on 2026-10-22.

## Gotchas and maintenance

### Gotchas

- Some images use the latest tag or no tag: Images without a pinned version: front: tombursch/kitchenowl-web:latest, back: tombursch/kitchenowl-backend:latest. A later pull can get a different version. ([source](https://github.com/TomBursch/kitchenowl/blob/cac641c619963f13134aecb80fadfb81f0c9249b/docker-compose.yml), checked 2026-10-22)
- The compose file has placeholder values: Placeholder values: JWT_SECRET_KEY is "PLEASE_CHANGE_ME" (back). ([source](https://github.com/TomBursch/kitchenowl/blob/cac641c619963f13134aecb80fadfb81f0c9249b/docker-compose.yml), checked 2026-10-22)
- The compose file publishes host ports: Host ports: 80 (front). A port without a host address listens on all host network interfaces. ([source](https://github.com/TomBursch/kitchenowl/blob/cac641c619963f13134aecb80fadfb81f0c9249b/docker-compose.yml), checked 2026-10-22)

### Signals

Computed from a GitHub snapshot taken 2026-10-22.

- Open issues and pull requests: 345
- Stars: 3762, forks: 255
- Last push: 2026-10-18 (3 days ago)
- Latest release: v0.7.10 on 2026-07-26 (87 days ago)

## Sources

- [Repository: https://github.com/TomBursch/kitchenowl](https://github.com/TomBursch/kitchenowl)
- [License: https://github.com/TomBursch/kitchenowl/blob/cac641c619963f13134aecb80fadfb81f0c9249b/LICENSE](https://github.com/TomBursch/kitchenowl/blob/cac641c619963f13134aecb80fadfb81f0c9249b/LICENSE)
- [Business model: https://github.com/TomBursch/kitchenowl/blob/cac641c619963f13134aecb80fadfb81f0c9249b/README.md](https://github.com/TomBursch/kitchenowl/blob/cac641c619963f13134aecb80fadfb81f0c9249b/README.md)
- [Compose file: https://github.com/TomBursch/kitchenowl/blob/cac641c619963f13134aecb80fadfb81f0c9249b/docker-compose.yml](https://github.com/TomBursch/kitchenowl/blob/cac641c619963f13134aecb80fadfb81f0c9249b/docker-compose.yml)

---
Canonical: https://openlogs.fyi/tools/kitchenowl  
Last updated: 2026-10-22
