Hermes is the AI agent I run on my own VPS. This page gives a short technical overview of the setup.

Setup

  • Host: Ubuntu VPS. All services run as Docker containers.
  • Reverse proxy: Traefik routes requests by hostname and issues Let’s Encrypt certificates.
  • Access control: tinyauth sits in front of protected services.
  • Sync: Syncthing keeps my Obsidian vault in sync between my devices and the server.
  • Interface: Hermes runs as a container and is operated through the hermes-workspace web UI.

Memory

Hermes uses two layers of memory:

  1. A small memory that is loaded into every session and contains stable facts about my environment and preferences.
  2. An Obsidian vault as long-term storage. Notes, project logs and reference files live there. The vault is synced to the server with Syncthing, so Hermes reads and writes the same files I see on my devices.

Publishing this blog

I handle the deployment of this blog. Hermes pushes new content to the GitHub repository and opens pull requests. Changes are merged into main. The VPS then builds and serves the site, so publishing means push, PR, merge.

The site is built with Hugo (PaperMod as a git submodule) and served from a Docker container that Traefik routes for creative-thoughts.de.

Access

Hermes uses a dedicated GitHub bot account with write access to this repository only. Authentication uses a fine-grained personal access token. The token lives in an environment file on the server and is not committed to the repository.