<?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: Vivek Shetye</title>
    <description>The latest articles on DEV Community by Vivek Shetye (@vivek_shetye).</description>
    <link>https://dev.to/vivek_shetye</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3879444%2F8f338ec8-c7f4-48e9-b8cf-3898bccbb1e8.jpg</url>
      <title>DEV Community: Vivek Shetye</title>
      <link>https://dev.to/vivek_shetye</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/vivek_shetye"/>
    <language>en</language>
    <item>
      <title>I Built an AI Team That Researches Stocks and Debates Investment Decisions 🤖</title>
      <dc:creator>Vivek Shetye</dc:creator>
      <pubDate>Tue, 03 Nov 2026 15:02:54 +0000</pubDate>
      <link>https://dev.to/vivek_shetye/i-built-an-ai-team-that-researches-stocks-and-debates-investment-decisions-2cpo</link>
      <guid>https://dev.to/vivek_shetye/i-built-an-ai-team-that-researches-stocks-and-debates-investment-decisions-2cpo</guid>
      <description>&lt;p&gt;What if you had an entire team of AI agents researching stocks for you?&lt;/p&gt;

&lt;p&gt;Imagine one agent analyzing stock charts, another digging through financial reports, and another tracking the latest market news.&lt;/p&gt;

&lt;p&gt;Now imagine two more AI agents arguing about whether you should buy or avoid a particular stock.&lt;/p&gt;

&lt;p&gt;And instead of simply combining their opinions, the system makes them challenge each other’s conclusions before arriving at a final investment recommendation.&lt;/p&gt;

&lt;p&gt;Sounds like something a hedge fund might build, right?&lt;/p&gt;

&lt;p&gt;Well, there’s an open-source project that does exactly this.&lt;/p&gt;

&lt;p&gt;It’s called &lt;strong&gt;TradingAgents&lt;/strong&gt;, developed by I Built an AI Team That Researches Stocks and Debates Investment Decisions 🤖&lt;br&gt;
, and it uses a multi-agent AI architecture to simulate how a financial research team collaborates.&lt;/p&gt;

&lt;p&gt;I recently explored this project, studied its architecture, set it up, and put the agents to work analyzing one of the most talked-about companies in the stock market: NVIDIA (NVDA).&lt;/p&gt;

&lt;p&gt;The result was interesting, but what fascinated me even more was how the agents worked together.&lt;/p&gt;

&lt;p&gt;In this article, I’ll explain how TradingAgents works, walk through its architecture, show you how to get started, and share what happened during my experiment.&lt;/p&gt;


&lt;h2&gt;
  
  
  🎥 Full video walkthrough
&lt;/h2&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/Pos18uO3TQ0" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;




&lt;h2&gt;
  
  
  💡 Why Use Multiple AI Agents for Stock Research?
&lt;/h2&gt;

&lt;p&gt;If you’ve ever researched a stock before investing, you know how overwhelming the process can become.&lt;/p&gt;

&lt;p&gt;You need to understand several things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Financial performance: Revenue, earnings, profitability, and cash flow.&lt;/li&gt;
&lt;li&gt;Valuation: Whether the stock is reasonably priced relative to its growth expectations.&lt;/li&gt;
&lt;li&gt;Technical indicators: Price movements, moving averages, RSI, and MACD.&lt;/li&gt;
&lt;li&gt;Market news: Earnings announcements, industry developments, and economic events.&lt;/li&gt;
&lt;li&gt;Investor sentiment: How the broader market perceives the company.&lt;/li&gt;
&lt;li&gt;Risk factors: Everything that could potentially go wrong.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And here’s something investors sometimes overlook:&lt;/p&gt;

&lt;p&gt;A great company isn’t necessarily a great stock to buy at any price.&lt;/p&gt;

&lt;p&gt;A business might be growing rapidly and dominating its industry, but if its stock price already reflects unrealistic growth expectations, investing could still be risky.&lt;/p&gt;

&lt;p&gt;Now, you could ask ChatGPT or another LLM:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“Should I buy NVIDIA stock?”&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;But a single AI response might overlook important factors or lean too heavily toward one interpretation.&lt;/p&gt;

&lt;p&gt;What if we approached this differently?&lt;/p&gt;

&lt;p&gt;Instead of asking one AI model to handle everything, we could assign different research responsibilities to specialized AI agents.&lt;/p&gt;

&lt;p&gt;One focuses on financial fundamentals. Another analyzes technical indicators. Another investigates risks.&lt;/p&gt;

&lt;p&gt;Then we make them collaborate, debate, and challenge each other’s conclusions.&lt;/p&gt;

&lt;p&gt;That’s the fundamental idea behind TradingAgents.&lt;/p&gt;




&lt;h2&gt;
  
  
  🏗️ What Is TradingAgents?
&lt;/h2&gt;

&lt;p&gt;TradingAgents is an open-source multi-agent framework developed by Tauric Research.&lt;/p&gt;

&lt;p&gt;It’s designed to simulate the collaborative decision-making process of a financial research and trading organization.&lt;/p&gt;

&lt;p&gt;Rather than relying on a single LLM prompt, TradingAgents coordinates multiple specialized agents through a structured workflow.&lt;/p&gt;

&lt;p&gt;The system includes:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Financial research analysts&lt;/li&gt;
&lt;li&gt;Bullish and bearish researchers&lt;/li&gt;
&lt;li&gt;A research manager&lt;/li&gt;
&lt;li&gt;A trader agent&lt;/li&gt;
&lt;li&gt;Risk management agents&lt;/li&gt;
&lt;li&gt;A portfolio manager&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Each agent has a specific responsibility, and information flows between them as the research progresses.&lt;/p&gt;

&lt;p&gt;The interesting part is that the agents don’t simply generate independent reports.&lt;/p&gt;

&lt;p&gt;They share findings, debate competing investment theses, evaluate risk, and eventually produce a consolidated recommendation.&lt;/p&gt;

&lt;p&gt;Let’s understand how this works.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔍 Step 1: Four AI Analysts Research the Stock
&lt;/h2&gt;

&lt;p&gt;The workflow begins with four specialized research agents.&lt;/p&gt;

&lt;p&gt;Each examines the company from a different perspective.&lt;/p&gt;

&lt;h3&gt;
  
  
  📊 1. Market Analyst
&lt;/h3&gt;

&lt;p&gt;The Market Analyst focuses on technical analysis.&lt;/p&gt;

&lt;p&gt;It examines information such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Historical stock prices&lt;/li&gt;
&lt;li&gt;Moving averages&lt;/li&gt;
&lt;li&gt;Relative Strength Index (RSI)&lt;/li&gt;
&lt;li&gt;Moving Average Convergence Divergence (MACD)&lt;/li&gt;
&lt;li&gt;Recent price trends&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example, the RSI can help identify whether a stock has experienced unusually strong buying or selling momentum.&lt;/p&gt;

&lt;p&gt;The analyst uses available technical indicators to understand what’s happening with the stock’s price behavior.&lt;/p&gt;

&lt;h3&gt;
  
  
  💰 2. Fundamental Analyst
&lt;/h3&gt;

&lt;p&gt;The Fundamental Analyst investigates the underlying business.&lt;/p&gt;

&lt;p&gt;It examines financial information such as revenue, earnings, profitability, and other available company data.&lt;/p&gt;

&lt;p&gt;Its goal is to answer questions like:&lt;/p&gt;

&lt;p&gt;Is this company financially strong?&lt;/p&gt;

&lt;p&gt;What do its fundamentals suggest about its business performance?&lt;/p&gt;

&lt;p&gt;Are there financial weaknesses investors should consider?&lt;/p&gt;

&lt;p&gt;For a company like NVIDIA, this analysis might involve examining revenue growth, margins, profitability, and the sustainability of demand for its products.&lt;/p&gt;

&lt;h3&gt;
  
  
  📰 3. News Analyst
&lt;/h3&gt;

&lt;p&gt;Financial performance alone doesn’t tell the entire story.&lt;/p&gt;

&lt;p&gt;A company’s outlook can change significantly because of new developments.&lt;/p&gt;

&lt;p&gt;The News Analyst investigates relevant information such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Company announcements&lt;/li&gt;
&lt;li&gt;Earnings-related developments&lt;/li&gt;
&lt;li&gt;Industry news&lt;/li&gt;
&lt;li&gt;Economic events&lt;/li&gt;
&lt;li&gt;Broader market developments&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example, changes in semiconductor export restrictions or major AI infrastructure spending announcements could influence how investors evaluate NVIDIA.&lt;/p&gt;

&lt;h3&gt;
  
  
  🗣️ 4. Sentiment Analyst
&lt;/h3&gt;

&lt;p&gt;The Sentiment Analyst examines available public discussions and sentiment-related information.&lt;/p&gt;

&lt;p&gt;Its goal is to understand how investors and the broader market are discussing the company.&lt;/p&gt;

&lt;p&gt;This can provide useful context about market expectations, enthusiasm, and concerns.&lt;/p&gt;

&lt;p&gt;However, sentiment isn’t necessarily an indicator of whether a stock is fundamentally undervalued or overvalued.&lt;/p&gt;

&lt;p&gt;It’s simply another perspective.&lt;/p&gt;

&lt;p&gt;Why This Architecture Matters&lt;/p&gt;

&lt;p&gt;The four analysts can gather information in parallel.&lt;/p&gt;

&lt;p&gt;Rather than forcing a single AI agent to perform every research task, the system distributes responsibilities across specialized agents.&lt;/p&gt;

&lt;p&gt;Their findings become the foundation for the next stage.&lt;/p&gt;

&lt;p&gt;And this is where things get particularly interesting.&lt;/p&gt;




&lt;h2&gt;
  
  
  🐂 Step 2: Bull vs. Bear — AI Agents Debate the Investment
&lt;/h2&gt;

&lt;p&gt;Once the analysts complete their research, their findings are passed to two additional agents.&lt;/p&gt;

&lt;p&gt;The Bull Researcher and the Bear Researcher.&lt;/p&gt;

&lt;p&gt;These agents have opposing responsibilities.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Bull Researcher
&lt;/h3&gt;

&lt;p&gt;The Bull Researcher builds the strongest possible argument for investing in the company.&lt;/p&gt;

&lt;p&gt;For example, a bullish NVIDIA investment thesis might emphasize:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Strong demand for AI computing infrastructure&lt;/li&gt;
&lt;li&gt;Revenue and earnings growth&lt;/li&gt;
&lt;li&gt;Competitive advantages&lt;/li&gt;
&lt;li&gt;Market leadership&lt;/li&gt;
&lt;li&gt;Long-term industry opportunities&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The Bear Researcher
&lt;/h3&gt;

&lt;p&gt;The Bear Researcher takes the opposite position.&lt;/p&gt;

&lt;p&gt;Its responsibility is to challenge the bullish argument and identify potential weaknesses.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Is the stock valuation too expensive?&lt;/li&gt;
&lt;li&gt;Are growth expectations unrealistic?&lt;/li&gt;
&lt;li&gt;Could competition increase?&lt;/li&gt;
&lt;li&gt;Are there regulatory or geopolitical risks?&lt;/li&gt;
&lt;li&gt;What happens if AI infrastructure spending slows?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But here’s the interesting part.&lt;/p&gt;

&lt;p&gt;These agents actually debate each other.&lt;/p&gt;

&lt;p&gt;The Bull presents an argument.&lt;/p&gt;

&lt;p&gt;The Bear challenges it.&lt;/p&gt;

&lt;p&gt;The Bull gets an opportunity to respond.&lt;/p&gt;

&lt;p&gt;And the discussion can continue through multiple configurable rounds.&lt;/p&gt;

&lt;p&gt;Instead of simply asking an LLM to list pros and cons, TradingAgents creates a structured exchange between competing investment perspectives.&lt;/p&gt;

&lt;p&gt;After the debate, a Research Manager evaluates the arguments and produces an investment plan.&lt;/p&gt;

&lt;p&gt;This approach doesn’t guarantee better investment decisions, but it provides a mechanism for examining competing interpretations before reaching a conclusion.&lt;/p&gt;




&lt;h2&gt;
  
  
  ⚖️ Step 3: The Trader and Risk Management Agents
&lt;/h2&gt;

&lt;p&gt;After the Research Manager produces an investment plan, the workflow moves to the Trader Agent.&lt;/p&gt;

&lt;p&gt;Despite its name, the Trader Agent in my demonstration wasn’t executing any actual trades.&lt;/p&gt;

&lt;p&gt;Instead, it translated the research into a more concrete investment proposal.&lt;/p&gt;

&lt;p&gt;That proposal then went through another review process.&lt;/p&gt;

&lt;p&gt;This time, three risk-focused agents evaluated it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Aggressive Risk Analyst
&lt;/h3&gt;

&lt;p&gt;Examines the investment proposal from a perspective that accepts greater risk in pursuit of potential returns.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conservative Risk Analyst
&lt;/h3&gt;

&lt;p&gt;Focuses on downside protection, uncertainty, and reasons to avoid excessive exposure.&lt;/p&gt;

&lt;h3&gt;
  
  
  Neutral Risk Analyst
&lt;/h3&gt;

&lt;p&gt;Attempts to balance potential opportunities against the associated risks.&lt;/p&gt;

&lt;p&gt;These perspectives are used to challenge the investment proposal.&lt;/p&gt;

&lt;p&gt;Finally, the Portfolio Manager evaluates the research, proposed action, and risk discussion to produce the final recommendation.&lt;/p&gt;

&lt;p&gt;So the overall workflow looks something like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;              STOCK / COMPANY
                     |
                     v
            RESEARCH ANALYSTS
                     |
        +------------+------------+
        |            |            |
     Market      Fundamental     News
     Analyst       Analyst      Analyst
        |            |            |
        +------------+------------+
                     |
              Sentiment Analyst
                     |
                     v
             RESEARCH DEBATE
                     |
              +------+------+
              |             |
          Bull Agent     Bear Agent
              |             |
              +------+------+
                     |
                     v
              Research Manager
                     |
                     v
                Trader Agent
                     |
                     v
               RISK ANALYSIS
                     |
          +----------+----------+
          |          |          |
      Aggressive  Conservative  Neutral
          |          |          |
          +----------+----------+
                     |
                     v
              Portfolio Manager
                     |
                     v
            FINAL RECOMMENDATION
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Simplified conceptual representation of the TradingAgents workflow. The analyst stage is designed to support parallel research.&lt;/p&gt;

&lt;p&gt;This is what makes TradingAgents an interesting example of agentic AI and multi-agent orchestration.&lt;/p&gt;

&lt;p&gt;It’s not just multiple LLM calls.&lt;/p&gt;

&lt;p&gt;It’s a structured workflow in which different agents contribute information, challenge conclusions, and participate in a decision-making process.&lt;/p&gt;




&lt;h2&gt;
  
  
  🛠️ Step 4: Installing and Setting Up TradingAgents
&lt;/h2&gt;

&lt;p&gt;Now that we understand the architecture, let’s look at how to run it.&lt;/p&gt;

&lt;p&gt;TradingAgents is open source, so you can inspect the implementation, modify the agents, and experiment with different configurations.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Clone the GitHub Repository
&lt;/h3&gt;

&lt;p&gt;Start by cloning the project:&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/TauricResearch/TradingAgents.git
&lt;span class="nb"&gt;cd &lt;/span&gt;TradingAgents
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Open the project in your preferred code editor.&lt;/p&gt;

&lt;p&gt;I used VS Code for my demonstration.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Create a Python Virtual Environment
&lt;/h3&gt;

&lt;p&gt;I used Python 3.13 and uv for environment management.&lt;/p&gt;

&lt;p&gt;Create a virtual environment:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;uv venv &lt;span class="nt"&gt;--python&lt;/span&gt; 3.13
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Activate it on macOS or Linux:&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="nb"&gt;source&lt;/span&gt; .venv/bin/activate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This keeps the project’s Python dependencies separate from other applications installed on your machine.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Install the Dependencies
&lt;/h3&gt;

&lt;p&gt;Install the project using the dependency instructions provided in the repository.&lt;/p&gt;

&lt;p&gt;For example, when installing from the project directory with uv:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;uv pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="nb"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The exact installation steps may change between releases, so check the repository’s latest README before proceeding.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Configure Your AI Model Provider
&lt;/h3&gt;

&lt;p&gt;TradingAgents supports configurable AI model providers.&lt;/p&gt;

&lt;p&gt;Depending on the version and configuration, you can use supported providers such as OpenAI, Google, or Anthropic.&lt;/p&gt;

&lt;p&gt;The repository includes an example environment configuration file.&lt;/p&gt;

&lt;p&gt;You can copy it:&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="nb"&gt;cp&lt;/span&gt; .env.example .env
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then configure the credentials required by your selected provider.&lt;/p&gt;

&lt;p&gt;In my demonstration, I used the framework’s supported ChatGPT subscription authentication flow rather than manually configuring an API key.&lt;/p&gt;

&lt;p&gt;For versions supporting this option, the login command is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;tradingagents login chatgpt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Follow the authentication instructions displayed in your terminal.&lt;/p&gt;

&lt;p&gt;Note: Subscription-based authentication depends on the installed TradingAgents version and its supported integration. A ChatGPT subscription is not generally interchangeable with OpenAI API credits.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Launch TradingAgents
&lt;/h3&gt;

&lt;p&gt;Once everything is configured, launch the CLI:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;tradingagents
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The interface guides you through several configuration options.&lt;/p&gt;

&lt;p&gt;You can select:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The stock ticker&lt;/li&gt;
&lt;li&gt;Analysis date&lt;/li&gt;
&lt;li&gt;Output language&lt;/li&gt;
&lt;li&gt;Research analysts&lt;/li&gt;
&lt;li&gt;Research depth&lt;/li&gt;
&lt;li&gt;AI model provider&lt;/li&gt;
&lt;li&gt;LLM models&lt;/li&gt;
&lt;li&gt;Reasoning effort&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For my experiment, I selected NVIDIA (NVDA) and enabled all four research analysts.&lt;/p&gt;

&lt;p&gt;I also chose the shallow research configuration to keep the demonstration relatively quick.&lt;/p&gt;

&lt;p&gt;Research depth affects how many debate and discussion rounds the agents perform.&lt;/p&gt;

&lt;p&gt;Once configured, the agents begin researching the company.&lt;/p&gt;




&lt;h2&gt;
  
  
  🚀 Step 5: I Asked the AI Team to Analyze NVIDIA
&lt;/h2&gt;

&lt;p&gt;With everything running, I gave the system NVIDIA as the company to investigate.&lt;/p&gt;

&lt;p&gt;The workflow started with the research analysts gathering information.&lt;/p&gt;

&lt;p&gt;The Market Analyst examined technical indicators.&lt;/p&gt;

&lt;p&gt;The Fundamental Analyst investigated the company’s financial position.&lt;/p&gt;

&lt;p&gt;Meanwhile, the News and Sentiment Analysts collected information from their available data sources.&lt;/p&gt;

&lt;p&gt;Once the initial research was complete, the system moved through the debate and risk evaluation stages.&lt;/p&gt;

&lt;p&gt;Eventually, TradingAgents generated a detailed report containing the findings from the different agents.&lt;/p&gt;

&lt;p&gt;The report included technical analysis, financial research, sentiment observations, news analysis, and the final investment thesis.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;So, What Did the AI Agents Recommend?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;After completing the analysis, the Portfolio Manager produced its final recommendation:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;UNDERWEIGHT.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In portfolio terminology, an underweight position generally means maintaining less exposure to an asset than a relevant benchmark or reference allocation.&lt;/p&gt;

&lt;p&gt;But I wouldn’t interpret this result as proof that NVIDIA is a bad investment.&lt;/p&gt;

&lt;p&gt;The recommendation reflects the model-generated research, available information, and configuration used during this particular run.&lt;/p&gt;

&lt;p&gt;I haven’t established whether this recommendation would outperform a benchmark or lead to better investment outcomes.&lt;/p&gt;

&lt;p&gt;And that’s an important distinction.&lt;/p&gt;

&lt;p&gt;Generating a convincing investment thesis is not the same as demonstrating predictive accuracy.&lt;/p&gt;

&lt;p&gt;What I found useful was the structured research process.&lt;/p&gt;

&lt;p&gt;Instead of receiving a short answer from a chatbot, I could examine the different research perspectives that contributed to the final decision.&lt;/p&gt;

&lt;p&gt;That makes TradingAgents particularly interesting as an investment research assistant.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧠 TradingAgents Also Has a Memory System
&lt;/h2&gt;

&lt;p&gt;Another feature worth exploring is the framework’s built-in memory and historical evaluation capabilities.&lt;/p&gt;

&lt;p&gt;After completing an analysis, TradingAgents can save information about the research decision in a local journal.&lt;/p&gt;

&lt;p&gt;This can include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Stock ticker&lt;/li&gt;
&lt;li&gt;Analysis date&lt;/li&gt;
&lt;li&gt;Generated recommendation&lt;/li&gt;
&lt;li&gt;Evaluation status&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Initially, the outcome is marked as pending.&lt;/p&gt;

&lt;p&gt;That makes sense because the system doesn’t know what will happen to the stock after the recommendation.&lt;/p&gt;

&lt;p&gt;Once sufficient trading sessions have passed, the framework can evaluate the stock’s subsequent performance against a benchmark.&lt;/p&gt;

