Skip to main content

CLI for interacting with the KitchenOwl API.

Project description

kitchenowl-cli

Command-line client for KitchenOwl's /api endpoints, covering auth, household, recipe, shopping list, and user workflows.

License

kitchenowl-cli is licensed under the MIT License.

Supported CLI surface

  • kitchenowl auth [login|logout|status|signup] — JWT login with refresh, logout and signup helpers.
  • kitchenowl category [list] and kitchenowl tag [list] — discovery commands for household categories and tags.
  • kitchenowl config [show|set-default-household|server-settings] — manage stored tokens/default household and inspect read-only server flags from /api/health.
  • kitchenowl expense [list|create|update|delete|overview|balance] and kitchenowl expense category [list|create].
  • kitchenowl household [list|use|get|create|update|delete] and kitchenowl household member [list|add|remove].
  • kitchenowl planner [list|add-recipe|remove-recipe|recent-recipes|suggested-recipes|refresh-suggestions].
  • kitchenowl recipe [list|get|add|edit|delete] with JSON/YAML payload support and flag-based editors, including ingredients management.
  • kitchenowl recipe [search|search-by-tag] for discovery and filtering.
  • kitchenowl shoppinglist [list|create|delete|items|add-item|add-item-by-name|add-items-from-file|suggested|remove-item|remove-items|clear].
  • kitchenowl user [list|get|search|create|update|delete] for admins.
  • run_cli_e2e.sh script exercises login, household creation, lists, recipes, planner, expenses, and optionally house cleanup.

Install

Recommended for normal usage (installs globally via pipx):

pipx install kitchenowl-cli

The installed command is:

kitchenowl --help

For local development / modifying this CLI:

cd kitchenowl-cli
python3 -m pip install -e .

For test/development dependencies:

cd kitchenowl-cli
uv sync --extra dev
uv run pytest

Publish to PyPI via GitHub Actions

This repository includes .github/workflows/publish.yml for Trusted Publishing.

One-time setup:

  • In PyPI, create a Trusted Publisher for this GitHub repository and workflow file.
  • In GitHub, keep the repository public and allow Actions to run.

Release flow:

git tag v0.1.1
git push origin v0.1.1

Then create a GitHub Release for that tag (or publish from the Releases UI).
When the release is published, the workflow builds and uploads kitchenowl-cli to PyPI.

Quick start examples

kitchenowl auth login --server https://your-kitchenowl.example.com
# tip: both https://host and https://host/api are accepted
kitchenowl config server-settings
kitchenowl household list
kitchenowl household member list --household-id 42
kitchenowl household member add 17 --household-id 42 --admin
kitchenowl shoppinglist create "Weekly List" --household-id 42
kitchenowl shoppinglist add-item-by-name 12 Milk --description "2L"
kitchenowl shoppinglist remove-item 12 456 -y
kitchenowl shoppinglist remove-items 12 456 457 -y
kitchenowl shoppinglist clear 12 -y
kitchenowl recipe add --name "Tomato Soup" --description "Simple soup" --household-id 42 --yields 2 --time 25 --ingredient "Tomatoes|6 pcs|false" --ingredient "Salt|1 tsp|false"
kitchenowl recipe edit 123 --description "Updated" --ingredient "Basil|a handful|true"
kitchenowl recipe search --household-id 42 --query soup
kitchenowl recipe search-by-tag --tag vegetarian
kitchenowl recipe delete 123
kitchenowl planner add-recipe 123 --household-id 42 --date 2026-02-20
kitchenowl expense create --household-id 42 --name "Groceries" --amount 35.5 --paid-by 17 --paid-for 17:1 --paid-for 21:1
kitchenowl expense overview --household-id 42 --view 0 --frame 2
kitchenowl user list
kitchenowl auth signup --username newuser --name "New User"

auth login / auth signup will always ask for the server URL when --server is not provided, using your last saved server as the default.

Read-only server settings

Inspect the public read-only settings exposed by the server health endpoint (works without login if you pass --server):

kitchenowl config server-settings --server https://your-kitchenowl.example.com
kitchenowl config server-settings --json

