A grocery list with dietary context
Grocery ships in the Rust CLI. Reading a list is immediate. Every change comes back as a preview and waits for your confirmation.
heyfood grocery listMake and confirm a change
heyfood grocery list --json
heyfood grocery add \
--list-id LIST_UUID --version 7 \
--intended-for "Maya" \
"red lentils" "yellow onion" "garlic" \
--json > proposal.json
heyfood grocery confirm \
--decision accept \
--proposal-stdin < proposal.jsonCreating the preview never changes the list. The signed result returns through stdin, not a command argument, which keeps its confirmation token out of shell history and process listings.
Read, prepare, review, confirm
- 01
Read
Fetch the active list and its current list ID and version.
- 02
Prepare
Add, remove, and state commands return a signed preview. The list has not changed yet.
- 03
Review
Check the items, dietary concerns, intended household members, and suggested substitutions.
- 04
Confirm
Accept or cancel the preview. If the list or a household profile changed meanwhile, start again with fresh data.
Commands
heyfood grocery add --list-id UUID --version N ITEM...
heyfood grocery remove --list-id UUID --version N ITEM...
heyfood grocery state --list-id UUID --version N ITEM active
heyfood grocery export UUID --format markdown
heyfood grocery confirm --decision cancel --proposal-stdin < proposal.jsonRemove accepts a stable item UUID or a fresh one-based index such as #2. Item state is active, purchased, or dismissed. Export formats are markdown, text, and json.
An ingredient is not a product label
hello.food can check a known ingredient against the household's dietary profiles and show who a concern affects. It cannot know the recipe, factory, cross-contact practices, or latest label for the product you eventually buy. Check the package before it goes in the cart.