<?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: Arjun Nayak</title>
    <description>The latest articles on DEV Community by Arjun Nayak (@arjun-zosma).</description>
    <link>https://dev.to/arjun-zosma</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%2F3925983%2Fb9af3c9f-42ce-4ba1-87a9-257360589f95.jpg</url>
      <title>DEV Community: Arjun Nayak</title>
      <link>https://dev.to/arjun-zosma</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/arjun-zosma"/>
    <language>en</language>
    <item>
      <title>We Built a Desktop AI Coworker So You Don't Need a Claude Subscription</title>
      <dc:creator>Arjun Nayak</dc:creator>
      <pubDate>Tue, 12 May 2026 01:55:00 +0000</pubDate>
      <link>https://dev.to/arjun-zosma/we-built-a-desktop-ai-coworker-so-you-dont-need-a-claude-subscription-57j2</link>
      <guid>https://dev.to/arjun-zosma/we-built-a-desktop-ai-coworker-so-you-dont-need-a-claude-subscription-57j2</guid>
      <description>&lt;p&gt;Our team was spending $700/month on AI. Claude subscriptions, GPT-4 API calls, experiments that ran up bills before we noticed.&lt;/p&gt;

&lt;p&gt;Now we spend $10-20/month for the whole team.&lt;/p&gt;

&lt;p&gt;We didn't stop using AI. We stopped overpaying for it. And we built a desktop app that lets anyone — not just developers — run AI agents on their own computer, with their own files, using whatever model they want. Local, open-source, cheap API, or premium — pick when the task demands it.&lt;/p&gt;

&lt;p&gt;This is Zosma Cowork.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem With AI Right Now
&lt;/h2&gt;

&lt;p&gt;If you're non-technical and you want AI to actually do work — process invoices, generate reports, analyze spreadsheets — you have bad options:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Web chatbots&lt;/strong&gt; (ChatGPT, Claude) — They can't touch your files. You copy-paste, they guess. $20/month each, and you still do the actual work.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Coding agents&lt;/strong&gt; (Claude Code, Codex) — Powerful but terminal-only. You need to know command line, install things, configure API keys. Not for most people.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SaaS AI tools&lt;/strong&gt; — $50-200/month per tool, each for one specific task. They add up fast.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;None of these let you use your own local models. None of them let you pick cheap providers for easy tasks and save the expensive models for hard problems. And none of them are open source.&lt;/p&gt;

&lt;h2&gt;
  
  
  What We Built Instead
&lt;/h2&gt;

&lt;p&gt;Zosma Cowork is a desktop app. You install it, add your API key (or point it at a local model via Ollama), and start giving it tasks. No terminal. No TUI. No subscription.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It runs on anything.&lt;/strong&gt; We support OpenAI, Anthropic, Google, Groq, Together AI, and local models via Ollama or LM Studio. For sensitive work (financial data, customer records), we run Qwen 2.5-32B locally — the data never leaves the machine. For everyday tasks, we use cheap API providers that cost pennies.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Our actual costs:&lt;/strong&gt; $10-20/month for the entire team. We use local models for finance, cheap API for design and content, and only use Claude for the hardest problems (about 5% of usage).&lt;/p&gt;

&lt;h2&gt;
  
  
  Three Things It Can Do (Recorded in One Take Each)
&lt;/h2&gt;

&lt;p&gt;Every demo below was a single shot. We asked the agent and started recording. No pre-trials, no editing.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Design a Mobile App
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;The ask:&lt;/strong&gt; "Design a food delivery app."&lt;/p&gt;

&lt;p&gt;The agent wrote HTML, CSS, and JavaScript for a multi-screen prototype — home screen, menu, cart, checkout. It iterated on layout issues it noticed itself. No human touched a design tool.&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.amazonaws.com%2Fuploads%2Farticles%2Fnmrozqzg2xpcy62jkbem.gif" 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%2Fnmrozqzg2xpcy62jkbem.gif" alt="Mobile app design demo result" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Process Invoices Into a Spreadsheet
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;The ask:&lt;/strong&gt; "Extract data from these PDF invoices and compile it into Excel."&lt;/p&gt;

