Skip to content
C.W.K.
Stream
Lesson 06 of 07 · published

The Brain Is Assigned, Not Remembered

~12 min · brain-control-plane, fail-closed, family-authority, connection-modes, defaults

Level 0Unlit
0 XP0/48 lessons0/13 achievements
0/100 XP to next level100 XP to go0% complete
"A settings file that remembers which brain to use will be right on the day it was written."

From a Field to a Slot

When this quest was written, the brain behind command mode came from two fields in Firekeeper's own settings.json: pippaBrain and pippaEffort. Every Mac carried its own copy, and Firelink, the family's control tower, had no way to see or change them. On 2026-08-13 Firekeeper joined the family's Brain Control Plane. Command mode and explicit Full Pippa dictation now resolve one central assignment, the slot firekeeper/full_pippa_command, at the moment a job starts. Voice chat got its own slot, voice_chat, six weeks later. The two old fields survive only as the snapshot used the first time Firekeeper registered.

job starts (command mode, or Full Pippa dictation)
  -> resolve firekeeper/full_pippa_command   (brain, effort, model pin)
       ok          -> run with exactly that
       unavailable -> FAIL CLOSED: skip Full Pippa,
                      fall to Local Mini (then deterministic for
                      a dictation; nothing inserted for a command),
                      say so on screen

never: guess from settings.json pippaBrain / pippaEffort

Fail Closed, Visibly

"Fail closed" here means the job does not invent a brain. If the assignment cannot be read, Full Pippa is skipped for that job and the remaining ladder runs, and the status chip says what happened — the substitution with Local Mini became visible in the same week the slot shipped. The voice chat's slot is stricter still: no assignment, no talk, and the panel names the reason. A brain that silently differs from the one shown in Settings is the failure this whole design exists to prevent; voice chat had exactly that bug, showing one brain while running another, until it got a slot of its own.

Who May Write

An assignment is family state, so who can change it is part of the design. Writes and enrollment happen on office (This Mac) or in Firelink. Another Mac over Tailscale can read the live assignment, with the PIN, but cannot change it. Local Mini is not a slot at all; it is the absence of cwkPippa. And Firekeeper must never re-register from a second Mac, because registering rotates the app's key. The slot also carries its model pin — until a 2026-09-27 review found the pin never reached the voice turn, every brain quietly ran its admin default.

The Family Owns the Authority, Too

In September the same move reached authentication. The PIN that unlocks cwkPippa over Tailscale had been a plain string in settings.json — a file that rides the office-to-peer sync and the NAS backups, so one PIN had become nine copies plus history. It now lives in the Keychain, and the session token in memory only. PIN issuance and role assignments moved to Firelink through the kit's authority resolver, and a single PippaDoor became the one owner of the session header, re-authenticating once on a 401 for every path alike.

The Default Knows Which Mac It Is On

The connection default had the same disease in a different organ. Every Mac defaulted to "This Mac" and localhost, which is right only on office. On the MacBook, port 8000 belonged to a different family app entirely, so command mode and voice chat reached the wrong server until someone set Tailscale by hand. Since 2026-10-06 the default follows the machine: the vendored KitFamilyHome reads the fleet label, office gets This Mac on loopback, and every other Mac gets Tailscale preset to office's tailnet address — still an editable field. A stored "This Mac + loopback" on another Mac reads back as the remote default; any other stored choice stays. Off office, Settings offers This Mac only while it is the stored choice.

Resolve shared decisions at the moment of use, from their one owner. A per-app copy of a family decision is right only until the family changes its mind. Read the assignment when the job starts, refuse visibly when it is missing, and let only the owner write it.
A derived default is not a hard-coded host. Track 4 warned against baking one machine's address into the app. Deriving the default from which Mac the app runs on keeps that rule: the field stays editable, and the default is correct on every machine instead of on one.

Code

Firekeeper declares its two slots to the family (Pippa/BrainControl.swift, abridged)·swift
enum FirekeeperBrainControl {
  static let appId = "firekeeper"
  static let slotId = "full_pippa_command"
  static let voiceSlotId = "voice_chat"
  static let slots = [
    BrainControlSlotCatalogEntry(
      slotId: slotId, label: "Full Pippa Command", category: "utility",
      description: "The brain behind command mode and explicit Full Pippa dictation.",
      remoteExecution: true),
    BrainControlSlotCatalogEntry(
      slotId: voiceSlotId, label: "Voice Chat", category: "main",
      description: "The brain Pippa talks with in Firekeeper's voice chat, on every Mac.",
      remoteExecution: false),
  ]
  static let writesNeedThisMac =
    "Change this in Firelink, or in Firekeeper on office (This Mac). "
    + "Tailscale can read the live assignment but cannot change it."
}

External links

Exercise

Find a setting in your apps that several of them keep a private copy of (an API endpoint, a model name, a feature flag). Describe the day the copies disagree. Then design the slot: who owns it, who may write it, when each app reads it, and what each app does when it cannot.
Hint
The answer to 'when it cannot read' is the heart of the design. Guessing from a stale local copy recreates the original bug; refusing visibly, or degrading to a clearly labeled fallback, keeps the screen and the reality in agreement.

Progress

Progress is local-only — sign in to sync across devices.
Spotted a bug or have feedback on this page?Report an Issue

Comments 0

🔔 Reply notifications (sign in)
Sign in — Please sign in to comment.

No comments yet — be the first.