&lt;p&gt;In the configuration I explored, the default evaluation window was five trading days.&lt;/p&gt;

&lt;p&gt;Based on the evaluation, an AI model can generate a reflection about the previous research.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;What did the analysis get right?&lt;/p&gt;

&lt;p&gt;What risks did it overlook?&lt;/p&gt;

&lt;p&gt;Which assumptions turned out to be incorrect?&lt;/p&gt;

&lt;p&gt;What lessons might be useful for future research?&lt;/p&gt;

&lt;p&gt;Those reflections can then be retrieved as context for subsequent analyses.&lt;/p&gt;

&lt;p&gt;This creates a basic feedback mechanism.&lt;/p&gt;

&lt;p&gt;However, it’s important to understand that memory-based reflection is not the same as training or fine-tuning the underlying LLM.&lt;/p&gt;

&lt;p&gt;The framework can reuse previous lessons as contextual information, but that doesn’t automatically mean its investment predictions improve over time.&lt;/p&gt;

&lt;p&gt;Demonstrating that would require systematic evaluation.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔮 What If We Took This Project Further?
&lt;/h2&gt;

&lt;p&gt;After experimenting with TradingAgents, I started thinking about what else we could build using this architecture.&lt;/p&gt;

&lt;p&gt;Because the project is open source, there are several interesting directions to explore.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Build an AI-Powered Stock Screener
&lt;/h3&gt;

&lt;p&gt;Instead of analyzing one company at a time, imagine providing the system with a watchlist of 50 stocks.&lt;/p&gt;

&lt;p&gt;The agents could research each company, evaluate its investment thesis, and produce a shortlist of opportunities worth investigating further.&lt;/p&gt;

&lt;p&gt;You could then compare the companies using consistent research criteria.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Create a Financial Research Dashboard
&lt;/h3&gt;

&lt;p&gt;Another possibility is building a dashboard that tracks the agents’ research over time.&lt;/p&gt;

&lt;p&gt;For example, it could display:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Companies being monitored&lt;/li&gt;
&lt;li&gt;Latest research recommendations&lt;/li&gt;
&lt;li&gt;Bullish and bearish arguments&lt;/li&gt;
&lt;li&gt;Risk assessments&lt;/li&gt;
&lt;li&gt;Historical recommendations&lt;/li&gt;
&lt;li&gt;Subsequent stock performance&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This could make it easier to compare how investment theses evolve as new information becomes available.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Introduce Industry-Specific AI Agents
&lt;/h3&gt;

&lt;p&gt;Different industries require different types of analysis.&lt;/p&gt;

&lt;p&gt;For example, we could introduce specialist agents for:&lt;/p&gt;

&lt;p&gt;Semiconductors: Manufacturing capacity, AI infrastructure demand, supply chains, and competitive positioning.&lt;/p&gt;

&lt;p&gt;Healthcare: Clinical trials, regulatory approvals, product pipelines, and reimbursement risks.&lt;/p&gt;

&lt;p&gt;Technology: Revenue growth, recurring revenue, customer retention, and competitive advantages.&lt;/p&gt;

&lt;p&gt;These agents could supplement the general research team with more specialized domain knowledge.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Evaluate Whether Multi-Agent Research Actually Works
&lt;/h3&gt;

&lt;p&gt;This is probably the most interesting direction from a research perspective.&lt;/p&gt;

&lt;p&gt;We could systematically compare:&lt;/p&gt;

&lt;p&gt;Single LLM vs. Multi-Agent Research vs. Traditional Financial Screening&lt;/p&gt;

&lt;p&gt;And evaluate metrics such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Research completeness&lt;/li&gt;
&lt;li&gt;Factual accuracy&lt;/li&gt;
&lt;li&gt;Recommendation consistency&lt;/li&gt;
&lt;li&gt;Risk identification&lt;/li&gt;
&lt;li&gt;Token usage and cost&lt;/li&gt;
&lt;li&gt;Latency&lt;/li&gt;
&lt;li&gt;Performance against relevant benchmarks&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We could also run historical evaluations while carefully controlling for look-ahead bias and survivorship bias.&lt;/p&gt;

&lt;p&gt;That would help answer a much more meaningful question:&lt;/p&gt;

&lt;p&gt;Do multi-agent AI systems actually improve investment research quality, or do they simply generate more elaborate reports?&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>tutorial</category>
      <category>opensource</category>
    </item>
    <item>
      <title>🎬 I Stopped Making Motion Graphics Manually. Here’s How I Use AI Instead.</title>
      <dc:creator>Vivek Shetye</dc:creator>
      <pubDate>Tue, 27 Oct 2026 15:05:51 +0000</pubDate>
      <link>https://dev.to/vivek_shetye/i-stopped-making-motion-graphics-manually-heres-how-i-use-ai-instead-1c2d</link>
      <guid>https://dev.to/vivek_shetye/i-stopped-making-motion-graphics-manually-heres-how-i-use-ai-instead-1c2d</guid>
      <description>&lt;p&gt;What if you could create professional motion graphics for your videos without spending hours manually animating everything?&lt;/p&gt;

&lt;p&gt;No After Effects. No manually setting keyframes. No endlessly adjusting animation timelines.&lt;/p&gt;

&lt;p&gt;Just &lt;strong&gt;ChatGPT + Codex + Remotion.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I’ve been experimenting with a workflow that lets me turn ordinary video recordings into animated explainer videos using AI.&lt;/p&gt;

&lt;p&gt;And here’s what makes it interesting:&lt;/p&gt;

&lt;p&gt;The animations actually follow what I’m saying.&lt;/p&gt;

&lt;p&gt;When I introduce a concept, the corresponding visual appears at exactly the right moment. When I move to the next idea, the animation transitions along with my narration.&lt;/p&gt;

&lt;p&gt;All without manually creating every animation.&lt;/p&gt;

&lt;p&gt;In this article, I’ll walk you through my entire workflow, from a simple video recording to a finished motion graphics video.&lt;/p&gt;

&lt;p&gt;And the best part? &lt;strong&gt;You don’t need to be an experienced programmer or motion graphics designer to get started.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🎥 Full video walkthrough
&lt;/h2&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/8ULQhLoN28E" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;




&lt;h2&gt;
  
  
  🚀 The Problem with Traditional Motion Graphics
&lt;/h2&gt;

&lt;p&gt;If you’ve ever tried creating motion graphics for YouTube videos, tutorials, or educational content, you probably know how time-consuming the process can be.&lt;/p&gt;

&lt;p&gt;Traditionally, creating motion graphics involves:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Designing individual visual elements.&lt;/li&gt;
&lt;li&gt;Positioning objects on the screen.&lt;/li&gt;
&lt;li&gt;Creating and adjusting keyframes.&lt;/li&gt;
&lt;li&gt;Managing animation timelines.&lt;/li&gt;
&lt;li&gt;Synchronizing visuals with narration.&lt;/li&gt;
&lt;li&gt;Exporting and reviewing the final video.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Tools like Adobe After Effects are incredibly powerful, but creating polished animations requires time, experience, and patience.&lt;/p&gt;

&lt;p&gt;And when you’re producing educational videos regularly, spending hours animating a 20-second explanation isn’t always practical.&lt;/p&gt;

&lt;p&gt;That’s what got me interested in AI-powered motion graphics generation.&lt;/p&gt;

&lt;p&gt;Instead of manually animating everything, what if I could describe the visuals I wanted and let AI build them?&lt;/p&gt;

&lt;p&gt;Turns out, we can.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧠 The AI Motion Graphics Stack
&lt;/h2&gt;

&lt;p&gt;My workflow uses three main tools:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. ChatGPT — The Creative Director
&lt;/h3&gt;

&lt;p&gt;I use ChatGPT to plan my animations.&lt;/p&gt;

&lt;p&gt;It helps me transform a video transcript into a structured storyboard that defines:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What should appear on screen.&lt;/li&gt;
&lt;li&gt;When each animation should start and end.&lt;/li&gt;
&lt;li&gt;How elements should move.&lt;/li&gt;
&lt;li&gt;What transitions should be used.&lt;/li&gt;
&lt;li&gt;Which images and visual assets should appear.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Essentially, ChatGPT acts as my motion graphics designer.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Codex — The Developer
&lt;/h3&gt;

&lt;p&gt;Once the storyboard is ready, I pass it to Codex.&lt;/p&gt;

&lt;p&gt;Codex takes the instructions and generates the actual animation code using React and Remotion.&lt;/p&gt;

&lt;p&gt;It creates scenes, positions elements, adds transitions, and synchronizes everything with the narration.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Remotion — The Video Engine
&lt;/h3&gt;

&lt;p&gt;Remotion is an open-source framework that lets developers create videos programmatically using React.&lt;/p&gt;

&lt;p&gt;Instead of building animations through a traditional editing timeline, you define scenes and animations through code.&lt;/p&gt;

&lt;p&gt;Remotion then renders that code into a video.&lt;/p&gt;

&lt;p&gt;This makes it particularly interesting when combined with AI coding agents.&lt;/p&gt;

&lt;p&gt;The workflow looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;         Original Video Recording
                    |
                    v
         Timestamped Transcript
                    |
                    v
           ChatGPT (Storyboard)
                    |
                    v
           Codex (React Code)
                    |
                    v
         Remotion (Preview + Render)
                    |
                    v
          Final Motion Graphics
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;ChatGPT plans → Codex builds → Remotion renders.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That’s the foundation of the entire workflow.&lt;/p&gt;




&lt;h2&gt;
  
  
  🛠️ Step 1: Set Up Your Remotion Project
&lt;/h2&gt;

&lt;p&gt;Let’s start by creating a new Remotion project.&lt;/p&gt;

&lt;p&gt;First, create an empty folder and open it in VS Code.&lt;/p&gt;

&lt;p&gt;Then open your terminal and run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx create-video@latest &lt;span class="nb"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This initializes a Remotion project in your current directory.&lt;/p&gt;

&lt;p&gt;During setup, I usually select the Blank template because I prefer building animations from scratch.&lt;/p&gt;

&lt;p&gt;Once the project is initialized, install the dependencies if they weren’t installed automatically.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Next, start the development server:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm run dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This launches Remotion Studio, where you can preview your animations, inspect individual frames, and render your final video.&lt;/p&gt;

&lt;p&gt;At this point, we have a blank project.&lt;/p&gt;

&lt;p&gt;Now we need to give AI something to work with.&lt;/p&gt;

&lt;p&gt;Bonus: Install Remotion Agent Skills&lt;/p&gt;

&lt;p&gt;I also install the Remotion agent skills for my coding agent.&lt;/p&gt;

&lt;p&gt;These provide additional instructions and best practices for working with Remotion.&lt;/p&gt;

&lt;p&gt;They help AI coding agents understand common animation patterns, composition structures, and recommended approaches.&lt;/p&gt;




&lt;h2&gt;
  
  
  📝 Step 2: Generate a Timestamped Transcript
&lt;/h2&gt;

&lt;p&gt;Here’s something important about my workflow:&lt;/p&gt;

&lt;p&gt;I don’t start by asking AI to generate random animations.&lt;/p&gt;

&lt;p&gt;I start with the actual video recording.&lt;/p&gt;

&lt;p&gt;For example, in one of my previous YouTube videos, I explained how AI agents work.&lt;/p&gt;

&lt;p&gt;There’s a section where I introduce the concept of an agent loop.&lt;/p&gt;

&lt;p&gt;I wanted to create an animation showing how an AI agent repeatedly:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Thinks about what to do.&lt;/li&gt;
&lt;li&gt;Takes an action.&lt;/li&gt;
&lt;li&gt;Observes the result.&lt;/li&gt;
&lt;li&gt;Decides what to do next.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;But for the animation to work, AI needs to understand two things:&lt;/p&gt;

&lt;p&gt;WHAT I’m saying and WHEN I’m saying it.&lt;/p&gt;

&lt;p&gt;That’s where timestamped transcripts come in.&lt;/p&gt;

&lt;p&gt;I generate an SRT transcript of my recording.&lt;/p&gt;

&lt;p&gt;Here’s a simplified example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1
00:00:00,000 --&amp;gt; 00:00:04,000
At the center of an AI agent is an AI model.
2
00:00:04,000 --&amp;gt; 00:00:08,000
The model helps decide what to do next.
3
00:00:08,000 --&amp;gt; 00:00:13,000
The agent takes an action and observes the result.
4
00:00:13,000 --&amp;gt; 00:00:18,000
This process continues until the task is complete.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now AI knows exactly when each concept is introduced.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;At 0 seconds, display the AI model.&lt;/li&gt;
&lt;li&gt;At 4 seconds, animate the decision-making process.&lt;/li&gt;
&lt;li&gt;At 8 seconds, show the agent taking an action.&lt;/li&gt;
&lt;li&gt;At 13 seconds, illustrate the repeating agent loop.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is what makes the animations synchronize with the narration.&lt;/p&gt;

&lt;p&gt;You can generate SRT transcripts using any transcription tool that supports timestamps.&lt;/p&gt;

&lt;p&gt;Organizing Your Assets&lt;/p&gt;

&lt;p&gt;I also place any required images, logos, and other visual assets inside my Remotion project’s public directory.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;my-motion-graphics/
│
├── public/
│   ├── transcript/
│   │   └── transcript.srt
│   │
│   ├── image-assets/
│   │   ├── ai-model.png
│   │   ├── agent-icon.svg
│   │   └── background.png
│   │
│   └── audio/
│       └── narration.wav
│
├── src/
│
└── package.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now we have everything we need:&lt;/p&gt;

&lt;p&gt;The original narration, a timestamped transcript, and our visual assets.&lt;/p&gt;




&lt;h2&gt;
  
  
  🎨 Step 3: Use ChatGPT to Create a Detailed Storyboard
&lt;/h2&gt;

&lt;p&gt;This is probably the most important part of the entire process.&lt;/p&gt;

&lt;p&gt;One mistake I initially made was giving AI vague instructions like:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“Create some cool motion graphics for this video.”&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The problem?&lt;/p&gt;

&lt;p&gt;AI might generate something visually interesting, but that doesn’t necessarily mean the animations help explain the content.&lt;/p&gt;

&lt;p&gt;Instead, I use ChatGPT to create a detailed storyboard before generating any code.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;The specific transcript section I want to animate.&lt;/li&gt;
&lt;li&gt;The full transcript for context.&lt;/li&gt;
&lt;li&gt;My preferred visual style.&lt;/li&gt;
&lt;li&gt;The location of my visual assets.&lt;/li&gt;
&lt;li&gt;The output resolution and frame rate.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example, here’s a simplified version of the prompt:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Write a prompt for codex to create a motion graphics video using Remotion. Give it a personality of an expert motion graphics designer.
I want to create professional motion graphics for
a YouTube explainer video using Remotion.
Your task is to analyze the provided transcript
and create a detailed animation storyboard.
Requirements:
1. Synchronize animations with the transcript timestamps.
2. Create visuals that help explain the narration.
3. Use a clean, minimal explainer-video style.
4. Avoid unnecessary or distracting animations.
5. Include scene-by-scene animation instructions.
6. Specify transitions, element positioning,
   and animation timing.
7. Use existing visual assets wherever appropriate.
8. Output resolution: 4K (3840x2160).
9. Frame rate: 30 FPS.
Transcript section:
[PASTE TRANSCRIPT]
Full video transcript:
[PROVIDE FULL TRANSCRIPT]
Visual assets:
public/image-assets/
Generate a detailed storyboard that can be
passed directly to an AI coding agent.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ChatGPT then generates a structured storyboard.&lt;/p&gt;

&lt;p&gt;This is much more useful than simply asking AI to generate animations.&lt;/p&gt;

&lt;p&gt;We now have a clear visual plan.&lt;/p&gt;

&lt;p&gt;And that plan is what we give to Codex.&lt;/p&gt;




&lt;h2&gt;
  
  
  💻 Step 4: Let Codex Build the Motion Graphics
&lt;/h2&gt;

&lt;p&gt;Now comes the fun part.&lt;/p&gt;

&lt;p&gt;I open Codex inside VS Code and provide the storyboard generated by ChatGPT.&lt;/p&gt;

&lt;p&gt;Codex can then:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create React components for individual scenes.&lt;/li&gt;
&lt;li&gt;Generate SVG graphics where needed.&lt;/li&gt;
&lt;li&gt;Add transitions and animations.&lt;/li&gt;
&lt;li&gt;Position elements on screen.&lt;/li&gt;
&lt;li&gt;Synchronize scenes with the transcript.&lt;/li&gt;
&lt;li&gt;Integrate existing images and assets.&lt;/li&gt;
&lt;li&gt;Prepare the final Remotion composition.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Because Remotion uses React, Codex can generate the animation programmatically.&lt;/p&gt;

&lt;p&gt;For example, here’s a simple Remotion animation:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;useCurrentFrame&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;interpolate&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;remotion&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;AnimatedTitle&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;frame&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useCurrentFrame&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;opacity&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;interpolate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;frame&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;extrapolateRight&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;clamp&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;translateY&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;interpolate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="nx"&gt;frame&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;40&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;extrapolateRight&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;clamp&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&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="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;
      &lt;span class="na"&gt;style&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;opacity&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;`translateY(&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;translateY&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;px)`&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;fontSize&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;80&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;fontWeight&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;bold&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;white&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      How AI Agents Work
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This creates a simple title animation that fades in while moving upward.&lt;/p&gt;

&lt;p&gt;Now imagine combining dozens of components like this with precise timing, transitions, and visual elements.&lt;/p&gt;

&lt;p&gt;That’s essentially what Codex helps automate.&lt;/p&gt;

&lt;p&gt;And instead of manually writing all this code, I describe the animation I want.&lt;/p&gt;

&lt;p&gt;Let Codex Verify Its Own Work&lt;/p&gt;

&lt;p&gt;Another useful part of my workflow is asking Codex to verify the generated animations.&lt;/p&gt;

&lt;p&gt;I instruct it to:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Render screenshots of important frames.&lt;/li&gt;
&lt;li&gt;Inspect the visual layout.&lt;/li&gt;
&lt;li&gt;Identify overlapping or misplaced elements.&lt;/li&gt;
&lt;li&gt;Fix any issues it detects.&lt;/li&gt;
&lt;li&gt;Verify that animations follow the storyboard.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This doesn’t guarantee perfect results, but it helps catch common visual problems before rendering the entire video.&lt;/p&gt;




&lt;h2&gt;
  
  
  🎥 Step 5: Preview, Refine, and Render
&lt;/h2&gt;

&lt;p&gt;Once Codex finishes generating the animations, I open Remotion Studio.&lt;/p&gt;

&lt;p&gt;This is where I can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Preview the complete animation.&lt;/li&gt;
&lt;li&gt;Scrub through individual frames.&lt;/li&gt;
&lt;li&gt;Verify scene transitions.&lt;/li&gt;
&lt;li&gt;Check synchronization with narration.&lt;/li&gt;
&lt;li&gt;Identify visual issues.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If something doesn’t look right, I don’t necessarily need to modify the React code myself.&lt;/p&gt;

&lt;p&gt;I can simply tell Codex what needs to change.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;The transition between scene 2 and scene 3&lt;br&gt;
feels too abrupt.&lt;br&gt;
Make the transition smoother and ensure&lt;br&gt;
the elements don't overlap.&lt;br&gt;
Also, keep the AI model icon visible&lt;br&gt;
throughout the entire sequence.&lt;/p&gt;

&lt;p&gt;Codex can update the animation accordingly.&lt;/p&gt;

&lt;p&gt;Once everything looks good, I render the final video using Remotion Studio or ask Codex to handle the rendering.&lt;/p&gt;

&lt;p&gt;And that’s it!&lt;/p&gt;

&lt;p&gt;We now have a finished motion graphics video synchronized with the original narration.&lt;/p&gt;




&lt;h2&gt;
  
  
  💡 What I’ve Learned from Using AI for Motion Graphics
&lt;/h2&gt;

&lt;p&gt;After experimenting with this workflow, a few things have become clear.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Good Storyboards Matter More Than Fancy Prompts
&lt;/h3&gt;

&lt;p&gt;The biggest improvement came from separating the planning and implementation stages.&lt;/p&gt;

&lt;p&gt;Instead of asking one AI agent to figure everything out, I use ChatGPT to design the animation and Codex to implement it.&lt;/p&gt;

&lt;p&gt;This gives me much more control over the final result.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Timestamps Make a Huge Difference
&lt;/h3&gt;

&lt;p&gt;Without timestamps, animations might look good but appear at the wrong moments.&lt;/p&gt;

&lt;p&gt;Using SRT transcripts makes it easier to align visuals with the narration.&lt;/p&gt;

&lt;p&gt;However, timestamps are only a starting point. Some animations still need timing adjustments during preview.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Simpler Animations Often Work Better
&lt;/h3&gt;

&lt;p&gt;Not every sentence needs an elaborate animation.&lt;/p&gt;

&lt;p&gt;Sometimes a simple diagram, highlighted keyword, or animated arrow communicates an idea better than an overly complicated sequence.&lt;/p&gt;

&lt;p&gt;The goal should always be to make the explanation easier to understand.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. AI Doesn’t Eliminate the Need for Review
&lt;/h3&gt;

