<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: MLisanti_Dev</title>
    <description>The latest articles on DEV Community by MLisanti_Dev (@mauriziolisanti).</description>
    <link>https://dev.to/mauriziolisanti</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3940120%2F2c538942-636b-49b8-a7d1-f7b04394a64b.png</url>
      <title>DEV Community: MLisanti_Dev</title>
      <link>https://dev.to/mauriziolisanti</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mauriziolisanti"/>
    <language>en</language>
    <item>
      <title>title: From Zero to Hermes Agent in 3 Days — An Honest Beginner's Journey</title>
      <dc:creator>MLisanti_Dev</dc:creator>
      <pubDate>Fri, 29 May 2026 22:40:59 +0000</pubDate>
      <link>https://dev.to/mauriziolisanti/title-from-zero-to-hermes-agent-in-3-days-an-honest-beginners-journey-13l2</link>
      <guid>https://dev.to/mauriziolisanti/title-from-zero-to-hermes-agent-in-3-days-an-honest-beginners-journey-13l2</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hermes-agent-2026-05-15"&gt;Hermes Agent Challenge&lt;/a&gt;: Write About Hermes Agent&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Honest Version Nobody Tells You
&lt;/h2&gt;

&lt;p&gt;Most tutorials start with a clean Linux machine, a working API key, and someone who already knows what they're doing.&lt;/p&gt;

&lt;p&gt;This is not that tutorial.&lt;/p&gt;

&lt;p&gt;This is the story of building a real project with Hermes Agent starting from a Windows PC with virtualisation disabled in the BIOS, zero Linux environment, and a deadline three days away.&lt;/p&gt;

&lt;p&gt;I built &lt;a href="https://github.com/MaurizioLisanti/repo-audit-agent" rel="noopener noreferrer"&gt;repo-audit-agent&lt;/a&gt; — a tool that uses Hermes Agent to perform first-pass technical reviews of GitHub repositories. Here's what I actually learned along the way.&lt;/p&gt;




&lt;h2&gt;
  
  
  Day 1: The Environment Problem
&lt;/h2&gt;

&lt;p&gt;Before I could even think about Hermes Agent, I needed a Linux environment.&lt;/p&gt;

&lt;p&gt;My Windows machine had WSL2 partially configured but virtualisation was disabled at the BIOS level — a common corporate lockdown. So WSL2 was out.&lt;/p&gt;

&lt;p&gt;I tried:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Google Colab&lt;/strong&gt; — works, but resets every session. You reinstall everything every time you open it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Replit&lt;/strong&gt; — changed their UI completely, now pushes everyone toward their own AI agent.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CloudShell on AWS&lt;/strong&gt; — only 1GB of disk space. Hermes Agent needs more.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What finally worked: AWS EC2 t2.micro free tier.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A real Ubuntu server in the cloud, persistent across sessions, 6.6GB of disk, always available. Once I understood this was the right environment, everything else followed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lesson learned:&lt;/strong&gt; Don't fight your local environment. Cloud VMs exist precisely for this.&lt;/p&gt;




&lt;h2&gt;
  
  
  Day 2: Installing Hermes Agent
&lt;/h2&gt;

&lt;p&gt;Once I had an EC2 instance running Ubuntu Server, installation was one command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The installer is genuinely impressive. It:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Detects your OS and installs the right Python version via &lt;code&gt;uv&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Clones the repository&lt;/li&gt;
&lt;li&gt;Installs all dependencies&lt;/li&gt;
&lt;li&gt;Sets up 90 bundled skills&lt;/li&gt;
&lt;li&gt;Installs Playwright for browser automation&lt;/li&gt;
&lt;li&gt;Links the &lt;code&gt;hermes&lt;/code&gt; command to your PATH&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The full output is about 300 lines. When you see &lt;code&gt;✓ Installation Complete!&lt;/code&gt; you know it worked.&lt;/p&gt;

&lt;h3&gt;
  
  
  Configuring the LLM Provider
&lt;/h3&gt;

&lt;p&gt;This is where I spent most of Day 2.&lt;/p&gt;

&lt;p&gt;Hermes Agent supports many providers: Anthropic, OpenRouter, Google AI Studio, Groq, DeepSeek, and many more. The setup wizard is interactive and well-designed.&lt;/p&gt;

