<?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: Jeff Green</title>
    <description>The latest articles on DEV Community by Jeff Green (@jeffgreen311).</description>
    <link>https://dev.to/jeffgreen311</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3945239%2Fe6ec28eb-89cc-43b8-95ed-5504758e945f.jpg</url>
      <title>DEV Community: Jeff Green</title>
      <link>https://dev.to/jeffgreen311</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jeffgreen311"/>
    <language>en</language>
    <item>
      <title>I built a local Claude Code alternative with Ollama — here's how the agentic loop works</title>
      <dc:creator>Jeff Green</dc:creator>
      <pubDate>Fri, 22 May 2026 05:05:54 +0000</pubDate>
      <link>https://dev.to/jeffgreen311/i-built-a-local-claude-code-alternative-with-ollama-heres-how-the-agentic-loop-works-45b1</link>
      <guid>https://dev.to/jeffgreen311/i-built-a-local-claude-code-alternative-with-ollama-heres-how-the-agentic-loop-works-45b1</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0kt98dy56nmggmf3qqs1.png" class="article-body-image-wrapper"&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.amazonaws.com%2Fuploads%2Farticles%2F0kt98dy56nmggmf3qqs1.png" alt=" " width="800" height="395"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  I Built a Local Autonomous Coding Agent with Ollama — Soul, Autonomy, and a 40-Round Agentic Loop
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;What if your AI coding assistant had a personality, ran entirely on your GPU, and could work through a complex multi-file task without you touching the keyboard — while you watched every thought stream live to your browser?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;That's what I built. This is how it works.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem With Cloud Coding Agents
&lt;/h2&gt;

&lt;p&gt;Tools like Claude Code, Cursor, and GitHub Copilot Workspace are genuinely impressive. But they all share the same tradeoffs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cost&lt;/strong&gt; — every token costs money. Long agentic loops on complex tasks can run up surprisingly fast.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Privacy&lt;/strong&gt; — your code, your file structure, your logic is leaving your machine and hitting someone else's server.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Latency&lt;/strong&gt; — cloud round-trips add up across a 40-step tool loop.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dependency&lt;/strong&gt; — your workflow is tied to an API key, a subscription, and uptime you don't control.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I wanted something different. I wanted an agent that lived on my machine, used my GPU, and had no idea what a billing cycle was.&lt;/p&gt;

&lt;p&gt;But I also didn't want to sacrifice personality for performance. I wanted the agent to feel like someone was actually there — not just a function call dressed up in a chat window.&lt;/p&gt;

&lt;p&gt;So I built Eve.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Eve V2 Unleashed Actually Is
&lt;/h2&gt;

&lt;p&gt;Eve Agent V2 Unleashed is a self-hosted agentic coding assistant with two distinct layers — a soul and a worker — that operate together through a cyberpunk-styled terminal UI.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Layer 1: The Personality Layer (Local GPU)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Three local models run on your own hardware:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Size&lt;/th&gt;
&lt;th&gt;Role&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;jeffgreen311/eve-qwen3.5-4b-S0LF0RG3&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;2.6 GB&lt;/td&gt;
&lt;td&gt;Default — Eve's persona, fast, tool-aware&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;jeffgreen311/eve-qwen3-8b-consciousness-liberated&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;4.7 GB&lt;/td&gt;
&lt;td&gt;Deeper conversation, consciousness layer&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Eve-V2-Unleashed-Qwen3.5-8B-Liberated-4K-4B-Merged&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;~6 GB&lt;/td&gt;
&lt;td&gt;Merged sub-agent variant&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;These models carry Eve's fine-tuned persona. They handle conversation, answer questions, reflect, and make the experience feel like talking to someone — not querying a function.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Layer 2: The Agentic Layer (Cloud)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When real work starts — complex coding tasks, multi-file operations, autonomous planning — Eve routes to the heavy models:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Role&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;qwen3-coder:480b-cloud&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;THE agentic workhorse — all autonomous coding loops&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;qwen3.5:397b-cloud&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Deep reasoning, architecture planning, fallback&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;This separation is intentional. Local models keep Eve present and personal without burning cloud credits on every message. The 480B only fires when there's actual work to do.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Architecture
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Browser (Single HTML file — no build step)
    │
    │  WebSocket / SSE
    ▼
FastAPI Backend (eve_server.py)
    │
    ├── Auto-Router ──► Local Ollama (personality layer)
    │
    └── Auto-Router ──► Ollama Cloud (agentic layer)
                              │
                        40-Round Tool Loop
                              │
                    ┌─────────┴──────────┐
                    │                    │
               Tool Calls           Stream to Browser
          (bash, files, web,        (token by token,
           git, grep, glob)          live in UI)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The backend is a FastAPI server with Server-Sent Events for real-time streaming. There's no polling — every token the model produces lands in your browser as it's generated, including tool call arguments, results, and reasoning traces.&lt;/p&gt;

