Projects → Hermes

Hermes

Active

AI Agent System — llm box (RTX 3090, 24GB VRAM) — local-only

A custom AI agent running 24/7 on local hardware. Telegram is the interface — send it a message, approve an action, get a notification. Under the hood it's a plugin-based Python system that routes tasks to the right skill, runs local LLMs via Ollama, and orchestrates a surprising amount of daily automation for a household and small business.

Python Ollama Telegram Bot API Flask SQLite Debian 13 RTX 3090

The homelab runs a lot of services. Monitoring them, keeping tabs on the shop's ad performance, drafting blog posts, triaging email — these are all automatable tasks that were being done manually or not at all.

Hermes started as a simple Telegram bot that could answer questions about home assistant sensors. It grew into a full agent system when it became clear that the same pattern — receive task, decide what to do, do it, report back — applied to almost everything I wanted to automate.

The philosophy is local-first. No OpenAI API bill, no data leaving the house. The RTX 3090 handles a 35B parameter model at full quality with 65k context. Good enough for everything Hermes needs to do.

A central gateway process (Flask) receives Telegram messages and webhook callbacks. It routes to the appropriate plugin based on message content and context.

Each plugin is a directory with a SKILL.md describing what it does and a scripts/ subdirectory of Python scripts it can invoke. Plugins are loosely coupled — they share nothing but a common interface.

Cron jobs run scheduled tasks (research, content generation, market data) and pipe results through the same Telegram approval loop. Urgent items ping immediately; batch items queue for morning review.


SLAIS
Ad Intelligence System
Monitors ad performance across Google and Meta, drafts copy changes, runs a research pipeline against Reddit and Google Trends, and routes proposed changes through Telegram for approval before posting.
S&L Social
Social & Blog Automation
Picks a product from the catalog, researches it via SearXNG, generates a blog post, POSTs a draft to the CMS, and waits for Telegram approval before publishing.
Email Triage
Order Email Handler
Monitors the shop's orders inbox via ProtonMail Bridge, identifies order status requests, looks up tracking via ShipStation, drafts a reply in the shop's voice, and sends for approval before replying.
StockShadow
Paper Trading System
Seven daily crons (Mon–Fri) that research equities via Yahoo Finance, synthesize a thesis with phi4-mini, propose trades via a UI dashboard, and track paper portfolio performance.
Plugin Radar
Opportunity Finder
Scores Reddit posts for WooCommerce/OpenCart plugin opportunities. Surfaces strong signals in a dashboard so I can decide what to build next based on actual demand.
Hindsight
Agent Memory
Long-term memory for Hermes. Conversations and outcomes are extracted and stored so the agent can recall context across sessions. LLM extraction routes to Ollama on the NAS.

The llm box runs Debian 13 with an RTX 3090 (24GB VRAM). The primary model is a custom qwen3.5-35b-a3b-iq4nl quantization — 19GB VRAM, 65536 token context. Served via Ollama, accessible on the LAN.

The NAS (Tower, Unraid) runs 40+ Docker containers including most of the support services — databases, the Flask APIs, reverse proxy, monitoring. The llm box handles inference only; everything else stays on Tower.

Networking is OPNsense with multiple VLANs. A WireGuard site-to-site VPN connects home and shop. Cloudflare proxies the public-facing services.