LLM Configuration

File: configs/llm.yaml
Command: kenzy-llm [config_path]

The LLM service processes transcribed text through a tool-calling loop and returns a spoken response. It uses LiteLLM as the model abstraction layer, so any provider LiteLLM supports works out of the box.

Full reference

Core

Key Default Description
host "127.0.0.1" Bind address
port 8766 HTTP port
log_level "info" Log verbosity
model "gpt-4o" LiteLLM model string (see Model strings)
base_url Provider base URL. Required for Ollama, LM Studio, and similar local providers.
max_tool_iterations 5 Maximum skill call iterations per request before returning whatever the model has

Prompts

Key Default Description
system_prompt (built-in) Injected at the start of every LLM call. Defines Kenzy's persona and behavior.
voice_prompt (built-in) Fallback TTS style instruction used when the model does not provide one.

Location context

Injected into every LLM call and used as the default by location-aware skills (e.g. weather).

Key Description
location.city City name
location.state State or province
location.country Country code (e.g. "US")
location.timezone IANA timezone (e.g. "America/New_York")
location.latitude Decimal latitude
location.longitude Decimal longitude

Skills

Key Default Description
skills.dir "skills" Path to the skills directory. Relative paths are resolved from the project root.
skills.disabled [] List of skill function names to disable without deleting the file.

Per-skill configuration lives under skills.<skill_name> as a nested map. See Built-in Skills for the keys each skill accepts.

Model strings

LiteLLM encodes the provider in the model string prefix:

Provider Example model string
OpenAI gpt-4o, gpt-4o-mini
Anthropic claude-opus-4-8, claude-sonnet-4-6
Ollama (local) ollama/hermes3, ollama/llama3.1
LM Studio (local) openai/model-name + base_url
Together AI together_ai/meta-llama/Llama-3-70b

API keys are read automatically from the environment. See the LiteLLM provider docs for the required environment variable per provider.

Example

host: "127.0.0.1"
port: 8766

model: "gpt-4o"
max_tool_iterations: 5

system_prompt: |
  You are Kenzy, a helpful home assistant. Be concise and conversational.

voice_prompt: "Speak in a friendly, natural tone at a moderate pace."

location:
  city: "Raleigh"
  state: "NC"
  country: "US"
  timezone: "America/New_York"
  latitude: 35.7796
  longitude: -78.6382

skills:
  dir: skills
  disabled: []

  weather:
    units: imperial

  home_assistant:
    url: "http://homeassistant.local:8123"
    device_ids_yaml: "data/home_assistant/device_ids.yaml"
    device_ids_json: "data/home_assistant/device_ids.json"
    default_room: "living_room"

Using a local model

To run entirely offline with Ollama: yaml model: "ollama/hermes3" base_url: "http://localhost:11434" No API key is required. Skill sub-calls (news summaries, HA resolution) also use this model unless overridden with a per-skill model key.