&lt;p&gt;I tried several providers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;OpenRouter&lt;/strong&gt; — ran out of credits immediately (I had an old key with ~1354 tokens left)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Regolo.ai&lt;/strong&gt; — Italian provider, interesting, but gave 403 errors I couldn't resolve&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gemini free tier&lt;/strong&gt; — worked, but has a hard limit of 5 requests/minute&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What I learned about Gemini free tier:&lt;/strong&gt; It works, but you need to wait between calls. For interactive development this is manageable. For batch processing, you'd want a paid tier or a different provider.&lt;/p&gt;

&lt;p&gt;The setup wizard command is simply:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;hermes setup
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It walks you through provider selection, API key configuration, and model selection. For Gemini, I selected &lt;code&gt;gemini-2.5-flash&lt;/code&gt; — fast, capable, and free.&lt;/p&gt;

&lt;h3&gt;
  
  
  First Successful Call
&lt;/h3&gt;

&lt;p&gt;After configuration, this command produced a real response:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;hermes chat &lt;span class="nt"&gt;-q&lt;/span&gt; &lt;span class="s2"&gt;"Say hello in one sentence."&lt;/span&gt; &lt;span class="nt"&gt;-Q&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Hello! I am Hermes, a CLI AI Agent.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That single line, after two days of environment struggles, felt like a genuine milestone.&lt;/p&gt;




&lt;h2&gt;
  
  
  Day 3: Building the Actual Tool
&lt;/h2&gt;

&lt;p&gt;With Hermes Agent working, I built &lt;code&gt;repo-audit-agent&lt;/code&gt; — a Python script that wraps Hermes Agent and produces structured technical audit reports.&lt;/p&gt;

&lt;p&gt;The core insight is simple: &lt;strong&gt;Hermes Agent is not just a chatbot. It uses tools.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When you give Hermes Agent a task that requires browsing the web, it actually opens a browser, navigates to the URL, and reads the content. This is what makes it an &lt;em&gt;agent&lt;/em&gt; rather than a language model wrapper.&lt;/p&gt;

&lt;p&gt;Here's how I invoke Hermes Agent from Python:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;run_hermes_audit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;repo_url&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;max_turns&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;15&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;prompt&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;build_audit_prompt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;repo_url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;owner&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;repo_name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;subprocess&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;run&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="p"&gt;[&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;hermes&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;chat&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;--query&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;--quiet&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;--max-turns&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nf"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;max_turns&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="n"&gt;capture_output&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;timeout&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;300&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;stdout&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;--max-turns&lt;/code&gt; parameter is important: it controls how many tool-calling iterations Hermes Agent can perform. For a repository audit, 15 turns gives it enough room to browse the repo, read the README, analyze the file structure, and generate the report.&lt;/p&gt;

&lt;h3&gt;
  
  
  What Hermes Agent Actually Does During an Audit
&lt;/h3&gt;

&lt;p&gt;When I run &lt;code&gt;python3 audit.py https://github.com/NousResearch/hermes-agent&lt;/code&gt;, Hermes Agent:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Plans&lt;/strong&gt; — breaks the audit task into sub-steps autonomously&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Browses&lt;/strong&gt; — navigates to the GitHub repository using its browser tool&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reads&lt;/strong&gt; — fetches the README, file tree, and visible codebase information&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reasons&lt;/strong&gt; — synthesizes findings into quality observations and risk assessments&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Generates&lt;/strong&gt; — produces a structured Markdown report following my template&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This is genuine agentic behavior. I'm not sending the repository content to a language model — Hermes Agent fetches it itself.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Output
&lt;/h3&gt;

&lt;p&gt;Here's a real excerpt from a report generated on the Hermes Agent repository:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gu"&gt;## Code Quality Score: 7/10&lt;/span&gt;

Strong documentation coverage (23.7% comment ratio) and a well-developed 
feature set. Areas for improvement include unknown/duplicate file categories 
and cross-language integration complexity.

&lt;span class="gu"&gt;## Risk Register (Top 5)&lt;/span&gt;

| # | Risk | Severity |
|---|------|----------|
| 1 | Dependency sprawl across 5+ languages | Medium |
| 2 | Documentation drift risk | Medium |
| 3 | Performance bottlenecks in Python core | Medium |
| 4 | Cross-language integration complexity | Medium |
| 5 | Security vulnerabilities in external tools | High |
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is a first-pass review, not a replacement for manual code review. But as a starting point for human analysis, it is genuinely useful.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I Think About Hermes Agent
&lt;/h2&gt;