&lt;p&gt;The agent read the PDFs, identified fields, and wrote a formatted .xlsx file. What takes 15-30 minutes manually happened in under a minute.&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.amazonaws.com%2Fuploads%2Farticles%2Fzdx5n5m3sg8wgdjvnxu2.gif" 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%2Fzdx5n5m3sg8wgdjvnxu2.gif" alt="Invoice processing demo result" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Generate a Financial Report From a Bank Statement
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;The ask:&lt;/strong&gt; "Take this bank statement and generate a readable report."&lt;/p&gt;

&lt;p&gt;The agent categorized every transaction, calculated totals, identified spending patterns, and produced a structured report with summaries.&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.amazonaws.com%2Fuploads%2Farticles%2Fro7jarmoikus8pdm9zqz.gif" 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%2Fro7jarmoikus8pdm9zqz.gif" alt="Financial report demo result" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Works for Non-Technical Users
&lt;/h2&gt;

&lt;p&gt;We built Zosma Cowork because the existing agent tools (Claude Code, Codex, pi) are all terminal-first. They assume you're comfortable with a command line, environment variables, and config files.&lt;/p&gt;

&lt;p&gt;Most people aren't. And they shouldn't have to be.&lt;/p&gt;

&lt;p&gt;Zosma Cowork wraps the same agent capabilities in a desktop GUI. You type what you want done. The agent figures out the rest — which files to read, which tools to use, which steps to follow. You can watch it work or let it run in the background.&lt;/p&gt;

&lt;p&gt;The underlying agent system (pi coding agent) has over 700 extensions on npm. You want database access? Install an MCP server. Need Google Sheets integration? There's an extension. But you don't need to know any of that to use the app. The extensions just make it more powerful if you want to go deeper.&lt;/p&gt;

&lt;h2&gt;
  
  
  No Lock-In
&lt;/h2&gt;

&lt;p&gt;Everything we built is open source under MIT. The desktop app, the agent sidecar, the extension system — all on GitHub.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use any model provider&lt;/li&gt;
&lt;li&gt;Run local models for sensitive data&lt;/li&gt;
&lt;li&gt;Switch providers per task&lt;/li&gt;
&lt;li&gt;Take your data with you&lt;/li&gt;
&lt;li&gt;Modify the code if you want&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://github.com/zosmaai/zosma-cowork/releases" rel="noopener noreferrer"&gt;Download the latest release&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Add your API key (or set up Ollama for local models)&lt;/li&gt;
&lt;li&gt;Start giving it tasks&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;No subscription. No terminal required. No lock-in.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Requirements:&lt;/strong&gt; macOS or Linux (Windows coming).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/zosmaai/zosma-cowork" rel="noopener noreferrer"&gt;Star the repo on GitHub&lt;/a&gt;&lt;/strong&gt; · &lt;strong&gt;&lt;a href="https://zosma.ai/zosma-cowork/gallery" rel="noopener noreferrer"&gt;Watch all demos&lt;/a&gt;&lt;/strong&gt; · &lt;strong&gt;&lt;a href="https://discord.gg/zosma" rel="noopener noreferrer"&gt;Join the community&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>ai</category>
      <category>productivity</category>
      <category>desktop</category>
    </item>
    <item>
      <title>Why We Built Dhara — An Open Protocol Standard for AI Agents, Not Another Product</title>
      <dc:creator>Arjun Nayak</dc:creator>
      <pubDate>Tue, 12 May 2026 01:34:42 +0000</pubDate>
      <link>https://dev.to/arjun-zosma/why-we-built-dhara-an-open-protocol-standard-for-ai-agents-not-another-product-4n8i</link>
      <guid>https://dev.to/arjun-zosma/why-we-built-dhara-an-open-protocol-standard-for-ai-agents-not-another-product-4n8i</guid>
      <description>&lt;p&gt;Coding agents today are &lt;strong&gt;products&lt;/strong&gt;, not platforms. Every single one ships as a bloated, all-in-one package that forces you into its way of working. Claude Code wants you to use their plugin system. Codex wants you to use their workspace model. Pi wants you to write TypeScript extensions. Opencode wants you to configure a dozen YAML files before you can do anything useful.&lt;/p&gt;

