Back to blog

2026.02.15

My AI Homelab: A Developer's Personal Infrastructure

An AI assistant ties together my smart home, automation workflows, voice control, and daily information. This is a snapshot of a system that keeps evolving.

aihomelabautomationsmart-home

I have an AI assistant running 24/7 on a server in my home.

It has an identity, memory, and scheduled jobs. It controls my smart home, works with files and email, searches the web, and executes code. This is a snapshot of that personal infrastructure as it keeps evolving.

Hardware

The base is an always-on Linux server with a GPU.

A cloud server would be easier to provision, but I need this machine to:

  • reach smart-home devices on the local network
  • accelerate OCR, local model inference, and video processing on a GPU
  • run long jobs without API limits
  • keep full control of the data

A GPU host costs more up front, but owning it is far cheaper over time than leaving a cloud GPU instance running around the clock.

Core capabilities

Smart-home control

The assistant talks to Home Assistant through its API. Home Assistant normalizes devices from different vendors; the assistant translates my intent into device operations. It can control:

  • lights, including power, brightness, and color temperature
  • Dyson air purifiers, including fan speed and mode
  • projectors, including power and input selection
  • climate-control equipment
  • smart speakers in different rooms

A conventional smart-home app starts with a device and a command. I can start with a situation:

"It's getting a little dark" → use the current time and room to decide which light to turn on and how bright it should be

"I'm going to bed" → turn off the living-room lights, dim the bedroom light, and put the air purifier into sleep mode

That is more flexible than any smart-home app I use. The assistant understands context, so I don't have to translate how a room feels into a device name or brightness value.

The voice-control path

iPhone / Apple Watch → Siri → Shortcut → Webhook → AI assistant → Home Assistant

I built the voice path with iOS Shortcuts. I press a button, speak, and let iOS turn the audio into text. The Shortcut sends that text to the assistant through a webhook. The assistant interprets the intent and calls Home Assistant.

The path has three practical advantages:

  • I don't need to remember exact device names or rigid command phrases.
  • It can handle compound requests such as "turn off every light and then turn on the projector."
  • I can control the house while away through the internet, a messaging platform, and the assistant inside the home network.

The tradeoff is latency. Speech recognition, the webhook, model interpretation, and the API call make this path 2-3 seconds slower than native Siri-to-HomeKit control. The delay is noticeable, but the flexibility is in a different league.

Daily information aggregation

Every morning at 9 AM, the assistant pushes a briefing:

  • Weather: temperature, whether I should carry an umbrella, and clothing advice
  • Markets: movement in the major indexes and assets I hold
  • News: important developments in AI and technology
  • Calendar: meetings and tasks for the day
  • Projects: the state of work already in progress

The assistant filters and orders the inputs around my interests. The format stays consistent while the contents change each day, like a private news editor.

Memory

An LLM loses its context when the process restarts. I use files and indexes as external memory:

  • Daily logs: an automatic record of what I did and learned each day
  • Long-term memory: curated facts, preferences, and past decisions
  • Semantic search: a vector index for questions such as, "Do you remember what I said about XX before?"

This lets the assistant become more useful over time. It remembers my design preferences, technical habits, even food I dislike, and why I rejected an old option.

Email handling

With command-line IMAP and SMTP tools, the assistant can:

  • check the inbox on a schedule
  • identify important messages and notify me
  • draft replies, then wait for my confirmation before sending
  • classify obvious junk mail

Routine messages from trusted sources, such as order confirmations and billing notices, can be processed and recorded without interrupting me. Anything that speaks in my voice keeps a human checkpoint.

Code assistance

The assistant can execute code directly on the server where my projects live. It can:

  • read and modify project files
  • run tests
  • create Git commits and pull requests
  • invoke external command-line tools

A common workflow starts with a message from my phone. I describe the task; the assistant edits the project, runs the tests, and opens a pull request. I review the result and merge it.

The unit of interaction is "give it a task description and receive a complete PR," one level above line-by-line completion.

Scheduled jobs

Manual conversations are only one part of the system. The assistant also runs recurring jobs:

  • Every day at 9:00 AM: send the morning briefing
  • Every 30 minutes: run a heartbeat over email, calendar, and notifications
  • Every evening: organize the day's notes and update long-term memory
  • Every Monday: summarize the week and check project progress

The heartbeat lets the assistant notice an important message or approaching meeting without waiting for me to ask. It also knows when to stay quiet: no late-night interruptions, and no message when a check finds nothing.

Safety boundaries

This system gives an AI broad access, so the boundaries have to be explicit.

It may do these freely:

  • read files, search, and organize information
  • control configured smart-home devices
  • execute predefined automation jobs

These require confirmation:

  • send email
  • publish to social media
  • perform irreversible actions, including deleting files or changing configuration

These are always forbidden:

  • expose private personal information
  • speak for me in a group chat
  • make financial decisions on its own

The rules live in configuration and load on every startup. They are hard constraints, with no room for negotiation.

A system in evolution

I didn't design the system in one sitting. It began as a chatbot, then gained file access, smart-home control, email, voice, scheduled jobs, and memory.

Every addition brought another problem: permission scope, rollback after failure, and privacy. Solving those problems is the work of building personal infrastructure.

Why the tinkering is worth it

Honestly, building and maintaining all of this has taken a lot of time. Existing apps can reproduce many individual features with less setup.

The payoff is integration and customization.

No single app can use my schedule to suggest what to wear, help answer email, control the lights, archive an idea into my notes, and accept a voice request from my phone to write code.

Each capability is ordinary in isolation. Connecting them under one assistant that understands my context creates a completely different experience.

It feels closer to a digital personal assistant than a collection of automations. It is imperfect, but it keeps getting better.