Skip to content

Models

The assistant block picks the model. Leave the block out and there’s no assistant.

Two providers are built in: openai-compatible, the default, and anthropic. The first covers anything that speaks the OpenAI chat API: Ollama, llama.cpp, vLLM, LM Studio, OpenRouter, OpenAI.

The model needs to support tool calling. Without it, the assistant can’t read anything.

config.yaml
assistant:
name: Valet
baseURL: http://ollama:11434/v1
model: qwen3:8b

If you leave out baseURL, it defaults to http://localhost:11434/v1. Inside the container, localhost is the container itself. So set baseURL to wherever Ollama really is, such as the Compose service name.

Nothing leaves your network with this setup. The model runs on your hardware, and Valet talks to it directly.

config.yaml
assistant:
baseURL: http://llama:8080/v1
apiKey: ${LLAMA_KEY} # only if the server wants one
model: local-model

A hosted one looks the same, with its own baseURL, apiKey and model.

config.yaml
assistant:
provider: anthropic
apiKey: ${ANTHROPIC_API_KEY}
model: your-model-name

baseURL is optional here.

A hosted model sees what the tools return: card data, document text if you let it read documents, and logs if you let it read logs. Keys don’t go to it. Valet redacts them first, but it can only redact values that came from a ${NAME} in your config. Everything else in a log or a document goes as it is.

If that matters to you, use a local model, or set sensitive integrations to none.

OptionDefaultWhat it does
provideropenai-compatibleopenai-compatible or anthropic.
baseURLhttp://localhost:11434/v1 for openai-compatibleWhere the server is.
apiKeynoneUse ${NAME}.
modelrequiredThe model’s name on that server.
nameAssistantWhat it’s called on the page.
instructionsnoneExtra text for the system prompt.
access{ default: read }What it may use. See access levels.
maxSteps6Tool rounds per answer, 1 to 20. The last step is kept for answering.
backgroundsee belowWhat it does on its own.
suggestionsfour questionsOffered on an empty chat and in the palette.

The chat window has its own options under chat. Only the last 24 messages go to the model, and tool results from older turns shrink to a preview, so a long chat doesn’t get slower with every turn.

Some features call the model without being asked. They get no tools, so they can only say something.

OptionDefaultWhat it does
background.watchtrueWhen two or more things are wrong at once, asks whether one cause explains them.
background.brieftrueA short summary, shown when you hover the status sentence and rewritten at most every half hour.
background.suggesttrueQuestions worth asking right now.
background.perDay100The most background calls a day, from 1 to 500.

Calls go one at a time, so a single GPU isn’t asked to do two things at once. Rules decide when a call is worth making: one problem on its own never reaches the model. To stop them all, set the first three to false.

assistant.agent sends the chat to another agent with an OpenAI-compatible API, such as Hermes.

config.yaml
assistant:
model: qwen3:8b
agent:
name: Hermes
baseURL: http://hermes:8000/v1
apiKey: ${HERMES_KEY}
model: hermes

The chat says so at the top. Answers are plain text, with no cards. A read-only page stays on Valet’s own assistant, because the agent can act and that page may only look.