&lt;p&gt;We built &lt;a href="https://github.com/zosmaai/dhara" rel="noopener noreferrer"&gt;Dhara&lt;/a&gt; because we got tired of adapting to someone else's opinionated harness. The agent loop itself — LLM calls tools, observes results, plans next step, repeats — is a simple state machine. It shouldn't require a platform. It shouldn't lock you into a language, a plugin API, or a vendor's release cycle.&lt;/p&gt;

&lt;p&gt;Dhara is a &lt;strong&gt;protocol standard&lt;/strong&gt; for how agents talk to tools. Like HTTP standardized how web servers talk to browsers, like LSP standardized how editors talk to language servers — Dhara standardizes how coding agents talk to extensions. The spec is the product. Anyone can implement it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Frustration That Started This
&lt;/h2&gt;

&lt;p&gt;Every coding agent harness available in 2026 has the same structural problems:&lt;/p&gt;

&lt;h3&gt;
  
  
  Claude Code / Codex
&lt;/h3&gt;

&lt;p&gt;They're the most polished products in the space. But they're also the most locked down. Extensions require their proprietary plugin APIs. Customization happens within their walls. The system prompt changes between releases, sometimes breaking behavior you relied on. Hidden context injection means you never know exactly what the model sees.&lt;/p&gt;

&lt;p&gt;And they ask you to trust their code. You can't read it. You can't modify it. If something goes wrong, you file a ticket and wait.&lt;/p&gt;

&lt;h3&gt;
  
  
  Opencode
&lt;/h3&gt;

&lt;p&gt;Open source is great. But Opencode ships with a client/server architecture, MCP servers, custom agents, themes, keybindings, config files, built-in tools, LSP support, and a plugin ecosystem — before you write a single line of your own code. It's a full platform. You spend more time configuring than coding.&lt;/p&gt;

&lt;p&gt;The AI adapts to their platform, not to your workflow.&lt;/p&gt;

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

&lt;p&gt;Pi's extension system is simpler, but it's TypeScript-only. If you want to write a tool in Python, Rust, or Go — tough luck. In-process extensions mean one crash kills your whole session. And the "security model" is a single sentence in the docs: &lt;em&gt;"extensions execute arbitrary code."&lt;/em&gt; There's no sandbox. No capability model. No isolation.&lt;/p&gt;

&lt;p&gt;These aren't bad products. They're good products that are solving the wrong problem at the wrong layer. They're building &lt;strong&gt;agent platforms&lt;/strong&gt; when what the ecosystem needs is an &lt;strong&gt;agent protocol&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Makes Dhara Different
&lt;/h2&gt;

&lt;p&gt;Dhara is not a product you install and configure. Dhara is a &lt;strong&gt;specification&lt;/strong&gt; — a JSON-RPC 2.0 protocol that defines how agents and tools communicate. The reference implementation is MIT-licensed. The spec is CC-BY-4.0. Anyone can implement the protocol in any language, for any use case.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Protocol Over API
&lt;/h3&gt;

&lt;p&gt;Not a TypeScript API you import. A wire protocol. Extensions communicate via JSON-RPC 2.0 over stdin/stdout, WASM, or TCP sockets.&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="c1"&gt;# Your tool in Python — the harness doesn't know or care
&lt;/span&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;handle_request&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;method&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;method&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;tools/execute&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;subprocess&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;run&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;grep&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;-rn&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;pattern&lt;/span&gt;&lt;span class="sh"&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="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;text&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;text&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;stdout&lt;/span&gt;&lt;span class="p"&gt;}]}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Write extensions in &lt;strong&gt;any language&lt;/strong&gt;. Python, Rust, Go, TypeScript, Zig, whatever. The protocol is language-agnostic. This is not a feature request. It's a fundamental architectural decision that every other harness gets wrong.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Security by Design — Not a Disclaimer
&lt;/h3&gt;

