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 --helpCommands 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 registerask, 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 600The 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.