Letting my homelab do things on its own

After setting up my homelab and switching to a smaller model, I had a good private AI. But it only did something when I typed into it. Close the tab, and it waits.

I wanted it to do small jobs for me on its own, and to reach me in the chat apps I already use. That kind of program is called an AI agent. In August I tried two: OpenClaw early in the month, and Hermes Agent near the end.

What an agent is

An agent is a language model with four extra things around it:

PartWhat it means
ToolsIt can read files, run commands or open web pages, look at the result, and decide what to do next
SkillsSaved instructions, so it does a job my way every time
SchedulerIt runs jobs on its own at set times, like a cron job
Chat appsI can talk to it from Discord, WhatsApp, Telegram and others

The tools are what make the difference. A chat window can only talk. An agent can act.

OpenClaw

OpenClaw is an open-source assistant that runs on your own computer and talks to you through the chat apps you already use.

I ran it in two places: on my Mac, connected to a Discord bot, and on my homelab inside NVIDIA’s NemoClaw. NemoClaw runs the agent in a locked box (a sandbox), so it can’t touch the rest of the machine.

Two things caught me out:

  • Free models stopped working. I connected it to OpenRouter, a service that gives one API for many AI models. Every free model failed with an error about “guardrail restrictions”. The model wasn’t the problem. One privacy setting was: it only allowed providers that don’t keep any data, and free models almost never offer that.
  • My contacts could get bot messages. By default, anyone who sends a WhatsApp message to the connected number gets an automatic reply from the bot. On a personal number, that means friends and family. I changed it so only my own number can talk to it.

Hermes Agent

Hermes Agent is an open-source agent from Nous Research. It has all four parts from the table above, and it runs its tools inside Docker containers, not directly on my machine.

The part I liked most: it uses my own model on the homelab. Hermes talks to models the same way apps talk to OpenAI, and my model server speaks that same language. A few lines of config, and the agent’s brain was the model under my desk.

Then I checked its usage records instead of assuming. 480 of 612 requests had gone to my own model. The rest came from a day of testing, including 121 requests to a backup provider I had set up and forgotten about. It cost 24 cents, but it taught me something: “local” is a setting, not a promise. Check where your requests actually go.

What I use it for

Nothing fancy. Seven scheduled jobs:

  • Every night: read a calendar and add each new deadline to Apple Reminders.
  • Every half hour: two jobs save my notes and settings to git, if anything changed.
  • Every day: add new items from my course calendar to Reminders.
  • Two jobs watch websites I care about and tell me when something new appears.
  • Every week: read what I committed to my notes and send me a summary of what I learned.

And here’s the surprise: six of these seven jobs don’t use AI at all. They are plain scripts that Hermes runs on a schedule. Only the weekly summary uses the model.

It wasn’t the plan. I gave every job to the AI first, because it was new and fun. Then, job by job, once I understood the steps well enough to write them down, I turned it into a script.

The rule I ended up with:

  • One right answer? Use a script. “Add this deadline to Reminders” has one correct result. A script does it for free, can’t make up a date, and fails loudly.
  • Needs judgement? Use the AI. “Tell me what I learned this week” has no single right answer. That one earns the model.

So for me, the real value of Hermes isn’t the AI. It’s everything around it: the scheduler, sending results to Discord, the sandbox, and having it all in one place.

Setting it up took four days

Every problem was a silent one:

  • A small network component inside Hermes clashed with another program on the same port and stopped. It reported “success” while it stopped, so nothing noticed.
  • After I fixed that, it didn’t start again after a reboot. I had to add a service so the machine starts it every time.
  • I spent a full day on a bug that had already been fixed, three hours after I installed. Updating first would have saved me the day.

What I learned

  1. Use AI only where there’s no single right answer. Everything else is a script.
  2. Check where your data actually goes. A forgotten backup setting sent requests elsewhere.
  3. Give the agent access step by step. It runs commands based on chat messages, so I only give it the folders it needs.
  4. Expect silent failures. Check yourself that things started, and that they start again after a reboot.

Next, I want to give Hermes more tools through MCP, a standard way to plug new tools into AI agents.

If you’ve built something similar, I’d like to know what you automated, and whether it really needed AI.

References