<?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: LuckyOneTwoThree</title>
    <description>The latest articles on DEV Community by LuckyOneTwoThree (@luckyonetwothree).</description>
    <link>https://dev.to/luckyonetwothree</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%2F4000203%2F15adc828-4fd9-4ab1-a8ce-f63f0353ec6f.png</url>
      <title>DEV Community: LuckyOneTwoThree</title>
      <link>https://dev.to/luckyonetwothree</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/luckyonetwothree"/>
    <language>en</language>
    <item>
      <title>I applied the Unix Philosophy to AI Agents. Here’s why plain text beats API swarms.</title>
      <dc:creator>LuckyOneTwoThree</dc:creator>
      <pubDate>Thu, 25 Jun 2026 16:41:44 +0000</pubDate>
      <link>https://dev.to/luckyonetwothree/i-applied-the-unix-philosophy-to-ai-agents-heres-why-plain-text-beats-api-swarms-330m</link>
      <guid>https://dev.to/luckyonetwothree/i-applied-the-unix-philosophy-to-ai-agents-heres-why-plain-text-beats-api-swarms-330m</guid>
      <description>&lt;p&gt;Everyone loves a 10-minute demo of an AI agent building a snake game. But try to build a production-ready full-stack app, and the magic dies pretty quickly.&lt;/p&gt;

&lt;p&gt;I spent the last few months trying to scale my side projects using various AI coding tools and agent swarms. The pattern was always the same: everything is great until day three. Then the context gets too large. The agent forgets the original product spec and tries to rewrite your database schema when you just asked it to fix a CSS button. &lt;/p&gt;

&lt;p&gt;Most frameworks try to fix this by having multiple agents chat with each other over APIs (like a virtual software company). But debugging an API-driven agent conversation is a nightmare. And if the python process crashes, the agents lose all their memory state.&lt;/p&gt;

&lt;p&gt;I got fed up and decided to go back to the 1970s.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Unix Philosophy applied to LLMs
&lt;/h3&gt;

&lt;p&gt;I built an open-source framework called &lt;code&gt;harness-all&lt;/code&gt;. Instead of a massive monolithic orchestrator, I applied the Unix philosophy: &lt;em&gt;Write programs that do one thing and do it well. Write programs to work together. Write programs to handle text streams, because that is a universal interface.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I physically split my workflow into 5 isolated directories on my hard drive: PM, Design, Dev, Growth, and Ops. &lt;/p&gt;

&lt;p&gt;They do not talk over a network. They don't use vector databases. They communicate entirely via a "sneakernet" of Markdown files. &lt;/p&gt;

&lt;h3&gt;
  
  
  Markdown is the API
&lt;/h3&gt;

&lt;p&gt;Because the agents are decoupled, there is no heavy orchestration layer. The PM agent researches the market, writes a rigid PRD, and dumps it into a &lt;code&gt;docs/handoff/pm-to-solo.md&lt;/code&gt; file. &lt;/p&gt;

&lt;p&gt;I take two minutes to review that file (human-in-the-loop). If it looks good, the Dev agent picks it up and starts coding. Markdown is literally the API. &lt;/p&gt;

&lt;p&gt;You can use the PM agent standalone to just generate specs. Or you can chain them all together with a simple bash script to fully automate building a feature from idea to deployed code.&lt;/p&gt;

&lt;h3&gt;
  
  
  Forcing Honesty with an Evidence-Based Loop
&lt;/h3&gt;

&lt;p&gt;The biggest remaining issue was that AI agents lie. They write a piece of code, don't run it, and confidently tell you "I fixed the bug!".&lt;/p&gt;

&lt;p&gt;To fix this, I hardcoded a state machine using a simple &lt;code&gt;state.yaml&lt;/code&gt; file. The Dev agent is structurally forbidden from marking a task as "done" unless it physically runs a bash test and pipes the successful stdout into an &lt;code&gt;evidence.md&lt;/code&gt; file. No evidence, no merge.&lt;/p&gt;

&lt;p&gt;If the test fails, it logs the error in the yaml state and retries. &lt;/p&gt;

&lt;p&gt;Because the entire memory state is serialized to a local file, if my laptop dies on Friday, the agent simply reads the yaml on Monday reboot and resumes the exact same debug loop. &lt;/p&gt;

