<?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: Rish Maniar</title>
    <description>The latest articles on DEV Community by Rish Maniar (@rish_maniar_cc6d83c22c5d8).</description>
    <link>https://dev.to/rish_maniar_cc6d83c22c5d8</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%2F3999550%2Feb3860ec-b48a-4893-a712-3dfc36db4ad4.png</url>
      <title>DEV Community: Rish Maniar</title>
      <link>https://dev.to/rish_maniar_cc6d83c22c5d8</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/rish_maniar_cc6d83c22c5d8"/>
    <language>en</language>
    <item>
      <title>Most agents are "state blind". I built an orchestration layer with a synthetic visual tree to give agents actual Episodic Memory (LanceDB + Postgres).</title>
      <dc:creator>Rish Maniar</dc:creator>
      <pubDate>Wed, 24 Jun 2026 00:04:53 +0000</pubDate>
      <link>https://dev.to/rish_maniar_cc6d83c22c5d8/most-agents-are-state-blind-i-built-an-orchestration-layer-with-a-synthetic-visual-tree-to-give-3ek2</link>
      <guid>https://dev.to/rish_maniar_cc6d83c22c5d8/most-agents-are-state-blind-i-built-an-orchestration-layer-with-a-synthetic-visual-tree-to-give-3ek2</guid>
      <description>&lt;p&gt;I’ve been building Atom (&lt;a href="https://github.com/rush86999/atom" rel="noopener noreferrer"&gt;https://github.com/rush86999/atom&lt;/a&gt;), a self-hosted orchestration platform in Python/FastAPI.&lt;/p&gt;

&lt;p&gt;(Full disclosure upfront: I designed the state machines and memory architecture, but I heavily used Cursor, Aider, and Claude Code to accelerate the boilerplate and test coverage. I use API providers for the LLM reasoning, but the memory, embeddings, and orchestration are entirely local.)&lt;/p&gt;

&lt;p&gt;I love lightweight runtimes (like OpenClaw) for simple scripts, but they break on real business workflows (like processing invoices at my company). The issue isn't the model; it's State Blindness. Agents fire a tool call into the void and hallucinate success because they have no deterministic way to verify if the UI actually changed.&lt;/p&gt;

&lt;p&gt;Dumping raw DOMs blows up the context window, and passing screenshots is incredibly token-wasteful. So I built this to handle state explicitly:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Synthetic Grounding (Canvas AI Accessibility)&lt;br&gt;
Instead of screenshots or raw HTML, Atom injects a hidden, structured semantic description layer into its Canvas workspace. It’s basically an accessibility screen reader optimized for an LLM's context window. The agent "reads" this logical tree to ground itself visually before deciding on the next tool call.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;True Episodic Memory&lt;br&gt;
Slapping a vector database on chat logs is retrieval, not memory. Atom splits it:&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Hot State: PostgreSQL handles the active Workflow State Machine.&lt;/p&gt;

&lt;p&gt;Cold Memory: Every time the agent parses that semantic visual layer, it vectorizes the actual workflow state snapshot and stores it locally in LanceDB.&lt;/p&gt;

&lt;p&gt;Local Embeddings: It uses FastEmbed (BAAI/bge-small-en-v1.5) by default, so embedding generation is 100% local and fast.&lt;/p&gt;

&lt;p&gt;When the agent fails and retries a similar task later, it retrieves those specific visual snapshots to see what the application state looked like during the failure and self-corrects.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Execution &amp;amp; Governance
You plug in your preferred API provider (OpenAI, Anthropic, DeepSeek, etc.) for the brain. Because I don't want an autonomous script having root access on day one, agents start in a sandbox ("Student" tier) and must maintain a high Readiness Score based on human-intervention rates before they are allowed to execute autonomously.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I'd love for this community to roast the memory architecture. Has anyone else tried using synthetic accessibility trees for local state grounding?&lt;/p&gt;

&lt;p&gt;Repo: &lt;a href="https://github.com/rush86999/atom" rel="noopener noreferrer"&gt;https://github.com/rush86999/atom&lt;/a&gt;&lt;/p&gt;

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