hey.food

Inside the native CLI

heyfood is an Apache-2.0 Rust application. It handles terminal behavior, local credentials, input validation, and output. The food intelligence comes from the hosted hello.food service.

heyfood --help

Commands in v0.9.0

heyfood
heyfood ask "What can I eat?"
heyfood reply --conversation-id ID "The second option"
heyfood log "I had the tofu bowl for lunch"
heyfood item "pad thai at Pismo's"

heyfood grocery list
heyfood watch show
heyfood diet list
heyfood diet show mediterranean
heyfood agent describe
heyfood login
heyfood register

ask, reply, log, and item send one request and return one answer. Grocery, Menu Watch, Diet guides, and agent discovery have their own subcommands. Diet guides are read-only in this release. Connected Health remains deferred. Old hidden commands return command_not_available instead of quietly doing the wrong thing.

Runtime details

Runtime
Native Rust executable
Distribution
GitHub Releases
Targets
macOS and glibc Linux, arm64 and x86-64
Human output
Terminal-safe, color-aware rendering
Machine output
One ANSI-free JSON value
Credentials
OS vault with owner-only file fallback

Text works as arguments or stdin

heyfood ask "Plan a high-protein dinner"
printf '%s
' "Plan a high-protein dinner" | heyfood ask
heyfood ask --latitude 36.7378 --longitude -119.7871 "Find dinner"

Redirected input must be UTF-8 and is capped at 1 MiB. Coordinates are optional, but when supplied they must be a complete latitude and longitude pair. Global --no-input prohibits prompts.

Credentials are saved only after approval

register and login use hosted device authorization. The CLI saves credentials only after browser approval, session creation, and response validation all succeed. login also asks for any new permissions required by newer commands.

heyfood register --device --no-browser
heyfood login --device --no-browser --timeout 600

The installer checks before replacing anything

The installer selects the matching archive and checksum from one release, rejects unexpected archive contents, verifies the executable version, and moves the verified binary into a user-owned directory in one step. It does not invoke sudo, edit shell startup files, or require Python or pipx.