hey.food

CLIENT / OPEN SOURCE

Inside the CLI

heyfood is an Apache-2.0 Python client built for interactive terminals, headless machines, and scripts. The client code is public; the hosted intelligence it calls is a separate proprietary service.

A small, inspectable runtime

Command surface
Typer and Click
Terminal rendering
Rich presentation blocks
Transport
HTTPX and streamed events
Python
3.11, 3.12, and 3.13
Package isolation
pipx
Optional credentials
OS keyring

Authentication follows the environment

heyfood login uses an explicit browser consent flow. SSH and headless environments can use a device short-code flow without a reachable loopback callback.

heyfood login
heyfood login --device --no-browser
heyfood status
heyfood doctor

Local state has defined boundaries

Configuration follows XDG conventions and is stored with mode 0600. The optional keyring extra moves tokens and local API keys into the operating-system credential vault. Named contexts make production, local, and authorized custom environments explicit.

heyfood context list
heyfood context use local
heyfood config show --json
heyfood config validate

Configuration precedence is command flags, environment overrides, then the selected context. config show redacts token and API-key fields.

The terminal is treated as an interface

  • Banners appear only on compatible interactive terminals.
  • CI, redirected output, noninteractive input, and TERM=dumb suppress decoration.
  • NO_COLOR=1 removes color without changing supported geometry.
  • --no-input turns prompt suppression into an explicit automation contract.
  • Search and recipe selections can be remembered locally for numbered follow-up commands.