&lt;h3&gt;
  
  
  Moving away from the hype
&lt;/h3&gt;

&lt;p&gt;I built this so I could stop typing code and start acting as the reviewer for my own local AI studio. &lt;/p&gt;

&lt;p&gt;The repo is fully open-source (MIT) here: &lt;br&gt;
&lt;em&gt;&lt;a href="https://github.com/LuckyOneTwoThree/harness-all" rel="noopener noreferrer"&gt;https://github.com/LuckyOneTwoThree/harness-all&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I'm really curious how other indie devs are handling context bloat. Has anyone else moved away from heavy API orchestrators back to raw file I/O to keep their projects stable? Let me know.&lt;/p&gt;

</description>
      <category>agents</category>
      <category>ai</category>
      <category>architecture</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>Stop Using One AI Agent for Everything. I Built a Contract-Driven Multi-Agent Architecture.</title>
      <dc:creator>LuckyOneTwoThree</dc:creator>
      <pubDate>Wed, 24 Jun 2026 12:15:00 +0000</pubDate>
      <link>https://dev.to/luckyonetwothree/stop-using-one-ai-agent-for-everything-i-built-a-contract-driven-multi-agent-architecture-3il0</link>
      <guid>https://dev.to/luckyonetwothree/stop-using-one-ai-agent-for-everything-i-built-a-contract-driven-multi-agent-architecture-3il0</guid>
      <description>&lt;p&gt;&lt;strong&gt;github：&lt;a href="https://github.com/LuckyOneTwoThree/harness-all" rel="noopener noreferrer"&gt;https://github.com/LuckyOneTwoThree/harness-all&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;



&lt;p&gt;If you've been building apps with AI coding assistants (like Cursor, Claude, or custom LangChain setups), you've probably experienced the &lt;strong&gt;"Context Explosion"&lt;/strong&gt; phenomenon.&lt;/p&gt;

&lt;p&gt;You start a project. You tell the AI to act as a Product Manager and write a spec. Then you tell it to act as a Designer to pick colors. Then you ask it to write the backend in Go and the frontend in React.&lt;/p&gt;

&lt;p&gt;By day 3, the AI is a mess. It forgets the initial Acceptance Criteria (AC). It hallucinates React components inside your Go server. It tries to fix a CSS bug and accidentally deletes your database connection logic. &lt;/p&gt;

&lt;p&gt;We are forcing AIs to be omnipotent "full-stack gods" in a single context window. In the real world, human teams don't work like this. We have physical isolation and separation of concerns.&lt;/p&gt;

&lt;p&gt;So, I decided to build an architecture that mimics how real remote teams work. I open-sourced it, and I call it &lt;strong&gt;&lt;code&gt;harness-all&lt;/code&gt;&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  🛠 What is &lt;code&gt;harness-all&lt;/code&gt;?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;github：&lt;a href="https://github.com/LuckyOneTwoThree/harness-all" rel="noopener noreferrer"&gt;https://github.com/LuckyOneTwoThree/harness-all&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fas921ili8c5drfjx3cer.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fas921ili8c5drfjx3cer.png" alt=" " width="799" height="366"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;harness-all&lt;/code&gt; is not a heavy Python SDK or an API wrapper. It is a &lt;strong&gt;file-based, contract-driven Multi-Agent framework family&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;Instead of putting all prompts in one giant system prompt, I split the AI's "brain" into 5 physically isolated workspaces:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;🎯 &lt;strong&gt;harness-pm&lt;/strong&gt;: Writes PRDs, tracks metrics, and defines strict Acceptance Criteria.&lt;/li&gt;
&lt;li&gt;🎨 &lt;strong&gt;harness-design&lt;/strong&gt;: Consumes PRDs and generates Design Systems and Component Maps.&lt;/li&gt;
&lt;li&gt;💻 &lt;strong&gt;harness-solo&lt;/strong&gt;: The Developer. Strictly follows TDD and ingests the component maps to write code.&lt;/li&gt;
&lt;li&gt;🚀 &lt;strong&gt;harness-growth&lt;/strong&gt;: Handles SEO, funnel events, and marketing copy.&lt;/li&gt;
&lt;li&gt;🛡️ &lt;strong&gt;harness-ops&lt;/strong&gt;: Handles IaC, deployment, and security.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;They &lt;strong&gt;do not&lt;/strong&gt; talk to each other via live APIs. They communicate exactly like we do: &lt;strong&gt;Through Markdown Handoff Documents.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🧠 The 3 Core Architectural Decisions
&lt;/h2&gt;

