In short: A mini PC in my office runs the open-source agent Hermes around the clock. It sends me new Shopware topics, matching freelance projects and website outages via Telegram. The language model runs locally on my AI server. The key lesson from the first weeks: as soon as the AI writes the messages itself, it mangles links and invents dates. So in my setup, scripts collect the facts and the AI only decides what is relevant.

What Hermes is

Hermes Agent is an open-source agent by Nous Research (MIT license). It connects a language model with tools, runs recurring tasks on a schedule and delivers the results through messengers such as Telegram.

My setup:

  • Mini PC: a GEEKOM MiniAir 11 running Linux. It runs Hermes with all jobs, scripts and state. Small, efficient and always on.
  • AI server: my ASUS Ascent GX10 with 128 GB of memory serves the language model via Ollama, currently Qwen 3.5 with 122 billion parameters.
  • Telegram: every notification lands on my phone.

The split is deliberate: the small machine organises workflows and connections, the big one provides the computing power. That is flexible, but it adds a network dependency. If the AI server is unreachable, a job has to detect and report that instead of failing silently.

No data goes to a cloud provider, and there is no cost per request.

Watcher 1: Shopware news without the fluff

The first job was meant to keep me updated on Shopware. The first version did that, but the messages were too long and full of filler. On my phone I only want the essentials, fast.

So I split the job in two:

  • Shopware News: daily at 8 am, at most three items, only from the last 48 hours.
  • Blog ideas: Mondays and Thursdays, at most three suggestions that fit my existing topics.

A fixed script collects the sources: RSS feeds, GitHub, blogs and public posts. My own posts are on an exclusion list so Hermes doesn't report my own articles as news.

Watcher 2: freelance projects for Shopware and Symfony

The second job searches for freelance projects four times a day. My rules:

  • only Shopware or Symfony, no other shop systems or CMS
  • only projects in Germany, Austria and Switzerland
  • at most 24 hours old
  • no temporary staffing contracts (the German abbreviation "ANÜ" is filtered out)
  • and the posting must still be available

The script queries several project boards and job sites, plus LinkedIn, the Shopware forum and relevant Reddit communities. Then it opens every posting individually. If it has been removed, it is dropped.

Only then does the AI come in. It gets the posting text and answers just two questions: does the project match the rules? Is it still open? The answer comes back in a fixed data format, not as free text.

Not everything can be queried. Some sites block automated requests or only show content with JavaScript. Facebook groups are not reachable without a login. That is part of the truth: a watcher only finds what is publicly accessible.

Watcher 3: websites and SSL certificates

The third job monitors my websites. Every five minutes each page is requested. Besides the status code, the script checks whether a specific text appears on the page. That way it also catches an error page that technically still returns "200 OK".

  • A notification only comes after two failed attempts, so a brief glitch doesn't trigger an alarm.
  • If a page stays down, Hermes reminds me every hour.
  • Once it is back, I get an all-clear.
  • SSL certificates: first notice 14 days before expiry, daily from 7 days.

There is no AI in this one at all. It doesn't need any.

The key lesson: the AI does not write facts

In an early version, the language model was allowed to write the Telegram message itself. The result: links were mangled, and projects showed dates that didn't exist. For a notification I want to rely on, that is a deal breaker.

Since then, every job follows the same split:

  • The script collects the data, checks availability and age, and writes the message. Links, titles and dates always come from the source.
  • The AI only judges: relevant or not, still open or not, important or not.
  • No AI at all for jobs with nothing to judge, such as website monitoring.

Hermes can also run such jobs without the agent. It simply starts the script on schedule and sends the result. That is less spectacular than an agent researching the web on its own, but far more reliable.

Scheduled doesn't mean reliable

A job that has been created is not proof of working automation. For every new watcher I check several levels:

  1. Does the service start again after a reboot?
  2. Does the job use the right profile and configuration?
  3. Is the model on the AI server reachable?
  4. Can the script actually read the sources?
  5. Does the message arrive via Telegram?
  6. Are the content and timeliness of the message correct?

The last point is often underestimated. A job can run flawlessly and still report outdated results as new.

What I would recommend

  • Start with a clear question. "Are there new Shopware projects?" works. "Keep me posted" doesn't.
  • Limit the volume. Three good notifications are worth more than twenty mediocre ones.
  • Never let the AI write links or dates. The script takes them from the source.
  • Use AI to judge, not to narrate. A yes-or-no decision is much easier for a model than an error-free text.
  • Plan for gaps. Not every source can be reached automatically.

Frequently asked questions

Do I need my own AI server for this?

No. The scripts run on any small computer, and for the judging part a smaller model or a cloud API is often enough. For me it matters that no data leaves the house and there are no ongoing costs per request.

Why not let an agent research freely?

Because I want to rely on the notifications. A freely working agent is exciting, but it returns something different every time and makes mistakes you only notice late.

How much work is it?

A single watcher with a clear goal is built quickly. The real effort is in the fine-tuning: fixing sources, sharpening filters, shortening messages.