&lt;p&gt;AI can generate impressive animations, but the first version isn’t always perfect.&lt;/p&gt;

&lt;p&gt;You may still need to adjust timing, fix layouts, or refine transitions.&lt;/p&gt;

&lt;p&gt;The advantage is that you can make many of these changes through natural-language instructions instead of manually editing keyframes.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔥 Who Can Benefit from This Workflow?
&lt;/h2&gt;

&lt;p&gt;Although I primarily use this for YouTube videos, there are plenty of other applications.&lt;/p&gt;

&lt;p&gt;YouTube creators: Create animated explanations, visual storytelling sequences, and educational B-roll.&lt;/p&gt;

&lt;p&gt;Developers: Turn technical concepts, architecture diagrams, and system workflows into animations.&lt;/p&gt;

&lt;p&gt;Educators: Create engaging visual explanations for complex topics.&lt;/p&gt;

&lt;p&gt;Startup founders: Build product explainers, feature demonstrations, and promotional videos.&lt;/p&gt;

&lt;p&gt;Content marketers: Generate motion graphics for social media and marketing campaigns.&lt;/p&gt;

&lt;p&gt;And because Remotion is code-based, you can reuse animation components and visual styles across multiple videos.&lt;/p&gt;

&lt;p&gt;That makes this workflow especially interesting for creators producing content regularly.&lt;/p&gt;




&lt;h2&gt;
  
  
  🚀 Final Thoughts: AI Is Changing Video Production
&lt;/h2&gt;

&lt;p&gt;A few years ago, creating professional motion graphics required specialized animation skills and significant manual effort.&lt;/p&gt;

&lt;p&gt;Today, AI coding agents and frameworks like Remotion are making programmatic video creation much more accessible.&lt;/p&gt;

&lt;p&gt;And what excites me most isn’t just the ability to generate animations faster.&lt;/p&gt;

&lt;p&gt;It’s the possibility of creating visual explanations that are directly connected to the content itself.&lt;/p&gt;

&lt;p&gt;Instead of manually deciding when every element should appear, we can use transcripts, storyboards, and AI agents to automate much of that process.&lt;/p&gt;

&lt;p&gt;Of course, AI-generated motion graphics still require creative direction and quality checks.&lt;/p&gt;

&lt;p&gt;But the amount of manual work we can eliminate is already impressive.&lt;/p&gt;

&lt;p&gt;The future of video editing might involve a lot less dragging keyframes and a lot more describing what you want to create.&lt;/p&gt;

&lt;p&gt;And personally, I’m excited to see where this goes.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>automation</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>How I Built a Fully Local AI Coding Agent with Qwen 3.8, LM Studio, and Pi (No Paid APIs)</title>
      <dc:creator>Vivek Shetye</dc:creator>
      <pubDate>Tue, 13 Oct 2026 15:33:47 +0000</pubDate>
      <link>https://dev.to/vivek_shetye/how-i-built-a-fully-local-ai-coding-agent-with-qwen-38-lm-studio-and-pi-no-paid-apis-5bp7</link>
      <guid>https://dev.to/vivek_shetye/how-i-built-a-fully-local-ai-coding-agent-with-qwen-38-lm-studio-and-pi-no-paid-apis-5bp7</guid>
      <description>&lt;p&gt;What if you could have an AI coding agent that reads your files, writes code, executes commands, and fixes errors without sending a single model request to the cloud?&lt;/p&gt;

&lt;p&gt;No OpenAI API. No Anthropic API. No per-token billing.&lt;/p&gt;

&lt;p&gt;Just an open-weight AI model running on your own hardware.&lt;/p&gt;

&lt;p&gt;I recently decided to test exactly how practical this setup has become.&lt;/p&gt;

&lt;p&gt;Using &lt;strong&gt;Qwen 3.8 27B, LM Studio, and Pi Coding Agent&lt;/strong&gt;, I built a fully local AI coding workflow and challenged it to create an entire web application from scratch.&lt;/p&gt;

&lt;p&gt;And the results were surprisingly good.&lt;/p&gt;

&lt;p&gt;The agent built a React + TypeScript application, executed commands, tested its work, identified errors, and fixed them without requiring my intervention.&lt;/p&gt;

&lt;p&gt;All while running a 27-billion-parameter model locally on my MacBook Pro.&lt;/p&gt;

&lt;p&gt;But there were some interesting trade-offs, especially around inference speed, hardware requirements, and context management.&lt;/p&gt;

&lt;p&gt;In this article, I’ll walk through the complete setup, explain why I chose these tools, and share what actually happened when I put the agent to work.&lt;/p&gt;




&lt;h2&gt;
  
  
  🎥 Full video walkthrough
&lt;/h2&gt;

&lt;p&gt;In the video, I cover:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Installing LM Studio and downloading Qwen 3.8 27B.&lt;/li&gt;
&lt;li&gt;Understanding 4-bit quantization.&lt;/li&gt;
&lt;li&gt;Starting the local inference server.&lt;/li&gt;
&lt;li&gt;Installing Pi Coding Agent.&lt;/li&gt;
&lt;li&gt;Connecting Pi to LM Studio.&lt;/li&gt;
&lt;li&gt;Testing local tool calling.&lt;/li&gt;
&lt;li&gt;Building the Mission Control dashboard.&lt;/li&gt;
&lt;li&gt;Reviewing the results, performance, and limitations.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/zgb_MkrxpRs" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;




&lt;h2&gt;
  
  
  🚀 What Did I Build?
&lt;/h2&gt;

&lt;p&gt;Before getting into the setup, here’s what I asked my local AI coding agent to create.&lt;/p&gt;

&lt;p&gt;An AI Agent Mission Control dashboard for monitoring and managing a team of autonomous AI agents.&lt;/p&gt;

&lt;p&gt;The application needed several features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Agent Overview: Monitor active agents, running tasks, completed tasks, and failures.&lt;/li&gt;
&lt;li&gt;Agent Management: View agents, their roles, current tasks, and statuses.&lt;/li&gt;
&lt;li&gt;Kanban Task Board: Organize tasks across Backlog, In Progress, Review, and Completed.&lt;/li&gt;
&lt;li&gt;Live Activity Feed: Track agent activity and task execution.&lt;/li&gt;
&lt;li&gt;Analytics Dashboard: Visualize token usage, estimated costs, success rates, and task performance.&lt;/li&gt;
&lt;li&gt;Modern UI: A responsive dark-themed interface with charts, animations, and polished interactions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And I didn’t want a static HTML mockup.&lt;/p&gt;

&lt;p&gt;I wanted a working React application with realistic sample data.&lt;/p&gt;

&lt;p&gt;The interesting part?&lt;/p&gt;

&lt;p&gt;The entire coding workflow ran locally.&lt;/p&gt;

&lt;p&gt;The AI model wasn’t hosted by OpenAI, Anthropic, or another cloud inference provider.&lt;/p&gt;

&lt;p&gt;It was running directly on my computer.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧠 The Architecture: Three Tools, One Local AI Coding Agent
&lt;/h2&gt;

&lt;p&gt;The architecture is relatively simple.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;           Developer
               |
               v
       +----------------+
       | Pi Coding Agent|
       |                |
       | Read Files     |
       | Write Code     |
       | Execute Bash   |
       | Edit Files     |
       +----------------+
               |
               | OpenAI-Compatible API
               v
       +----------------+
       |   LM Studio    |
       |                |
       | Local Inference|
       | Server         |
       +----------------+
               |
               v
       +----------------+
       |  Qwen 3.8 27B  |
       |                |
       | 4-bit Quantized|
       | Local AI Model |
       +----------------+
               |
               v
        Your Computer
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each component has a specific responsibility.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Qwen3.8 27B — The Brain
&lt;/h3&gt;

&lt;p&gt;Qwen 3.8 27B is the language model responsible for understanding instructions, reasoning about coding tasks, and generating code.&lt;/p&gt;

&lt;p&gt;For this experiment, I used a 4-bit quantized version of the model, approximately 16GB in size.&lt;/p&gt;

&lt;p&gt;This makes it much more practical to run a large model on consumer hardware.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. LM Studio — The Local Inference Server
&lt;/h3&gt;

&lt;p&gt;LM Studio makes running open-weight AI models locally much easier.&lt;/p&gt;

&lt;p&gt;Instead of manually setting up inference frameworks, Python environments, or model-serving infrastructure, you get a desktop application where you can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Discover and download models.&lt;/li&gt;
&lt;li&gt;Load models into memory.&lt;/li&gt;
&lt;li&gt;Chat with models directly.&lt;/li&gt;
&lt;li&gt;Configure inference settings.&lt;/li&gt;
&lt;li&gt;Expose models through an OpenAI-compatible API.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That last feature is particularly important because it allows external applications to communicate with your locally running model.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Pi Coding Agent — The Hands
&lt;/h3&gt;

&lt;p&gt;A language model alone cannot automatically inspect your project files, modify code, or execute terminal commands.&lt;/p&gt;

&lt;p&gt;That’s where Pi comes in.&lt;/p&gt;

&lt;p&gt;Pi is a lightweight, extensible terminal-based AI coding agent.&lt;/p&gt;

&lt;p&gt;It provides the tools and agent loop needed to interact with your development environment.&lt;/p&gt;

&lt;p&gt;Instead of simply generating code in a chat window, Pi can use the model to work through actual coding tasks.&lt;/p&gt;

&lt;p&gt;And because Pi is relatively minimal, it’s particularly interesting for local model experiments.&lt;/p&gt;




&lt;h2&gt;
  
  
  ⚙️ Step 1: Install LM Studio and Download Qwen 3.8 27B
&lt;/h2&gt;

&lt;p&gt;First, download LM Studio from its official website:&lt;/p&gt;

&lt;p&gt;LM Studio: &lt;a href="https://lmstudio.ai/" rel="noopener noreferrer"&gt;https://lmstudio.ai/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Install the application for your operating system and hardware.&lt;/p&gt;

&lt;p&gt;Once installed, open LM Studio and navigate to the model search section.&lt;/p&gt;

&lt;p&gt;Search for:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Qwen 3.8 27B
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You’ll notice that multiple versions of the same model may be available.&lt;/p&gt;

&lt;p&gt;For this experiment, I selected a 4-bit quantized version.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why 4-bit Quantization?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Running a 27-billion-parameter model at full precision can require substantial memory.&lt;/p&gt;

&lt;p&gt;Quantization reduces the precision used to store model weights.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Precision&lt;/th&gt;
&lt;th&gt;Approximate Raw Weight Storage&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;FP16 (16-bit)&lt;/td&gt;
&lt;td&gt;54 GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;INT8 (8-bit)&lt;/td&gt;
&lt;td&gt;27 GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4-bit&lt;/td&gt;
&lt;td&gt;13.5 GB&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;These are theoretical weight-storage estimates. Actual model files and runtime memory requirements can be higher because of quantization metadata, model architecture, KV cache, and other overhead.&lt;/p&gt;

&lt;p&gt;The 4-bit model I downloaded was approximately 16GB.&lt;/p&gt;

&lt;p&gt;That’s a significant reduction compared with FP16.&lt;/p&gt;

&lt;p&gt;Of course, quantization comes with trade-offs.&lt;/p&gt;

&lt;p&gt;Reducing precision can affect model accuracy, especially on tasks involving complex reasoning or code generation.&lt;/p&gt;

&lt;p&gt;However, modern quantization techniques can often preserve much of the original model’s capabilities while substantially reducing memory requirements.&lt;/p&gt;

&lt;p&gt;For running larger models locally, this is extremely useful.&lt;/p&gt;

&lt;p&gt;Load the Model&lt;/p&gt;

&lt;p&gt;After downloading:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open My Models in LM Studio.&lt;/li&gt;
&lt;li&gt;Select your downloaded Qwen model.&lt;/li&gt;
&lt;li&gt;Click Load Model.&lt;/li&gt;
&lt;li&gt;Configure the context length according to your available memory.&lt;/li&gt;
&lt;li&gt;Load the model.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For my experiment, I configured a context length of 200,000 tokens.&lt;/p&gt;

&lt;p&gt;Keep in mind that configuring a large context window doesn’t mean your hardware can efficiently process that entire context. Actual memory usage and performance depend on the model, runtime, and KV-cache configuration.&lt;/p&gt;

&lt;p&gt;Once the model is loaded, you can test it using LM Studio’s built-in chat interface.&lt;/p&gt;

&lt;p&gt;Try sending a simple message to verify that inference is working.&lt;/p&gt;

&lt;p&gt;Now we need to make this model accessible to our coding agent.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔌 Step 2: Enable LM Studio’s Local API Server
&lt;/h2&gt;

&lt;p&gt;LM Studio can expose your local model through an OpenAI-compatible API.&lt;/p&gt;

&lt;p&gt;This is what allows Pi Coding Agent to communicate with Qwen.&lt;/p&gt;

&lt;p&gt;Inside LM Studio:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Navigate to the Developer tab.&lt;/li&gt;
&lt;li&gt;Enable the local server.&lt;/li&gt;
&lt;li&gt;Verify that your model is available.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;By default, LM Studio uses port 1234.&lt;/p&gt;

&lt;p&gt;The local API endpoint is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;http://localhost:1234/v1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can verify that the server is responding by running:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl http://localhost:1234/v1/models
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This should return information about the models exposed by your LM Studio server.&lt;/p&gt;

&lt;p&gt;At this point, your computer is acting as its own AI inference server.&lt;/p&gt;

&lt;p&gt;And the best part is that you don’t need to send inference requests to an external model provider.&lt;/p&gt;

&lt;p&gt;Note: Keep the server bound to localhost unless you intentionally need remote access. Exposing an inference endpoint to your network introduces additional security considerations.&lt;/p&gt;




&lt;h2&gt;
  
  
  🛠️ Step 3: Install Pi Coding Agent
&lt;/h2&gt;

&lt;p&gt;Now that Qwen is running locally, we need an agent that can actually work with our codebase.&lt;/p&gt;

&lt;p&gt;For this, I’m using Pi Coding Agent.&lt;/p&gt;

&lt;p&gt;Official project:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://pi.dev/" rel="noopener noreferrer"&gt;https://pi.dev/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Pi is designed around a relatively small set of core capabilities.&lt;/p&gt;

&lt;p&gt;Out of the box, it provides four essential tools:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;read&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Read files from your project&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;write&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Create files and write content&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;edit&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Modify existing files&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;bash&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Execute terminal commands&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;That’s it.&lt;/p&gt;

&lt;p&gt;And these four tools are enough to handle a surprising amount of coding work.&lt;/p&gt;

&lt;p&gt;Pi also supports extensions, allowing you to add functionality when needed.&lt;/p&gt;

&lt;h3&gt;
  
  
  Install Pi
&lt;/h3&gt;

&lt;p&gt;Follow the installation instructions on Pi’s official website.&lt;/p&gt;

&lt;p&gt;After installation, open your terminal and run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pi
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If a new Pi session opens, the installation is working.&lt;/p&gt;

&lt;p&gt;Now let’s connect it to our local model.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔗 Step 4: Connect Pi to LM Studio
&lt;/h2&gt;

&lt;p&gt;There are multiple ways to configure Pi to use a locally hosted model.&lt;/p&gt;

&lt;p&gt;You can manually configure a custom provider, but I used a community extension called pi-lmstudio.&lt;/p&gt;

&lt;p&gt;The extension discovers models exposed by LM Studio and makes them available inside Pi.&lt;/p&gt;

&lt;p&gt;You can find it through Pi’s package directory.&lt;/p&gt;

&lt;p&gt;Install the extension using the command provided on its package page.&lt;/p&gt;

&lt;p&gt;Once installed, restart Pi:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pi
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then open the model selector:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/model
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You should see the model currently exposed by LM Studio.&lt;/p&gt;

&lt;p&gt;Select your Qwen 3.8 27B model.&lt;/p&gt;

&lt;p&gt;And that’s it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pi is now using your locally running Qwen model instead of a hosted inference API.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The workflow looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Your Prompt
    |
    v
Pi Coding Agent
    |
    | Sends model request
    v
LM Studio API (localhost:1234)
    |
    v
Qwen 3.8 27B
    |
    | Returns response / tool calls
    v
Pi Coding Agent
    |
    | Executes tools
    v
Your Local Project
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;One important distinction: Pi executes tools locally, while LM Studio handles model inference.&lt;/p&gt;

&lt;p&gt;The model generates the instructions and tool calls, but Pi is responsible for carrying them out.&lt;/p&gt;

&lt;h3&gt;
  
  
  Verify That Tool Calling Works
&lt;/h3&gt;

&lt;p&gt;Before assigning a complicated task, I recommend testing the setup with something simple.&lt;/p&gt;

&lt;p&gt;For example, create a Python file:&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="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Hello, World!&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then ask Pi:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Read the Python file in this directory, explain what it does, and create a document containing the explanation.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This tests whether the model can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Understand the instruction.&lt;/li&gt;
&lt;li&gt;Select the appropriate tools.&lt;/li&gt;
&lt;li&gt;Read a local file.&lt;/li&gt;
&lt;li&gt;Generate a summary.&lt;/li&gt;
&lt;li&gt;Write a new file.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In my experiment, Pi successfully completed this test.&lt;/p&gt;

&lt;p&gt;Now it was time for something more challenging.&lt;/p&gt;




&lt;h2&gt;
  
  
  💻 Step 5: Can a Local 27B Model Build an Entire Web Application?
&lt;/h2&gt;

&lt;p&gt;This was the part I was most interested in.&lt;/p&gt;

&lt;p&gt;Getting a model to answer questions is one thing.&lt;/p&gt;

&lt;p&gt;Getting it to work through a multi-step software development task is something else entirely.&lt;/p&gt;

&lt;p&gt;I started with an empty project directory.&lt;/p&gt;

&lt;p&gt;Then I asked Pi to build an AI Agent Mission Control dashboard.&lt;/p&gt;

&lt;p&gt;Here’s a condensed version of the prompt:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Build a modern, polished AI Agent Mission Control dashboard for managing and monitoring a team of autonomous AI agents.

The dashboard should include:

* Overview cards for Active Agents, Running Tasks, Completed Tasks, and Failed Tasks
* A list/grid of AI agents with names, roles, status, current task, and model being used
* A Kanban-style task board with Backlog, In Progress, Review, and Completed columns
* A Live Activity Feed showing agents starting tasks, using tools, completing work, and handing tasks to other agents
* System metrics such as token usage, estimated cost, success rate, and average task duration
* A sidebar with Overview, Agents, Tasks, Activity, Analytics, and Settings

Use realistic mock data for a small AI-agent team such as Research Agent, Coding Agent, Browser Agent, Content Agent, and QA Agent.

Make it feel like a premium SaaS mission-control product: clean dark theme, excellent typography, subtle animations, status indicators, charts, responsive layout, and polished interactions.

Build the complete working website, not just a static mockup.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then I let the agent work.&lt;/p&gt;

&lt;h3&gt;
  
  
  What Happened?
&lt;/h3&gt;

&lt;p&gt;The agent created a React + TypeScript project and started implementing the application.&lt;/p&gt;

&lt;p&gt;It performed multiple tool calls, created files, wrote components, and executed terminal commands.&lt;/p&gt;

&lt;p&gt;But what impressed me most wasn’t just the generated code.&lt;/p&gt;

&lt;p&gt;It actually attempted to test and fix its own work.&lt;/p&gt;

&lt;p&gt;During the process, the agent:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Created the application structure.&lt;/li&gt;
&lt;li&gt;Generated React components.&lt;/li&gt;
&lt;li&gt;Implemented the dashboard interface.&lt;/li&gt;
&lt;li&gt;Ran the application locally.&lt;/li&gt;
&lt;li&gt;Encountered errors.&lt;/li&gt;
&lt;li&gt;Inspected the results using screenshots.&lt;/li&gt;
&lt;li&gt;Made additional changes to address issues.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And it completed this workflow without requiring me to manually fix the errors it encountered.&lt;/p&gt;

&lt;p&gt;The final result included the agent overview, task board, activity feed, analytics dashboard, and settings interface.&lt;/p&gt;

&lt;p&gt;To be clear, this was a demonstration application using sample data, not a production-ready autonomous agent management platform.&lt;/p&gt;

&lt;p&gt;But as an experiment in local AI-assisted software development, it was encouraging.&lt;/p&gt;




&lt;h2&gt;
  
  
  📊 The Results: Performance, Hardware, and Cost
&lt;/h2&gt;

&lt;p&gt;Here’s the actual setup I used.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Component&lt;/th&gt;
&lt;th&gt;Configuration&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Computer&lt;/td&gt;
&lt;td&gt;MacBook Pro&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Chip&lt;/td&gt;
&lt;td&gt;Apple M5 Max&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Memory&lt;/td&gt;
&lt;td&gt;48GB unified memory&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI Model&lt;/td&gt;
&lt;td&gt;Qwen3.8 27B&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Quantization&lt;/td&gt;
&lt;td&gt;4-bit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Model Size&lt;/td&gt;
&lt;td&gt;Approximately 16GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Inference Runtime&lt;/td&gt;
&lt;td&gt;LM Studio&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Coding Agent&lt;/td&gt;
&lt;td&gt;Pi&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Observed Speed&lt;/td&gt;
&lt;td&gt;10–15 tokens/second&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Task Duration&lt;/td&gt;
&lt;td&gt;A few hours&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Paid Model API Cost&lt;/td&gt;
&lt;td&gt;$0&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The agent managed to build the application, but it wasn’t particularly fast.&lt;/p&gt;