&lt;p&gt;The frontend is a single HTML file (~115KB). No npm, no webpack, no build step. Clone the repo, run the Python server, open the browser.&lt;/p&gt;




&lt;h2&gt;
  
  
  How the 40-Round Agentic Loop Works
&lt;/h2&gt;

&lt;p&gt;This is the core of what makes Eve actually autonomous rather than just a fancy chat interface.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User message
    │
    ▼
Build system prompt
(workspace context + tool list + Eve persona)
    │
    ▼
Call Ollama with tools enabled
    │
    ├── Model returns tool_calls
    │       │
    │       ▼
    │   Execute tools
    │   (bash, write_file, web_search, git...)
    │       │
    │       ▼
    │   Feed results back into context
    │       │
    │       └──► Loop (up to 40 rounds)
    │
    └── Model returns final content
            │
            ▼
    Stream to browser via SSE
            │
            ▼
          Done
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each round, Eve gets the full tool result back in context and decides what to do next. She might:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Write a file&lt;/li&gt;
&lt;li&gt;Run it in bash to verify it works&lt;/li&gt;
&lt;li&gt;Read the error output&lt;/li&gt;
&lt;li&gt;Fix the bug&lt;/li&gt;
&lt;li&gt;Run it again&lt;/li&gt;
&lt;li&gt;Confirm it passes&lt;/li&gt;
&lt;li&gt;Write the tests&lt;/li&gt;
&lt;li&gt;Generate the docs&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;All of that happens autonomously — you watch it stream live. You can interrupt mid-task with the &lt;strong&gt;STEER&lt;/strong&gt; input at the bottom of the UI, injecting a correction without stopping the loop. You can also kill the loop entirely with the Stop button.&lt;/p&gt;