&lt;p&gt;After three days of building with it, here are my honest observations:&lt;/p&gt;

&lt;h3&gt;
  
  
  What Works Well
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;The installation is excellent.&lt;/strong&gt; One command, handles everything, works on stock Ubuntu. This is the standard all CLI tools should meet.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The provider ecosystem is broad.&lt;/strong&gt; If one provider has rate limits or cost issues, you switch to another without changing your code. The &lt;code&gt;hermes setup&lt;/code&gt; command handles it cleanly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tool use is real.&lt;/strong&gt; Hermes Agent actually browses, actually reads files, actually executes code. This is not simulated. When you ask it to analyze a repository, it goes and looks at it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The &lt;code&gt;--quiet&lt;/code&gt; flag is a gift.&lt;/strong&gt; For programmatic use, &lt;code&gt;-Q&lt;/code&gt; suppresses all banners and spinners and gives you clean output to parse. This made integration into Python trivial.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;90 bundled skills.&lt;/strong&gt; From GitHub workflows to Jupyter kernels to architecture diagrams — Hermes Agent ships with a large library of task-specific prompts and behaviors. I've only scratched the surface.&lt;/p&gt;

&lt;h3&gt;
  
  
  What to Watch Out For
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Rate limits on free tiers are real.&lt;/strong&gt; Gemini free tier allows 5 requests/minute. If you're building something that calls Hermes Agent repeatedly, budget for this or use a paid provider.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The browser tool needs resources.&lt;/strong&gt; Hermes Agent installs Playwright and Chrome for its browser capability. This is about 300MB on disk. Not a problem on EC2, but worth knowing if disk space is tight.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The terminal inside Colab/browser environments has character encoding issues.&lt;/strong&gt; I encountered escape sequences (&lt;code&gt;^[]11;rgb:0000/0000/0000&lt;/code&gt;) corrupting commands when copy-pasting into browser-based terminals. Run Hermes Agent on a real SSH session or local terminal when possible.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Bigger Picture
&lt;/h2&gt;

&lt;p&gt;Hermes Agent is interesting not because of what it does today, but because of what it represents.&lt;/p&gt;

&lt;p&gt;A lot of AI tooling today seems to fall into one of two categories: proprietary cloud services where you send your data and trust a vendor, or lightweight local wrappers that are really just API clients with a nicer interface.&lt;/p&gt;

&lt;p&gt;Hermes Agent is neither. It is an open-source agent runtime that you deploy on your own infrastructure, configure with your choice of LLM provider, and extend with skills you write yourself. The agent logic — planning, tool use, multi-step reasoning — runs on your machine.&lt;/p&gt;

&lt;p&gt;Of course, the configured LLM provider still receives the prompts and relevant context, so provider choice and data handling policies still matter.&lt;/p&gt;

&lt;p&gt;For developers building on sensitive data (mine includes Italian public-sector procurement documents), this distinction matters.&lt;/p&gt;




&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;

&lt;p&gt;If you want to try Hermes Agent yourself:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Install&lt;/span&gt;
curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash

&lt;span class="c"&gt;# Configure (interactive wizard)&lt;/span&gt;
hermes setup

&lt;span class="c"&gt;# First test&lt;/span&gt;
hermes chat &lt;span class="nt"&gt;-q&lt;/span&gt; &lt;span class="s2"&gt;"What files are in my current directory?"&lt;/span&gt; &lt;span class="nt"&gt;-Q&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For a cloud environment without local Linux, AWS EC2 t2.micro free tier is the fastest path to a working setup.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://hermes-agent.nousresearch.com/docs" rel="noopener noreferrer"&gt;Hermes Agent documentation&lt;/a&gt; is thorough and the GitHub repository is active.&lt;/p&gt;




&lt;h2&gt;
  
  
  Try the Project
&lt;/h2&gt;

