Skip to content

Brains: a fast and a smart model ​

Homer has two brains: a fast model answers every phrase, and a smart model takes on multi-step jobs as tasks. By default these are Claude Haiku and Claude Opus; you can switch both in settings to other models and other clouds, for example DeepSeek.

The speaker: the fast model (Haiku by default) ​

The speaker's brains are a long-running Claude Code process in non-interactive mode on the speaker computer:

claude -p --model haiku --input-format stream-json --output-format stream-json \
  --tools "" --mcp-config mcp-voice.json --allowedTools mcp__homer
  • Each phrase goes there together with a home snapshot: devices by room from the Homer plan, their states, scenes.
  • An answer takes 1.5–2 seconds, 2.5–4 with a tool call.
  • The process is re-created every 6 phrases so the history doesn't grow, and right after brains settings change.
  • It has no built-in Claude Code tools (files, shell, internet) (--tools ""). It only has the home tools of the “Speaker” level.
  • In an English home, the brain gets its instructions, the home snapshot and the tool hints in English and answers in English. A language change re-creates the process.

What Haiku does itself ​

  • Lights, outlets, scenes, blinds, climate, fans, media — from an allowlist of services and only for devices in the snapshot. These actions come right in its answer, without an extra call, so they are the fastest.
  • Music, timers and reminders — with tools.
  • Answers questions about the home: what's on, where a window is open, what the temperature is.

What it hands to Alice ​

Radio, fairy tales, alarm clock, weather, news, exchange rates, general knowledge — if the home has a Yandex Station. The Station answers itself. Only in a Russian home: Alice speaks Russian only.

Sign-in and usage ​

The brains use the Claude Code sign-in of the Windows user the speaker runs as. Requests count against your Claude subscription limits; no separate API key or payment.

WARNING

If you sign out of Claude Code on this computer, the brains start answering «Голова не отвечает» (“The brain isn't answering”) or answer with the fallback brain. Quick light commands keep working: the Homer server handles them without a neural network.

Tasks: the smart model (Opus by default) ​

Haiku doesn't do multi-step things itself; it hands them over to the bigger model, claude-opus-5-5 by default:

  • “add a new light to the bedroom”;
  • “rename the bathroom sensor”;
  • “find out why the kitchen light doesn't work”.

How a task runs:

  1. Haiku calls the delegate tool with the whole request, and the speaker says “On it”.
  2. A separate claude -p with Opus and the “Tasks” level tools starts in the background.
  3. If a person needs to do something, like reset a light, Opus says so through the speaker (the say tool).
  4. Opus says the result out loud. The first line of its answer is spoken, the rest goes to the log.

Task limits:

At onceone task. While it runs, a new one gets the answer “still busy”
Timeup to 15 minutes
Stepsup to 40 calls
Instructionslook first, then act; don't delete or change anything beyond the request; if unsure, don't do it — say so

The task model is changed in Settings → Speaker → Homer brains (see below). Opus uses up subscription limits much faster than Haiku, so it is called only for tasks. To turn tasks off entirely, remove the delegate tool from the speaker.

Other clouds: DeepSeek, OpenRouter and more ​

In Settings → Speaker → Homer brains, both the speaker (“Speaker answers right away”) and tasks (“Background tasks”) have two lists: cloud and model.

CloudKeyModel list
Claudenot needed, Claude Code subscriptionHaiku, Sonnet, Opus, Fable
DeepSeekplatform.deepseek.comfrom the cloud, by key
OpenRouteropenrouter.aifrom the cloud
Kimi, Z.ai (GLM), MiniMaxvia the “get one” link in settingsfrom the cloud, by key

This works through the same Claude Code: these clouds have an Anthropic-compatible endpoint, and the speaker starts claude with the cloud's address and key (ANTHROPIC_BASE_URL, ANTHROPIC_AUTH_TOKEN). All of Claude Code's internal models are switched to the chosen one too; otherwise service requests would go to Haiku, which the cloud doesn't have.

  • The key is stored on the Homer server. It is never sent back to the app: settings only show “saved”. Only the speaker gets the key, and only from the home network.
  • The Check button loads the cloud's model list with the entered key before you save.
  • Speed and quality depend on the model: the speaker needs a fast one, or answers will lag by seconds. Not every model understands a camera frame (camera_look).

Fallback brain ​

The main brain is claude -p on the speaker computer. If it is silent for 60 seconds, a watchdog kills the process, and the next phrase starts a new one. While the main brain hasn't answered (the CLI hung, the cloud is down, no internet), the speaker asks the fallbacks in turn:

OrderBrainWhen it works
1The same cloud model directly through its APIOnly if a cloud with a key is chosen. A Claude subscription has no key, so this step is skipped
2A local model in LM Studio on the computerIf the LM Studio server is running

The local model:

  • an LM Studio server on port 18234 with a token; the token is in secrets/local-llm-key.txt;
  • model qwen3-4b-instruct-2507, loaded on the first request (about 9 s), then answers in 0.2–1 s;
  • the server starts from the user's Startup folder;
  • another address or model: the HOMER_LOCAL_LLM and HOMER_LOCAL_LLM_MODEL variables. Details in tools/speaker/local-llm.md.

This is a fallback

Fallback brains have no tools (music, timers, cameras, tasks) and no conversation memory. A 4B model mixes up services and confuses warm light with brightness. It keeps the home running until the main brain is back; it doesn't replace it.

The backup speaker on the GPD and Smartbox without the computer also ask the cloud model directly, by the same rules: no tools and only with a cloud key.

Memory ​

The speaker's brain has two kinds of memory. Both are on the speaker computer, in the HomerSpeaker folder.

  • A day of conversations (day.jsonl): what it was told and what it answered over the last 24 hours. The brain gets this on every restart and remembers what was discussed during the day: “what's the guest's name”, “what did I ask an hour ago”.
  • Permanent memory (memory.md). “Homer, remember the dog's name is Tosha”: the brain writes the fact with the memory_save tool and remembers it always. Without being asked, it only writes what it was told directly about the home and people: names and pets. “Forget about Dimon”: memory_forget.

Permanent memory is also seen by Opus tasks and by Claude Code with the home tools. Every entry and every deletion goes to the log. memory.md is a plain file: you can open and edit it by hand.

Forget from Telegram. Under each “remembered” message in the home group there is a 🗑 Forget button. The /memory command sends the whole list, with a button for each fact. After a tap, the bot replies in the group with who removed what. The buttons work only in the group linked to the home, and only while the speaker computer is on: the memory lives there. The speaker's brain re-reads its memory before the next phrase, unless it's in the middle of a conversation. It won't recall a forgotten fact again.