This currently shows:

  • open_registration
  • email_mandatory
  • oidc_provider
  • privacy_policy (if configured)
  • terms (if configured)

File-based recipe editing

kitchenowl recipe add --household-id 1 --from-file recipe.yml
kitchenowl recipe edit 42 --from-file recipe.yml

Example recipe.yml:

name: Tomato Soup
description: Simple soup
time: 25
cook_time: 20
prep_time: 5
yields: 2
visibility: 0
source: ""
items:
  - name: Blend
    description: Blend until smooth
    optional: false
ingredients:
  - name: Tomatoes
    description: 6 pcs
    optional: false
  - name: Salt
    description: 1 tsp
    optional: false
tags:
  - soup
  - vegetarian

What’s not implemented yet

  • Advanced category/tag management commands (create/update/delete/merge) beyond discovery/listing.
  • More advanced auth/admin workflows (OIDC login, password reset/email verification, token management, deeper server admin tooling) are still API-only.
  • Data portability and advanced media workflows (import/export wrappers, upload helpers, recipe scraping shortcuts) are still API-only.

Troubleshooting

  • No server configured or Not authenticated: Run kitchenowl auth login and confirm kitchenowl config show.
  • Network/transport failures: The CLI now wraps transport errors as user-facing messages. Verify server URL, DNS, and connectivity.
  • Corrupted config file: The CLI defensively recovers malformed config content, but you can reset with: rm ~/.config/kitchenowl/config.json and re-login.
  • Token refresh edge cases in concurrent CLI usage: Retry the command once; if refresh token rotation invalidates the session chain, run kitchenowl auth login again.

Release Notes (v0.2 Progress)

  • Stability and blocker fixes:
    • Recipe edit payload handling corrected to avoid stale item overwrite behavior.
    • Transport-level request failures now surface through ApiError with cleaner CLI messages.
    • User command init/auth/config error handling aligned with Click-friendly failures.
    • Config parsing hardened for malformed JSON and invalid key types.
    • Signup prompt semantics and e2e admin lookup behavior fixed.
  • New command surfaces:
    • Planner command group.
    • Expense command group with category/overview/balance flows.
    • Recipe search and search-by-tag commands.
    • Shopping list bulk operations.
    • Category/tag discovery listing commands.
  • Scope split:
    • Core blocker/stability and main CLI surfaces are implemented.
    • Remaining advanced admin/auth/data workflows are tracked for follow-up releases.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kitchenowl_cli-0.2.1.tar.gz (28.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

kitchenowl_cli-0.2.1-py3-none-any.whl (30.0 kB view details)

Uploaded Python 3

File details

Details for the file kitchenowl_cli-0.2.1.tar.gz.

File metadata

  • Download URL: kitchenowl_cli-0.2.1.tar.gz
  • Upload date:
  • Size: 28.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for kitchenowl_cli-0.2.1.tar.gz
Algorithm Hash digest
SHA256 2a6d2e712bfab2f66d94ea111d59b31b77347a6ba3a34ab90b8b7d3c26a7e752
MD5 8e4059233a1f4aede3f2357bf3e85aa0
BLAKE2b-256 79e536569ac3b8930c22f4fa9d9a7ffaa28aabca5f9f652007bcd275f42bf358

See more details on using hashes here.

Provenance

The following attestation bundles were made for kitchenowl_cli-0.2.1.tar.gz:

Publisher: publish.yml on apetersson/kitchenowl-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file kitchenowl_cli-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: kitchenowl_cli-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 30.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for kitchenowl_cli-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 151ac701960d17f91e52523073cdc0a0e2362916cf33535ff4e7b390340d1719
MD5 84489a6cf26f9c7f7389a4753e283403
BLAKE2b-256 83cf85af0f1acdfac4fe884bfea67e4b7216b7b4ca9a3e5625434820905990de

See more details on using hashes here.

Provenance

The following attestation bundles were made for kitchenowl_cli-0.2.1-py3-none-any.whl:

Publisher: publish.yml on apetersson/kitchenowl-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page