Command-line reference

Every command the engine installs, in the order a day runs through them. Each section is generated from the parser the command itself uses, so it matches curate-<command> --help for the installed version. On GitHub, where the sections below do not render, read the published page or run --help instead.

Commands are shown bare, as they are on PATH in a configuration repository’s devcontainer (step 2 of SETUP.md) or after installing the package. A runner is chosen with --config feeds/<name>/config.toml. Left out, it is found by searching upwards from the working directory, so a bare command works from inside feeds/<name>/ but not from the repository root, which deliberately has no config.toml. Command-line options override the config for that run only.

curate-template

Print a template for a new runner, to be redirected into place.

usage: curate-template [-h] {config,policy}

Positional Arguments

which

Possible choices: config, policy

which template to print: the settings reference or the policy one

curate-validate

Check a runner’s configuration and the files it names. Reads nothing but the filesystem: no feed is resolved and no credential is needed. Exits non-zero with one line per problem.

usage: curate-validate [-h] path

Positional Arguments

path

a runner’s config.toml, or a directory whose subdirectories are runners (which also checks that they share nothing)

curate-fetch

Fetch subscribed feeds into a JSONL corpus file for today. A feed that fails is reported in the summary, not fatal, and an item already in any corpus file is skipped.

usage: curate-fetch [-h] [--config CONFIG] [--sources SOURCES]
                    [--corpus-dir CORPUS_DIR] [--days N]
                    [--summary-max-chars SUMMARY_MAX_CHARS]
                    [--concurrency CONCURRENCY] [--user-agent USER_AGENT]

Named Arguments

--config

path to config.toml

--sources

path to the OPML subscription list

--corpus-dir

directory to write corpus files into

--days

lookback window in days, filtered on publication date (0 disables filtering)

--summary-max-chars

truncate summaries to this length

--concurrency

maximum concurrent HTTP requests

--user-agent

User-Agent header sent with every request

curate-export

Render a corpus file as compact Markdown for review.

usage: curate-export [-h] [--config CONFIG] [--corpus-dir CORPUS_DIR]
                     [--max-items MAX_ITEMS] [--out OUT] [--prompt]
                     [--scoring-prompt PATH]
                     [corpus_file]

Positional Arguments

corpus_file

corpus file to render (default: the most recent one)

Named Arguments

--config

path to config.toml

--corpus-dir

directory holding corpus files

--max-items

render at most this many items

--out

write to this file instead of stdout

--prompt

emit the whole scoring prompt, policy documents included

Default: False

--scoring-prompt

scoring prompt to use instead of the one shipped with the package

curate-score

Ask a scorer to judge one day of candidates.

usage: curate-score [-h] [--config CONFIG] [--date YYYY-MM-DD]
                    [--provider PROVIDER] [--response PATH]
                    [--corpus-dir CORPUS_DIR] [--scoring-prompt PATH]

Named Arguments

--config

path to config.toml

--date

collection day to score (default: the most recent one)

--provider

scorer to use (stub, file or anthropic), overriding the config

--response

saved response to read, for the file scorer

--corpus-dir

directory holding corpus files

--scoring-prompt

scoring prompt to use instead of the one shipped with the package

curate-paywall

Check whether the day’s graded articles can be read. Does nothing unless [paywall] enabled is set for the runner.

usage: curate-paywall [-h] [--config CONFIG] [--date YYYY-MM-DD]
                      [--corpus-dir CORPUS_DIR]

Named Arguments

--config

path to config.toml

--date

collection day to check (default: the most recent one)

--corpus-dir

directory holding corpus files

curate-select

Score a saved response and assemble the day’s selection.

usage: curate-select [-h] [--config CONFIG] [--date YYYY-MM-DD]
                     [--corpus-dir CORPUS_DIR]

Named Arguments

--config

path to config.toml

--date

collection day to select from (default: the most recent one)

--corpus-dir

directory holding corpus files

curate-render

Publish the day’s selection into the rolling Atom feed.

usage: curate-render [-h] [--config CONFIG] [--date YYYY-MM-DD]
                     [--build-dir BUILD_DIR]

Named Arguments

--config

path to config.toml

--date

collection day to publish (default: the most recent one)

--build-dir

directory to write the feed to

curate-deploy

Upload the built feed to the host it is served from.

usage: curate-deploy [-h] [--config CONFIG] [--provider PROVIDER]
                     [--build-dir BUILD_DIR] [--dry-run] [--force]

Named Arguments

--config

path to config.toml

--provider

deployer to use (none or wrangler), overriding the config

--build-dir

directory to upload

--dry-run

print the upload that would run, and upload nothing

Default: False

--force

upload even when the feed has not changed since the last one, as after a change the content hash does not cover, such as _headers

Default: False

curate-run

Fetch, score, select and render, in that order.

usage: curate-run [-h] [--config CONFIG] [--date YYYY-MM-DD]
                  [--from {fetch,score,paywall,select,render,deploy}]
                  [--provider PROVIDER] [--response PATH]
                  [--scoring-prompt PATH] [--deploy]

Named Arguments

--config

path to config.toml

--date

replay a past collection day, starting at scoring

--from

Possible choices: fetch, score, paywall, select, render, deploy

start at this stage instead of the beginning

--provider

scorer to use (stub, file or anthropic), overriding the config

--response

saved response to read, for the file scorer

--scoring-prompt

scoring prompt to use instead of the one shipped with the package

--deploy

publish the rendered feed as well, instead of stopping at build/

Default: False