<?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: Rameswaran Mohan</title>
    <description>The latest articles on DEV Community by Rameswaran Mohan (@rameswaran_mohan_9c8b5d8f).</description>
    <link>https://dev.to/rameswaran_mohan_9c8b5d8f</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%2F4116363%2Fef303fd2-1905-442c-b625-a4d907acfefd.png</url>
      <title>DEV Community: Rameswaran Mohan</title>
      <link>https://dev.to/rameswaran_mohan_9c8b5d8f</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/rameswaran_mohan_9c8b5d8f"/>
    <language>en</language>
    <item>
      <title>I built an AI agent that forges its own tools mid-task — and asks first (open source, 60-second demo)</title>
      <dc:creator>Rameswaran Mohan</dc:creator>
      <pubDate>Tue, 08 Sep 2026 21:36:03 +0000</pubDate>
      <link>https://dev.to/rameswaran_mohan_9c8b5d8f/i-built-an-ai-agent-that-forges-its-own-tools-mid-task-and-asks-first-open-source-60-second-1989</link>
      <guid>https://dev.to/rameswaran_mohan_9c8b5d8f/i-built-an-ai-agent-that-forges-its-own-tools-mid-task-and-asks-first-open-source-60-second-1989</guid>
      <description>&lt;p&gt;I asked my agent to password-protect a PDF. No such tool existed. Here is what happened next, in 60 seconds, built only from the real, unedited screenshots of the run:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/rameswaran-mohan/project-systemu/blob/main/docs/assets/systemu-demo.mp4" rel="noopener noreferrer"&gt;&lt;strong&gt;Watch the walkthrough (MP4, 60s)&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F23uenq910z5pdx8idljb.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F23uenq910z5pdx8idljb.gif" alt="22-second loop" width="640" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What it is
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Systemu&lt;/strong&gt; is a local-first AI agent runtime. When a task needs a capability the agent doesn't have, it doesn't fail and it doesn't fake it. It &lt;em&gt;requests&lt;/em&gt; the capability, and a Governor arbitrates by risk:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;One card lands in your Inbox, rated HIGH because the agent chose it. Safe default: Skip.&lt;/li&gt;
&lt;li&gt;You review the spec, then the generated code, before anything exists.&lt;/li&gt;
&lt;li&gt;Dependencies get their own approval (no silent &lt;code&gt;pip install&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Even the first run is gated as &lt;em&gt;dangerous-until-proven&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Deployed with provenance: &lt;strong&gt;AGENT-BUILT · dry-run PASSED&lt;/strong&gt;, revocable in one click.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Approvals bind to a hash of the tool body plus its effect set, so a re-forge asks again. Anything that runs a shell, deletes, sends or writes to the network can never be bulk-approved.&lt;/p&gt;

&lt;h2&gt;
  
  
  Does the governance kill the capability?
&lt;/h2&gt;

&lt;p&gt;I measured instead of asserting. On tasks that are impossible without acquiring a missing capability (23 tasks, 6 families, 5 models from 5 vendors, external-oracle graded):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Frozen toolkit: &lt;strong&gt;6%&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Governed self-provisioning: &lt;strong&gt;61%&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;179 trials, McNemar p = 2.8 × 10⁻¹⁰&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="s2"&gt;"systemu[dashboard]"&lt;/span&gt;
systemu init &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; systemu start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Works with a local Ollama or your own OpenAI / Anthropic / Google / OpenRouter key. MIT licensed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Honest limits
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Small / flash-tier models write noticeably worse tools.&lt;/li&gt;
&lt;li&gt;First install is heavy (Playwright + Chromium for browser tools).&lt;/li&gt;
&lt;li&gt;The benchmark is mine and n = 179. I'd genuinely like someone to break it; everything is in &lt;code&gt;cgb_eval/&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Solo project from Chennai. Treat it as a serious beta.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Repo: &lt;a href="https://github.com/rameswaran-mohan/project-systemu" rel="noopener noreferrer"&gt;https://github.com/rameswaran-mohan/project-systemu&lt;/a&gt;&lt;br&gt;
Preprint: &lt;a href="https://doi.org/10.5281/zenodo.20816383" rel="noopener noreferrer"&gt;https://doi.org/10.5281/zenodo.20816383&lt;/a&gt;&lt;br&gt;
Longer write-up on &lt;em&gt;why&lt;/em&gt; (the three September papers on self-patching agents): &lt;a href="https://dev.to/rameswaran_mohan_9c8b5d8f/your-ai-agent-will-patch-itself-the-question-is-who-approves-the-patch-gl"&gt;https://dev.to/rameswaran_mohan_9c8b5d8f/your-ai-agent-will-patch-itself-the-question-is-who-approves-the-patch-gl&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If your agent could grow its own toolkit under review, would you let it?&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>ai</category>
      <category>python</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Your AI agent will patch itself. The question is who approves the patch.</title>
      <dc:creator>Rameswaran Mohan</dc:creator>
      <pubDate>Tue, 08 Sep 2026 19:35:23 +0000</pubDate>
      <link>https://dev.to/rameswaran_mohan_9c8b5d8f/your-ai-agent-will-patch-itself-the-question-is-who-approves-the-patch-gl</link>
      <guid>https://dev.to/rameswaran_mohan_9c8b5d8f/your-ai-agent-will-patch-itself-the-question-is-who-approves-the-patch-gl</guid>
      <description>&lt;p&gt;In the first week of September three arXiv papers landed on the same nerve:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;HarnessDev&lt;/strong&gt; (2609.01437) asked whether LLMs can create and evolve their own agent harness.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SafeEvolve&lt;/strong&gt; (2609.02786) had agents co-evolve their own safety policy from experience.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PatchBench&lt;/strong&gt; (2609.04075) measured how well agents patch real security vulnerabilities — and found the usual proof-of-concept check inflates solve rates by 1.83×.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Read together, they say one thing: agents are starting to modify the thing that runs them. Their own tools, their own guardrails, the code they operate on.&lt;/p&gt;

&lt;p&gt;Every one of those papers leaves the same question open. &lt;strong&gt;Who approves the patch?&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  An unreviewed self-patch is a supply-chain risk you invited in
&lt;/h2&gt;

&lt;p&gt;We spent a decade learning not to &lt;code&gt;curl | sh&lt;/code&gt; from strangers. Then we learned to pin dependencies, sign builds, and review every PR. A self-improving agent that writes a tool and runs it in the same breath undoes all of that in one step — and it does it &lt;em&gt;inside&lt;/em&gt; your perimeter, with your credentials.&lt;/p&gt;

&lt;p&gt;The tempting answer is "don't let agents write tools." But that throws away the capability that makes agents useful: the thing your agent needs is almost always discovered mid-task. A PDF encryptor that doesn't exist. A library it can't import. A file format nobody wired up. Freeze the toolkit and the agent either fails or — worse — fakes it.&lt;/p&gt;

&lt;p&gt;So the real question isn't &lt;em&gt;whether&lt;/em&gt; agents should grow. It's &lt;em&gt;how the growth gets governed.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What a governed self-patch looks like (a real run, unedited)
&lt;/h2&gt;

&lt;p&gt;I've spent four months on an open-source runtime called &lt;a href="https://github.com/rameswaran-mohan/project-systemu" rel="noopener noreferrer"&gt;Systemu&lt;/a&gt; that takes one specific position on this. Last week I watched it work end-to-end on a boring, real task: &lt;em&gt;"encrypt these PDFs with a password."&lt;/em&gt; No such tool existed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prefer watching?&lt;/strong&gt; The whole loop in 60 seconds, built only from the real, unedited screenshots of the run: &lt;a href="https://github.com/rameswaran-mohan/project-systemu/blob/main/docs/assets/systemu-demo.mp4" rel="noopener noreferrer"&gt;systemu-demo.mp4&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. The agent asks — it doesn't fail, it doesn't fake.&lt;/strong&gt;&lt;br&gt;
The running agent issues a &lt;code&gt;REQUEST_HARNESS&lt;/code&gt; — "provision what I lack." One card lands in the Inbox:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;HIGH — Forge tool: pdf_encrypt&lt;/strong&gt;&lt;br&gt;
Apply password protection to a PDF file and save the encrypted version to a new path.&lt;br&gt;
&lt;em&gt;What approve does:&lt;/em&gt; generates + reviews the tool code, then enables it.&lt;br&gt;
&lt;strong&gt;Safe default: Skip&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The safe default is &lt;em&gt;Skip&lt;/em&gt;. Do nothing, and nothing happens.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. You review the spec, then the code — before anything exists.&lt;/strong&gt;&lt;br&gt;
Approving the card doesn't run anything. It generates the tool and shows you the source with a plain warning: &lt;em&gt;this does not prove the code safe — read it before approving.&lt;/em&gt; The LLM reviewer can flag problems, but it can only ever push the decision toward &lt;em&gt;deny&lt;/em&gt; or &lt;em&gt;escalate&lt;/em&gt;. It cannot open a hole.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Dependencies gate separately.&lt;/strong&gt;&lt;br&gt;
The generated tool wanted &lt;code&gt;pypdf&lt;/code&gt;. That's its own approval. No silent &lt;code&gt;pip install&lt;/code&gt;, ever.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. The first run is gated too.&lt;/strong&gt;&lt;br&gt;
Even after the tool is deployed, its first execution lands as an action card marked &lt;em&gt;dangerous-until-proven&lt;/em&gt;, with the actual arguments shown. Safe default: &lt;em&gt;Deny&lt;/em&gt;. Re-forging the tool re-gates it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Deployed, with provenance.&lt;/strong&gt;&lt;br&gt;
Minutes later the Build page shows &lt;code&gt;pdf_encrypt&lt;/code&gt; — &lt;strong&gt;DEPLOYED · AGENT-BUILT · dry-run PASSED&lt;/strong&gt;. The toolkit grew by one. Every step is in the decision ledger, attributed to the run that made it, revocable in one click.&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%2Fbn2pctjt6l8v5rituzzk.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%2Fbn2pctjt6l8v5rituzzk.png" alt="Build page: pdf_encrypt deployed, agent-built, dry-run passed" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That's the whole loop: &lt;strong&gt;gap → request → govern → grow.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Two ideas underneath it that I think are non-obvious
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;A self-requested capability is &lt;em&gt;more&lt;/em&gt; dangerous than a pre-provisioned one.&lt;/strong&gt; The agent chose it. So it's gated &lt;em&gt;more&lt;/em&gt; strictly, not less — the opposite of how most frameworks treat "the agent decided it needs X."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Judgment can only downgrade toward safe.&lt;/strong&gt; When an ambiguous request needs an LLM judge, the judge may deny or escalate, never grant beyond policy. A judge fault fails to &lt;em&gt;escalation&lt;/em&gt;, not to &lt;em&gt;grant&lt;/em&gt;. Your safety doesn't depend on the model being right.&lt;/p&gt;

&lt;h2&gt;
  
  
  Does the governance kill the capability?
&lt;/h2&gt;

&lt;p&gt;That was my fear, so I measured it instead of asserting it. A Capability-Gap Benchmark: tasks that are &lt;em&gt;impossible&lt;/em&gt; without acquiring a missing capability, across six capability families (tool, skill, file/secret access, compute budget, sub-agents, MCP servers), across 5 models from 5 vendors, graded by an external oracle rather than the system's own verifier.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Frozen toolkit (classic push harness): 6%&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Governed pull (full Governor, human gates): 61%&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;179 trials, McNemar &lt;em&gt;p&lt;/em&gt; = 2.8 × 10⁻¹⁰&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Governance isn't the brake on self-improving agents. It's the steering. &lt;a href="https://doi.org/10.5281/zenodo.20816383" rel="noopener noreferrer"&gt;Preprint on Zenodo.&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Honest limits
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;The forge step is only as good as the model. Flash-tier models write noticeably worse tools.&lt;/li&gt;
&lt;li&gt;First install pulls a lot of dependencies; the dashboard extra is heavy.&lt;/li&gt;
&lt;li&gt;The evaluation is mine. I would genuinely like someone to try to break the 6% → 61% result — the trial logs are available.&lt;/li&gt;
&lt;li&gt;It is a solo project from Chennai. Treat it as a serious beta, not a product.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="s2"&gt;"systemu[dashboard]"&lt;/span&gt;
systemu init &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; systemu start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;MIT licensed. The 22-second walkthrough is at the top of the README: &lt;a href="https://github.com/rameswaran-mohan/project-systemu" rel="noopener noreferrer"&gt;https://github.com/rameswaran-mohan/project-systemu&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If your AI patched itself tonight — would you know?&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>python</category>
      <category>security</category>
    </item>
  </channel>
</rss>