&lt;p&gt;At approximately 10–15 tokens per second, complex coding tasks can take quite a while.&lt;/p&gt;

&lt;p&gt;And when the agent needs to perform multiple rounds of reasoning, tool execution, and error correction, that time adds up.&lt;/p&gt;

&lt;p&gt;Still, the fact that this entire workflow ran on consumer hardware is interesting.&lt;/p&gt;

&lt;p&gt;There was no per-token API bill.&lt;/p&gt;

&lt;p&gt;However, zero API cost doesn’t mean zero cost.&lt;/p&gt;

&lt;p&gt;You still need suitable hardware, electricity, and time.&lt;/p&gt;

&lt;p&gt;And depending on your workload, a hosted model might still be more economical or productive.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧩 Why I Chose Pi Instead of a Larger Coding Agent
&lt;/h2&gt;

&lt;p&gt;This is one of the more interesting technical aspects of the experiment.&lt;/p&gt;

&lt;p&gt;When running AI models locally, context management becomes especially important.&lt;/p&gt;

&lt;p&gt;Every instruction, conversation message, tool definition, and tool result consumes tokens.&lt;/p&gt;

&lt;p&gt;And those tokens aren’t free from a computational perspective.&lt;/p&gt;

&lt;p&gt;Even when you’re not paying an API provider, your hardware still needs to process them.&lt;/p&gt;

&lt;p&gt;For local models, large contexts can increase:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Memory consumption.&lt;/li&gt;
&lt;li&gt;Time to process prompts.&lt;/li&gt;
&lt;li&gt;KV-cache requirements.&lt;/li&gt;
&lt;li&gt;Overall task execution time.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is where Pi’s design becomes interesting.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A Minimal Agent Harness&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Pi starts with four core tools:&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="nb"&gt;read
&lt;/span&gt;write
edit
bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Rather than beginning with a large collection of built-in capabilities, you can extend Pi as needed.&lt;/p&gt;

&lt;p&gt;This gives you more control over the tools and functionality available to your local model.&lt;/p&gt;

&lt;p&gt;For example, you might eventually add:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Browser automation.&lt;/li&gt;
&lt;li&gt;Web search.&lt;/li&gt;
&lt;li&gt;Custom development tools.&lt;/li&gt;
&lt;li&gt;Project-specific workflows.&lt;/li&gt;
&lt;li&gt;Additional integrations.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But you don’t necessarily need all of those capabilities loaded from the beginning.&lt;/p&gt;

&lt;p&gt;A smaller tool surface can help keep the setup simpler.&lt;/p&gt;

&lt;p&gt;Important: This doesn’t automatically mean Pi uses fewer tokens or performs better than Claude Code, Codex, or other coding agents in every scenario.&lt;/p&gt;

&lt;p&gt;That would require a controlled benchmark using the same model, tasks, and evaluation criteria.&lt;/p&gt;

&lt;p&gt;For my experiment, Pi was simply a good fit because I wanted a lightweight, extensible agent environment.&lt;/p&gt;




&lt;h2&gt;
  
  
  ⚠️ What Are the Limitations of Running AI Coding Agents Locally?
&lt;/h2&gt;

&lt;p&gt;As promising as the results were, there are some important limitations.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Hardware Requirements
&lt;/h3&gt;

&lt;p&gt;A 27B model, even when quantized, requires a significant amount of memory.&lt;/p&gt;

&lt;p&gt;And the model weights are only part of the equation.&lt;/p&gt;

&lt;p&gt;You also need memory for inference overhead, context processing, and the operating system.&lt;/p&gt;

&lt;p&gt;Not everyone has a machine capable of comfortably running models this large.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Inference Can Be Slow
&lt;/h3&gt;

&lt;p&gt;My setup generated approximately 10–15 tokens per second.&lt;/p&gt;

&lt;p&gt;That’s usable, but considerably slower than many hosted inference services.&lt;/p&gt;

&lt;p&gt;For complicated tasks involving hundreds of tool calls or repeated debugging cycles, performance becomes a major consideration.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Tool-Calling Reliability Varies
&lt;/h3&gt;

&lt;p&gt;An AI coding agent needs more than good code generation.&lt;/p&gt;

&lt;p&gt;It must reliably decide when to use tools, generate valid tool calls, interpret results, and continue working.&lt;/p&gt;

&lt;p&gt;A model might perform well on a single coding prompt but struggle with a long sequence of tool interactions.&lt;/p&gt;

&lt;p&gt;This is something I want to evaluate more systematically in future experiments.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Local Models Aren’t Always Competitive With Frontier Models
&lt;/h3&gt;

&lt;p&gt;Strong hosted models still have advantages on many complex software engineering tasks.&lt;/p&gt;

&lt;p&gt;Smaller local models may struggle with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Large codebases.&lt;/li&gt;
&lt;li&gt;Complex architectural changes.&lt;/li&gt;
&lt;li&gt;Long debugging sessions.&lt;/li&gt;
&lt;li&gt;Multi-step reasoning.&lt;/li&gt;
&lt;li&gt;Maintaining consistency across many files.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And quantization can introduce additional accuracy trade-offs.&lt;/p&gt;

&lt;p&gt;So I wouldn’t consider this a universal replacement for cloud-based coding agents just yet.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Local Inference Doesn’t Automatically Make an Agent Safe
&lt;/h3&gt;

&lt;p&gt;Running the model locally helps keep inference data under your control.&lt;/p&gt;

&lt;p&gt;But an agent that can execute shell commands and modify files still has significant permissions.&lt;/p&gt;

&lt;p&gt;A local model can make mistakes, delete files, or execute unintended commands.&lt;/p&gt;

&lt;p&gt;For sensitive projects, consider using isolated development environments, restricted permissions, version control, and approval mechanisms.&lt;/p&gt;

&lt;p&gt;Also remember that extensions or tools with network access may still communicate externally.&lt;/p&gt;

&lt;p&gt;A fully local inference endpoint is not, by itself, a guarantee that every part of an agent workflow stays offline.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔮 Are Fully Local AI Coding Agents Becoming Practical?
&lt;/h2&gt;

&lt;p&gt;I think we’re getting closer.&lt;/p&gt;

&lt;p&gt;Not because local models have suddenly become better than every cloud model.&lt;/p&gt;

&lt;p&gt;But because the overall ecosystem has improved significantly.&lt;/p&gt;

&lt;p&gt;We now have:&lt;/p&gt;

&lt;p&gt;Open-weight models capable of increasingly sophisticated coding tasks.&lt;/p&gt;

&lt;p&gt;Local inference tools like LM Studio that make downloading and running models accessible.&lt;/p&gt;

&lt;p&gt;Lightweight agent frameworks like Pi that can turn those models into useful coding assistants.&lt;/p&gt;

&lt;p&gt;And hardware capable of running models that would have been impractical for many developers just a few years ago.&lt;/p&gt;

&lt;p&gt;What’s particularly interesting is that these components are independent.&lt;/p&gt;

&lt;p&gt;You can swap the model without necessarily replacing your coding agent.&lt;/p&gt;

&lt;p&gt;You can experiment with different quantization levels.&lt;/p&gt;

&lt;p&gt;You can add or remove agent capabilities.&lt;/p&gt;

&lt;p&gt;And you can choose how much of your development workflow runs locally.&lt;/p&gt;

&lt;p&gt;For developers who care about privacy, experimentation, offline workflows, or avoiding recurring API costs, that’s a compelling direction.&lt;/p&gt;

&lt;p&gt;The next challenge isn’t just making local models generate better code.&lt;/p&gt;

&lt;p&gt;It’s making them reliable enough to complete long-running software engineering tasks with minimal human intervention.&lt;/p&gt;

&lt;p&gt;And that requires evaluating the entire agent workflow, not just the model’s benchmark scores.&lt;/p&gt;




&lt;h2&gt;
  
  
  💬 Final Thoughts
&lt;/h2&gt;

&lt;p&gt;My biggest takeaway from this experiment wasn’t that a local 27B model could replace Claude Code or Codex.&lt;/p&gt;

&lt;p&gt;It was that a complete AI coding workflow can now run on a personal computer without relying on paid model APIs.&lt;/p&gt;

&lt;p&gt;And that opens up some interesting possibilities.&lt;/p&gt;

&lt;p&gt;Local-first development environments.&lt;/p&gt;

&lt;p&gt;Private AI coding assistants.&lt;/p&gt;

&lt;p&gt;Offline software development workflows.&lt;/p&gt;

&lt;p&gt;And customizable agents that developers can adapt to their own hardware and requirements.&lt;/p&gt;

&lt;p&gt;There’s still plenty of room for improvement, particularly around speed, reliability, and long-context performance.&lt;/p&gt;

&lt;p&gt;But I’m excited to see how far this ecosystem progresses.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>opensource</category>
      <category>programming</category>
    </item>
    <item>
      <title>What if you could use Claude Code for FREE? 👀

I connected Claude Code OmniRoute free AI models from OpenRouter &amp; NVIDIA.

Here’s the full setup, trade-offs, and how it works 👇</title>
      <dc:creator>Vivek Shetye</dc:creator>
      <pubDate>Tue, 06 Oct 2026 15:22:18 +0000</pubDate>
      <link>https://dev.to/vivek_shetye/what-if-you-could-use-claude-code-for-free-i-connected-claude-code-omniroute-free-ai-204e</link>
      <guid>https://dev.to/vivek_shetye/what-if-you-could-use-claude-code-for-free-i-connected-claude-code-omniroute-free-ai-204e</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/vivek_shetye/how-to-use-claude-code-for-free-with-omniroute-maa" class="crayons-story__hidden-navigation-link"&gt;How to Use Claude Code for Free with OmniRoute&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/vivek_shetye" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3879444%2F8f338ec8-c7f4-48e9-b8cf-3898bccbb1e8.jpg" alt="vivek_shetye profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/vivek_shetye" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Vivek Shetye
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Vivek Shetye
                
                
              
              &lt;div id="story-author-preview-content-4807553" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/vivek_shetye" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3879444%2F8f338ec8-c7f4-48e9-b8cf-3898bccbb1e8.jpg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Vivek Shetye&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/vivek_shetye/how-to-use-claude-code-for-free-with-omniroute-maa" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Oct 6&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/vivek_shetye/how-to-use-claude-code-for-free-with-omniroute-maa" id="article-link-4807553"&gt;
          How to Use Claude Code for Free with OmniRoute
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/opensource"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;opensource&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/agents"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;agents&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/claude"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;claude&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/vivek_shetye/how-to-use-claude-code-for-free-with-omniroute-maa" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;20&lt;span class="hidden s:inline"&gt;&amp;nbsp;reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/vivek_shetye/how-to-use-claude-code-for-free-with-omniroute-maa#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              2&lt;span class="hidden s:inline"&gt;&amp;nbsp;comments&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            6 min read
          &lt;/small&gt;
          
          &lt;div class="only-sidebar-menu-item trusted-visible-block print-hidden align-center"&gt;
                
                    
                
          &lt;/div&gt;

        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>ai</category>
      <category>llm</category>
      <category>tools</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>How to Use Claude Code for Free with OmniRoute</title>
      <dc:creator>Vivek Shetye</dc:creator>
      <pubDate>Tue, 06 Oct 2026 15:01:32 +0000</pubDate>
      <link>https://dev.to/vivek_shetye/how-to-use-claude-code-for-free-with-omniroute-maa</link>
      <guid>https://dev.to/vivek_shetye/how-to-use-claude-code-for-free-with-omniroute-maa</guid>
      <description>&lt;p&gt;Claude Code is one of my favorite AI coding agents.&lt;/p&gt;

&lt;p&gt;It can inspect your codebase, edit files, execute terminal commands, use tools, and work through multi-step coding tasks directly from the terminal.&lt;/p&gt;

&lt;p&gt;But normally, the intelligence behind that experience comes from Anthropic’s Claude models.&lt;/p&gt;

&lt;p&gt;What if we kept Claude Code as the coding agent harness, but replaced the model underneath it?&lt;/p&gt;

&lt;p&gt;That’s what I wanted to test.&lt;/p&gt;

&lt;p&gt;The result looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Claude Code
     ↓
 OmniRoute
     ↓
Free AI Models
     ↓
OpenRouter / NVIDIA / Other Providers
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Instead of sending model requests directly to Anthropic, Claude Code sends them to OmniRoute, which acts as an AI gateway and routes them to the models and providers you configure.&lt;/p&gt;

&lt;p&gt;And yes — that means you can run Claude Code using free AI models. 🆓&lt;/p&gt;

&lt;p&gt;But there’s an important distinction.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;We are NOT getting Claude Sonnet or Claude Opus for free.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We’re using Claude Code as the agent harness while replacing the underlying model with free models from other providers.&lt;/p&gt;

&lt;p&gt;Let’s set it up.&lt;/p&gt;




&lt;h2&gt;
  
  
  🎥 Full video walkthrough
&lt;/h2&gt;

&lt;p&gt;I recorded the entire process step-by-step, including:&lt;/p&gt;

&lt;p&gt;✅ Installing OmniRoute locally&lt;br&gt;
✅ Connecting OpenRouter&lt;br&gt;
✅ Connecting NVIDIA&lt;br&gt;
✅ Importing free AI models&lt;br&gt;
✅ Configuring Claude Code&lt;br&gt;
✅ Fixing the authentication issue I encountered&lt;br&gt;
✅ Launching Claude Code through OmniRoute&lt;br&gt;
✅ Running Claude Code with free models&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/oGCqTnu1YHk" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;




&lt;h2&gt;
  
  
  🧠 Claude Code Is More Than the Model
&lt;/h2&gt;

&lt;p&gt;An important idea behind this experiment is separating the agent harness from the LLM powering it.&lt;/p&gt;

&lt;p&gt;Claude Code provides the agent experience around the model.&lt;/p&gt;

&lt;p&gt;It can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;inspect files&lt;/li&gt;
&lt;li&gt;understand your project&lt;/li&gt;
&lt;li&gt;modify code&lt;/li&gt;
&lt;li&gt;execute terminal commands&lt;/li&gt;
&lt;li&gt;use tools&lt;/li&gt;
&lt;li&gt;iterate through coding tasks&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Normally, Claude Code communicates with Anthropic’s models.&lt;/p&gt;

&lt;p&gt;But if we place an AI gateway between Claude Code and the model, the architecture becomes much more flexible.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌─────────────────┐
│   Claude Code   │
│  Coding Agent   │
└────────┬────────┘
         │
         ▼
┌─────────────────┐
│    OmniRoute    │
│   AI Gateway    │
└────────┬────────┘
         │
         ▼
┌─────────────────────────┐
│ OpenRouter │ NVIDIA │ … │
└─────────────────────────┘
         │
         ▼
┌─────────────────┐
│ Free AI Models  │
└─────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Claude Code remains the interface and coding agent.&lt;/p&gt;

&lt;p&gt;OmniRoute controls where the model requests go.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🔀 That separation is what makes this experiment interesting.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  ⚙️ Step 1: Install OmniRoute
&lt;/h2&gt;

&lt;p&gt;The first thing we need is OmniRoute.&lt;/p&gt;

&lt;p&gt;OmniRoute is an open-source AI gateway that can sit between applications such as Claude Code and different AI model providers.&lt;/p&gt;

&lt;p&gt;Install OmniRoute using the installation instructions for your operating system.&lt;/p&gt;

&lt;p&gt;Once installed, start it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;omniroute
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After a few seconds, the OmniRoute server should start.&lt;/p&gt;

&lt;p&gt;Open the dashboard URL shown in your terminal.&lt;/p&gt;

&lt;p&gt;You now have a local AI gateway running on your machine.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔌 Step 2: Connect an AI Provider
&lt;/h2&gt;

&lt;p&gt;Next, we need models.&lt;/p&gt;

&lt;p&gt;For my setup, I connected two providers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;OpenRouter&lt;/li&gt;
&lt;li&gt;NVIDIA&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let’s start with OpenRouter.&lt;/p&gt;

&lt;p&gt;Inside the OmniRoute dashboard, navigate to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Providers → OpenRouter → Add Connection
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Generate an API key from your OpenRouter account and add it to the connection.&lt;/p&gt;

&lt;p&gt;If you only want free models, enable the option to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Only import free models
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Save the connection.&lt;/p&gt;

&lt;p&gt;OmniRoute will import the available free models associated with that provider.&lt;/p&gt;

&lt;p&gt;You can also run health checks from the dashboard to see which models are currently available. 🩺&lt;/p&gt;




&lt;h2&gt;
  
  
  🚀 Step 3: Add NVIDIA Models
&lt;/h2&gt;

&lt;p&gt;I also connected NVIDIA to give OmniRoute another source of models.&lt;/p&gt;

&lt;p&gt;The process is similar.&lt;/p&gt;

&lt;p&gt;Navigate to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Providers → NVIDIA → Add Connection
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Generate an NVIDIA API key, paste it into OmniRoute, validate it, and save the connection.&lt;/p&gt;

&lt;p&gt;Again, I configured the connection to import the free models available through the provider.&lt;/p&gt;

&lt;p&gt;Now the architecture starts becoming more interesting:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                    ┌──→ OpenRouter → Free Models
Claude Code → OmniRoute
                    └──→ NVIDIA ───→ Free Models
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Instead of Claude Code being tied directly to one model provider, the gateway can expose models from multiple providers.&lt;/p&gt;




&lt;h2&gt;
  
  
  💻 Step 4: Connect Claude Code to OmniRoute
&lt;/h2&gt;

&lt;p&gt;Now for the important part.&lt;/p&gt;

&lt;p&gt;If you don’t already have Claude Code installed, install it using Anthropic’s official installation instructions.&lt;/p&gt;

&lt;p&gt;Once Claude Code is available, OmniRoute can configure it automatically.&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;omniroute setup-claude
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;OmniRoute creates profiles that allow Claude Code to communicate through the gateway.&lt;/p&gt;

&lt;p&gt;However, I ran into an issue here.&lt;/p&gt;




&lt;h3&gt;
  
  
  🐛 The Authentication Problem I Encountered
&lt;/h3&gt;

&lt;p&gt;My OmniRoute API was protected with authentication.&lt;/p&gt;

&lt;p&gt;Normally, you should be able to create an access token and pass it while configuring Claude Code.&lt;/p&gt;

&lt;p&gt;In my testing, however, the API key parameter wasn’t being respected correctly and Claude Code continued returning an authentication error.&lt;/p&gt;

&lt;p&gt;So I used a temporary workaround.&lt;/p&gt;

&lt;p&gt;I disabled API authentication in OmniRoute.&lt;/p&gt;

&lt;h3&gt;
  
  
  ⚠️ Important Security Warning
&lt;/h3&gt;

&lt;p&gt;I would only consider doing this when OmniRoute is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;running locally&lt;/li&gt;
&lt;li&gt;bound appropriately&lt;/li&gt;
&lt;li&gt;not exposed publicly&lt;/li&gt;
&lt;li&gt;not accessible from an untrusted network&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Do not expose an unauthenticated AI gateway to the internet.&lt;/p&gt;

&lt;p&gt;After disabling authentication locally, I ran the Claude setup again and the connection succeeded.&lt;/p&gt;




&lt;h2&gt;
  
  
  🎯 Step 5: Launch Claude Code with a Free Model
&lt;/h2&gt;

&lt;p&gt;Now we can actually launch Claude Code through OmniRoute.&lt;/p&gt;

&lt;p&gt;I used OmniRoute’s coding profile:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;omniroute launch --profile auto-coding
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The auto-coding profile allows OmniRoute to select among the coding models available in the configuration.&lt;/p&gt;

&lt;p&gt;And that’s it.&lt;/p&gt;

&lt;p&gt;Claude Code starts normally.&lt;/p&gt;

&lt;p&gt;Except now the architecture is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Claude Code
     ↓
OmniRoute
     ↓
Alternative AI Model
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Instead of:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Claude Code
     ↓
Anthropic Model
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;🎉 Claude Code is now running using the models routed through OmniRoute.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  So… Is Claude Code Actually Free Now?
&lt;/h2&gt;

&lt;p&gt;Kind of.&lt;/p&gt;

&lt;p&gt;And this distinction is important.&lt;/p&gt;

&lt;p&gt;You’re not getting Anthropic’s Claude Sonnet or Opus models for free.&lt;/p&gt;

&lt;p&gt;You’re using the Claude Code agent experience with alternative models that may have free access tiers or free routes.&lt;/p&gt;

&lt;p&gt;Think of it as separating two pieces:&lt;/p&gt;

&lt;p&gt;Claude Code = Agent Harness&lt;br&gt;
Free Model = Intelligence&lt;br&gt;
OmniRoute = Routing Layer&lt;/p&gt;

&lt;p&gt;This means the quality of the experience depends heavily on the model you choose.&lt;/p&gt;

&lt;p&gt;And that brings us to the trade-offs.&lt;/p&gt;


&lt;h2&gt;
  
  
  ⚡ Trade-Off #1: Free Models Have Limits
&lt;/h2&gt;

&lt;p&gt;Free doesn’t mean unlimited.&lt;/p&gt;

