Skip to content

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.