Generate illustrations in a learned visual style
Everything you need to understand and customize Hermes Agent. Task: Everything you need to understand and customize Hermes Agent. Hermes Agent crossed 90,000 GitHub stars in two months. Developers are quietly building personal AI agents that learn their workflow, remember their context, and run 24/7. Hermes Agent takes a fundamentally different approach which makes it much more practically useful over OpenClaw. It ships with a learning loop that: Remembers across sessions Remembers across sessions Writes its own reusable skills Writes its own reusable skills Prunes them in the background Prunes them in the background And validates them offline through an evolutionary engine called GEPA And validates them offline through an evolutionary engine called GEPA No other open-source agent combines all of them. Not even OpenClaw. This guide covers how this learning loop works, what each memory layer does, and how to configure everything from scratch. By the end, you’ll have three fully isolated agents running on your machine: a programmer (who uses your Claude code), a deep researcher, and a designer, each with its own personality, memory, skills, and Telegram bot. Check this out: The whole setup takes minutes, and everything here is reproducible on your own hardware. The one-line pitch: an agent that gets better the longer you use it. What makes that real is that three usually separate capabilities sit in one framework: runtime skill learning, persistent multi-layer memory, and an optional weight-training pipeline. No other open-source agent ships all three. The closest comparison in the open ecosystem is OpenClaw. Both are persistent, messaging-friendly, but they make opposite architectural choices. A clean framing from the Kilo blog captures it: “Hermes packages a gateway around a learning agent. OpenClaw packages an agent around a messaging gateway.” Before the learning loop makes sense, you need a basic picture of how Hermes is structured. Everything flows through a single AIAgent class in a run_agent.py script. CLI, messaging gateway, batch runner, IDE integration: they’re all entry points into the same core agent. This is what makes the platform-agnostic story actually work. The core loop is ReAct-style and synchronous. Build the system prompt, check if compression is needed, make an interruptible API call, execute any tool calls, and loop again. A few key details: The agent can run commands in six different places. Local terminal, Docker, SSH, Modal, Daytona, or Singularity. Same code, just a config change. Move execution from your laptop to a cloud GPU server without touching anything else. The agent can run commands in six different places. Local terminal, Docker, SSH, Modal, Daytona, or Singularity. Same code, just a config change. Move execution from your laptop to a cloud GPU server without touching anything else. It works with almost any model. A translation layer routes any provider through one of three API formats. That’s why you can swap from Claude to GPT to Gemini to local Ollama with one command and nothing breaks. It works with almost any model. A translation layer routes any provider through one of three API formats. That’s why you can swap from Claude to GPT to Gemini to local Ollama with one command and nothing breaks. The agent has a hard cap of 90 turns per task. Without it, an agent stuck in a loop (retrying a failing API, re-reading the same file) would silently burn through your credits. Subagents share the same budget, so a runaway delegation chain can’t sneak past either. The agent has a hard cap of 90 turns per task. Without it, an agent stuck in a loop (retrying a failing API, re-reading the same file) would silently burn through your credits. Subagents share the same budget, so a runaway delegation chain can’t sneak past either. Before we get to memory and self-evolving skills, there’s a layer that sits above both: identity. Memory is what the agent knows. Skills are how it does things. But neither tells you who it is when it shows up. Without an identity layer, every agent feels like the same agent wearing different hats. Hermes solves this with a single file: SOUL.md. It lives at ~/.hermes/SOUL.md and occupies slot #1 in the system prompt, before anything else loads. It defines the agent’s personality, tone, communication style, and hard limits. SOUL.md is hand-authored and static. You write it once, tweak it over time, and it stays consistent across every project and every session. If the file is missing, Hermes falls back to a built-in default identity.; tools: Hermes Agent. Human role: The original post does not say how a person stayed involved.; limitations: Requires Hermes Agent installed with a designer profile, an OpenRouter API key, and access to the Nano Banana model. The agent's self-improvement loop may overwrite manual customizations if not pinned. GEPA validation is optional but recommended for skill quality. Human approval is critical before deploying generated skills to avoid unintended behavior or cost..
Tools
Published on Agent Work Atlas:
Overview
Everything you need to understand and customize Hermes Agent.
Workflow
Everything you need to understand and customize Hermes Agent. Hermes Agent crossed 90,000 GitHub stars in two months. Developers are quietly building personal AI agents that learn their workflow, remember their context, and run 24/7. Hermes Agent takes a fundamentally different approach which makes it much more practically useful over OpenClaw. It ships with a learning loop that: Remembers across sessions Remembers across sessions Writes its own reusable skills Writes its own reusable skills Prunes them in the background Prunes them in the background And validates them offline through an evolutionary engine called GEPA And validates them offline through an evolutionary engine called GEPA No other open-source agent combines all of them. Not even OpenClaw. This guide covers how this learning loop works, what each memory layer does, and how to configure everything from scratch. By the end, you’ll have three fully isolated agents running on your machine: a programmer (who uses your Claude code), a deep researcher, and a designer, each with its own personality, memory, skills, and Telegram bot. Check this out: The whole setup takes minutes, and everything here is reproducible on your own hardware. The one-line pitch: an agent that gets better the longer you use it. What makes that real is that three usually separate capabilities sit in one framework: runtime skill learning, persistent multi-layer memory, and an optional weight-training pipeline. No other open-source agent ships all three. The closest comparison in the open ecosystem is OpenClaw. Both are persistent, messaging-friendly, but they make opposite architectural choices. A clean framing from the Kilo blog captures it: “Hermes packages a gateway around a learning agent. OpenClaw packages an agent around a messaging gateway.” Before the learning loop makes sense, you need a basic picture of how Hermes is structured. Everything flows through a single AIAgent class in a run_agent.py script. CLI, messaging gateway, batch runner, IDE integration: they’re all entry points into the same core agent. This is what makes the platform-agnostic story actually work. The core loop is ReAct-style and synchronous. Build the system prompt, check if compression is needed, make an interruptible API call, execute any tool calls, and loop again. A few key details: The agent can run commands in six different places. Local terminal, Docker, SSH, Modal, Daytona, or Singularity. Same code, just a config change. Move execution from your laptop to a cloud GPU server without touching anything else. The agent can run commands in six different places. Local terminal, Docker, SSH, Modal, Daytona, or Singularity. Same code, just a config change. Move execution from your laptop to a cloud GPU server without touching anything else. It works with almost any model. A translation layer routes any provider through one of three API formats. That’s why you can swap from Claude to GPT to Gemini to local Ollama with one command and nothing breaks. It works with almost any model. A translation layer routes any provider through one of three API formats. That’s why you can swap from Claude to GPT to Gemini to local Ollama with one command and nothing breaks. The agent has a hard cap of 90 turns per task. Without it, an agent stuck in a loop (retrying a failing API, re-reading the same file) would silently burn through your credits. Subagents share the same budget, so a runaway delegation chain can’t sneak past either. The agent has a hard cap of 90 turns per task. Without it, an agent stuck in a loop (retrying a failing API, re-reading the same file) would silently burn through your credits. Subagents share the same budget, so a runaway delegation chain can’t sneak past either. Before we get to memory and self-evolving skills, there’s a layer that sits above both: identity. Memory is what the agent knows. Skills are how it does things. But neither tells you who it is when it shows up. Without an identity layer, every agent feels like the same agent wearing different hats. Hermes solves this with a single file: SOUL.md. It lives at ~/.hermes/SOUL.md and occupies slot #1 in the system prompt, before anything else loads. It defines the agent’s personality, tone, communication style, and hard limits. SOUL.md is hand-authored and static. You write it once, tweak it over time, and it stays consistent across every project and every session. If the file is missing, Hermes falls back to a built-in default identity.
Reported result
The source describes the intended workflow but does not report specific execution outcomes, success rates, or failures for this illustration task. It states the agent will verify the script runs, but actual results are unknown. A measurable acceptance check would be: confirm the generated Python script executes without errors and produces an image matching the reference style fingerprint.
Human role
The original post does not say how a person stayed involved.
Limitations
Requires Hermes Agent installed with a designer profile, an OpenRouter API key, and access to the Nano Banana model. The agent's self-improvement loop may overwrite manual customizations if not pinned. GEPA validation is optional but recommended for skill quality. Human approval is critical before deploying generated skills to avoid unintended behavior or cost.
Try it
I want to set up a Hermes Agent designer profile to generate illustrations in my specific visual style. First, create a new profile named 'designer' using 'hermes profile create designer --clone'. Edit its SOUL.md to define an expert illustrator persona. Then, I will provide you with [replaceable: 3-5 reference image files]. Analyze these images for color palette, line weight, and composition. Use the skill_manage tool to create a skill named 'my-design-style'. This skill must include a Python script that takes a text prompt and generates an image using the Nano Banana model via OpenRouter, reading the API key from the environment. Before finalizing, run a dry test with a sample prompt and show me the output. Do not save the skill until I confirm the style matches. If the test fails, debug the script and retry. Ensure the skill is pinned to prevent automatic archival.
Source reports are not independently verified. Publication date is the catalog publication date, not the original article date.