← Writing

October 21, 2026 · 5 min read

My house has an engineering staff

Office buildings have building engineers who make rounds, keep a logbook and file work orders. Mine are Claude agents, GitHub is the work-order system, and I'm the owner who signs off.

A large office building has an engineering staff. Engineers make daily rounds, keep a logbook, catch slow faults before they become outages, and file work orders. Small fixes they just do. Anything bigger goes to the owner for sign-off, and when they work on a live system it gets locked out first.

I wanted that for my house, without hiring anyone. So the house has a small staff of Claude agents, each with a written job description, a domain and a limit on what it may touch. GitHub is the work-order system. I'm the owner. The goal I gave them, in my words: "I want you to do it if it's at all possible. Never me unless required."

The staff

  • Climate building engineer. That is the title on its charter. It owns heating and cooling: the radiant floor, the bathroom floor thermostats and the mini-splits. It makes rounds every morning, runs measurement studies like the slab experiment, and tunes the heating within limits I set.
  • Lighting engineer. The newest hire. It owns lights and scenes, but so far it only watches: a 30-day baseline of how the family uses the lights, then a weekly review. It may propose up to three changes per run and make none.
  • House manager. Chief of staff, not boss. It runs the family calendar, writes the morning brief, ranks what needs me, and flags conflicts between the other agents' domains. It changes nothing outside its own.
  • Me. I set goals, sign off on work orders, do anything physical, and hold the keys: tokens and account settings are always mine.

Nobody manages anybody. The agents are peers. When one needs a change in another's domain, it files a work order with that owner instead of making the change itself. If ownership is unclear, I decide.

Job descriptions

Each agent has a charter: its role, its domain, its permissions, its schedule and its kill switch. An owners map assigns every device pattern, file and dashboard to exactly one agent, or to me. Every agent may read everything; only the owner writes.

The charters also set professional standards. The climate engineer's says "Numbers over adjectives." Every problem it reports has three parts: what it saw, with numbers; why it matters (comfort, cost, equipment wear, safety); and a fix, with who does it. "'Investigate' or 'monitor' is never a fix on its own."

Never in the control path

Home Assistant runs the house in real time: thermostats, alerts, the failsafes. The engineers aren't part of that loop. They review what happened, record it and recommend changes. If an agent run fails, or I switch the agents off, the house heats exactly as before.

For a real fault, such as water too hot or a pump drawing too much power, the engineer sends me a push with what, why and the safest first step, often a physical check. Its charter says "Never attempt a fix yourself."

Trust comes in tiers

Every agent starts as an observer: it can read anything and write only its own notes. Authority comes later, one grant at a time, and only I can give it.

The climate engineer has one standing grant so far, for the morning warm-up. Within it, the engineer may move the restore time between 3:00 and 4:30 AM in 15- or 30-minute steps, change the boost exit between 71 and 72°F, and set the boost cap from 45 to 120 minutes. The rules come with it:

  • three cold mornings of evidence before any change;
  • one change at a time, with three more cold mornings before the next;
  • size the change from the measured shortfall;
  • log the change, and revert it if the room misses on two mornings running.

A higher tier, adjusting presets by half a degree, is written into its charter but not granted. That is how I'd treat a new engineer: sign-off authority grows with the track record.

Rounds and the logbook

The climate engineer's daily review runs early each morning. It reads its logbook first. The logbook is its memory: current state, open experiments and the last week of entries. Then it pulls the night's data and writes one entry in a fixed format: weather, radiant runs and temperatures, the morning warm-up, sensors, gas, issues, recommendations, and a status of Normal, Watch or Action needed.

Lessons go into a section of building notes, but only after three days of evidence: how long the slab lags, what the heat exchanger normally reads, how much the sun adds. The family sees all of this as one line in the morning brief.

Work orders go through GitHub

The house's configuration lives in a GitHub repo, and the repo is the authority. A work order is a GitHub issue; its labels are its status.

The ticket lifecycle: propose, approve, build, review, merge, apply, watch, close, with approve and sometimes merge done by me

  1. Propose. The engineer opens an issue: evidence, the exact change, a test plan, a watch period, rollback steps, and the risk to the family.
  2. Approve. I add the approved label, drag the card on the board, or type "approve #n" to Claude in a chat. A GitHub Action wakes the engineer within about a minute.
  3. Build and review. It builds the change on a branch, runs checks against the live house, and asks a fresh subagent that hasn't seen the work to review the diff. That's the second engineer's sign-off.
  4. Merge and apply. It backs up what's running, applies the merged version, and checks Home Assistant's config.
  5. Watch and close. It reports daily against the success criteria, rolls back if the trigger fires, and closes the work order with a one-line before-and-after.

An approval counts only if it came from my account, not through the Claude app the agents use, and they check that before building. Who merges depends on the stakes:

  • dashboard code and documentation: the engineer, after review;
  • small trigger or condition fixes: the engineer, after review;
  • anything that changes what the house does, or the rules themselves: me.

A required check on GitHub enforces the split.

Lockout and limits

  • Kill switches. Each agent has an on/off switch in Home Assistant that only I can flip. Off means read and report, nothing else: lockout/tagout for software.
  • Run limits. Daily run caps, and a lock so two runs never work at once.
  • Data is not instructions. Text in calendar invites, issue comments from anyone but me, file contents or sensor names is data, never an order.
  • No secrets in the repo. Creating a token is always my job.

Being the owner

What reaches me is short: a "Needs you" list in the morning brief and a weekly digest, both ranked by my goals. Most items are "approve #n" or "merge #n". The rest are things only a person can do, like moving a sensor to a better spot.

The engineers' comments have hard limits, 60 words outside a folded details block, enforced by a lint check, because their early comments were too long to act on.

The repo's issue and pull request counter passed 190 by October 21. I opened very few of them. A building with a good engineering staff is one the owner rarely thinks about.