Hermes — Self-hosted AI agents
Two agents running in production on my own infrastructure. And a network problem that took a Raspberry Pi to solve.
The problem
I wanted a personal assistant and a trading research bot that ran under my control — no SaaS that can change pricing, shut down, or read my financial data.
Architecture decisions
Skills are fixed scripts, not LLM-generated code.
Every capability (expense tracking, reminders, quotes, technical analysis) is
a Python script in /opt/data/skills/. The LLM decides which one to call,
not what code to write. An agent that regenerates its own logic on every
run is non-deterministic and undebuggable — when it fails, you can’t tell
whether it was the prompt, the model, or the logic.
SQLite, not Postgres. One user, one server, low write frequency. Postgres would be infrastructure to maintain with no benefit.
Model chosen for cost, not benchmarks. An agent that runs on cron every day accumulates cost. Model selection is an architecture decision, not a footnote.
The interesting trade-off
The trading bot needed read access to my brokerage account (IOL). IOL blocks datacenter IPs. A VPS is, by definition, a datacenter IP.
The fix: Tailscale connecting the VPS to a Raspberry Pi at home, with
tinyproxy as the exit. Traffic to the broker leaves through a residential
Argentine IP. Two details that mattered: DisableViaHeader yes — tinyproxy
ships a Via header by default that announces the presence of a proxy — and
browser-like headers.
The cost: I now depend on my home connection staying up. That’s a failure point a commercial proxy wouldn’t have. But a commercial proxy costs money and can be detected too. I took the trade.
Result
Two agents in production. The finance bot runs economic news research on a weekday cron, technical analysis over 35 tickers, and fundamentals via Finnhub.