&lt;p&gt;Free model providers commonly impose things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;request limits&lt;/li&gt;
&lt;li&gt;token quotas&lt;/li&gt;
&lt;li&gt;rate limits&lt;/li&gt;
&lt;li&gt;temporary availability restrictions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A model that works today may also become unavailable or limited later.&lt;/p&gt;

&lt;p&gt;For experimentation and personal projects, this can still be extremely useful.&lt;/p&gt;

&lt;p&gt;For production workloads, you’ll want something more predictable.&lt;/p&gt;


&lt;h2&gt;
  
  
  🧩 Trade-Off #2: Not Every Model Works Well with Claude Code
&lt;/h2&gt;

&lt;p&gt;This is probably the biggest issue.&lt;/p&gt;

&lt;p&gt;Claude Code isn’t simply sending a prompt and displaying some text.&lt;/p&gt;

&lt;p&gt;The model needs to participate in an agentic coding workflow.&lt;/p&gt;

&lt;p&gt;That means capabilities such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Understand task
      ↓
Inspect files
      ↓
Call tools
      ↓
Modify code
      ↓
Run commands
      ↓
Observe results
      ↓
Continue reasoning
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Some models handle these workflows surprisingly well.&lt;/p&gt;

&lt;p&gt;Others don’t.&lt;/p&gt;

&lt;p&gt;A model might be excellent at generating code but struggle with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;tool calling&lt;/li&gt;
&lt;li&gt;instruction following&lt;/li&gt;
&lt;li&gt;long coding tasks&lt;/li&gt;
&lt;li&gt;maintaining context&lt;/li&gt;
&lt;li&gt;structured outputs&lt;/li&gt;
&lt;li&gt;multi-step agent workflows&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So don’t evaluate a model purely by its coding benchmark score.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Agent compatibility matters too.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🔐 Trade-Off #3: Your Code Goes to the Upstream Provider
&lt;/h2&gt;

&lt;p&gt;This one is important.&lt;/p&gt;

&lt;p&gt;When you route Claude Code through another provider, your prompts and potentially parts of your codebase are being sent to that provider.&lt;/p&gt;

&lt;p&gt;Before using this setup with private repositories or sensitive code, check the provider’s:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;privacy policy&lt;/li&gt;
&lt;li&gt;data retention policy&lt;/li&gt;
&lt;li&gt;model training policy&lt;/li&gt;
&lt;li&gt;API terms&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I would be particularly careful with proprietary company code, credentials, customer information, and production secrets.&lt;/p&gt;




&lt;h2&gt;
  
  
  📜 Trade-Off #4: Check Provider Terms
&lt;/h2&gt;

&lt;p&gt;You should also check the terms for every provider you connect.&lt;/p&gt;

&lt;p&gt;Some providers may have restrictions around:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;automation&lt;/li&gt;
&lt;li&gt;proxies&lt;/li&gt;
&lt;li&gt;redistribution&lt;/li&gt;
&lt;li&gt;free API usage&lt;/li&gt;
&lt;li&gt;rate limits&lt;/li&gt;
&lt;li&gt;agent workloads&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A few minutes reading the provider’s terms can save you from account problems later.&lt;/p&gt;




&lt;h2&gt;
  
  
  💡 Why This Is More Interesting Than Just “Claude Code for Free”
&lt;/h2&gt;

&lt;p&gt;The cost savings are interesting.&lt;/p&gt;

&lt;p&gt;But I think the architecture is the bigger story.&lt;/p&gt;

&lt;p&gt;We’re increasingly separating the AI application from the AI model.&lt;/p&gt;

&lt;p&gt;Instead of:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;AI Application
      ↓
One Model
      ↓
One Provider
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;we can build:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                    ┌──→ Model A
                    │
AI Agent → Gateway ─┼──→ Model B
                    │
                    ├──→ Model C
                    │
                    └──→ Model D
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now the gateway becomes an abstraction layer between the agent and the models.&lt;/p&gt;

&lt;p&gt;That opens up some interesting possibilities.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧠 Use Different Models for Different Coding Tasks
&lt;/h2&gt;

&lt;p&gt;Imagine routing:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Simple code edits
      ↓
Small / Free Model
Complex debugging
      ↓
Powerful Reasoning Model
Documentation
      ↓
Fast Cheap Model
Large Refactor
      ↓
Frontier Coding Model
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Instead of asking:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“Which AI model should power my coding agent?”&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;the better question may eventually become:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“Which model should handle this particular task?”&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That’s a very different architecture.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;Claude Code doesn’t necessarily have to be coupled to a single model provider.&lt;/p&gt;

&lt;p&gt;By introducing an AI gateway like OmniRoute, you can separate the coding agent experience from the model powering it.&lt;/p&gt;

&lt;p&gt;That gives you room to experiment with:&lt;/p&gt;

&lt;p&gt;🔀 multiple providers&lt;br&gt;
🆓 free models&lt;br&gt;
💰 cheaper models&lt;br&gt;
🧠 stronger reasoning models&lt;br&gt;
⚡ faster models&lt;br&gt;
🛠️ models optimized for specific tasks&lt;/p&gt;

&lt;p&gt;Free models won’t replace Claude Sonnet or Opus for every coding task.&lt;/p&gt;

&lt;p&gt;But that’s not really the point.&lt;/p&gt;

&lt;p&gt;The interesting part is being able to choose.&lt;/p&gt;

&lt;p&gt;And as AI coding agents become more capable, I suspect the question will increasingly shift from:&lt;/p&gt;

&lt;p&gt;“Which coding agent has the best model?”&lt;/p&gt;

&lt;p&gt;to:&lt;/p&gt;

&lt;p&gt;“Which models should my coding agent use for each task?”&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>agents</category>
      <category>claude</category>
    </item>
    <item>
      <title>JEV Explained: Why It Could Matter for AI Agents</title>
      <dc:creator>Vivek Shetye</dc:creator>
      <pubDate>Wed, 30 Sep 2026 19:20:27 +0000</pubDate>
      <link>https://dev.to/vivek_shetye/jev-explained-why-it-could-matter-for-ai-agents-51om</link>
      <guid>https://dev.to/vivek_shetye/jev-explained-why-it-could-matter-for-ai-agents-51om</guid>
      <description>&lt;p&gt;What if one of the most interesting new AI models doesn’t generate text at all?&lt;/p&gt;

&lt;p&gt;No chatbot responses.&lt;/p&gt;

&lt;p&gt;No code generation.&lt;/p&gt;

&lt;p&gt;No essays.&lt;/p&gt;

&lt;p&gt;Instead, it is designed to do something much narrower:&lt;/p&gt;

&lt;p&gt;Make decisions for software.&lt;/p&gt;

&lt;p&gt;That’s the idea behind JEV, a new model from TypeSafe AI.&lt;/p&gt;

&lt;p&gt;And the numbers TypeSafe AI is reporting immediately caught my attention:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;⚡ Decisions in milliseconds&lt;/li&gt;
&lt;li&gt;💰 Around $0.042 per million input tokens&lt;/li&gt;
&lt;li&gt;📤 No charge for output tokens&lt;/li&gt;
&lt;li&gt;📊 On selected workflows, TypeSafe reports nearly 200× faster and 400× cheaper performance compared with the LLMs it tested&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Those are TypeSafe AI’s own workflow comparisons, not universal benchmarks. Different workloads could produce very different results.&lt;/p&gt;

&lt;p&gt;But the more interesting question isn’t whether JEV can beat an LLM on every benchmark.&lt;/p&gt;

&lt;p&gt;It’s:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Why are we using generative LLMs for decisions that don’t require generating anything?&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That question becomes especially interesting when you start building AI agents.&lt;/p&gt;




&lt;h2&gt;
  
  
  🎥 Full video walkthrough
&lt;/h2&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/N-tZTJOvSJM" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;




&lt;h2&gt;
  
  
  🧠 What Is JEV?
&lt;/h2&gt;

&lt;p&gt;The easiest way to understand JEV is to compare it with a traditional Large Language Model.&lt;/p&gt;

&lt;p&gt;Imagine a customer sends this message:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“My package was supposed to arrive yesterday, but tracking hasn’t updated.”&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You want your system to decide which team should handle it.&lt;/p&gt;

&lt;p&gt;Possible options:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;billing
shipping
other
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ask an LLM and it might generate something like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;This request should be routed to the shipping department because
the customer is asking about a delayed package.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That works.&lt;/p&gt;

&lt;p&gt;But your application doesn’t necessarily need an explanation.&lt;/p&gt;

&lt;p&gt;It needs:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;shipping
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or, even better, probabilities associated with the available decisions.&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="err"&gt;shipping:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.94&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="err"&gt;billing:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.02&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="err"&gt;other:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.04&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Your software can then decide what happens next.&lt;/p&gt;

&lt;p&gt;That’s the fundamental difference.&lt;/p&gt;

&lt;p&gt;LLMs generate tokens.&lt;/p&gt;

&lt;p&gt;JEV evaluates predefined decisions.&lt;/p&gt;

&lt;p&gt;The output is primarily intended for software to act on, rather than for a human to read as a conversation.&lt;/p&gt;




&lt;h2&gt;
  
  
  ⚡ Why Remove Text Generation?
&lt;/h2&gt;

&lt;p&gt;Modern LLMs are incredibly capable.&lt;/p&gt;

&lt;p&gt;They can reason through complex problems, understand large codebases, write software, analyze documents, interact with tools, and orchestrate workflows.&lt;/p&gt;

&lt;p&gt;But that flexibility comes with computational cost.&lt;/p&gt;

&lt;p&gt;Now consider a typical AI agent.&lt;/p&gt;

&lt;p&gt;The agent might need a powerful model to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;understand a repository&lt;/li&gt;
&lt;li&gt;debug an application&lt;/li&gt;
&lt;li&gt;reason through a complicated problem&lt;/li&gt;
&lt;li&gt;generate a patch&lt;/li&gt;
&lt;li&gt;plan a multi-step workflow&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But between those large reasoning tasks, agents constantly make smaller decisions.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Which model should handle this task?
Did the previous step succeed?
Should I retry?
Does this command require approval?
Which tool should run next?
Should this result be escalated?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Today, we often solve these problems with…&lt;/p&gt;

&lt;p&gt;another LLM call.&lt;/p&gt;

&lt;p&gt;And that works.&lt;/p&gt;

&lt;p&gt;But we’re invoking a generative model when the actual output we need might simply be:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;retry
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;needs_approval
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;use_stronger_model
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That is the category of problem TypeSafe AI is targeting with what it calls System One Models.&lt;/p&gt;

&lt;p&gt;JEV is its first public model.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔄 JEV vs LLMs: The Important Difference
&lt;/h2&gt;

&lt;p&gt;Think about the two approaches like this:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Traditional LLM&lt;/th&gt;
&lt;th&gt;JEV&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Generates text&lt;/td&gt;
&lt;td&gt;Evaluates decisions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Predicts the next token&lt;/td&gt;
&lt;td&gt;Scores predefined options&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Great for reasoning and generation&lt;/td&gt;
&lt;td&gt;Designed for bounded judgments&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Flexible output&lt;/td&gt;
&lt;td&gt;Structured output&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Human-readable responses&lt;/td&gt;
&lt;td&gt;Software-actionable decisions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Useful for open-ended problems&lt;/td&gt;
&lt;td&gt;Useful for constrained choices&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;This distinction matters.&lt;/p&gt;

&lt;p&gt;JEV isn’t necessarily trying to become the model inside your AI coding agent that understands an entire repository and writes a feature.&lt;/p&gt;

&lt;p&gt;Instead, it could potentially sit beside that model.&lt;/p&gt;

&lt;p&gt;A powerful LLM handles:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;reasoning
coding
planning
generation
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;JEV handles:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;classification
routing
scoring
triage
bounded decisions
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In other words:&lt;/p&gt;

&lt;p&gt;The LLM generates. JEV decides.&lt;/p&gt;




&lt;h2&gt;
  
  
  🤖 Why JEV Could Be Interesting for AI Agents
&lt;/h2&gt;

&lt;p&gt;This is where I think things get particularly interesting.&lt;/p&gt;

&lt;p&gt;Consider an agent built using something like Hermes Agent, Claude Code, or another agent framework.&lt;/p&gt;

&lt;p&gt;A simplified architecture today might look like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User
 ↓
Agent
 ↓
LLM
 ↓
Tools
 ↓
LLM
 ↓
Tools
 ↓
LLM
 ↓
Result
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The LLM becomes responsible for almost everything.&lt;/p&gt;

&lt;p&gt;But imagine separating different responsibilities:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;             ┌── Retrieval / Memory
             │
User → Agent ├── JEV → Fast decisions
             │
             ├── Powerful LLM → Reasoning + Coding
             │
             └── Tools → Actions
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now different components handle different types of work.&lt;/p&gt;

&lt;p&gt;That’s closer to the architecture I would want to experiment with.&lt;/p&gt;

&lt;p&gt;Here are three workflows I’d test first.&lt;/p&gt;




&lt;h3&gt;
  
  
  1. 🔀 Intelligent Model Routing
&lt;/h3&gt;

&lt;p&gt;This might be the most obvious use case.&lt;/p&gt;

&lt;p&gt;Suppose your AI agent has access to multiple models.&lt;/p&gt;

&lt;p&gt;Maybe you have:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Fast/Cheap Model
        +
Powerful/Expensive Model
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A simple task arrives:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Rename this variable across these files.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Do you really need your most expensive reasoning model?&lt;/p&gt;

&lt;p&gt;Probably not.&lt;/p&gt;

&lt;p&gt;But then another task arrives:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Debug this race condition across multiple distributed services.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That’s a very different problem.&lt;/p&gt;

&lt;p&gt;Instead of sending everything to the strongest model, JEV could potentially classify the incoming task.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Task
 ↓
JEV
 ↓
┌─────────────────┐
│ SIMPLE          │ → Fast/Cheap Model
│ COMPLEX         │ → Powerful Model
│ UNCERTAIN       │ → Powerful Model
└─────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This could make model routing much more deliberate.&lt;/p&gt;

&lt;p&gt;And importantly, you’d want to measure whether the routing mistakes cost more than the model savings.&lt;/p&gt;

&lt;p&gt;Cheap routing isn’t useful if important tasks constantly go to the wrong model.&lt;/p&gt;

&lt;p&gt;That’s why I’d want to test:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Cost
Latency
Routing accuracy
Escalation rate
Task success rate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;rather than looking only at token pricing.&lt;/p&gt;




&lt;h3&gt;
  
  
  2. 🛡️ Risk Detection Before Tool Execution
&lt;/h3&gt;

&lt;p&gt;This one gets even more interesting.&lt;/p&gt;

&lt;p&gt;AI agents increasingly interact with real tools.&lt;/p&gt;

&lt;p&gt;They can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;execute shell commands&lt;/li&gt;
&lt;li&gt;modify files&lt;/li&gt;
&lt;li&gt;interact with APIs&lt;/li&gt;
&lt;li&gt;deploy applications&lt;/li&gt;
&lt;li&gt;access databases&lt;/li&gt;
&lt;li&gt;manage infrastructure&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Before executing an action, you might want another layer that evaluates what kind of action is being attempted.&lt;/p&gt;

&lt;p&gt;Imagine an agent generates:&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="nb"&gt;rm&lt;/span&gt; &lt;span class="nt"&gt;-rf&lt;/span&gt; ./build
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;versus:&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="nb"&gt;rm&lt;/span&gt; &lt;span class="nt"&gt;-rf&lt;/span&gt; /
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Those commands clearly shouldn’t be treated the same way.&lt;/p&gt;

&lt;p&gt;A decision model could evaluate questions such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Does this affect production?
Does this modify sensitive files?
Could this expose credentials?
Is this destructive?
Should a human approve this?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The architecture might look like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;AI Agent
   ↓
Proposed Tool Action
   ↓
JEV
   ↓
Risk Classification
   ↓
Policy Engine
   ↓
ALLOW / BLOCK / REQUIRE APPROVAL
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;There’s an important distinction here:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;JEV shouldn’t necessarily control permissions.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Your application policy should.&lt;/p&gt;

&lt;p&gt;JEV could provide a classification or score, while deterministic code decides what actually happens.&lt;/p&gt;

&lt;p&gt;That keeps the security boundary outside the model.&lt;/p&gt;




&lt;h3&gt;
  
  
  3. 🔎 Agent Output Triage
&lt;/h3&gt;

&lt;p&gt;Imagine you have an autonomous agent processing hundreds or thousands of tasks.&lt;/p&gt;

&lt;p&gt;Most results might be perfectly normal.&lt;/p&gt;

&lt;p&gt;Some won’t be.&lt;/p&gt;

&lt;p&gt;Today, you could send every result through another powerful LLM for verification.&lt;/p&gt;

&lt;p&gt;But that potentially means:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1000 tasks
+
1000 verification LLM calls
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Instead, a smaller decision model could potentially triage those outputs.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Agent Result
     ↓
    JEV
     ↓
 ┌───────────────┐
 │ Looks Normal  │ → Finish
 │ Uncertain     │ → Stronger LLM
 │ Suspicious    │ → Human Review
 └───────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now your expensive reasoning model only gets involved when necessary.&lt;/p&gt;

&lt;p&gt;Again, whether this actually improves the system depends on the accuracy of that triage.&lt;/p&gt;

&lt;p&gt;But architecturally, it’s an interesting pattern.&lt;/p&gt;




&lt;h2&gt;
  
  
  🏗️ What Could the Future AI Agent Stack Look Like?
&lt;/h2&gt;

&lt;p&gt;This leads to the bigger idea behind JEV.&lt;/p&gt;

&lt;p&gt;Over the last few years, we’ve increasingly treated the LLM as the center of everything.&lt;/p&gt;

&lt;p&gt;Need classification?&lt;/p&gt;

&lt;p&gt;Use an LLM.&lt;/p&gt;

&lt;p&gt;Need routing?&lt;/p&gt;

&lt;p&gt;Use an LLM.&lt;/p&gt;

&lt;p&gt;Need scoring?&lt;/p&gt;

&lt;p&gt;Use an LLM.&lt;/p&gt;

&lt;p&gt;Need validation?&lt;/p&gt;

&lt;p&gt;Use another LLM.&lt;/p&gt;

&lt;p&gt;Need to judge that LLM?&lt;/p&gt;

&lt;p&gt;Use another LLM. 😅&lt;/p&gt;

&lt;p&gt;That architecture works because modern models are incredibly flexible.&lt;/p&gt;

&lt;p&gt;But flexibility doesn’t necessarily mean every task should use the same model.&lt;/p&gt;

&lt;p&gt;A future AI agent stack could instead look something like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌─────────────────────────────┐
│      Agent Orchestration    │
├─────────────────────────────┤
│                             │
│ Retrieval → Context         │
│                             │
│ JEV → Fast Decisions        │
│                             │
│ LLM → Reasoning + Coding    │
│                             │
│ Tools → Actions             │
│                             │
├─────────────────────────────┤
│       Policy / Control      │
└─────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each component has a more specialized responsibility.&lt;/p&gt;

&lt;p&gt;The reasoning model doesn’t need to make every tiny routing decision.&lt;/p&gt;

&lt;p&gt;The decision model doesn’t need to understand and rewrite an entire codebase.&lt;/p&gt;

&lt;p&gt;And tools remain responsible for actually interacting with the outside world.&lt;/p&gt;




&lt;h2&gt;
  
  
  💰 What About JEV’s Cost and Speed Claims?
&lt;/h2&gt;

&lt;p&gt;This is where it’s important to separate an interesting architecture from benchmark hype.&lt;/p&gt;

&lt;p&gt;TypeSafe AI reports pricing around:&lt;/p&gt;

&lt;p&gt;$0.042 per million input tokens, with no output-token charge.&lt;/p&gt;

&lt;p&gt;It also reports latency in the millisecond range.&lt;/p&gt;

&lt;p&gt;And on selected company workflows, TypeSafe says JEV achieved results approaching:&lt;/p&gt;

&lt;p&gt;200× faster&lt;/p&gt;

&lt;p&gt;and&lt;/p&gt;

&lt;p&gt;400× cheaper&lt;/p&gt;

&lt;p&gt;than the LLM approaches it compared against.&lt;/p&gt;

&lt;p&gt;Those numbers sound impressive.&lt;/p&gt;

&lt;p&gt;But they should be interpreted in context.&lt;/p&gt;

&lt;p&gt;These aren’t universal statements that JEV is “400× better than LLMs.”&lt;/p&gt;

&lt;p&gt;They’re results from specific workflows and comparisons.&lt;/p&gt;

&lt;p&gt;The test I’d really like to see is much simpler.&lt;/p&gt;

&lt;p&gt;Take the same real-world decision workload and run it through:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;JEV
vs.
Small LLM
vs.
Frontier LLM
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then compare:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Accuracy
False positives
False negatives
Latency
Cost
Reliability
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Because if JEV costs almost nothing but makes significantly more bad routing decisions, the token savings don’t matter.&lt;/p&gt;

&lt;p&gt;On the other hand, if it can handle those decisions reliably at a fraction of the latency and cost…&lt;/p&gt;

&lt;p&gt;then things get interesting very quickly.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧩 Specialized Models vs One Giant Model
&lt;/h2&gt;

