Familjens veckomeny, planerad och handlad.
An AI agent plans your family's week of dinners and builds the grocery cart. Self-hosted. It learns what's in the fridge, which kid won't eat cilantro, which store brands you trust.
LLM backends are pluggable: Anthropic (Claude), OpenAI (GPT), or any OpenAI-compatible endpoint (llama.cpp, Ollama, etc.). Shopping backends are pluggable too. Willys.se ships today.
- Set household constraints. Dinners per week, servings, allergies, what's usually in the pantry.
- Ask the agent to plan a week. Swap dishes, regenerate, nudge until it looks right.
- Let the agent build the grocery cart. It aggregates ingredients across all dinners, picks one product per ingredient, verifies.
- Place the order in the store's own UI. Veckomenyn stops at cart-ready. Delivery and payment stay where they belong.
- After the week, record a retrospective. That feedback shapes next week.
- Quickstart (LAN).
podman compose up -don a trusted home network. - Deploy on a remote VM (Tailscale). One curl-piped command, ~5 minutes, no public ports.
- Upgrading. Channels, automatic pre-migration snapshots, the in-app update banner.
- Backups & restore. What's automatic, what's optional, how to restore.
- Configuration reference. Every env var.
cmd/
veckomenyn/ HTTP server + embedded SPA. Main binary.
internal/
agent/ Agent loop. System prompt, tools, streaming. Provider-agnostic.
llm/ LLM provider interface. Anthropic, OpenAI, OpenAI-compatible backends.
willys/ Willys.se HTTP client.
shopping/ Store-agnostic Provider interface. Willys adapter.
providers/ Registry for LLM and shopping backends. AES-GCM at rest.
server/ chi router, SSE chat, handlers.
store/ pgxpool + goose migration runner.
migrations/ Embedded SQL migrations.
backup/ pg_dump-based snapshotter + scheduler.
updates/ GitHub-release polling for the update banner.
seed/ Template preferences embedded for first-run seeding.
web/ React 19, TypeScript, Tailwind v4, Biome, Vite.
The Go binary embeds the Vite bundle via //go:embed.
There is no built-in authentication. The network boundary is the trust boundary. Run on a trusted LAN, on a tailnet (Tailscale guide), or behind any equivalent VPN. Never on the public internet. Full picture in SECURITY.md.
CONTRIBUTING.md for PRs and the local dev loop. SECURITY.md for vulnerabilities.
MIT.







