sieve-filter is a Go CLI for scoring and filtering text with subprocess-based scorer plugins. The first-party plugins are bundled Python uv projects: a heuristic scorer and a trainable naive Bayes scorer.
sieve-filter scorers list
sieve-filter scorers describe heuristic
sieve-filter rate --scorer heuristic < content.txt
sieve-filter ingest --dataset twitter --label good < good.jsonl
sieve-filter feedback --dataset twitter --label bad < bad.txt
sieve-filter train --scorer naive-bayes --dataset twitter
sieve-filter eval --scorer naive-bayes --dataset twitter
sieve-filter filter --scorer naive-bayes --dataset twitter < items.jsonlState lives under ~/.sieve/filter/:
config.tomldatasets/models/logs/plugins/
Set SIEVE_FILTER_ROOT=/some/path to override the default state directory.
Plugins are subprocesses discovered from ~/.sieve/filter/plugins/:
bundled/is managed by the CLI for first-party pluginsexternal/is available for user-installed plugins
Each plugin directory needs a plugin.toml manifest with an entrypoint command. The host talks to the plugin over JSON on stdin and stdout.