&lt;p&gt;And this is the part of JEV that interests me most.&lt;/p&gt;

&lt;p&gt;Not whether JEV itself becomes the dominant solution.&lt;/p&gt;

&lt;p&gt;Not whether every AI agent suddenly needs it.&lt;/p&gt;

&lt;p&gt;And definitely not whether it “replaces LLMs.”&lt;/p&gt;

&lt;p&gt;It probably shouldn’t.&lt;/p&gt;

&lt;p&gt;The interesting idea is that not every problem inside an AI agent needs to become another LLM generation.&lt;/p&gt;

&lt;p&gt;We might eventually build agent systems where:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Retrieval handles context.
Decision models handle bounded judgments.
Reasoning models handle difficult problems.
Coding models handle software development.
Tools handle actions.
Policy code controls permissions.
Agents orchestrate everything.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Instead of asking one increasingly powerful model to do absolutely everything, we could build systems from specialized intelligence components.&lt;/p&gt;

&lt;p&gt;And JEV is an interesting early example of what that architecture could look like.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>llm</category>
      <category>learning</category>
    </item>
    <item>
      <title>Run Hermes Agent Inside Docker: A Safer Setup for Autonomous AI Agents 🐳</title>
      <dc:creator>Vivek Shetye</dc:creator>
      <pubDate>Tue, 22 Sep 2026 16:35:22 +0000</pubDate>
      <link>https://dev.to/vivek_shetye/run-hermes-agent-inside-docker-a-safer-setup-for-autonomous-ai-agents-2992</link>
      <guid>https://dev.to/vivek_shetye/run-hermes-agent-inside-docker-a-safer-setup-for-autonomous-ai-agents-2992</guid>
      <description>&lt;p&gt;Giving an AI agent unrestricted access to your entire computer is probably not a great idea.&lt;/p&gt;

&lt;p&gt;Especially when that agent can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Run terminal commands&lt;/li&gt;
&lt;li&gt;Install packages&lt;/li&gt;
&lt;li&gt;Create and modify files&lt;/li&gt;
&lt;li&gt;Access external services&lt;/li&gt;
&lt;li&gt;Work autonomously through multi-step tasks&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Those capabilities are exactly what make Hermes Agent powerful.&lt;/p&gt;

&lt;p&gt;But they also raise an important question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Where should all of those actions actually run?&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Instead of running Hermes Agent directly on my host machine, I decided to run it inside a Docker container and explicitly control what the agent can access.&lt;/p&gt;

&lt;p&gt;The goal isn’t to make Hermes magically “secure” by putting it inside Docker.&lt;/p&gt;

&lt;p&gt;The goal is much simpler:&lt;/p&gt;

&lt;p&gt;Give the agent access to what it needs, not your entire computer.&lt;/p&gt;

&lt;p&gt;In this tutorial, I’ll walk through the complete setup.&lt;/p&gt;

&lt;p&gt;We’ll configure:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Hermes Agent inside Docker&lt;/li&gt;
&lt;li&gt;Persistent storage for memory, sessions, and configuration&lt;/li&gt;
&lt;li&gt;A limited filesystem boundary&lt;/li&gt;
&lt;li&gt;Hermes Gateway&lt;/li&gt;
&lt;li&gt;Hermes Dashboard&lt;/li&gt;
&lt;li&gt;Dashboard authentication&lt;/li&gt;
&lt;li&gt;Hermes Desktop connected to the container&lt;/li&gt;
&lt;li&gt;Some important security considerations when containerizing autonomous AI agents&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🎥 Prefer watching instead?&lt;/p&gt;

&lt;p&gt;I walk through the complete setup step-by-step in the video:&lt;/p&gt;

&lt;p&gt;Watch the full Hermes Agent Docker tutorial on YouTube →&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/inzB_q34QCA" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;




&lt;h2&gt;
  
  
  🤖 Why Run Hermes Agent Inside Docker?
&lt;/h2&gt;

&lt;p&gt;Hermes isn’t just a chatbot.&lt;/p&gt;

&lt;p&gt;It can interact with your environment and perform actions on your behalf.&lt;/p&gt;

&lt;p&gt;For example, depending on the tools you enable, Hermes can work with files, execute terminal commands, install dependencies, use external services, and autonomously work through tasks.&lt;/p&gt;

&lt;p&gt;That’s incredibly useful.&lt;/p&gt;

&lt;p&gt;But if the agent runs directly on your main machine, you need to think carefully about what files, credentials, and system resources it can reach.&lt;/p&gt;

&lt;p&gt;That’s where Docker becomes useful.&lt;/p&gt;

&lt;p&gt;Instead of letting Hermes operate directly across my host environment, I can put it inside a container and explicitly decide what crosses that boundary.&lt;/p&gt;

&lt;p&gt;The architecture we’ll build looks roughly like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌──────────────────── HOST MACHINE ────────────────────┐
│                                                      │
│  Docker                                              │
│                                                      │
│  ~/.hermes-docker  ───────────────┐                  │
│                                   │                  │
│                    ┌──────────────▼──────────────┐   │
│                    │      Docker Container       │   │
│                    │                             │   │
│                    │      Hermes Agent           │   │
│                    │                             │   │
│                    │  /opt/data                  │   │
│                    │  Gateway                    │   │
│                    │  Dashboard                  │   │
│                    └─────────────────────────────┘   │
│                                                      │
│  Personal files / SSH keys / other directories       │
│              NOT mounted into container              │
│                                                      │
└──────────────────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Hermes gets a dedicated environment and a directory for its persistent data.&lt;/p&gt;

&lt;p&gt;The rest of the machine stays outside that boundary unless I explicitly expose something.&lt;/p&gt;




&lt;h2&gt;
  
  
  🐳 Step 1: Install Docker
&lt;/h2&gt;

&lt;p&gt;On macOS or Windows, install Docker Desktop and make sure the Docker engine is running.&lt;/p&gt;

&lt;p&gt;On Linux, you can install Docker Engine using the instructions for your distribution.&lt;/p&gt;

&lt;p&gt;You can verify Docker is available with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker &lt;span class="nt"&gt;--version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once Docker is working, we can create an isolated environment for Hermes.&lt;/p&gt;




&lt;h2&gt;
  
  
  📁 Step 2: Create a Dedicated Directory for Hermes
&lt;/h2&gt;

&lt;p&gt;First, create a directory specifically for the Dockerized Hermes instance:&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="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; ~/.hermes-docker
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This directory is important for two reasons.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Persistence
&lt;/h3&gt;

&lt;p&gt;Docker containers are disposable.&lt;/p&gt;

&lt;p&gt;If we remove and recreate the Hermes container, we don’t want to lose things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Configuration&lt;/li&gt;
&lt;li&gt;Sessions&lt;/li&gt;
&lt;li&gt;Memory&lt;/li&gt;
&lt;li&gt;Skills&lt;/li&gt;
&lt;li&gt;Profiles&lt;/li&gt;
&lt;li&gt;Logs&lt;/li&gt;
&lt;li&gt;Other persistent agent data&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We’ll store those outside the container in ~/.hermes-docker.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. It becomes part of our trust boundary
&lt;/h3&gt;

&lt;p&gt;Anything inside this directory is intentionally available to Hermes.&lt;/p&gt;

&lt;p&gt;Instead of mounting my entire home directory, I’m giving the agent one dedicated location.&lt;/p&gt;

&lt;p&gt;That distinction matters.&lt;/p&gt;




&lt;h2&gt;
  
  
  ⚙️ Step 3: Run the Hermes Setup Inside Docker
&lt;/h2&gt;

&lt;p&gt;Now we can start the official Hermes Agent image and launch the setup process:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker run &lt;span class="nt"&gt;--rm&lt;/span&gt; &lt;span class="nt"&gt;-it&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-v&lt;/span&gt; ~/.hermes-docker:/opt/data &lt;span class="se"&gt;\&lt;/span&gt;
  nousresearch/hermes-agent setup
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The most important part here is:&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="nt"&gt;-v&lt;/span&gt; ~/.hermes-docker:/opt/data
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The -v option creates a bind mount between a directory on the host and a directory inside the container.&lt;/p&gt;

&lt;p&gt;Think of it like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;HOST                           CONTAINER
~/.hermes-docker   ───────▶   /opt/data
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The left side:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;~/.hermes-docker
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;is the directory we just created on the host.&lt;/p&gt;

&lt;p&gt;The right side:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/opt/data
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;is where that directory appears inside the Docker container.&lt;/p&gt;

&lt;p&gt;So when Hermes saves configuration, sessions, memory, skills, or other persistent data under &lt;strong&gt;&lt;em&gt;/opt/data&lt;/em&gt;&lt;/strong&gt;, those files are actually stored in &lt;strong&gt;&lt;em&gt;~/.hermes-docker&lt;/em&gt;&lt;/strong&gt; on the host.&lt;/p&gt;

&lt;p&gt;That means we can destroy and recreate the container without losing the Hermes environment.&lt;/p&gt;

&lt;p&gt;More importantly, we’re sharing one dedicated directory instead of the entire host filesystem.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧠 Step 4: Configure Hermes Agent
&lt;/h2&gt;

&lt;p&gt;The first run downloads the required Docker image and launches the Hermes setup wizard.&lt;/p&gt;

&lt;p&gt;From there, follow the normal Hermes configuration process.&lt;/p&gt;

&lt;p&gt;In my setup, I:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Use the quick setup&lt;/li&gt;
&lt;li&gt;Authenticate with Nous Portal&lt;/li&gt;
&lt;li&gt;Select a model&lt;/li&gt;
&lt;li&gt;Keep the terminal backend local&lt;/li&gt;
&lt;li&gt;Skip messaging platform configuration for now&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Once setup finishes, the configuration is stored in our persistent directory.&lt;/p&gt;

&lt;p&gt;That means future containers using the same mount can reuse it.&lt;/p&gt;




&lt;h2&gt;
  
  
  🌐 Step 5: Start the Hermes Gateway and Dashboard
&lt;/h2&gt;

&lt;p&gt;Now we can start Hermes as a background container:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker run &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--name&lt;/span&gt; hermes-docker &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--restart&lt;/span&gt; unless-stopped &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-v&lt;/span&gt; ~/.hermes-docker:/opt/data &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-p&lt;/span&gt; 18642:8642 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-p&lt;/span&gt; 19119:9119 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="nv"&gt;HERMES_DASHBOARD&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1 &lt;span class="se"&gt;\&lt;/span&gt;
  nousresearch/hermes-agent gateway run
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;There are a few important things happening here.&lt;/p&gt;

&lt;p&gt;Run in the background&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="nt"&gt;-d&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;starts the container in detached mode.&lt;/p&gt;

&lt;p&gt;Give the container a name&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="nt"&gt;--name&lt;/span&gt; hermes-docker
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;makes it easier to manage later:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker logs hermes-docker
docker stop hermes-docker
docker start hermes-docker
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Keep the persistent directory&lt;/p&gt;

&lt;p&gt;We’re mounting the same directory again:&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="nt"&gt;-v&lt;/span&gt; ~/.hermes-docker:/opt/data
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So Hermes sees the configuration we created during setup.&lt;/p&gt;

&lt;p&gt;Enable the dashboard&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="nt"&gt;-e&lt;/span&gt; &lt;span class="nv"&gt;HERMES_DASHBOARD&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;enables the Hermes Dashboard.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔌 Understanding the Port Mapping
&lt;/h2&gt;

&lt;p&gt;You’ll notice I’m using:&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="nt"&gt;-p&lt;/span&gt; 18642:8642
&lt;span class="nt"&gt;-p&lt;/span&gt; 19119:9119
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Docker port mappings follow this pattern:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;HOST_PORT:CONTAINER_PORT
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;18642 → 8642
19119 → 9119
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The ports on the right are the ones Hermes uses inside the container.&lt;/p&gt;

&lt;p&gt;The ports on the left are the ones exposed on my Mac.&lt;/p&gt;

&lt;p&gt;I’m deliberately using different host ports because I already have another Hermes instance running locally and don’t want the ports to clash.&lt;/p&gt;

&lt;p&gt;If you’re running only the Docker instance, you can use the default ports 8642 and 9119 instead of 18642 and 19119.&lt;/p&gt;




&lt;h2&gt;
  
  
  ✅ Step 6: Verify the Container Is Running
&lt;/h2&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker ps
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You should see the hermes-docker container running.&lt;/p&gt;

&lt;p&gt;If something isn’t working, one of the first places to look is the container logs:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;This becomes particularly useful when configuring the dashboard.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔐 Step 7: Configure Dashboard Authentication
&lt;/h2&gt;

&lt;p&gt;When I initially opened the dashboard, it didn’t start correctly.&lt;/p&gt;

&lt;p&gt;Instead of hiding that part from the tutorial, I kept it in because it’s a useful troubleshooting example.&lt;/p&gt;

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

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

&lt;/div&gt;



&lt;p&gt;showed that the dashboard needed an authentication provider.&lt;/p&gt;

&lt;p&gt;Hermes provides authentication options for securing dashboard access.&lt;/p&gt;

&lt;p&gt;I configured mine using Nous Portal authentication.&lt;/p&gt;

&lt;p&gt;Once authentication was configured, the dashboard started successfully.&lt;/p&gt;

&lt;p&gt;With my port mapping, I can access it at:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;localhost:19119
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And now the Hermes Dashboard is running while Hermes itself remains inside the container.&lt;/p&gt;




&lt;h2&gt;
  
  
  💬 Step 8: Chat With Hermes Inside the Container
&lt;/h2&gt;

&lt;p&gt;You can also enter the running container directly:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker &lt;span class="nb"&gt;exec&lt;/span&gt; &lt;span class="nt"&gt;-it&lt;/span&gt; hermes-docker bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then start Hermes:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;At this point you’re interacting with Hermes from a terminal inside the Docker container, rather than running Hermes directly on the host.&lt;/p&gt;

&lt;p&gt;That’s useful for testing.&lt;/p&gt;

&lt;p&gt;But I don’t necessarily want to enter the container every time I want to use the agent.&lt;/p&gt;

&lt;p&gt;There’s a better option.&lt;/p&gt;




&lt;h2&gt;
  
  
  🖥️ Step 9: Connect Hermes Desktop to the Docker Instance
&lt;/h2&gt;

&lt;p&gt;Hermes Desktop can connect to the Gateway running inside our container.&lt;/p&gt;

&lt;p&gt;Open Hermes Desktop and navigate to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Settings → Gateway → Remote Gateway
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then configure it to use the Gateway exposed by your Docker container.&lt;/p&gt;

&lt;p&gt;In my setup, that’s my url:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="err"&gt;http://localhost:19119
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After authenticating, save the configuration and reconnect.&lt;/p&gt;

&lt;p&gt;Now Hermes Desktop communicates with the Dockerized Hermes instance.&lt;/p&gt;

&lt;p&gt;So from the user’s perspective, I still get the convenient desktop interface.&lt;/p&gt;

&lt;p&gt;But the agent itself is operating inside the container.&lt;/p&gt;




&lt;h2&gt;
  
  
  🛡️ What Does Docker Actually Protect?
&lt;/h2&gt;

&lt;p&gt;This is probably the most important part of the tutorial.&lt;/p&gt;

&lt;p&gt;Running an AI agent inside Docker does not automatically make it safe.&lt;/p&gt;

&lt;p&gt;Docker gives us a useful isolation boundary, but that boundary depends heavily on how the container is configured.&lt;/p&gt;

&lt;p&gt;For example, imagine doing this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Host machine
      │
      ▼
Entire home directory
      │
      ▼
Docker container
      │
      ▼
Hermes Agent
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You’ve technically containerized Hermes.&lt;/p&gt;

&lt;p&gt;But you’ve also exposed a huge portion of your machine to it.&lt;/p&gt;

&lt;p&gt;That’s not the setup I want.&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Host machine
      │
      ├── Personal files       ❌
      ├── SSH keys             ❌
      ├── Other projects       ❌
      ├── Docker socket        ❌
      │
      └── ~/.hermes-docker     ✅
                │
                ▼
          Hermes Container
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The container should get access only to the resources required for the task.&lt;/p&gt;




&lt;h3&gt;
  
  
  🚫 1. Don’t Mount Your Entire Home Directory
&lt;/h3&gt;

&lt;p&gt;If you mount your complete home directory into the container, Hermes could potentially access whatever the container’s permissions allow within that mount.&lt;/p&gt;

&lt;p&gt;That might include personal files, source code, configuration files, credentials, or other sensitive data.&lt;/p&gt;

&lt;p&gt;That’s why I’m using:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;~/.hermes-docker
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;as a dedicated location instead.&lt;/p&gt;

&lt;p&gt;If Hermes doesn’t need something, don’t expose it.&lt;/p&gt;




&lt;h3&gt;
  
  
  🔑 2. Be Careful With Credentials
&lt;/h3&gt;

&lt;p&gt;The same principle applies to API keys and tokens.&lt;/p&gt;

&lt;p&gt;Only provide the credentials Hermes actually needs.&lt;/p&gt;

&lt;p&gt;Avoid unnecessarily exposing things such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;~/.ssh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;or unrelated cloud credentials and secrets.&lt;/p&gt;

&lt;p&gt;Containerization doesn’t help much if you put every sensitive credential inside the container anyway.&lt;/p&gt;




&lt;h3&gt;
  
  
  ⚠️ 3. Don’t Expose the Docker Socket Without a Very Good Reason
&lt;/h3&gt;

&lt;p&gt;Another thing I’m deliberately not mounting is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/var/run/docker.sock
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Giving a container access to the host Docker daemon can dramatically expand what that container is capable of doing.&lt;/p&gt;

&lt;p&gt;For an autonomous agent, that’s an especially important boundary to think about.&lt;/p&gt;

&lt;p&gt;If Hermes doesn’t need to control Docker on the host, don’t give it that capability.&lt;/p&gt;




&lt;h3&gt;
  
  
  🧩 4. Docker Doesn’t Solve Prompt Injection
&lt;/h3&gt;

&lt;p&gt;There’s another important limitation.&lt;/p&gt;

&lt;p&gt;An AI agent can still encounter malicious or adversarial content.&lt;/p&gt;

&lt;p&gt;For example, content from a webpage, repository, document, or other external source could attempt to manipulate the agent into performing unintended actions.&lt;/p&gt;

&lt;p&gt;Putting the agent inside Docker doesn’t eliminate that problem.&lt;/p&gt;

&lt;p&gt;The difference is what happens after the agent attempts the action.&lt;/p&gt;

&lt;p&gt;If Hermes only has access to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/opt/data
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;then we’ve limited the environment available to it.&lt;/p&gt;

&lt;p&gt;If we’ve mounted our entire computer, exposed sensitive credentials, and given it access to the Docker daemon, the potential impact is very different.&lt;/p&gt;

&lt;p&gt;That’s why I think containerization is better understood as blast-radius reduction, not a magic AI security solution.&lt;/p&gt;




&lt;h2&gt;
  
  
  🎯 The Principle: Least Privilege for AI Agents
&lt;/h2&gt;

&lt;p&gt;As AI agents become increasingly capable, I think one traditional security principle becomes even more important:&lt;/p&gt;

&lt;p&gt;Least privilege.&lt;/p&gt;

&lt;p&gt;An agent should receive the minimum access required to complete its task.&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Agent
  │
  └── Everything on my computer
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Agent
  │
  ├── Required files
  ├── Required credentials
  ├── Required network services
  └── Required tools
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Nothing more.&lt;/p&gt;

&lt;p&gt;This becomes increasingly important as agents gain longer-running autonomy, terminal access, browser access, external integrations, scheduled execution, and the ability to coordinate multiple tools.&lt;/p&gt;




&lt;h2&gt;
  
  
  Docker vs VM for AI Agents
&lt;/h2&gt;

&lt;p&gt;Docker is not the only way to isolate an autonomous agent.&lt;/p&gt;

&lt;p&gt;You could also use:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A virtual machine&lt;/li&gt;
&lt;li&gt;A dedicated VPS&lt;/li&gt;
&lt;li&gt;A sandboxed execution environment&lt;/li&gt;
&lt;li&gt;A separate physical machine&lt;/li&gt;
&lt;li&gt;More restrictive container runtimes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A VM generally provides a stronger isolation boundary than a standard application container because it virtualizes a larger portion of the environment.&lt;/p&gt;

&lt;p&gt;Docker, however, is lightweight and convenient for local development.&lt;/p&gt;

&lt;p&gt;For my Hermes setup, it gives me a useful middle ground:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Direct Host Execution
        ↓
Docker Container
        ↓
Virtual Machine / Dedicated Environment
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The appropriate boundary ultimately depends on what capabilities you’re giving the agent and what resources it can access.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Architecture
&lt;/h2&gt;

&lt;p&gt;After everything is configured, my setup looks roughly like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                   ┌─────────────────────────────┐
                   │        Host Machine         │
                   │                             │
                   │      Hermes Desktop         │
                   └──────────────┬──────────────┘
                                  │
                           Remote Gateway
                                  │
                                  ▼
              ┌─────────────────────────────────┐
              │       Docker Container          │
              │                                 │
              │       Hermes Gateway            │
              │       Hermes Dashboard          │
              │       Hermes Agent              │
              │                                 │
              │       /opt/data                 │
              └───────────────┬─────────────────┘
                              │
                         Bind Mount
                              │
                              ▼
                    ~/.hermes-docker
                              │
              ┌───────────────┴──────────────┐
              │ Config • Memory • Sessions   │
              │ Skills • Profiles • Logs     │
              └──────────────────────────────┘
       Rest of host filesystem → NOT MOUNTED
       SSH keys                → NOT EXPOSED
       Docker socket           → NOT EXPOSED
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Hermes still has the environment it needs to work.&lt;/p&gt;

