Skip to main content

Optional features

The default build does fetch-and-extract: no Cargo features, no model weights. Three opt-in features add capability. headless renders JavaScript pages, local-inference summarises on-device, and injection-model adds the ONNX prompt-injection classifier. Each one pulls in extra dependencies, and two of them download a model the first time you use them.

Enabling features

Pass --features at install time. The crate is rover-fetch (the name rover was taken on crates.io); the installed binary is still rover.

cargo install rover-fetch # default build
cargo install rover-fetch --features headless # one feature
cargo install rover-fetch --features headless,local-inference # combine features
FeatureAddsNeeds on first use
headlessJavaScript / SPA rendering via chromiumoxide over the Chrome DevTools ProtocolA system Chrome/Chromium browser (not bundled)
local-inferenceLocal LLM summarisation via mistral.rs: the local backend kind and the rover model subcommandModel download (~1.6 GB)
injection-modelThe ONNX DeBERTa prompt-injection classifier, the optional model layer of the guardA native ONNX runtime; model download (~200 MB)

The prebuilt binary and the Homebrew formula already include headless. See Installation for the packaged channels.

headless: JavaScript and SPAs

Compile in headless when the pages you fetch render their content in JavaScript. Rover drives a system Chrome/Chromium over the DevTools Protocol (via chromiumoxide), grabs the rendered DOM, then runs it through the same extraction pipeline a static fetch uses.

The browser is not bundled. Rover expects one already on the host and auto-detects the standard install paths. Override the executable when yours lives somewhere non-standard:

[headless]
chrome_executable = "/opt/custom/chromium"

With the feature compiled in, rover doctor verifies the launch path, so a missing or misdetected browser surfaces before a fetch hits it. Full usage and configuration live in JavaScript & dynamic pages.

local-inference: on-device summarisation

Compile in local-inference to summarise without a network round-trip or an API key. It enables the local summariser backend kind, backed by mistral.rs. The default model is Qwen 3.5 0.8B (~1.6 GB), downloaded on first use.

[backends.offline]
kind = "local"
model = "Qwen/Qwen3.5-0.8B" # any Hugging Face repo id

[summarization]
default_backend = "offline"

On macOS, Metal acceleration turns on automatically. The feature also brings in the rover model subcommand and model-integrity checking: Rover verifies cached files against their manifest before loading. For details on integrity checking, see Security & threat model.

injection-model: the ONNX classifier

Compile in injection-model to add the model layer of the prompt-injection guard. The structural wrapper and the pattern detector are always present. This feature adds an ONNX DeBERTa classifier that catches novel phrasings the rules don't enumerate. It pulls in a native ONNX runtime, and the classifier model (~200 MB) downloads on first use.

[prompt_injection]
model = "deberta-base" # the classifier to load; "disabled" turns it off

rover doctor checks that the configured model is cached and valid. The wrapper holds either way: the classifier is an extra net, not the load-bearing guarantee. The full guard is documented in Trust & prompt injection.

Image captioning needs no feature flag

Image captioning is always compiled in. It runs through cloud or OpenAI-compatible providers: OpenAI, Anthropic, Gemini, and anything that speaks the OpenAI chat-completions dialect.

[captioners.openai]
provider = "openai"
model = "gpt-4o-mini"
api_key_env = "OPENAI_API_KEY"

[image_captions]
default = "openai"

There is no native local vision backend. To caption fully locally, point provider = "openai_compat" at a local vision server (Ollama, LM Studio, vLLM) running a vision-capable model. Full setup is in Images & captioning.

Model cache management

The rover model subcommand ships with local-inference and manages the cached model weights that feature depends on.

rover model download <repo_id> # fetch a model into the cache ahead of time
rover model list # show cached models
rover model remove <repo_id> # delete cached files
rover model verify # check cached files against their integrity manifest

Models download to $HF_HOME/hub (default ~/.cache/huggingface/hub), shared with any other Hugging Face tooling on the host. Pre-download to avoid a cold first summarize, or let the first call fetch on demand.