[Unit] Description=llama-server (tool-calling) — Mistral-Small-24B-Instruct-2501 Q3_K_M (OpenAI-compatible inference) After=network.target nvidia-persistenced.service Wants=nvidia-persistenced.service [Service] Type=simple User={{ llm_service_user }} Group={{ llm_service_user }} Environment="HOME=/home/{{ llm_service_user }}" ExecStart={{ llm_binary_path }} \ --model {{ llm_toolcall_model_path }} \ --host {{ llm_bind_address }} \ --port {{ llm_toolcall_port }} \ --ctx-size {{ llm_toolcall_ctx_size }} \ --n-gpu-layers {{ llm_toolcall_gpu_layers }} \ --parallel {{ llm_toolcall_parallel }} \ --metrics # NOTE: no --chat-template flag — let llama-server auto-detect Mistral-Small's # own embedded chat template from GGUF metadata. # NOTE: --host is the private LAN IP (10.1.71.130 by default), NOT 0.0.0.0. # NOTE: --parallel 1 is deliberate (plan §1/§2) — tool-calling profiles are # single-session-at-a-time per Claude Code profile; lower parallelism reduces # KV overhead and lowers hallucination surface from context bleed between # concurrent slots. # IMPORTANT: this endpoint MUST pass the plan §7 validation harness # (docs/validation-log.md in this role) before any Claude Code / tool-calling # Hermes profile is pointed at it. Mistral-Small shares lineage concerns # flagged for Qwen2.5/Qwen3 hallucinated tool_calls — do not assume safety. Restart=on-failure RestartSec=10 TimeoutStartSec=600 StandardOutput=journal StandardError=journal SyslogIdentifier=llama-server-toolcall [Install] WantedBy=multi-user.target