&lt;p&gt;But we’re being much more deliberate about what crosses the boundary.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;Autonomous AI agents are becoming capable of doing much more than generating text.&lt;/p&gt;

&lt;p&gt;They’re increasingly able to:&lt;/p&gt;

&lt;p&gt;⚡ Execute commands&lt;br&gt;
🗂️ Manipulate files&lt;br&gt;
🌍 Interact with external systems&lt;br&gt;
🧰 Use specialized tools&lt;br&gt;
🔄 Run multi-step workflows autonomously&lt;/p&gt;

&lt;p&gt;That’s exciting.&lt;/p&gt;

&lt;p&gt;But the more capable the agent becomes, the more important its execution environment becomes.&lt;/p&gt;

&lt;p&gt;Running Hermes Agent inside Docker doesn’t solve every security problem.&lt;/p&gt;

&lt;p&gt;It does, however, give us a practical way to control what the agent can access and reduce the potential blast radius when something unexpected happens.&lt;/p&gt;

&lt;p&gt;The rule I follow is simple:&lt;/p&gt;

&lt;p&gt;Only give an AI agent access to what it actually needs.&lt;/p&gt;

&lt;p&gt;Everything else should stay outside the boundary.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>hermes</category>
      <category>agents</category>
      <category>docker</category>
    </item>
    <item>
      <title>🚀 What if your AI agent wasn’t tied to a single model provider?

I connected Hermes Agent to OmniRoute to route across free AI models from multiple providers. Here’s the full setup 👇

#AI #AIAgents #OpenSource</title>
      <dc:creator>Vivek Shetye</dc:creator>
      <pubDate>Tue, 15 Sep 2026 15:14:45 +0000</pubDate>
      <link>https://dev.to/vivek_shetye/what-if-your-ai-agent-wasnt-tied-to-a-single-model-provider-i-connected-hermes-agent-to-101n</link>
      <guid>https://dev.to/vivek_shetye/what-if-your-ai-agent-wasnt-tied-to-a-single-model-provider-i-connected-hermes-agent-to-101n</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/vivek_shetye/how-i-run-hermes-agent-on-free-ai-models-with-omniroute-3103" class="crayons-story__hidden-navigation-link"&gt;How I Run Hermes Agent on FREE AI Models with OmniRoute 🚀&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/vivek_shetye" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3879444%2F8f338ec8-c7f4-48e9-b8cf-3898bccbb1e8.jpg" alt="vivek_shetye profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/vivek_shetye" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Vivek Shetye
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Vivek Shetye
                
                
              
              &lt;div id="story-author-preview-content-4660383" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/vivek_shetye" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3879444%2F8f338ec8-c7f4-48e9-b8cf-3898bccbb1e8.jpg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Vivek Shetye&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/vivek_shetye/how-i-run-hermes-agent-on-free-ai-models-with-omniroute-3103" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Sep 15&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/vivek_shetye/how-i-run-hermes-agent-on-free-ai-models-with-omniroute-3103" id="article-link-4660383"&gt;
          How I Run Hermes Agent on FREE AI Models with OmniRoute 🚀
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/hermes"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;hermes&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/agents"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;agents&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/opensource"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;opensource&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/vivek_shetye/how-i-run-hermes-agent-on-free-ai-models-with-omniroute-3103" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;7&lt;span class="hidden s:inline"&gt;&amp;nbsp;reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/vivek_shetye/how-i-run-hermes-agent-on-free-ai-models-with-omniroute-3103#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              1&lt;span class="hidden s:inline"&gt;&amp;nbsp;comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            7 min read
          &lt;/small&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>agents</category>
      <category>ai</category>
      <category>opensource</category>
    </item>
    <item>
      <title>How I Run Hermes Agent on FREE AI Models with OmniRoute 🚀</title>
      <dc:creator>Vivek Shetye</dc:creator>
      <pubDate>Tue, 15 Sep 2026 15:05:20 +0000</pubDate>
      <link>https://dev.to/vivek_shetye/how-i-run-hermes-agent-on-free-ai-models-with-omniroute-3103</link>
      <guid>https://dev.to/vivek_shetye/how-i-run-hermes-agent-on-free-ai-models-with-omniroute-3103</guid>
      <description>&lt;p&gt;Free AI models are great.&lt;/p&gt;

&lt;p&gt;Until your agent hits a quota halfway through a task.&lt;/p&gt;

&lt;p&gt;Then suddenly you’re:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Searching for another provider&lt;/li&gt;
&lt;li&gt;Generating another API key&lt;/li&gt;
&lt;li&gt;Changing endpoints&lt;/li&gt;
&lt;li&gt;Switching models&lt;/li&gt;
&lt;li&gt;Restarting your workflow&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For a simple chat application, that might just be annoying.&lt;/p&gt;

&lt;p&gt;For an AI agent executing multi-step tasks, it becomes a much bigger problem.&lt;/p&gt;

&lt;p&gt;So instead of connecting Hermes Agent directly to a single AI provider, I tried a different architecture:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                 ┌── OpenRouter ──→ Free Models
                 │
Hermes Agent ─→ OmniRoute
                 │
                 └── NVIDIA ──────→ Available Models
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Hermes talks to one endpoint.&lt;/p&gt;

&lt;p&gt;OmniRoute sits between the agent and the model providers and handles the routing.&lt;/p&gt;

&lt;p&gt;The result is a surprisingly useful setup for experimenting with Hermes Agent on free AI models without tightly coupling the agent to one provider.&lt;/p&gt;

&lt;p&gt;In this tutorial, I’ll walk through exactly how I set it up.&lt;/p&gt;




&lt;h2&gt;
  
  
  🎥 Prefer the Video?
&lt;/h2&gt;

&lt;p&gt;I created a complete step-by-step video showing the setup, configuration, and a real Hermes Agent task running through OmniRoute.&lt;/p&gt;

&lt;p&gt;Watch: How I Run Hermes Agent on FREE AI Models&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/nH9eVRxKuug" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;If you’d rather understand the architecture and follow the setup at your own pace, keep reading.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem With Depending on One Free AI Provider
&lt;/h2&gt;

&lt;p&gt;There are now plenty of ways to experiment with capable AI models without immediately paying for API usage.&lt;/p&gt;

&lt;p&gt;That’s great for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Learning agent development&lt;/li&gt;
&lt;li&gt;Building prototypes&lt;/li&gt;
&lt;li&gt;Testing AI workflows&lt;/li&gt;
&lt;li&gt;Experimenting with different models&lt;/li&gt;
&lt;li&gt;Running personal automation&lt;/li&gt;
&lt;li&gt;Comparing model capabilities&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But there’s an obvious limitation:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Free access is rarely unlimited or guaranteed.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A provider may impose request limits.&lt;/p&gt;

&lt;p&gt;A particular model might become unavailable.&lt;/p&gt;

&lt;p&gt;Traffic might affect access.&lt;/p&gt;

&lt;p&gt;A model could disappear from the free catalog.&lt;/p&gt;

&lt;p&gt;Or you might simply exhaust your quota.&lt;/p&gt;

&lt;p&gt;If your architecture looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Hermes Agent
     │
     ▼
Provider A
     │
     ▼
Model
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;your agent is directly dependent on that provider.&lt;/p&gt;

&lt;p&gt;Once Provider A stops serving your requests, your workflow stops too.&lt;/p&gt;

&lt;p&gt;Instead, I wanted something closer to this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                     ┌── Provider A
                     │
                     ├── Provider B
Hermes Agent ──→ Gateway
                     ├── Provider C
                     │
                     └── Provider D
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That’s where OmniRoute comes in.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧠 What Is Hermes Agent?
&lt;/h2&gt;

&lt;p&gt;Hermes Agent is an open-source agent harness from Nous Research for building AI agents capable of doing much more than generating chat responses.&lt;/p&gt;

&lt;p&gt;Depending on the tools and configuration available to it, Hermes can perform tasks involving things like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User Request
     ↓
Hermes Agent
     ↓
Reasoning
     ↓
Tool Calls
     ↓
Files / Terminal / Web / Other Tools
     ↓
Tool Results
     ↓
More Reasoning
     ↓
Final Result
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This makes model availability particularly important.&lt;/p&gt;

&lt;p&gt;A multi-step agent workflow might require many model calls before the task is finished.&lt;/p&gt;

&lt;p&gt;If your model becomes unavailable halfway through, that can interrupt the entire workflow.&lt;/p&gt;




&lt;h2&gt;
  
  
  🚦 What Is OmniRoute?
&lt;/h2&gt;

&lt;p&gt;Think of OmniRoute as a traffic director for AI models.&lt;/p&gt;

&lt;p&gt;Rather than forcing your application to manage every model provider individually, OmniRoute provides a gateway between your application and those providers.&lt;/p&gt;

&lt;p&gt;Instead of:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Application → Provider
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;you get:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Application → OmniRoute → Providers
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For this experiment, our application happens to be Hermes Agent.&lt;/p&gt;

&lt;p&gt;So the architecture becomes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                       ┌──────────────┐
                       │  OpenRouter  │
                       └──────┬───────┘
                              │
┌──────────────┐      ┌───────▼───────┐
│ Hermes Agent │ ───→ │   OmniRoute   │
└──────────────┘      └───────┬───────┘
                              │
                       ┌──────▼──────┐
                       │   NVIDIA    │
                       └─────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;OmniRoute is open source, can run locally, and supports a large number of AI providers.&lt;/p&gt;

&lt;p&gt;More importantly for this experiment, it allows us to expose a single endpoint to Hermes while managing multiple model/provider connections behind it.&lt;/p&gt;




&lt;h2&gt;
  
  
  ⚡ Why Put an AI Gateway Between Hermes and the Models?
&lt;/h2&gt;

&lt;p&gt;You could simply connect Hermes directly to OpenRouter, NVIDIA, or another provider.&lt;/p&gt;

&lt;p&gt;So why add another layer?&lt;/p&gt;

&lt;p&gt;Because it separates two responsibilities.&lt;/p&gt;

&lt;p&gt;Hermes Agent handles the task.&lt;/p&gt;

&lt;p&gt;OmniRoute handles model access and routing.&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Hermes:
"What should I do next?"

        ↓

OmniRoute:
"Which configured model should serve this request?"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That separation becomes increasingly useful as you add more providers.&lt;/p&gt;

&lt;p&gt;Instead of reconfiguring the agent every time your model strategy changes, Hermes continues talking to the same gateway.&lt;/p&gt;

&lt;p&gt;You manage providers behind it.&lt;/p&gt;




&lt;h2&gt;
  
  
  🛠️ Step 1: Install OmniRoute Locally
&lt;/h2&gt;

&lt;p&gt;The first thing I did was install OmniRoute locally.&lt;/p&gt;

&lt;p&gt;After following the installation instructions, OmniRoute can be started from the terminal.&lt;/p&gt;

&lt;p&gt;Once the server starts, it provides access to its local dashboard.&lt;/p&gt;

&lt;p&gt;From there you can manage things like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Providers
Models
Endpoints
API Keys
Routing
Analytics
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This becomes the control plane for our model infrastructure.&lt;/p&gt;

&lt;p&gt;Important security note 🔐&lt;/p&gt;

&lt;p&gt;If you’re running a gateway locally or exposing it beyond your machine, don’t leave default credentials unchanged.&lt;/p&gt;

&lt;p&gt;Create proper API keys and configure authentication appropriate for your environment.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔌 Step 2: Connect OpenRouter
&lt;/h2&gt;

&lt;p&gt;The first provider I added was OpenRouter.&lt;/p&gt;

&lt;p&gt;Inside OmniRoute:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Providers
   ↓
OpenRouter
   ↓
Add Connection
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You’ll need an OpenRouter API key.&lt;/p&gt;

&lt;p&gt;Once the connection is configured, OmniRoute can import the models available through that account.&lt;/p&gt;

&lt;p&gt;For this experiment, I enabled the option to import only free models.&lt;/p&gt;

&lt;p&gt;The result looks conceptually like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;OpenRouter
     │
     ├── Free Model A
     ├── Free Model B
     ├── Free Model C
     └── ...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can also perform health checks to see whether configured models are currently available.&lt;/p&gt;

&lt;p&gt;That’s already useful but we’re still relying on one provider.&lt;/p&gt;

&lt;p&gt;So let’s add another.&lt;/p&gt;




&lt;h2&gt;
  
  
  🟢 Step 3: Add NVIDIA as Another Provider
&lt;/h2&gt;

&lt;p&gt;I repeated essentially the same process with NVIDIA.&lt;/p&gt;

&lt;p&gt;Generate an API key through NVIDIA’s model/API platform and add the connection inside OmniRoute.&lt;/p&gt;

&lt;p&gt;Now our gateway has multiple provider connections:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                OmniRoute
                   │
          ┌────────┴────────┐
          ▼                 ▼
     OpenRouter           NVIDIA
          │                 │
      Free Models      Available Models
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And this is where the architecture starts becoming interesting.&lt;/p&gt;

&lt;p&gt;Hermes doesn’t need separate configurations for both providers.&lt;/p&gt;

&lt;p&gt;As far as Hermes is concerned, there is still only:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;One API endpoint
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;OmniRoute handles what happens behind it.&lt;/p&gt;




&lt;h2&gt;
  
  
  🤖 Step 4: Connect Hermes Agent to OmniRoute
&lt;/h2&gt;

&lt;p&gt;Now we need to point Hermes toward the gateway.&lt;/p&gt;

&lt;p&gt;Hermes supports configuring a custom model endpoint.&lt;/p&gt;

&lt;p&gt;Using the Hermes model configuration flow, I selected the custom endpoint option and provided:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;API Base URL → OmniRoute local endpoint

API Key → OmniRoute API key

Compatibility → Auto Detect
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For the model configuration, I used OmniRoute’s:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;auto/best-coding
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is where the model selection gets abstracted away from Hermes.&lt;/p&gt;

&lt;p&gt;Instead of telling Hermes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Always use Model X
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;we’re effectively saying:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Send the request to OmniRoute.

Let the routing layer determine the appropriate
configured model for the request.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once that configuration is saved, OmniRoute becomes a model endpoint available to Hermes Agent.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧪 Step 5: Give Hermes a Real Agent Task
&lt;/h2&gt;

&lt;p&gt;A simple “Hello World” wouldn’t tell us much.&lt;/p&gt;

&lt;p&gt;So I gave Hermes something closer to an actual agent workflow.&lt;/p&gt;

&lt;p&gt;The task was essentially:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Find the latest and most important AI news from reliable sources, summarize the key developments, and create a polished single-page visual report presenting the major stories, trends, and sources.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That means Hermes needs to do much more than answer a single prompt.&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Research
   ↓
Collect Information
   ↓
Evaluate Sources
   ↓
Summarize
   ↓
Identify Trends
   ↓
Generate Web Page
   ↓
Write Files
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And here’s the important part:&lt;/p&gt;

&lt;p&gt;Hermes was sending its model requests through OmniRoute throughout the workflow.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Hermes Task
    │
    ▼
OmniRoute
    │
    ▼
Best Available Configured Model
    │
    ▼
Response
    │
    ▼
Hermes Continues Task
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After a minute or two, Hermes completed the task and generated the visual AI news report.&lt;/p&gt;




&lt;h2&gt;
  
  
  📊 Step 6: See Which AI Models Actually Handled the Requests
&lt;/h2&gt;

&lt;p&gt;This was one of my favorite parts of the experiment.&lt;/p&gt;

&lt;p&gt;After Hermes finished, I went back into OmniRoute.&lt;/p&gt;

&lt;p&gt;Under its usage analytics, I could inspect information about the requests being sent through the gateway.&lt;/p&gt;

&lt;p&gt;That included things such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Requests&lt;/li&gt;
&lt;li&gt;Input tokens&lt;/li&gt;
&lt;li&gt;Output tokens&lt;/li&gt;
&lt;li&gt;Model usage&lt;/li&gt;
&lt;li&gt;Which models actually served requests&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So instead of the model-routing layer being a complete black box, I could inspect what happened after the task.&lt;/p&gt;

&lt;p&gt;The workflow effectively becomes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;             ┌───────────────┐
             │ Hermes Agent  │
             └───────┬───────┘
                     │
                     ▼
             ┌───────────────┐
             │   OmniRoute   │
             └───────┬───────┘
                     │
            Routing Decision
                     │
          ┌──────────┴──────────┐
          ▼                     ▼
      Model A                Model B
          │                     │
          └──────────┬──────────┘
                     ▼
                 Response

                     +

              Usage Analytics
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For agent development, that observability is useful.&lt;/p&gt;

&lt;p&gt;It gives you visibility into what your model-routing infrastructure is actually doing rather than only seeing the final agent output.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧩 Why This Architecture Matters Beyond Free Models
&lt;/h2&gt;

&lt;p&gt;The interesting part isn’t actually the word free.&lt;/p&gt;

&lt;p&gt;It’s the abstraction.&lt;/p&gt;

&lt;p&gt;Without a gateway:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Agent → Specific Provider → Specific Model
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With a gateway:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Agent → Model Gateway → Routing Strategy → Provider/Model
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That means the agent doesn’t necessarily need to care whether the underlying request eventually reaches one provider or another.&lt;/p&gt;

&lt;p&gt;This becomes useful when experimenting with:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Multi-provider AI infrastructure&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Different providers can sit behind one gateway.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Model fallback strategies&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Your application doesn’t have to own every routing decision.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Cost optimization 💰&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Different models can potentially be selected based on your infrastructure strategy.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Model experimentation&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You can change the models behind the gateway without redesigning your entire agent integration.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Observability&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A centralized gateway can give you a better view of model usage across your agent workflows.&lt;/p&gt;

&lt;p&gt;And these patterns aren’t limited to Hermes.&lt;/p&gt;

&lt;p&gt;The broader architecture is applicable to many AI applications:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;AI Application
      ↓
AI Gateway
      ↓
Routing / Policies
      ↓
Multiple Models &amp;amp; Providers
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;As AI systems become more agentic, this layer becomes increasingly interesting.&lt;/p&gt;




&lt;h2&gt;
  
  
  ⚠️ But There’s a Catch: “Free” Doesn’t Mean Unlimited
&lt;/h2&gt;

&lt;p&gt;This is important.&lt;/p&gt;

&lt;p&gt;Using multiple free-model providers does not magically create unlimited free inference.&lt;/p&gt;

&lt;p&gt;Every provider has its own policies and constraints.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;OpenRouter free models have limits.&lt;/p&gt;

&lt;p&gt;NVIDIA access can vary depending on the model, account, availability, and traffic.&lt;/p&gt;

&lt;p&gt;Free models may also:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Respond more slowly&lt;/li&gt;
&lt;li&gt;Become temporarily unavailable&lt;/li&gt;
&lt;li&gt;Change their limits&lt;/li&gt;
&lt;li&gt;Disappear from catalogs&lt;/li&gt;
&lt;li&gt;Have different context windows&lt;/li&gt;
&lt;li&gt;Behave differently across tasks&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And there’s another important consideration:&lt;/p&gt;

&lt;p&gt;Always read the provider’s terms.&lt;/p&gt;

&lt;p&gt;Some services have specific rules around:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Automation
API usage
Processing
Redistribution
Rate limits
Free-tier usage
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A few minutes checking those requirements before building automation around a provider can save you problems later.&lt;/p&gt;

&lt;p&gt;Think of this architecture as a way to use available resources more flexibly, not as a way to bypass provider limits.&lt;/p&gt;




&lt;h2&gt;
  
  
  🏗️ The Bigger Lesson: Decouple Your Agent From Your Model Provider
&lt;/h2&gt;

&lt;p&gt;This experiment reinforced something I’ve increasingly found useful when working with AI agents:&lt;/p&gt;

&lt;p&gt;The agent and the model infrastructure don’t have to be the same layer.&lt;/p&gt;

&lt;p&gt;Your agent should focus on:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Reasoning
Tools
Memory
Tasks
Workflows
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Your model gateway can focus on:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Providers
Models
Routing
Availability
Usage
Policies
Observability
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Put those together and you get a much cleaner architecture:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌──────────────────────────────┐
│          AI Agent            │
│                              │
│ Tools • Memory • Workflows   │
└──────────────┬───────────────┘
               │
               ▼
┌──────────────────────────────┐
│          AI Gateway          │
│                              │
│ Routing • Models • Analytics │
└──────────────┬───────────────┘
               │
       ┌───────┼───────┐
       ▼       ▼       ▼
   Provider Provider Provider
      A        B        C
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For small experiments, this might feel like an extra layer.&lt;/p&gt;

&lt;p&gt;But once you’re testing multiple models and providers—or building longer-running agent workflows—the separation starts making much more sense.&lt;/p&gt;




&lt;h2&gt;
  
  
  🎯 Final Thoughts
&lt;/h2&gt;

