Smart Appetite Manager is an AI-powered platform designed to help you manage your entire grocery cycle. It tracks your inventory, suggests recipes based on what you already have, and finds the best grocery deals in real time. Powered by a team of specialized AI agents built on Solace Agent Mesh framework, it helps you save time, reduce food waste, and shop smarter every day.
Use the App/ folder as the project root (not repository root).
cd App
# 1) Create env file
cp .env.example .envEdit App/.env and set at least:
LLM_SERVICE_API_KEY=...
LLM_SERVICE_ENDPOINT=https://api.cerebras.ai/v1
LLM_SERVICE_PLANNING_MODEL_NAME=openai/gpt-oss-120b
LLM_SERVICE_GENERAL_MODEL_NAME=openai/gpt-oss-120b
SOLACE_DEV_MODE=trueFor this fork, also add:
SPOONACULAR_API_KEY=... # used by recipe tools (App/src/recipe_agent/mealdb_tools.py:17)
SERPAPI_KEY=... # used by shopper agent (App/configs/agents/shopper.yaml:70)
INVENTORY_MANAGER_DB_NAME=inventory.db # used by inventory agent (App/configs/agents/inventory-manager.yaml:52)Inventory DB bootstrap (automatic):
No manual SQL step is required. The inventory tool now runs schema bootstrap
on every call and creates/updates the inventory table if needed.
Install dependencies and run:
uv sync
uv run sam run configs/Open: http://localhost:8000
Inventory web interface (custom page with REST read + SAM write):
- Open
App/web/inventory-gateway-ui.html - Full guide:
App/docs/inventory-web-interface.md - Start inventory API first:
cd App
./.venv/bin/python -m uvicorn src.inventory_api.app:app --host 0.0.0.0 --port 8001 --reloadIf uv is missing on macOS:
brew install uvThe repo ships a docker-compose.yml that starts all four services together:
| Service | Port | Description |
|---|---|---|
sam-app |
8000 | Solace Agent Mesh (AI orchestration) |
inventory-api |
8001 | Inventory REST API |
ocr-service |
8002 | Barcode / OCR service |
web |
5173 | React frontend |
Prerequisites: Docker Desktop (includes Compose v2).
# 1. Copy and fill in env vars (repo root)
cp App/.env.example App/.env
# edit App/.env — set LLM keys, SPOONACULAR_API_KEY, SERPAPI_KEY
# INVENTORY_MANAGER_DB_NAME is set automatically to /app/data/inventory.db
# 2. Build and start
docker compose up --build -d
# 3. Open the app
open http://localhost:5173The inventory database is stored in a named Docker volume (inventory_data) mounted at
/app/data inside the containers. It persists across restarts and is created automatically
on first run — no manual SQL step required.
Logs / stop:
docker compose logs -f # stream all services
docker compose logs inventory-api # single service
docker compose down # stop and remove containers (volume kept)
docker compose down -v # stop and remove containers + volume (wipes DB)