Fruitful Docs
Reference

CLI

Every fruitful command, its arguments and flags.

Run every command through the repository: yarn fruitful <group> <command> .... Commands that take --json print a JSON report on stdout and exit non-zero on failure. Commands that take (--check | --write) regenerate committed outputs with --write and fail on stale outputs with --check, which is what CI runs. <feed-package> is a definition directory such as feed-packages/hacker-news.

media

CommandWhat it does
fruitful media metadata <url> [--fresh] [--executable <path>] --jsonPrint the normalized metadata yt-dlp reports for a media URL; --fresh bypasses the cached info, --executable points at a specific yt-dlp binary instead of the managed one.
fruitful media streams <url> [--fresh] [--executable <path>] --jsonResolve the playable audio and video streams for a media URL.
fruitful media captions <url> [--language <tag>] [--fresh] [--executable <path>] --jsonFetch the caption track for a media URL, preferring the given BCP 47 language tag when several are available.
fruitful media download-audio <url> --out <directory> [--executable <path>] --jsonDownload the audio of a media URL into the directory, reporting progress on stderr; Ctrl-C cancels and exits 130.

auth

CommandWhat it does
fruitful auth login [--api-origin <url>]Authorize this machine against the Fruitful API with a scoped device grant and store the credential in the OS keychain.
fruitful auth status [--api-origin <url>]Show whether a credential is stored for the API origin and whom it belongs to.
fruitful auth logout [--api-origin <url>]Remove the stored credential for the API origin.

plugin

CommandWhat it does
fruitful plugin validate <feed-package> --jsonRun the full validation of a definition against its committed review evidence (route, binding, transform, records, Lexicons, presentation, determinism) and print the summary.
fruitful plugin coverage <feed-package> --jsonReport which extract fields each review fixture exercises, with required-field gaps and post-processor rejections.
`fruitful plugin generate (--check--write) --json`
fruitful plugin preview <feed-package> [--case <id>] [--local-data-root <path>] [--no-open] --jsonBuild a durable product preview for one review case (the first by default) under the authoring data root and open it in the Desktop app.
fruitful plugin sanitize-fixture <capture.html> --out <fixture.html> [--redactions <redactions.json>] --jsonTurn a captured page into a committable review fixture, applying redactions and reporting any residue that still needs a decision.
fruitful plugin release <feed-package> --out <dir>Materialize the exact release into a directory: runtime/, review/ and attestation.json, refusing a stale bundle or stale generated types.

registry

CommandWhat it does
`fruitful registry publish-first-party [--package ] [--tag candidatestable] [--apply]`
fruitful registry status [--package <name>]Read-only registry state: releases, evaluations and tags, for one package or all.
fruitful registry approve --package <name> --evaluation <id> --resolution <digest> --runtime <digest> --review <digest> [--apply --confirm-stage <stage> --reviewer-user <id> --reviewer-organisation <id>]Record reviewer approval of one exact evaluation, naming every digest it covers; a dry run unless --apply and --confirm-stage are given.
fruitful registry promote --package <name> --evaluation <id> --resolution <digest> --runtime <digest> --review <digest> [--apply --confirm-stage <stage> --reviewer-user <id> --reviewer-organisation <id>]Promote an approved evaluation so Explore and installs resolve to it; a dry run unless --apply and --confirm-stage are given.

lexicon

CommandWhat it does
`fruitful lexicon generate (--check--write)`

authoring

CommandWhat it does
fruitful authoring capture <url> --package <feed-package> [--package-name <name>] [--feed <id>] [--local-data-root <dir>] [--headless] [--non-interactive] --jsonCapture a page through the package route in a local browser, keeping the capture, preview and browser profile under the authoring data root.
fruitful authoring captures [--local-data-root <dir>] --jsonList the captures stored under the authoring data root.

On this page