&lt;p&gt;If you’re learning AI agent development and want to experiment without immediately spending heavily on API calls, Hermes Agent + OmniRoute + free AI model providers is an interesting setup to explore.&lt;/p&gt;

&lt;p&gt;You get:&lt;/p&gt;

&lt;p&gt;✅ One endpoint for Hermes Agent&lt;/p&gt;

&lt;p&gt;🔀 Multiple model/provider options behind the gateway&lt;/p&gt;

&lt;p&gt;🧠 Automatic model selection strategies&lt;/p&gt;

&lt;p&gt;📈 Centralized usage analytics&lt;/p&gt;

&lt;p&gt;🛠️ The flexibility to add or change providers later&lt;/p&gt;

&lt;p&gt;Just remember that the free tiers still have their own quotas, availability constraints, and terms.&lt;/p&gt;

&lt;p&gt;The real value here isn’t “unlimited free AI.”&lt;/p&gt;

&lt;p&gt;It’s building an agent architecture that isn’t unnecessarily coupled to one model provider.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>hermes</category>
      <category>agents</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Hermes Agent goes far beyond basic prompting. 🤖

I broke down /loop, /goal, Cron, Delegation, Bot Mode, Kanban &amp; Mixture of Agents and when each actually makes sense.

A practical mental model for building more autonomous AI agents. 👇</title>
      <dc:creator>Vivek Shetye</dc:creator>
      <pubDate>Tue, 08 Sep 2026 15:29:15 +0000</pubDate>
      <link>https://dev.to/vivek_shetye/hermes-agent-goes-far-beyond-basic-prompting-i-broke-down-loop-goal-cron-delegation-bot-f89</link>
      <guid>https://dev.to/vivek_shetye/hermes-agent-goes-far-beyond-basic-prompting-i-broke-down-loop-goal-cron-delegation-bot-f89</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/vivek_shetye/hermes-agent-advanced-features-explained-loop-goal-cron-delegation-bot-mode-kanban--3058" class="crayons-story__hidden-navigation-link"&gt;🤖 Hermes Agent Advanced Features Explained: Loop, Goal, Cron, Delegation, Bot Mode, Kanban &amp;amp; Mixture of Agents&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
      &lt;a href="https://dev.to/vivek_shetye/hermes-agent-advanced-features-explained-loop-goal-cron-delegation-bot-mode-kanban--3058" class="crayons-article__context-note crayons-article__context-note__feed"&gt;&lt;p&gt;Hermes Agent Challenge Submission: Write About Hermes Agent&lt;/p&gt;

&lt;/a&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/vivek_shetye" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3879444%2F8f338ec8-c7f4-48e9-b8cf-3898bccbb1e8.jpg" alt="vivek_shetye profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/vivek_shetye" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Vivek Shetye
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Vivek Shetye
                
                
              
              &lt;div id="story-author-preview-content-4607605" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/vivek_shetye" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3879444%2F8f338ec8-c7f4-48e9-b8cf-3898bccbb1e8.jpg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Vivek Shetye&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/vivek_shetye/hermes-agent-advanced-features-explained-loop-goal-cron-delegation-bot-mode-kanban--3058" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Sep 8&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/vivek_shetye/hermes-agent-advanced-features-explained-loop-goal-cron-delegation-bot-mode-kanban--3058" id="article-link-4607605"&gt;
          🤖 Hermes Agent Advanced Features Explained: Loop, Goal, Cron, Delegation, Bot Mode, Kanban &amp;amp; Mixture of Agents
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/agents"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;agents&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/hermesagentchallenge"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;hermesagentchallenge&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/opensource"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;opensource&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/vivek_shetye/hermes-agent-advanced-features-explained-loop-goal-cron-delegation-bot-mode-kanban--3058" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/raised-hands-74b2099fd66a39f2d7eed9305ee0f4553df0eb7b4f11b01b6b1b499973048fe5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;10&lt;span class="hidden s:inline"&gt;&amp;nbsp;reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/vivek_shetye/hermes-agent-advanced-features-explained-loop-goal-cron-delegation-bot-mode-kanban--3058#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              1&lt;span class="hidden s:inline"&gt;&amp;nbsp;comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            6 min read
          &lt;/small&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>agents</category>
      <category>ai</category>
      <category>automation</category>
    </item>
    <item>
      <title>🤖 Hermes Agent Advanced Features Explained: Loop, Goal, Cron, Delegation, Bot Mode, Kanban &amp; Mixture of Agents</title>
      <dc:creator>Vivek Shetye</dc:creator>
      <pubDate>Tue, 08 Sep 2026 15:03:20 +0000</pubDate>
      <link>https://dev.to/vivek_shetye/hermes-agent-advanced-features-explained-loop-goal-cron-delegation-bot-mode-kanban--3058</link>
      <guid>https://dev.to/vivek_shetye/hermes-agent-advanced-features-explained-loop-goal-cron-delegation-bot-mode-kanban--3058</guid>
      <description>&lt;p&gt;Using Hermes Agent as a normal AI assistant is pretty straightforward.&lt;/p&gt;

&lt;p&gt;You give it a task. It reasons about the problem, uses tools when necessary, and gives you a result.&lt;/p&gt;

&lt;p&gt;But Hermes gets much more interesting when you ask a different question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;How do I get an AI agent to keep working without constantly prompting it?&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Hermes Agent gives you several ways to do this.&lt;/p&gt;

&lt;p&gt;You can create recurring loops, give the agent a persistent goal, schedule Cron Jobs, delegate work to sub-agents, create persistent specialist bots, coordinate multiple agents through Kanban, or even use multiple LLMs through Mixture of Agents.&lt;/p&gt;

&lt;p&gt;The confusing part?&lt;/p&gt;

&lt;p&gt;These features all increase agent autonomy, but they solve very different problems.&lt;/p&gt;

&lt;p&gt;I recently published a video breaking down how these advanced Hermes Agent features work under the hood and, more importantly, when you should use each one.&lt;/p&gt;

&lt;h3&gt;
  
  
  🎥 Watch the full video:
&lt;/h3&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/E_tj3VgHAUY" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Here’s the mental model I use to distinguish them.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔁 1. Loop: Repeat Something Inside the Current Session
&lt;/h2&gt;

&lt;p&gt;The easiest way to understand Hermes Agent’s /loop command is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“Do this again later while I’m working in this session.”&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A loop takes a prompt and reruns it on a recurring cadence.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Check my deployment every 5 minutes and tell me when it goes live.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The key distinction is that Loop is time-driven and session-scoped.&lt;/p&gt;

&lt;p&gt;Use it for monitoring, repeated checks, polling, or other temporary recurring work associated with your current Hermes session.&lt;/p&gt;




&lt;h2&gt;
  
  
  🎯 2. Goal: Keep Working Until the Objective Is Complete
&lt;/h2&gt;

&lt;p&gt;/goal solves a completely different problem.&lt;/p&gt;

&lt;p&gt;Instead of saying:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“Do this again later.”&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You’re saying:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“Keep working until this is actually done.”&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Some tasks can’t reliably be completed in a single agent turn.&lt;/p&gt;

&lt;p&gt;Maybe Hermes needs to modify code, run tests, inspect failures, make another change, and repeat the process.&lt;/p&gt;

&lt;p&gt;That’s where Goal becomes useful.&lt;/p&gt;

&lt;p&gt;After each continuation, the result can be evaluated to determine whether the objective has actually been completed.&lt;/p&gt;

&lt;p&gt;Hermes also supports a completion contract, which can describe:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The desired outcome&lt;/li&gt;
&lt;li&gt;How success should be verified&lt;/li&gt;
&lt;li&gt;Constraints that must remain true&lt;/li&gt;
&lt;li&gt;What is inside or outside the task’s scope&lt;/li&gt;
&lt;li&gt;When Hermes should stop and ask for help&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead of:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Fix authentication.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can define something closer to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Fix authentication so all tests pass.

Keep the existing login API response unchanged.

Only modify the authentication service and its tests.

Stop and ask me if a database migration becomes necessary.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now both execution and evaluation have a much clearer definition of “done.”&lt;/p&gt;

&lt;p&gt;One important misconception:&lt;/p&gt;

&lt;p&gt;Goal does not automatically create an agent team, Kanban workflow, or independent background process.&lt;/p&gt;

&lt;p&gt;It keeps the current Hermes session focused on a standing objective.&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Loop → Do this again later.

Goal → Keep working until this is done.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  ⏰ 3. Cron Jobs: Scheduled, Unattended AI Agent Workflows
&lt;/h2&gt;

&lt;p&gt;Both Loop and Goal are connected to an active Hermes session.&lt;/p&gt;

&lt;p&gt;But what if you want Hermes to wake up every morning and perform some work even when you’re not interacting with it?&lt;/p&gt;

&lt;p&gt;That’s where Cron Jobs come in.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Every morning at 9 AM:

- Check my news feeds
- Find important AI developments
- Summarize them
- Send me a report on Telegram
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When the scheduled time arrives, Hermes can launch a fresh agent session specifically for that run.&lt;/p&gt;

&lt;p&gt;This makes Cron useful for things like:&lt;/p&gt;

&lt;p&gt;📊 Daily reports&lt;br&gt;
🔍 Recurring research&lt;br&gt;
🛡️ Security audits&lt;br&gt;
🧪 CI health checks&lt;br&gt;
📰 News monitoring&lt;br&gt;
📨 Scheduled summaries&lt;/p&gt;

&lt;p&gt;The fundamental distinction is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Loop
↓
Keep checking while this session is active.

Cron
↓
Wake up independently on a schedule and run the task.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If I’m watching a deployment for the next 20 minutes, I’d probably use Loop.&lt;/p&gt;

&lt;p&gt;If I want a report generated every morning whether I’m there or not, I’d use Cron.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧩 4. Sub-Agent Delegation: Temporary Parallel Workers
&lt;/h2&gt;

&lt;p&gt;Now we move from one autonomous agent to multiple agents working simultaneously.&lt;/p&gt;

&lt;p&gt;Suppose I ask Hermes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Compare three approaches for implementing authentication
and recommend the best one.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The main agent could investigate each approach sequentially.&lt;/p&gt;

&lt;p&gt;Or it could delegate:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Parent Agent
     │
     ├── Sub-Agent A → Research approach A
     ├── Sub-Agent B → Research approach B
     └── Sub-Agent C → Research approach C
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The sub-agents can perform those tasks independently and return their findings to the parent.&lt;/p&gt;

&lt;p&gt;This provides two major advantages.&lt;/p&gt;

&lt;h3&gt;
  
  
  ⚡ Parallelism
&lt;/h3&gt;

&lt;p&gt;Independent work can happen simultaneously rather than forcing the main agent to perform everything sequentially.&lt;/p&gt;

&lt;h3&gt;
  
  
  🧱 Context Isolation
&lt;/h3&gt;

&lt;p&gt;Large research, coding, refactoring, and analysis tasks can consume significant context.&lt;/p&gt;

&lt;p&gt;Delegating them means much of the intermediate work stays inside the sub-agent’s context rather than flooding the parent’s conversation.&lt;/p&gt;

&lt;p&gt;The important distinction is that delegation is temporary.&lt;/p&gt;

&lt;p&gt;A sub-agent exists to perform a focused task, return its result, and finish.&lt;/p&gt;

&lt;p&gt;If you want a specialist identity that persists over time, you need something else.&lt;/p&gt;




&lt;h2&gt;
  
  
  🤖 5. Profiles &amp;amp; Bot Mode: Persistent AI Specialists
&lt;/h2&gt;

&lt;p&gt;Imagine having separate Hermes agents for:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;👨‍💻 Coding
🔬 Research
✍️ Content
📈 Analysis
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You probably don’t want your research agent’s accumulated context and workflows constantly mixed with your coding agent.&lt;/p&gt;

&lt;p&gt;That’s what &lt;strong&gt;Hermes Profiles&lt;/strong&gt; help solve.&lt;/p&gt;

&lt;p&gt;A profile acts like a separate Hermes environment with its own configuration and state.&lt;/p&gt;

&lt;p&gt;This allows specialist agents to develop independently.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bot Mode&lt;/strong&gt; builds a more intuitive multi-agent experience on top of these persistent profiles.&lt;/p&gt;

&lt;p&gt;The key distinction from delegation is persistence:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Sub-Agent
↓
Temporary worker for a task

Bot / Profile
↓
Persistent specialist identity
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Multiple bots can also communicate with one another, allowing you to create workflows involving specialist agents.&lt;/p&gt;

&lt;p&gt;But once those workflows become complicated, messages alone aren’t enough.&lt;/p&gt;




&lt;h2&gt;
  
  
  📋 6. Kanban: Durable Multi-Agent Orchestration
&lt;/h2&gt;

&lt;p&gt;Suppose you have three persistent Hermes specialists:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Researcher
    ↓
Analyst
    ↓
Writer
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You want the researcher to collect evidence.&lt;/p&gt;

&lt;p&gt;Only after the research is finished should the analyst evaluate it.&lt;/p&gt;

&lt;p&gt;And only after the analysis is complete should the writer produce the final report.&lt;/p&gt;

&lt;p&gt;You could coordinate everything through agent messages.&lt;/p&gt;

&lt;p&gt;But what happens when the workflow introduces:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Dependencies&lt;/li&gt;
&lt;li&gt;Failures&lt;/li&gt;
&lt;li&gt;Retries&lt;/li&gt;
&lt;li&gt;Artifacts&lt;/li&gt;
&lt;li&gt;Structured handoffs&lt;/li&gt;
&lt;li&gt;Human review&lt;/li&gt;
&lt;li&gt;Work lasting hours or days&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Messages alone become fragile.&lt;/p&gt;

&lt;p&gt;That’s where Hermes Kanban becomes useful.&lt;/p&gt;

&lt;p&gt;Instead of the workflow existing only inside agent conversations, the work becomes structured, persistent task state.&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Research Topic
      ↓
Analyze Evidence
      ↓
Human Review
      ↓
Write Final Report
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If Analyze Evidence depends on Research Topic, it waits.&lt;/p&gt;

&lt;p&gt;Once the research task is completed, the dependent task can proceed.&lt;/p&gt;

&lt;p&gt;This makes Kanban useful for durable, long-running multi-agent workflows.&lt;/p&gt;

&lt;p&gt;And Kanban and delegation aren’t competing ideas.&lt;/p&gt;

&lt;p&gt;A persistent Kanban worker could own a research task and then delegate parts of that research to several temporary sub-agents.&lt;/p&gt;

&lt;p&gt;Think of it this way:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Delegation → temporary help

Bot Mode → persistent specialists

Kanban → coordination between specialists
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🧠 7. Mixture of Agents: Multi-Model Reasoning
&lt;/h2&gt;

&lt;p&gt;This is probably the easiest concept to confuse with multi-agent orchestration.&lt;/p&gt;

&lt;p&gt;Mixture of Agents (MoA) operates at the model layer.&lt;/p&gt;

&lt;p&gt;Imagine you’re solving a difficult software architecture problem.&lt;/p&gt;

&lt;p&gt;Instead of asking one LLM to immediately decide what to do, you could ask several models to independently analyze the problem.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Reference Model A ──┐
                    │
Reference Model B ──┼──→ Aggregator Model → Hermes Agent Loop
                    │
Reference Model C ──┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;One model might notice a security problem.&lt;/p&gt;

&lt;p&gt;Another might suggest a much simpler architecture.&lt;/p&gt;

&lt;p&gt;Another might identify an assumption everyone else missed.&lt;/p&gt;

&lt;p&gt;Their perspectives are then provided to an aggregator model, which becomes the model responsible for acting.&lt;/p&gt;

&lt;p&gt;This is why Mixture of Agents is better understood as a model strategy rather than a traditional multi-agent workflow.&lt;/p&gt;

&lt;p&gt;You’re not necessarily creating:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Research Agent
+
Coding Agent
+
Review Agent
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Instead, you’re giving the acting model multiple model perspectives before it makes decisions.&lt;/p&gt;

&lt;p&gt;The Hermes session, tools, and underlying agent loop can remain the same.&lt;/p&gt;

&lt;p&gt;What changes is the model strategy powering that loop.&lt;/p&gt;




&lt;h2&gt;
  
  
  🗺️ The Mental Model
&lt;/h2&gt;

&lt;p&gt;If you remember only one thing from this article, make it this:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Hermes Feature&lt;/th&gt;
&lt;th&gt;Mental Model&lt;/th&gt;
&lt;th&gt;Best For&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;🔁 &lt;strong&gt;Loop&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Repetition&lt;/td&gt;
&lt;td&gt;Repeated checks in the current session&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🎯 &lt;strong&gt;Goal&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Completion&lt;/td&gt;
&lt;td&gt;Working toward a clearly defined outcome&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;⏰ &lt;strong&gt;Cron&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Scheduling&lt;/td&gt;
&lt;td&gt;Unattended scheduled workflows&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🧩 &lt;strong&gt;Delegation&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Temporary parallelism&lt;/td&gt;
&lt;td&gt;Independent subtasks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🤖 &lt;strong&gt;Profiles / Bot Mode&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Persistent identity&lt;/td&gt;
&lt;td&gt;Long-lived specialist agents&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;📋 &lt;strong&gt;Kanban&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Durable orchestration&lt;/td&gt;
&lt;td&gt;Dependencies, handoffs, retries, and review&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🧠 &lt;strong&gt;Mixture of Agents&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Multi-model reasoning&lt;/td&gt;
&lt;td&gt;Multiple LLM perspectives on difficult problems&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The features become much easier to reason about once you stop grouping all of them under “autonomous AI agents.”&lt;/p&gt;

&lt;p&gt;They’re different primitives for controlling different dimensions of autonomy.&lt;/p&gt;




&lt;h2&gt;
  
  
  🚀 Putting It All Together
&lt;/h2&gt;

&lt;p&gt;The interesting part is that these concepts can be combined.&lt;/p&gt;

&lt;p&gt;Imagine a software development workflow where:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Cron
  ↓
Starts scheduled workflow
  ↓
Kanban coordinates persistent specialist profiles
  ↓
Research Agent delegates work to temporary sub-agents
  ↓
Architecture Agent uses Mixture of Agents
  ↓
Goal keeps implementation focused until verification passes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now you’re moving beyond a chatbot that happens to call tools.&lt;/p&gt;

&lt;p&gt;You’re designing an agentic system where scheduling, persistence, parallelism, identity, orchestration, and model reasoning are separate architectural decisions.&lt;/p&gt;

&lt;p&gt;And that distinction becomes increasingly important as AI agents become more autonomous.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>hermesagentchallenge</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Choosing an enterprise MCP gateway isn’t about the longest feature list. 👀

I compared Bifrost, Docker, Kong, Lunar MCPX &amp; Microsoft MCP Gateway across identity, security, tool governance, deployment, and failure handling.

Here’s what I found 👇</title>
      <dc:creator>Vivek Shetye</dc:creator>
      <pubDate>Mon, 31 Aug 2026 15:05:34 +0000</pubDate>
      <link>https://dev.to/vivek_shetye/choosing-an-enterprise-mcp-gateway-isnt-about-the-longest-feature-list-i-compared-bifrost-38p</link>
      <guid>https://dev.to/vivek_shetye/choosing-an-enterprise-mcp-gateway-isnt-about-the-longest-feature-list-i-compared-bifrost-38p</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/vivek_shetye/best-enterprise-mcp-gateway-for-your-ai-agents-in-2026-43hl" class="crayons-story__hidden-navigation-link"&gt;Best Enterprise MCP Gateway for Your AI Agents in 2026&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
      &lt;a href="https://dev.to/vivek_shetye/best-enterprise-mcp-gateway-for-your-ai-agents-in-2026-43hl" class="crayons-article__context-note crayons-article__context-note__feed"&gt;&lt;p&gt;Compares Bifrost to LiteLLM&lt;/p&gt;

&lt;/a&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/vivek_shetye" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3879444%2F8f338ec8-c7f4-48e9-b8cf-3898bccbb1e8.jpg" alt="vivek_shetye profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/vivek_shetye" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Vivek Shetye
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Vivek Shetye
                
                
              
              &lt;div id="story-author-preview-content-4532590" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/vivek_shetye" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3879444%2F8f338ec8-c7f4-48e9-b8cf-3898bccbb1e8.jpg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Vivek Shetye&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/vivek_shetye/best-enterprise-mcp-gateway-for-your-ai-agents-in-2026-43hl" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Aug 31&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/vivek_shetye/best-enterprise-mcp-gateway-for-your-ai-agents-in-2026-43hl" id="article-link-4532590"&gt;
          Best Enterprise MCP Gateway for Your AI Agents in 2026
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/mcp"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;mcp&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/agents"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;agents&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/llm"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;llm&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/vivek_shetye/best-enterprise-mcp-gateway-for-your-ai-agents-in-2026-43hl" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;15&lt;span class="hidden s:inline"&gt;&amp;nbsp;reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/vivek_shetye/best-enterprise-mcp-gateway-for-your-ai-agents-in-2026-43hl#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              7&lt;span class="hidden s:inline"&gt;&amp;nbsp;comments&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            10 min read
          &lt;/small&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>agents</category>
      <category>ai</category>
      <category>architecture</category>
      <category>security</category>
    </item>
  </channel>
</rss>