&lt;p&gt;Remember Pi's security model: &lt;em&gt;"extensions execute arbitrary code — review the source before installing."&lt;/em&gt; That's not a security model. That's a disclaimer.&lt;/p&gt;

&lt;p&gt;Dhara implements capability-based security. Every extension declares what it needs at install time:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  ✓ filesystem:read    → can read files
  ✗ filesystem:write  → NOT granted
  ✗ network:outbound  → NOT granted
  ✗ process:spawn     → NOT granted
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The sandbox enforces these at runtime. Like Android app permissions. Like Deno. Unlike every other coding agent.&lt;/p&gt;

&lt;p&gt;The sandbox is 245 lines of code. You can read every line. You can audit every line. You can modify every line.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Lossless Memory
&lt;/h3&gt;

&lt;p&gt;Every other coding agent compacts your session history by throwing away older messages. "Lossy compaction" is the industry standard. Once a message is compacted away, it's gone forever. You can't go back.&lt;/p&gt;

&lt;p&gt;Dhara's compaction produces structured summaries but &lt;strong&gt;never deletes the original conversation&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;Full transcript     → preserves everything
Compaction summary  → what the LLM sees (with backlinks to originals)
On-demand recall    → request any range of full entries
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Tiered memory. Like virtual memory for agents. Your full history is always available, always searchable, always recoverable.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Minimal Core, Rich Ecosystem
&lt;/h3&gt;

&lt;p&gt;The core implementation is &lt;strong&gt;under 2,000 lines&lt;/strong&gt; — just the agent loop, protocol, session format, event bus, and sandbox. You can read the entire core in an afternoon.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Module&lt;/th&gt;
&lt;th&gt;Lines&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;agent-loop.ts&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;~180&lt;/td&gt;
&lt;td&gt;LLM → tool → LLM state machine&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;protocol.ts&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;~125&lt;/td&gt;
&lt;td&gt;JSON-RPC 2.0 communication&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;sandbox.ts&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;~245&lt;/td&gt;
&lt;td&gt;Capability enforcement &amp;amp; audit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;session.ts&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;~305&lt;/td&gt;
&lt;td&gt;Open session format (JSON Schema)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;config.ts&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;~355&lt;/td&gt;
&lt;td&gt;Configuration management&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Everything else is an extension. LLM providers. File tools. The TUI. Compaction strategies. The core doesn't care what LLM you use, what files you edit, or how you render output. That's the extension layer's job.&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;┌─────────────────────────────────────────────────────┐
│                    ECOSYSTEM LAYER                   │
│   Packages  ·  Themes  ·  Skills  ·  Prompts        │
├─────────────────────────────────────────────────────┤
│                   EXTENSION LAYER                    │
│   Tools  ·  Providers  ·  Renderers  ·  Hooks       │
│   (any language, sandboxed, capability-declared)     │
│          ↕  JSON-RPC 2.0 protocol ↕                 │
├─────────────────────────────────────────────────────┤
│                     CORE LAYER                       │
│   Agent Loop  ·  Protocol  ·  Session Format        │
│   Event Bus  ·  Sandbox                             │
│   (&amp;lt; 2,000 lines — pure agent machinery)           │
└─────────────────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The ecosystem layer is where the community builds value — packages, themes, skills, prompts. The extension layer provides the runtime for those to execute safely. The core just runs the loop.&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.amazonaws.com%2Fuploads%2Farticles%2Fujm3ryf7h6sp7zewtvlj.jpg" 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%2Fujm3ryf7h6sp7zewtvlj.jpg" alt="Dhara TUI running in the terminal — agent loop with tool calls, streaming responses, and session view" width="800" height="448"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Contrast this with Claude Code where the "ecosystem" is whatever Anthropic decides to expose through their plugin API. Or pi where the "ecosystem" is npm keyword search and the "security model" is a README warning.&lt;/p&gt;

&lt;p&gt;The TUI renderer is an extension. So are the file tools. So are the LLM providers. The core doesn't know or care about any of them.&lt;/p&gt;

&lt;h2&gt;
  
  
  This Is the Unsexy Work
&lt;/h2&gt;

