<?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: Christopher Mburu</title>
    <description>The latest articles on DEV Community by Christopher Mburu (@christopher_mburu_7b7e0ba).</description>
    <link>https://dev.to/christopher_mburu_7b7e0ba</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%2F3853372%2F0427138c-df58-4c18-bd2a-dbd6a07824c1.jpg</url>
      <title>DEV Community: Christopher Mburu</title>
      <link>https://dev.to/christopher_mburu_7b7e0ba</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/christopher_mburu_7b7e0ba"/>
    <language>en</language>
    <item>
      <title>Hermes TravelOps: An Agent That Learns From Every Trip</title>
      <dc:creator>Christopher Mburu</dc:creator>
      <pubDate>Sun, 31 May 2026 17:13:27 +0000</pubDate>
      <link>https://dev.to/christopher_mburu_7b7e0ba/hermes-travelops-an-agent-that-learns-from-every-trip-5805</link>
      <guid>https://dev.to/christopher_mburu_7b7e0ba/hermes-travelops-an-agent-that-learns-from-every-trip-5805</guid>
      <description>&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Hermes TravelOps Agent&lt;/strong&gt; — an autonomous travel operations manager built natively on Hermes Agent. It remembers each traveler's preferences without prompting, researches flights and hotels via web search, flags risks, and runs a post-trip debrief that rewrites its own memory so the &lt;em&gt;next&lt;/em&gt; trip plan is automatically different. No external backend: memory, skills, and scheduling are all Hermes's own.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;Travel coordinators repeat the same operational loop for every trip: research flights and hotels against a traveler's quirks, check visas, assemble an itinerary, monitor for disruptions, and — the part every tool ignores — &lt;em&gt;learn&lt;/em&gt; from how the trip actually went. Most AI travel tools answer a question and forget you. I wanted one that operates and remembers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Architecture: Hermes IS the Stack
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;~/.hermes/
├── skills/
│   ├── travel-plan-request/SKILL.md   ← Multi-step planning
│   └── post-trip-debrief/SKILL.md     ← Learning loop
├── context/
│   └── TRAVEL_OPS_CONTEXT.md          ← Domain knowledge
├── memories/
│   └── MEMORY.md                      ← Persistent memory (FTS5)
└── SOUL.md                            ← Agent persona
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Hermes handles memory, web search, skill execution, and scheduling natively. It's model-agnostic — this demo runs on &lt;code&gt;gemini-3-flash-preview&lt;/code&gt; through Hermes's provider layer, and nothing in the project depends on which model sits underneath.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Demo data is seeded.&lt;/strong&gt; I loaded two traveler profiles and one prior-trip record into memory before recording, so the learning loop has history to work against. Trip dates are fixture data, not live calendar events. What the agent &lt;em&gt;does&lt;/em&gt; — recall, research, debrief, re-plan — is real and unscripted.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;
  
  
  The Demo
&lt;/h2&gt;


&lt;div class="ltag_asciinema"&gt;
  
&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Command 1 — Plan a trip:&lt;/strong&gt; &lt;code&gt;Plan a trip for Sarah to Dubai next week&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Hermes loaded the planning skill, fired three web searches, and returned one recommendation with every stored preference already applied — without me restating any of them: Emirates EK720, window seat (enforced), vegetarian (matched), non-stop, Marriott Palm Jumeirah, WiFi 5/5, visa valid to 2027-03-15, ~$850, ending at "pending approval."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Command 2 — Visa check:&lt;/strong&gt; &lt;code&gt;Check visa for Sarah going to UAE&lt;/code&gt; → Valid, multi-entry, expiry 2027-03-15, no action required.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Command 3 — Post-trip debrief:&lt;/strong&gt; &lt;code&gt;Sarah is back from Dubai. Emirates was 4/5 but the layover in DXB was 6 hours and she was frustrated.&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This triggered the &lt;code&gt;post-trip-debrief&lt;/code&gt; skill. The memory tool fires repeatedly in the recording — including failed lookups before the write lands, which is what a real agent retrying looks like. It marked the 6hr layover "strictly unacceptable," added a directive to enforce direct Emirates flights for NBO-DXB, and wrote the lesson to memory.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Command 4 — Prove the memory changed:&lt;/strong&gt; &lt;code&gt;cat ~/.hermes/memories/MEMORY.md | grep -A2 "Sarah Chen"&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The file now reads &lt;code&gt;max 3hr layover&lt;/code&gt; and carries the dated lesson. It changed because the agent rewrote it — no update script, no external database.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Command 5 — Re-plan, watch it apply what it learned:&lt;/strong&gt; &lt;code&gt;Plan another trip for Sarah to Dubai next month&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;With zero prompting, the new plan enforced the constraint the debrief created: non-stop only, "EK720 selected explicitly to avoid the 6-hour layover friction reported in June," and Marriott Palm Jumeirah prioritized over Business Bay on a previously-logged WiFi rating.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Uses Hermes Properly
&lt;/h2&gt;

&lt;p&gt;Build criterion #1 is "effective use of Hermes Agent's agentic capabilities." I used Hermes native memory (FTS5 + MEMORY.md) instead of a database, Hermes skills instead of custom orchestration, Hermes built-in web search instead of a bolted-on service, and a skill-driven post-trip loop that writes back to memory and changes future behavior. A handful of files, no infrastructure, model-swappable underneath.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try It Yourself
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/tourswithchris/hermes-travel-ops-native.git
&lt;span class="nb"&gt;cd &lt;/span&gt;hermes-travel-ops-native
&lt;span class="nb"&gt;cp&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; skills/&lt;span class="k"&gt;*&lt;/span&gt; ~/.hermes/skills/
&lt;span class="nb"&gt;cp &lt;/span&gt;context/TRAVEL_OPS_CONTEXT.md ~/.hermes/context/
&lt;span class="nb"&gt;cp &lt;/span&gt;memories/&lt;span class="k"&gt;*&lt;/span&gt; ~/.hermes/memories/
&lt;span class="nb"&gt;cp &lt;/span&gt;SOUL.md ~/.hermes/
hermes chat
&lt;span class="c"&gt;# Then: Plan a trip for Sarah to Dubai next week&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Repo: &lt;a href="https://github.com/tourswithchris/hermes-travel-ops-native" rel="noopener noreferrer"&gt;https://github.com/tourswithchris/hermes-travel-ops-native&lt;/a&gt;&lt;/p&gt;




</description>
      <category>hermesagentchallenge</category>
      <category>devchallenge</category>
      <category>agents</category>
      <category>travel</category>
    </item>
  </channel>
</rss>
