<?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: Luiz Gustavo Rodrigues</title>
    <description>The latest articles on DEV Community by Luiz Gustavo Rodrigues (@luiz_gustavorodrigues_33).</description>
    <link>https://dev.to/luiz_gustavorodrigues_33</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%2F1886205%2F39fca4cd-298a-4cc8-959a-f98eed6a5e29.jpg</url>
      <title>DEV Community: Luiz Gustavo Rodrigues</title>
      <link>https://dev.to/luiz_gustavorodrigues_33</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/luiz_gustavorodrigues_33"/>
    <language>en</language>
    <item>
      <title>How I turned a terminal agent into an orchestrator of AI companies: architecture and tradeoffs</title>
      <dc:creator>Luiz Gustavo Rodrigues</dc:creator>
      <pubDate>Fri, 24 Jul 2026 07:30:39 +0000</pubDate>
      <link>https://dev.to/luiz_gustavorodrigues_33/how-i-turned-a-terminal-agent-into-an-orchestrator-of-ai-companies-architecture-and-tradeoffs-210i</link>
      <guid>https://dev.to/luiz_gustavorodrigues_33/how-i-turned-a-terminal-agent-into-an-orchestrator-of-ai-companies-architecture-and-tradeoffs-210i</guid>
      <description>&lt;p&gt;For a year my unofficial job title was message bus. I ran sub-agents from my terminal, copied outputs, pasted them into the next prompt, and hoped nothing drifted along the way. The agent was never the bottleneck; the organization around it didn't exist. This is the build log of Nirvana-OS, the engine I wrote to fix that: what I designed, what I traded away, and what is still rough in beta. I built it and maintain it, and I'll flag every limitation I know about.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem: artisanal orchestration
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Pasted prompts as the transport layer between sub-agents&lt;/li&gt;
&lt;li&gt;Zero reproducibility: the same pipeline never runs the same way twice&lt;/li&gt;
&lt;li&gt;Token burn visible only on the invoice, never per step&lt;/li&gt;
&lt;li&gt;The five-hour reset arriving mid-pipeline with nothing resumable&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Design bet: prose in, receipt out
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;The only input is an order in natural language; no DSL, no dashboard&lt;/li&gt;
&lt;li&gt;The only trustworthy output is an append-only audit trail&lt;/li&gt;
&lt;li&gt;Three guarantees enforced by design: Traceable, Tested, Contracted&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Three registries: companies, squads, mind-clones
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Companies: org charts written in natural language (a folder of roles, not a process)&lt;/li&gt;
&lt;li&gt;Squads: portable, file-defined workflows; shareable and versionable&lt;/li&gt;
&lt;li&gt;Mind-clones: 5-layer persona files (philosophies, mental models, heuristics, frameworks, methodologies) so a role carries method, not a one-liner&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Compiling a squad into a DAG with quality gates
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Squad file format and how it compiles to nodes and edges&lt;/li&gt;
&lt;li&gt;Gate types: schema validation and acceptance checklists&lt;/li&gt;
&lt;li&gt;Fail-loud behavior: a failed gate blocks downstream and redispatches upstream with failure notes&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The audit trail: append-only or it didn't happen
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Why the log is never rewritten, even on failure&lt;/li&gt;
&lt;li&gt;Anatomy of a receipt: dispatches, gate results, artifact paths, per-step token cost&lt;/li&gt;
&lt;li&gt;Real receipt excerpt from a full run (pasted as text, not a screenshot)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Runtime-agnostic by adapter
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;The engine drives Claude Code, Codex, or Gemini-CLI instead of shipping a model loop&lt;/li&gt;
&lt;li&gt;What an adapter has to implement&lt;/li&gt;
&lt;li&gt;Honest mileage report: Claude Code is the best-tested runtime by far&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Licensing: source-available, said with a straight face
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;SUL v1.0: free to read, run, and modify for your own use; specific commercial uses need a license&lt;/li&gt;
&lt;li&gt;Not OSI-approved, and the README says so; why I chose it over MIT (a paid content pack funds the engine)&lt;/li&gt;
&lt;li&gt;Lesson: stating the license category up front beats being corrected in the comments&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What's still broken in beta
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;v0.1.57, 21 releases, 41 stars: early, and priced into every claim here&lt;/li&gt;
&lt;li&gt;The receipt reports cost after the run; it doesn't predict it&lt;/li&gt;
&lt;li&gt;Conservative concurrency cap, because sub-agent fan-out multiplies spend&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Closing
&lt;/h2&gt;

&lt;p&gt;The bet underneath all of this is small and testable: an agent you already pay for can run an organization defined entirely as files, if every step is gated and every run leaves a receipt. Beta v0.1.57 is where that bet stands today: 21 releases in, free to use, source published under SUL v1.0, best tested on Claude Code. If you install it and a receipt ever fails to explain a run, that's a bug. File it, and I'll fix it in the open: &lt;a href="https://github.com/gutomec/nirvana-os-engine" rel="noopener noreferrer"&gt;https://github.com/gutomec/nirvana-os-engine&lt;/a&gt;&lt;/p&gt;

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