# ===================================================================== # The VM sub-agent's model settings. # # This is the SECOND model - the one that drives a real machine - not the # assistant. The assistant's parameters live in Open WebUI; see # docs/advanced-params.md for both. # # They are separate on purpose. The assistant's numbers are tuned for # prose and tool choice; this one spends most of its output writing code # and reading error messages, and the two are not the same problem. # # Read by the vmagent container through `env_file` in docker-compose.yml. # After editing: docker compose up -d vmagent # ===================================================================== # --- which model, and how it is loaded -------------------------------- # The same model the assistant uses, so there is one thing resident. Both # share one Ollama with one slot. OWUITOOLS_AGENT_MODEL=qwen3.8:latest # MUST EQUAL THE CONTEXT THE MODEL IS ACTUALLY LOADED WITH. # # Ollama allocates the KV cache per loaded model, so asking for a # different value makes it RELOAD - about eighteen gigabytes across the # bus, in the middle of a session. Check with: # curl -s http://172.17.0.1:11434/api/ps OWUITOOLS_AGENT_NUM_CTX=163840 # Never unload between turns. AN INTEGER, NOT A STRING: Ollama rejects # "-1" with `time: missing unit in duration`, and the session then dies # on its first call with an error about durations. OWUITOOLS_AGENT_KEEP_ALIVE=-1 # How long one call to Ollama may take. A thinking turn on a long context # is slow; this is the backstop for one that has stopped rather than one # that is working. OWUITOOLS_AGENT_REQUEST_TIMEOUT=1800 # --- sampling --------------------------------------------------------- OWUITOOLS_AGENT_TEMPERATURE=0.6 OWUITOOLS_AGENT_TOP_P=0.95 OWUITOOLS_AGENT_TOP_K=20 # DELIBERATELY ZERO, and worth leaving alone. # # A presence penalty pushes the model away from tokens it has already # used. Prose benefits; code does not - it reuses identifiers constantly, # and penalising that produces subtly wrong variable names in the second # half of a file. The archived version of this stack shipped with an # inherited 1.5 from a Modelfile nobody had looked at. OWUITOOLS_AGENT_PRESENCE_PENALTY=0.0 # One turn's output ceiling. A whole file in one write is normal here. OWUITOOLS_AGENT_NUM_PREDICT=16384 # true | false | low | medium | high | max OWUITOOLS_AGENT_THINK=true # --- what bounds one session ------------------------------------------ # Tool calls. The backstop for an agent going in circles - and note that # looking at the screen and acting on what it saw are two calls, so a GUI # job spends these faster than a command-line one. OWUITOOLS_VM_MAX_STEPS=110 # Wall-clock seconds. The backstop for everything else. Keep it below # OWUITOOLS_VM_WAIT_SECONDS in configs/owuitools.env, so the session ends # itself and reports rather than being cut off mid-sentence. OWUITOOLS_VM_SESSION_SECONDS=7200 # Steps without touching the task list before the agent is told it is # drifting. The task list is its spine: it is refused a finish while any # task is open, and this is what catches wandering before the step budget # does. OWUITOOLS_VM_TASK_DRIFT=12 # How long a finished job's artefacts are kept before being reaped. OWUITOOLS_VM_REAP_MINUTES=180