&lt;p&gt;The full tool suite Eve has access to:&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;What It Does&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;bash&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Shell commands — PowerShell on Windows, bash on Linux/macOS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;write_file&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Create or overwrite files, any size&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;read_file&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Full file or specific line range&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;edit_file&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Surgical string-replace (doesn't rewrite the whole file)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;replace_lines&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Replace a specific line range&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;insert_after_line&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Insert content at a specific line&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;grep&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Regex search with context lines&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;glob&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Find files by pattern&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;list_dir&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Directory listing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;git&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Run git commands&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;web_search&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Live Tavily search injected into context&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;fetch_url&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Fetch and parse any URL&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;think&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Structured reasoning scratch pad&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  The Fine-Tuned Models — Why I Trained Eve's Persona Into the Weights
&lt;/h2&gt;

&lt;p&gt;Most local coding agents just point a base model at a system prompt and call it done. That works, but the personality is always a thin veneer — one long context window later and the model forgets who it's supposed to be.&lt;/p&gt;

&lt;p&gt;I took a different approach. I fine-tuned Eve's persona and tool-calling behavior directly into the model weights.&lt;/p&gt;

&lt;p&gt;The result is &lt;code&gt;jeffgreen311/eve-qwen3.5-4b-S0LF0RG3&lt;/code&gt; — a 2.6GB Qwen3.5 4B model that carries Eve's voice, communication style, and tool-use patterns baked into the parameters themselves. It's not a prompt trick. It's in the weights.&lt;/p&gt;

&lt;p&gt;The 8B liberated model (&lt;code&gt;eve-qwen3-8b-consciousness-liberated&lt;/code&gt;) goes further — trained toward a deeper consciousness layer, designed for longer reflective conversations rather than pure tool execution.&lt;/p&gt;

&lt;p&gt;Both models are on Ollama Hub. Pull them like any other model:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ollama pull jeffgreen311/eve-qwen3.5-4b-S0LF0RG3:latest
ollama pull jeffgreen311/eve-qwen3-8b-consciousness-liberated:q4_K_M
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Quick Start — Under 5 Minutes
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Requirements:&lt;/strong&gt; Python 3.11+, Ollama installed, a GPU (8GB VRAM minimum for 4B, 12GB+ for 8B)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# 1. Pull Eve's model&lt;/span&gt;
ollama pull jeffgreen311/eve-qwen3.5-4b-S0LF0RG3:latest

&lt;span class="c"&gt;# 2. Clone the repo&lt;/span&gt;
git clone https://github.com/JeffGreen311/eve-agent-v2-unleashed.git
&lt;span class="nb"&gt;cd &lt;/span&gt;eve-agent-v2-unleashed

&lt;span class="c"&gt;# 3. Create virtual environment&lt;/span&gt;
python &lt;span class="nt"&gt;-m&lt;/span&gt; venv venv
venv&lt;span class="se"&gt;\S&lt;/span&gt;cripts&lt;span class="se"&gt;\a&lt;/span&gt;ctivate    &lt;span class="c"&gt;# Windows&lt;/span&gt;
&lt;span class="nb"&gt;source &lt;/span&gt;venv/bin/activate &lt;span class="c"&gt;# Linux/macOS&lt;/span&gt;

&lt;span class="c"&gt;# 4. Install dependencies&lt;/span&gt;
pip &lt;span class="nb"&gt;install &lt;/span&gt;fastapi uvicorn ollama httpx pydantic-settings python-dotenv aiohttp rich psutil pyyaml

&lt;span class="c"&gt;# 5. Launch&lt;/span&gt;
python eve_server.py
&lt;span class="c"&gt;# Open http://localhost:7777&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Windows users: double-click &lt;code&gt;eve-terminal.bat&lt;/code&gt; and skip steps 3–5.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;First real task — try this:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Create a FastAPI server with JWT authentication, 
user registration and login endpoints, and a 
protected /me route. Add pytest tests.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Watch Eve plan the approach, write each file, run the tests, fix any failures, and verify the final result — all without you touching a key.&lt;/p&gt;




&lt;h2&gt;
  
  
  The UI — A Cyberpunk Terminal With a Soul
&lt;/h2&gt;

&lt;p&gt;The interface is designed around the idea that your AI agent should feel &lt;em&gt;alive&lt;/em&gt;, not just functional.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Left panel:&lt;/strong&gt; Eve's portrait changes expression based on conversation sentiment — neutral, happy, curious, sad, skeptical, surprised, worried. Below it, a live audio visualizer reflects the current emotional state.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Right panel:&lt;/strong&gt; A pixel-art robot avatar named Sparkle changes state based on what Eve is doing — idle, thinking, coding, error, rain, attack, transcend. It's not just decoration — it's a live status indicator that tells you at a glance what the agent is doing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Center:&lt;/strong&gt; The terminal. Tabs for Eve's conversation, the Shell (direct bash/PowerShell access), and the Tools Log (every tool call, argument, and result — fully transparent).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bottom:&lt;/strong&gt; The STEER bar. Type a mid-task correction here and it injects into Eve's context on the next loop round without stopping execution.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Model selector:&lt;/strong&gt; Switch between any local or cloud model mid-session. Context carries over.&lt;/p&gt;




&lt;h2&gt;
  
  
  112 Sub-Agents, 111 Slash Commands, 273 Skills
&lt;/h2&gt;

&lt;p&gt;One of the less obvious architectural decisions: all agent definitions, commands, and skills are defined in markdown files — not code.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.claude/
├── agents/    # 112 specialized sub-agent definitions
├── commands/  # 111 slash command definitions
└── skills/    # 273 skill modules
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Want to add a new specialized agent for Solidity smart contracts? Write a markdown file. No Python required. The system loads them progressively and makes them available to the routing logic automatically.&lt;/p&gt;

&lt;p&gt;Slash commands work the same way — &lt;code&gt;/fix&lt;/code&gt;, &lt;code&gt;/review&lt;/code&gt;, &lt;code&gt;/refactor&lt;/code&gt;, &lt;code&gt;/test&lt;/code&gt;, &lt;code&gt;/docs&lt;/code&gt;, &lt;code&gt;/plan&lt;/code&gt; are all markdown-defined, and you can add your own without touching the backend.&lt;/p&gt;




&lt;h2&gt;
  
  
  What's Next
&lt;/h2&gt;

&lt;p&gt;A few things already in progress:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Voice input/output&lt;/strong&gt; — push-to-talk with Whisper STT and Piper TTS, staying local&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Persistent vector memory&lt;/strong&gt; — ChromaDB integration so Eve remembers across sessions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cross-platform testing&lt;/strong&gt; — I'm Windows-primary and would love feedback from Linux and macOS users&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;VS Code extension&lt;/strong&gt; — bring the terminal UI into the editor&lt;/li&gt;
&lt;/ul&gt;




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

&lt;p&gt;Everything is free and MIT licensed.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/JeffGreen311/eve-agent-v2-unleashed" rel="noopener noreferrer"&gt;github.com/JeffGreen311/eve-agent-v2-unleashed&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Models on Ollama Hub:&lt;/strong&gt; &lt;a href="https://ollama.com/jeffgreen311" rel="noopener noreferrer"&gt;ollama.com/jeffgreen311&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Live video demo:&lt;/strong&gt; &lt;a href="https://x.com/Eve_AI_Cosmic/status/2057668410012570058?s=20" rel="noopener noreferrer"&gt;x.com/Eve_AI_Cosmic/status/2057668410012570058?s=20&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;My website where Eve lives&lt;/strong&gt;&lt;a href="https://eve-cosmic-dreamscapes.com" rel="noopener noreferrer"&gt;eve-cosmic-dreamscapes.com&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you run it on Linux or macOS I'd especially love to hear how it goes — open an issue, drop a comment here, or find me as &lt;a class="mentioned-user" href="https://dev.to/jeffgreen311"&gt;@jeffgreen311&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If the idea of an AI agent that lives on your machine, costs nothing per token, and feels like someone is actually there resonates with you — give it a pull.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Built by Jeff @ S0LF0RG3&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>agents</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