&lt;p&gt;I wanted to share the technical decisions behind this framework, as I think this pattern solves 90% of current AI agent hallucination issues.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. The "Sneakernet" Contract Handoff
&lt;/h3&gt;

&lt;p&gt;When the PM agent finishes a spec, it generates a file called &lt;code&gt;docs/handoff/pm-to-solo.md&lt;/code&gt;. &lt;br&gt;
The Solo (Dev) agent reads this file. It doesn't know &lt;em&gt;how&lt;/em&gt; the PM arrived at these decisions, it only sees the strict ACs. &lt;/p&gt;

&lt;p&gt;By isolating the context, the Dev agent doesn't waste its precious LLM context window on user research or marketing personas. It only sees pure engineering requirements. If the Dev agent finds an ambiguity, it pauses and we generate a "Ticket" back to the PM. &lt;/p&gt;

&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fb0sk9ga1xamcick0vo3y.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fb0sk9ga1xamcick0vo3y.png" alt=" " width="800" height="558"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  2. Explicit State Machine (&lt;code&gt;state.yaml&lt;/code&gt;) over Implicit RAM
&lt;/h3&gt;

&lt;p&gt;Most AI tools rely on vector databases or hidden conversational memory to remember what they were doing. This is a black box.&lt;/p&gt;

&lt;p&gt;In &lt;code&gt;harness-all&lt;/code&gt;, memory is an explicit &lt;strong&gt;State Machine&lt;/strong&gt; stored on your hard drive.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# .harness/loops/specs/001-user-login/state.yaml&lt;/span&gt;
&lt;span class="na"&gt;current_task&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;001-user-login&lt;/span&gt;
&lt;span class="na"&gt;iteration&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;3&lt;/span&gt;
&lt;span class="na"&gt;stage&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;verify&lt;/span&gt;
&lt;span class="na"&gt;status&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;retrying&lt;/span&gt;
&lt;span class="na"&gt;last_error&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;test_auth.py::test_login_empty_password&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;FAILED"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you close your IDE on Friday and open it on Monday, the AI reads &lt;code&gt;state.yaml&lt;/code&gt; and instantly resumes at "Iteration 3, fixing a failed password test." You have 100% read/write access to the AI's memory.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. The Evidence-Based LOOP Engine
&lt;/h3&gt;

&lt;p&gt;AI is notoriously lazy. It will write a test, see it fail, and tell you "I fixed it!" without actually running it.&lt;/p&gt;

&lt;p&gt;I built a strict LOOP engine (&lt;code&gt;Plan → Act → Verify&lt;/code&gt;). Before the AI can change a task status to &lt;code&gt;done&lt;/code&gt;, it is &lt;strong&gt;forced&lt;/strong&gt; by its constitutional rules to run the bash test command, capture the standard output, and write it to an &lt;code&gt;evidence.md&lt;/code&gt; file. No evidence, no merge.&lt;/p&gt;




&lt;h2&gt;
  
  
  🤝 Looking for Feedback
&lt;/h2&gt;

&lt;p&gt;I originally built this just to help me launch my own indie SaaS projects without losing my sanity. But as the architecture matured, I realized this "Contract-Driven, File-Based" approach is incredibly stable for LLMs.&lt;/p&gt;

&lt;p&gt;It’s completely open-source (MIT License) and operates entirely locally within your project directories. &lt;/p&gt;

&lt;p&gt;I would love for the Dev.to community to tear it apart, critique the architecture, or try it out for your next side project. &lt;/p&gt;

&lt;p&gt;Let me know what you think in the comments! What is the biggest issue you face when using AI agents for large projects?&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href="https://github.com/LuckyOneTwoThree/harness-all" rel="noopener noreferrer"&gt;https://github.com/LuckyOneTwoThree/harness-all&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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