Choose models with pasture onboard¶
Run pasture onboard before downloading models. It reads the machine's CPU
count, architecture, RAM, available memory, and the disk that holds Ollama's
models. On Linux it also checks memory limits under the usual cgroup mounts.
It detects Apple silicon unified memory, also when pasture runs under Rosetta,
and queries NVIDIA or AMD video memory when those measurements are available.
GPU detection does not verify that Ollama supports the device or that its
driver works.
pasture onboard
pasture onboard --offline --workloads coding,reasoning,embeddings
pasture onboard --describe "Help me write software and search documents"
pasture onboard --offline --json --workloads coding,vision
Describe your workloads¶
The wizard accepts several workload names or numbers separated by commas, plus
an optional description. Workloads are coding, reasoning, general,
vision (reading images), embeddings (search and retrieval), and
image-generation (creating images). Without inference, simple keyword rules
interpret the description. A keyword matches only at the start of a word, so
"storage" does not count as "rag". An unrecognized description defaults to
general. Use explicit workload choices when the offline rules miss your
intent. --json skips the questions and prints the same plan for scripts.
Read the plan¶
The plan lists model names, covered workloads, disk and memory estimates, and
pasture add commands. It changes no settings, starts no server, and downloads
no models. It reserves space for smaller models across the chosen workloads
before spending spare disk on larger ones. The combined downloads must fit
above the configured free-space reserve and within the unused model disk
budget. It does not assume existing models can be deleted or moved away.
Already installed models still count toward the budget; recommendations are a
conservative plan for additional downloads.
Without a GPU or Apple silicon, a model that reasons before it answers, such as
qwen3.5, can take minutes for its first answer, and can fill a 4096-token
context before it answers at all. For such a model, the plan gives an
pasture run command with --think=false, which turns reasoning off. In the
JSON, "thinks": true marks such a model, and "accelerated" says whether
the plan counts on a GPU or Apple silicon.
Memory estimates assume one active model, a 4096-token text context, and room for the OS and runtime. CPU-only plans favor smaller models. Discrete GPU memory is never added to RAM or summed across GPUs. A GPU with less free memory than the CPU-only plan allows, such as an integrated GPU, leaves the CPU-only plan in place, because Ollama runs a model that the GPU cannot hold on the CPU. Larger contexts, image inputs, concurrent requests, drivers, and model updates can change actual requirements. Unknown available memory produces no fit recommendation. Check the plan and use an Ollama release that supports the selected models.
The bundled catalog¶
The bundled catalog uses explicit size tags from Qwen 2.5 Coder, Qwen 3.5, Nomic Embed Text, and FLUX.2 Klein, checked on October 30, 2026. Download estimates include headroom over the published sizes; runtime memory is a conservative estimate. Tags can change. The normal pull path checks the current registry size and enforces pasture's budget when you download. Image generation is experimental and the bundled recommendation requires macOS on Apple silicon. Other platforms report that limitation.
Optional inference¶
Onboarding uses bundled rules by default. To let Jev interpret the description,
set TYPESAFE_API_KEY in the environment and select its provider:
export TYPESAFE_API_KEY='your-key'
pasture onboard --provider jev --describe "Organize my legal documents"
The Jev adapter calls the
TypeSafe decision API with
jev-latest. --model overrides the model and --endpoint overrides the full
request URL. It asks an independent yes/no question for each workload. Missing,
invalid, or uncertain probabilities fall back to offline rules. The 0.75 yes
threshold and 0.25 no threshold are application defaults, not calibrated
accuracy guarantees. Explicit workload choices remain selected.
For a service that supports the chat-completions JSON format, supply the full
request URL and a model that accepts response_format: {"type":"json_object"}.
Set PASTURE_ONBOARD_API_KEY when the service needs a key:
export PASTURE_ONBOARD_API_KEY='your-key'
pasture onboard --endpoint https://your-service.example/v1/chat/completions \
--model your-model --describe "Coding and document search"
The endpoint receives the description, selected workloads, hardware capacity,
and, for chat inference, the bundled catalog. It receives no chat history or
user files. Credentials stay in the environment and are not printed or saved.
Each provider reads only its own variable. Jev never receives
PASTURE_ONBOARD_API_KEY, and a chat service never receives TYPESAFE_API_KEY.
Remote endpoints require HTTPS; loopback endpoints may use HTTP. Redirects are
not followed. Inference has a ten-second deadline and a bounded response size.
Errors, invalid responses, and unavailable connections produce a fallback
notice that says what failed, such as a missing key or the status the endpoint
answered. Inference cannot invent catalog entries or override local
memory, disk, or platform checks. --offline makes no network requests even
when a provider or endpoint is specified.