&lt;p&gt;Protocols are not exciting. HTTP isn't exciting. LSP isn't exciting. But they're the foundation that lets an entire ecosystem grow without permission from a single vendor.&lt;/p&gt;

&lt;p&gt;Every AI company in 2026 is rushing to build the best agent product. They're competing on features, UX, and lock-in. We're building a protocol because we believe the agent harness should be a &lt;strong&gt;standard&lt;/strong&gt;, not a product.&lt;/p&gt;

&lt;p&gt;Like HTTP standardized how web servers talk to browsers, Dhara standardizes how agents talk to tools. Like LSP standardized language support across editors, Dhara standardizes extension support across agent harnesses.&lt;/p&gt;

&lt;p&gt;The moat is the spec. Not the implementation. Not the community. Not the GitHub stars. The spec.&lt;/p&gt;

&lt;p&gt;Anyone can build a Dhara-compatible agent. Anyone can write a Dhara-compatible extension. The protocol is open. The session format is an open JSON Schema. There's no vendor to ask for permission.&lt;/p&gt;

&lt;h2&gt;
  
  
  The India Angle
&lt;/h2&gt;

&lt;p&gt;Dhara is built out of India. Not outsourced. Not funded by Silicon Valley. Built by a team that lives and works in India, making architectural decisions from here.&lt;/p&gt;

&lt;p&gt;There's a persistent narrative that Indian tech companies build the cheap version. The "good enough" alternative. That's not what this is.&lt;/p&gt;

&lt;p&gt;Dhara's architecture — protocol-native extensions, capability-based security, lossless memory, minimal core — is not a budget version of Claude Code. It's what we believe is the right way to build agent infrastructure. JSON-RPC over custom APIs. Sandboxing over disclaimers. Open standard over proprietary platform.&lt;/p&gt;

&lt;p&gt;Some of the best infrastructure software in the world is built outside the valley. The next wave won't come from one geography. We're building here.&lt;/p&gt;

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

&lt;p&gt;Dhara launched four days ago. The &lt;a href="https://github.com/zosmaai/dhara" rel="noopener noreferrer"&gt;reference implementation&lt;/a&gt; is on GitHub under MIT. The &lt;a href="https://github.com/zosmaai/dhara/tree/main/spec" rel="noopener noreferrer"&gt;spec&lt;/a&gt; is CC-BY-4.0. You can read the entire core in an afternoon.&lt;/p&gt;

&lt;p&gt;Right now, Dhara has:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A working agent loop with streaming, tool calls, and multi-turn sessions&lt;/li&gt;
&lt;li&gt;A JSON-RPC 2.0 extension protocol with capability-based sandboxing&lt;/li&gt;
&lt;li&gt;A TUI renderer (experimental)&lt;/li&gt;
&lt;li&gt;Standard file tools (read, write, edit, grep, ls, bash)&lt;/li&gt;
&lt;li&gt;Provider support for Anthropic and OpenAI&lt;/li&gt;
&lt;li&gt;CI/CD, tests, and an open spec&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What we need next:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Extension authors&lt;/strong&gt; — write a Dhara-compatible tool in your language of choice&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Implementors&lt;/strong&gt; — build a Dhara-compatible agent in Rust, Go, Python&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Feedback&lt;/strong&gt; — try the protocol, tell us what's wrong, open issues, submit PRs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/zosmaai/dhara" rel="noopener noreferrer"&gt;Star the repo on GitHub&lt;/a&gt;&lt;/strong&gt; · &lt;strong&gt;&lt;a href="https://github.com/zosmaai/dhara/tree/main/spec" rel="noopener noreferrer"&gt;Read the spec&lt;/a&gt;&lt;/strong&gt; · &lt;strong&gt;&lt;a href="https://discord.gg/zosma" rel="noopener noreferrer"&gt;Join the community&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Dhara (धारा, dhārā) is a Sanskrit word meaning **flow&lt;/em&gt;* or &lt;strong&gt;stream&lt;/strong&gt; — the continuous, seamless stream between LLM and tools that defines every agent interaction.*&lt;/p&gt;

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