&lt;p&gt;If you want to see Hermes Agent doing real work on a real codebase, try &lt;a href="https://github.com/MaurizioLisanti/repo-audit-agent" rel="noopener noreferrer"&gt;repo-audit-agent&lt;/a&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/MaurizioLisanti/repo-audit-agent
&lt;span class="nb"&gt;cd &lt;/span&gt;repo-audit-agent
python3 audit.py https://github.com/NousResearch/hermes-agent
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It uses Hermes Agent to perform first-pass technical reviews of any public GitHub repository and saves the report as a Markdown file.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Built during the Hermes Agent Challenge 2026. The environment struggles were real. The deadline was real. The tool works.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>hermesagentchallenge</category>
      <category>devchallenge</category>
      <category>agents</category>
    </item>
    <item>
      <title>Repo-audit-agent — AI-powered GitHub repository auditor built with Hermes Agent</title>
      <dc:creator>MLisanti_Dev</dc:creator>
      <pubDate>Fri, 29 May 2026 22:29:31 +0000</pubDate>
      <link>https://dev.to/mauriziolisanti/repo-audit-agent-ai-powered-github-repository-auditor-built-with-hermes-agent-469e</link>
      <guid>https://dev.to/mauriziolisanti/repo-audit-agent-ai-powered-github-repository-auditor-built-with-hermes-agent-469e</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hermes-agent-2026-05-15"&gt;Hermes Agent Challenge&lt;/a&gt;: Build With Hermes Agent&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;repo-audit-agent&lt;/strong&gt; helps developers perform fast first-pass repository reviews using Hermes Agent.&lt;/p&gt;

&lt;p&gt;Point it at a public GitHub repository and Hermes Agent performs a first-pass review of the visible repository content, then generates a structured Markdown report with tech stack detection, code quality observations, a risk register, and an improvement roadmap.&lt;/p&gt;

&lt;p&gt;A faster starting point for human review. No copy-pasting code into a chat window. Just one command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python3 audit.py https://github.com/NousResearch/hermes-agent
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And Hermes Agent does the rest.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Problem It Solves
&lt;/h3&gt;

&lt;p&gt;Every developer knows the situation: you inherit a codebase, evaluate an open source dependency, or onboard a new project. Before you can do anything useful, you need a quick technical assessment — what's the stack, what are the risks, what needs fixing first.&lt;/p&gt;

&lt;p&gt;Traditionally this takes hours. With repo-audit-agent and Hermes Agent, it takes minutes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Sample Output
&lt;/h3&gt;

&lt;p&gt;Here's a real report generated by Hermes Agent on the &lt;code&gt;hermes-agent&lt;/code&gt; repository itself:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# Technical Audit Report: NousResearch/hermes-agent&lt;/span&gt;

Generated: 2026-05-29 21:07 UTC
Tool: repo-audit-agent v1.0.0 powered by Hermes Agent

&lt;span class="gu"&gt;## Executive Summary&lt;/span&gt;

The hermes-agent repository is a substantial, well-structured project 
primarily developed in Python with significant TypeScript contributions, 
indicating a complex application with a web-based interface...

&lt;span class="gu"&gt;## Tech Stack&lt;/span&gt;
&lt;span class="p"&gt;
-&lt;/span&gt; Primary: Python 46.7%, TypeScript 7.9%, TSX 2.0%
&lt;span class="p"&gt;-&lt;/span&gt; Config: YAML, TOML, JSON, Docker
&lt;span class="p"&gt;-&lt;/span&gt; Infrastructure: Bash, Systemd, Makefile

&lt;span class="gu"&gt;## Code Quality Score: 7/10&lt;/span&gt;

Strong documentation coverage (23.7% comment ratio) and a well-developed 
feature set. Areas for improvement include unknown/duplicate file categories 
and cross-language integration complexity.

&lt;span class="gu"&gt;## Risk Register (Top 5)&lt;/span&gt;

| # | Risk | Severity |
|---|------|----------|
| 1 | Dependency sprawl across 5+ languages | Medium |
| 2 | Documentation drift risk | Medium |
| 3 | Performance bottlenecks in Python core | Medium |
| 4 | Cross-language integration complexity | Medium |
| 5 | Security vulnerabilities in external tools | High |

&lt;span class="gu"&gt;## Improvement Roadmap (Top 5)&lt;/span&gt;
&lt;span class="p"&gt;
1.&lt;/span&gt; Automated dependency scanning across all ecosystems
&lt;span class="p"&gt;2.&lt;/span&gt; Performance profiling for critical Python components
&lt;span class="p"&gt;3.&lt;/span&gt; Refactor unknown/duplicate file categories
&lt;span class="p"&gt;4.&lt;/span&gt; Comprehensive E2E testing across frontend and backend
&lt;span class="p"&gt;5.&lt;/span&gt; Streamline CI/CD pipeline and build process
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Real output from a real repository, generated by Hermes Agent and intended as a starting point for human technical review.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Running an Audit
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Install Hermes Agent&lt;/span&gt;
curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash

&lt;span class="c"&gt;# Configure your LLM (Gemini free tier works great)&lt;/span&gt;
hermes setup  &lt;span class="c"&gt;# Select Google AI Studio&lt;/span&gt;

&lt;span class="c"&gt;# Clone and run&lt;/span&gt;
git clone https://github.com/MaurizioLisanti/repo-audit-agent
&lt;span class="nb"&gt;cd &lt;/span&gt;repo-audit-agent
python3 audit.py https://github.com/NousResearch/hermes-agent
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  What Happens Under the Hood
&lt;/h3&gt;

&lt;p&gt;When you run &lt;code&gt;audit.py&lt;/code&gt;, Hermes Agent:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Receives a detailed audit prompt with the target repository URL&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Plans&lt;/strong&gt; its analysis strategy autonomously&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Uses its browser tool&lt;/strong&gt; to navigate to the GitHub repository&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fetches&lt;/strong&gt; the README, file structure, and codebase information&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reasons&lt;/strong&gt; about code quality, risks, and improvement priorities&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Generates&lt;/strong&gt; a structured Markdown report&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The report is saved to &lt;code&gt;./reports/audit_&amp;lt;repo&amp;gt;_&amp;lt;timestamp&amp;gt;.md&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Architecture
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;repo-audit-agent
│
├── audit.py                  ← CLI entry point
│   ├── build_audit_prompt()  ← Instructs Hermes Agent
│   ├── run_hermes_audit()    ← Invokes Hermes Agent
│   └── save_report()         ← Saves Markdown report
│
└── reports/                  ← Generated audit reports
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;GitHub Repository:&lt;/strong&gt; &lt;a href="https://github.com/MaurizioLisanti/repo-audit-agent" rel="noopener noreferrer"&gt;https://github.com/MaurizioLisanti/repo-audit-agent&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The core of the tool is how it communicates with Hermes Agent:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;run_hermes_audit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;repo_url&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;max_turns&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;15&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;
    Invoke Hermes Agent to perform the repository audit.

    Hermes Agent uses its agentic capabilities (web browsing, tool use,
    multi-step reasoning) to fetch and analyze the repository.
    &lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
    &lt;span class="n"&gt;prompt&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;build_audit_prompt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;repo_url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;owner&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;repo_name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;subprocess&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;run&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="p"&gt;[&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;hermes&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;chat&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;--query&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;--quiet&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;--max-turns&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nf"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;max_turns&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="n"&gt;capture_output&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;timeout&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;300&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;stdout&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The key insight: Hermes Agent's &lt;code&gt;--max-turns&lt;/code&gt; parameter controls how many tool-calling iterations it can use. For large repositories, increasing this gives Hermes Agent more room to explore and analyze.&lt;/p&gt;

&lt;h3&gt;
  
  
  My Tech Stack
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Hermes Agent&lt;/strong&gt; — core agentic engine (planning, tool use, reasoning)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Python 3.11&lt;/strong&gt; — CLI wrapper and report handling&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Google Gemini 2.5 Flash&lt;/strong&gt; — LLM provider via Hermes Agent&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AWS EC2&lt;/strong&gt; — Ubuntu server on a t2.micro free-tier instance&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub&lt;/strong&gt; — repository hosting and output&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How I Used Hermes Agent
&lt;/h2&gt;

&lt;p&gt;Hermes Agent is not a wrapper around this tool — &lt;strong&gt;it IS the tool&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Agentic Capabilities Used
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;1. Multi-step Planning&lt;/strong&gt;&lt;br&gt;
When given the audit prompt, Hermes Agent doesn't just send one API call. It breaks the task into sub-steps: fetch the repository, read the README, analyze the file structure, identify the tech stack, assess quality, generate the report. This planning happens autonomously.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Tool Use — Web Browsing&lt;/strong&gt;&lt;br&gt;
Hermes Agent uses its built-in browser tool to navigate to the GitHub repository URL and fetch real content. It reads the actual repository structure, not a cached or synthetic version.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Multi-step Reasoning&lt;/strong&gt;&lt;br&gt;
Hermes Agent synthesizes what it finds — file counts, language percentages, documentation coverage — into a coherent technical assessment with a justified quality score and prioritized recommendations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Structured Output Generation&lt;/strong&gt;&lt;br&gt;
The prompt instructs Hermes Agent to produce output in a specific Markdown structure. Hermes Agent follows the template reliably, making the output machine-readable and consistent across different repositories.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why Hermes Agent Was the Right Fit
&lt;/h3&gt;

&lt;p&gt;I chose Hermes Agent for three reasons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Open source and self-hosted agent runtime&lt;/strong&gt;: I run Hermes Agent on my own AWS EC2 instance, while LLM calls are routed through the configured provider. In this demo I used Google Gemini via Hermes Agent.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Real tool use&lt;/strong&gt;: Hermes Agent actually browses the repository. This is not a prompt that asks a language model to "imagine" analyzing a repo — Hermes fetches real data.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Composable&lt;/strong&gt;: The &lt;code&gt;hermes chat -q&lt;/code&gt; interface makes it trivial to integrate Hermes Agent into any Python script or pipeline.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Real-World Application
&lt;/h3&gt;

&lt;p&gt;I built this tool for a real need: I maintain several Italian public-sector repositories (&lt;code&gt;fatturapa-mcp-server&lt;/code&gt;, &lt;code&gt;sdi-ops-monitor&lt;/code&gt;, &lt;code&gt;conto-termico-gse&lt;/code&gt;, &lt;code&gt;GaraAI&lt;/code&gt;) and needed a fast way to audit their technical health before client presentations.&lt;/p&gt;

&lt;p&gt;repo-audit-agent + Hermes Agent gives me a structured first-pass technical review in minutes, which I can then validate and refine manually.&lt;/p&gt;




&lt;h2&gt;
  
  
  Limitations
&lt;/h2&gt;

&lt;p&gt;repo-audit-agent generates AI-assisted first-pass technical reviews. It does not replace manual code review, security testing, dependency scanning, or production readiness assessment. The generated findings should be validated by a human engineer before being used for business or security decisions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Repository:&lt;/strong&gt; &lt;a href="https://github.com/MaurizioLisanti/repo-audit-agent" rel="noopener noreferrer"&gt;https://github.com/MaurizioLisanti/repo-audit-agent&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Built with &lt;a href="https://hermes-agent.nousresearch.com/" rel="noopener noreferrer"&gt;Hermes Agent&lt;/a&gt; by Nous Research&lt;/em&gt;&lt;/p&gt;

</description>
      <category>hermesagentchallenge</category>
      <category>devchallenge</category>
      <category>agents</category>
    </item>
    <item>
      <title>Hello from Italy</title>
      <dc:creator>MLisanti_Dev</dc:creator>
      <pubDate>Tue, 19 May 2026 11:34:30 +0000</pubDate>
      <link>https://dev.to/mauriziolisanti/hello-from-italy-4jc2</link>
      <guid>https://dev.to/mauriziolisanti/hello-from-italy-4jc2</guid>
      <description>&lt;p&gt;Hi DEV community! 👋&lt;/p&gt;

&lt;p&gt;I'm Maurizio, a Backend Engineer from Italy specializing in agentic AI systems applied to Italian institutional domains.&lt;/p&gt;

&lt;p&gt;What I build:&lt;br&gt;
🔹 fatturapa-mcp-server — open source MCP server for Italian e-invoicing, live on PyPI&lt;/p&gt;

&lt;p&gt;🔹 sdi-ops-monitor — AWS operational dashboard for SDI/FatturaPA flows&lt;/p&gt;

&lt;p&gt;🔹 GaraAI — multi-agent pipeline for Italian public tenders&lt;/p&gt;

&lt;p&gt;🔹 conto-termico-gse — agentic RAG on Italian energy regulations&lt;/p&gt;

&lt;p&gt;My stack: Python · PHP · AWS · MCP · LangGraph · Weaviate&lt;/p&gt;

&lt;p&gt;Founder of Linux PropLUG — Italian community connecting Linux and &lt;br&gt;
Open Source with PropTech.&lt;/p&gt;

&lt;p&gt;Anthropic Certified — MCP Advanced Topics.&lt;/p&gt;

&lt;p&gt;Looking forward to connecting &lt;br&gt;
with the community here! 🚀&lt;/p&gt;

&lt;p&gt;hello, python, ai, beginners&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>python</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
