<?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: Alp Allovi</title>
    <description>The latest articles on DEV Community by Alp Allovi (@alp_allovi_45214d2d8316a1).</description>
    <link>https://dev.to/alp_allovi_45214d2d8316a1</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%2F1631522%2Ff5a81daf-9862-4906-853d-a3126386792e.png</url>
      <title>DEV Community: Alp Allovi</title>
      <link>https://dev.to/alp_allovi_45214d2d8316a1</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/alp_allovi_45214d2d8316a1"/>
    <language>en</language>
    <item>
      <title>Introducing Ayeixa Agent Memory Spine: Multi-Tenant Episodic Storage &amp; Replay Compaction</title>
      <dc:creator>Alp Allovi</dc:creator>
      <pubDate>Mon, 17 Aug 2026 19:56:20 +0000</pubDate>
      <link>https://dev.to/alp_allovi_45214d2d8316a1/introducing-ayeixa-agent-memory-spine-multi-tenant-episodic-storage-replay-compaction-4goe</link>
      <guid>https://dev.to/alp_allovi_45214d2d8316a1/introducing-ayeixa-agent-memory-spine-multi-tenant-episodic-storage-replay-compaction-4goe</guid>
      <description>&lt;h1&gt;
  
  
  Introducing Ayeixa Agent Memory Spine: Multi-Tenant Episodic Storage &amp;amp; Replay Compaction
&lt;/h1&gt;

&lt;p&gt;Long-running agentic workflows require access to past conversational turns, error precedents, and decision logs. In multi-tenant environments, storing and retrieving historical context presents two major risks: cross-tenant state leakage and context-window token overflow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ayeixa Agent Memory Spine&lt;/strong&gt; (&lt;code&gt;@ayeixa/agent-memory-spine&lt;/code&gt;) is an open-source TypeScript engine providing tenant and session namespaced in-memory episodic storage, memory indexing, and token-budgeted replay compaction.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Repository&lt;/strong&gt;: &lt;a href="https://github.com/alpallovy/ayeixa-agent-memory-spine" rel="noopener noreferrer"&gt;https://github.com/alpallovy/ayeixa-agent-memory-spine&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Status&lt;/strong&gt;: Pre-Release (&lt;code&gt;v0.1.0-alpha&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;License&lt;/strong&gt;: MIT&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;NPM Status&lt;/strong&gt;: Public registry publication is pending; evaluate and build locally.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  1. Core Architecture
&lt;/h2&gt;

&lt;p&gt;The system consists of four cooperating components:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;SessionIsolationEngine&lt;/strong&gt;: Enforces tenant/session key isolation (&lt;code&gt;${tenantId}::${sessionId}&lt;/code&gt;) and verifies that distinct tenant namespaces share zero episodic records.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;EpisodicMemoryStore&lt;/strong&gt;: Structured in-memory storage for episodic events, tags, timestamps, and importance ratings.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ContextualReplayEngine&lt;/strong&gt;: Retrieves relevant episodes within an exact token ceiling, formatting them into compact replay prompts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MemoryCompactor&lt;/strong&gt;: Applies relevance decay and deduplication to maintain high signal-to-noise ratio within limited context budgets.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  2. Implemented Capabilities &amp;amp; Test Verification
&lt;/h2&gt;

&lt;p&gt;Verified with hermetic unit tests:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Namespaced Isolation&lt;/strong&gt;: Zero cross-tenant data overlap verified via &lt;code&gt;verifyIsolation&lt;/code&gt; (&lt;code&gt;tests/isolation.test.ts&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Contextual Replay&lt;/strong&gt;: Token-budgeted episode reconstruction (&lt;code&gt;tests/replay.test.ts&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Memory Compaction&lt;/strong&gt;: Deduplication and relevance decay algorithms (&lt;code&gt;tests/compactor.test.ts&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Verification: &lt;strong&gt;3/3 hermetic unit tests passing&lt;/strong&gt; (0 failures).&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Local Quick Start
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/alpallovy/ayeixa-agent-memory-spine.git
&lt;span class="nb"&gt;cd &lt;/span&gt;ayeixa-agent-memory-spine
npm ci
npm run build
npm &lt;span class="nb"&gt;test&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Usage Example
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;SessionIsolationEngine&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;EpisodicMemoryStore&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;ContextualReplayEngine&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./src&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;store&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;EpisodicMemoryStore&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;isolator&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;SessionIsolationEngine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;store&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nx"&gt;isolator&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;storeEpisode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;tenant-101&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;session-A&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;ep-1&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;developer&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Fixed regression in authentication token verification&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;tags&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;auth&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;security&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
  &lt;span class="na"&gt;timestamp&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;toISOString&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
  &lt;span class="na"&gt;importance&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0.95&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;replay&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;ContextualReplayEngine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;store&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;context&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;replay&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;buildReplayContext&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;tenant-101&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;session-A&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;maxTokenBudget&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;500&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Replay Context Episodes:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;context&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;episodes&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  4. Limitations &amp;amp; Contributing
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Pre-release &lt;code&gt;v0.1.0-alpha&lt;/code&gt;. Operates as an in-memory store.&lt;/li&gt;
&lt;li&gt;Public npm publication is pending.&lt;/li&gt;
&lt;li&gt;Feedback and PRs are welcome! Check out open &lt;code&gt;good first issue&lt;/code&gt; tags on GitHub.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;License: MIT&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>typescript</category>
      <category>ai</category>
      <category>architecture</category>
    </item>
    <item>
      <title>Introducing Ayeixa MCP Guardian: Capability Fencing &amp; Parameter Sanitization for MCP</title>
      <dc:creator>Alp Allovi</dc:creator>
      <pubDate>Mon, 17 Aug 2026 19:55:48 +0000</pubDate>
      <link>https://dev.to/alp_allovi_45214d2d8316a1/introducing-ayeixa-mcp-guardian-capability-fencing-parameter-sanitization-for-mcp-14dj</link>
      <guid>https://dev.to/alp_allovi_45214d2d8316a1/introducing-ayeixa-mcp-guardian-capability-fencing-parameter-sanitization-for-mcp-14dj</guid>
      <description>&lt;h1&gt;
  
  
  Introducing Ayeixa MCP Guardian: Capability Fencing &amp;amp; Parameter Sanitization for MCP
&lt;/h1&gt;

&lt;p&gt;Model Context Protocol (MCP) empowers language models to interact directly with databases, filesystems, and CLI utilities. However, exposing tool APIs creates security vulnerabilities: unauthorized directory traversal (&lt;code&gt;../../etc/passwd&lt;/code&gt;), destructive shell commands (&lt;code&gt;rm -rf&lt;/code&gt;), and untracked actions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ayeixa MCP Guardian&lt;/strong&gt; (&lt;code&gt;@ayeixa/mcp-guardian&lt;/code&gt;) is a runtime capability fence and parameter sanitization middleware for Model Context Protocol servers and client tool invocations.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Repository&lt;/strong&gt;: &lt;a href="https://github.com/alpallovy/ayeixa-mcp-guardian" rel="noopener noreferrer"&gt;https://github.com/alpallovy/ayeixa-mcp-guardian&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Status&lt;/strong&gt;: Pre-Release (&lt;code&gt;v0.1.0-alpha&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;License&lt;/strong&gt;: Apache-2.0&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;NPM Status&lt;/strong&gt;: Public registry publication is pending; evaluate and build locally.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  1. Core Architecture
&lt;/h2&gt;

&lt;p&gt;MCP Guardian operates as an interceptor middleware:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;ToolPermissionFence&lt;/strong&gt;: Enforces granular Role-Based Access Control (RBAC) and explicit tool allowlists/denylists.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;InvocationSanitizer&lt;/strong&gt;: Sanitizes parameter arguments, blocking directory traversal patterns (&lt;code&gt;../&lt;/code&gt;) and dangerous system commands (&lt;code&gt;sudo&lt;/code&gt;, &lt;code&gt;rm -rf&lt;/code&gt;, &lt;code&gt;chmod 777&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;RuntimeAuditLogger&lt;/strong&gt;: Records every invocation payload, argument set, and permission verdict into a tamper-evident SHA-256 cryptographic hash chain.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GuardianSandbox&lt;/strong&gt;: Permission-gated execution wrapper evaluating authorization rules and logging audit records before dispatching to tool executors.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  2. Implemented Capabilities &amp;amp; Test Verification
&lt;/h2&gt;

&lt;p&gt;Verified with hermetic unit tests:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Permission Fencing&lt;/strong&gt;: RBAC and denied command enforcement (&lt;code&gt;tests/permission.test.ts&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Audit Ledger&lt;/strong&gt;: Cryptographic hash chain validation (&lt;code&gt;tests/audit.test.ts&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Execution Wrapper&lt;/strong&gt;: Permission-gated dispatch and error containment (&lt;code&gt;tests/sandbox.test.ts&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Verification: &lt;strong&gt;6/6 hermetic unit tests passing&lt;/strong&gt; (0 failures).&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Local Quick Start
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/alpallovy/ayeixa-mcp-guardian.git
&lt;span class="nb"&gt;cd &lt;/span&gt;ayeixa-mcp-guardian
npm ci
npm run build
npm &lt;span class="nb"&gt;test&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Usage Example
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;GuardianSandbox&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;ToolPermissionFence&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;RuntimeAuditLogger&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./src&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;fence&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;ToolPermissionFence&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;allowedTools&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;read_file&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;list_dir&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
  &lt;span class="na"&gt;blockedCommands&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;rm -rf&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;sudo&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;chmod 777&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;audit&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;RuntimeAuditLogger&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;sandbox&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;GuardianSandbox&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;fence&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;audit&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;verdict&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;sandbox&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;evaluateAndExecute&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;toolName&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;read_file&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;arguments&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./src/index.ts&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;developer&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;args&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;File content safely read.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Allowed:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;verdict&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;allowed&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  4. Limitations &amp;amp; Contributing
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Pre-release &lt;code&gt;v0.1.0-alpha&lt;/code&gt;. Provides application-level permission gating and parameter sanitization.&lt;/li&gt;
&lt;li&gt;Public npm publication is pending.&lt;/li&gt;
&lt;li&gt;We encourage security developers and researchers to contribute. See open &lt;code&gt;good first issue&lt;/code&gt; tags on GitHub.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;License: Apache-2.0&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>security</category>
      <category>ai</category>
      <category>typescript</category>
    </item>
    <item>
      <title>Introducing Ayeixa Sentience Eval: Catching Raw JSON Leaks &amp; Robotic Clichés in Agent Dialogue</title>
      <dc:creator>Alp Allovi</dc:creator>
      <pubDate>Mon, 17 Aug 2026 19:55:15 +0000</pubDate>
      <link>https://dev.to/alp_allovi_45214d2d8316a1/introducing-ayeixa-sentience-eval-catching-raw-json-leaks-robotic-cliches-in-agent-dialogue-25e9</link>
      <guid>https://dev.to/alp_allovi_45214d2d8316a1/introducing-ayeixa-sentience-eval-catching-raw-json-leaks-robotic-cliches-in-agent-dialogue-25e9</guid>
      <description>&lt;h1&gt;
  
  
  Introducing Ayeixa Sentience Eval: Catching Raw JSON Leaks &amp;amp; Robotic Clichés in Agent Dialogue
&lt;/h1&gt;

&lt;p&gt;When autonomous agents convert structured internal states and tool execution payloads into natural language dialogue, formatting breakdowns can occur: unparsed JSON delimiters leak into output text, robotic conversational clichés degrade user experience, and assertions deviate from context.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ayeixa Sentience Eval&lt;/strong&gt; (&lt;code&gt;@ayeixa/sentience-eval&lt;/code&gt;) is a standalone assertion harness for testing, benchmarking, and guarding behavioral cleanliness in autonomous conversational agents.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Repository&lt;/strong&gt;: &lt;a href="https://github.com/alpallovy/ayeixa-sentience-eval" rel="noopener noreferrer"&gt;https://github.com/alpallovy/ayeixa-sentience-eval&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Status&lt;/strong&gt;: Pre-Release (&lt;code&gt;v0.1.0-alpha&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;License&lt;/strong&gt;: MIT&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;NPM Status&lt;/strong&gt;: Public registry publication is pending; evaluate and build locally.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  1. Core Architecture
&lt;/h2&gt;

&lt;p&gt;Sentience Eval is composed of four inspection engines:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;RawJsonLeakDetector&lt;/strong&gt;: Identifies raw JSON structures, unbalanced brace delimiters, and unrendered system delimiters matching configured regex patterns.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;HallucinationDetector&lt;/strong&gt;: Compares response claims against ground-truth context to flag ungrounded assertions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;BehavioralCleanlinessHarness&lt;/strong&gt;: Enforces conversational naturalness rules by detecting forbidden robotic clichés, prompt leaks, and meta-tokens.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SentienceBenchmarkRunner&lt;/strong&gt;: Executes evaluation batches and computes a weighted cleanliness index (0–100).&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  2. Implemented Capabilities &amp;amp; Test Verification
&lt;/h2&gt;

&lt;p&gt;Verified with hermetic unit tests:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Raw JSON Detection&lt;/strong&gt;: Detects tested unescaped JSON state and delimiter leaks (&lt;code&gt;tests/json-leak.test.ts&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cleanliness Suite&lt;/strong&gt;: Flags tested cliché markers and delimiter imbalances (&lt;code&gt;tests/cleanliness.test.ts&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Benchmark Runner&lt;/strong&gt;: Weighted penalty scoring calculation (&lt;code&gt;tests/benchmark.test.ts&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Verification: &lt;strong&gt;6/6 hermetic unit tests passing&lt;/strong&gt; (0 failures).&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Local Quick Start
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/alpallovy/ayeixa-sentience-eval.git
&lt;span class="nb"&gt;cd &lt;/span&gt;ayeixa-sentience-eval
npm ci
npm run build
npm &lt;span class="nb"&gt;test&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Usage Example
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;SentienceBenchmarkRunner&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./src&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;runner&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;SentienceBenchmarkRunner&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;evaluation&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;runner&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;evaluate&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;output&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Here is your task: {&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;internalState&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: true, &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;status&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;RUNNING&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;}&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;groundTruthContext&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;The user requested task status.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Cleanliness Score (0-100):&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;evaluation&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;cleanlinessScore&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Violations Detected:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;evaluation&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;violations&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  4. Limitations &amp;amp; Contributing
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Pre-release &lt;code&gt;v0.1.0-alpha&lt;/code&gt;. Focuses on structural and lexical patterns covered by its rule set.&lt;/li&gt;
&lt;li&gt;Public npm publication is pending.&lt;/li&gt;
&lt;li&gt;Contributions welcome! Check out &lt;code&gt;good first issue&lt;/code&gt; tags on GitHub.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;License: MIT&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>typescript</category>
      <category>ai</category>
      <category>testing</category>
    </item>
    <item>
      <title>Introducing Ayeixa FuelLite: Free-Tier Token Arbitrage &amp; Dynamic Failover Router</title>
      <dc:creator>Alp Allovi</dc:creator>
      <pubDate>Mon, 17 Aug 2026 19:54:27 +0000</pubDate>
      <link>https://dev.to/alp_allovi_45214d2d8316a1/introducing-ayeixa-fuellite-free-tier-token-arbitrage-dynamic-failover-router-15og</link>
      <guid>https://dev.to/alp_allovi_45214d2d8316a1/introducing-ayeixa-fuellite-free-tier-token-arbitrage-dynamic-failover-router-15og</guid>
      <description>&lt;h1&gt;
  
  
  Introducing Ayeixa FuelLite: Free-Tier Token Arbitrage &amp;amp; Dynamic Failover Router
&lt;/h1&gt;

&lt;p&gt;Continuous autonomous agent execution loops consume substantial token volumes. In multi-tenant environments, unmonitored model calls quickly trigger rate limits (HTTP 429) or excessive API billing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ayeixa FuelLite&lt;/strong&gt; (&lt;code&gt;@ayeixa/fuellite&lt;/code&gt;) is an open-source TypeScript library for zero-cost multi-provider token arbitrage, quota tracking, and resilient failover.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Repository&lt;/strong&gt;: &lt;a href="https://github.com/alpallovy/ayeixa-fuellite" rel="noopener noreferrer"&gt;https://github.com/alpallovy/ayeixa-fuellite&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Status&lt;/strong&gt;: Pre-Release (&lt;code&gt;v0.1.0-alpha&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;License&lt;/strong&gt;: MIT&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;NPM Status&lt;/strong&gt;: Public registry publication is pending; evaluate and build locally.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  1. Core Architecture
&lt;/h2&gt;

&lt;p&gt;FuelLite provides four synchronized modules:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;CostEstimator&lt;/strong&gt;: Deterministic numeric cost estimation using token counts and configured provider rates, with reported USD values rounded to six decimal places.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ProviderArbitrageRouter&lt;/strong&gt;: Ranks configured model providers, prioritizing providers configured as free-tier (&lt;code&gt;isFreeTier: true&lt;/code&gt;) before falling back to lower-cost paid endpoints.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;TokenBudgetTracker&lt;/strong&gt;: Tracks cumulative tenant and session token budgets with hard-stop limits and threshold warning alarms.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;FailoverExecutor&lt;/strong&gt;: Transparently handles provider outages and rate limits with exponential backoff ($2^n \times \text{base}$) and cooldown recovery.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  2. Implemented Capabilities &amp;amp; Test Verification
&lt;/h2&gt;

&lt;p&gt;Verified with hermetic unit tests:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cost Estimation&lt;/strong&gt;: Six-decimal USD calculation across token counts (&lt;code&gt;tests/cost.test.ts&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Arbitrage Routing&lt;/strong&gt;: Prioritizing configured free-tier providers and lowest cost (&lt;code&gt;tests/arbitrage.test.ts&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Budget Tracking&lt;/strong&gt;: Hard quota enforcement and spend recording (&lt;code&gt;tests/budget.test.ts&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Failover Logic&lt;/strong&gt;: HTTP 429/503 retry backoff and provider hopping (&lt;code&gt;tests/failover.test.ts&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Verification: &lt;strong&gt;6/6 hermetic unit tests passing&lt;/strong&gt; (0 failures).&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Local Quick Start
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/alpallovy/ayeixa-fuellite.git
&lt;span class="nb"&gt;cd &lt;/span&gt;ayeixa-fuellite
npm ci
npm run build
npm &lt;span class="nb"&gt;test&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Usage Example
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;CostEstimator&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;ProviderArbitrageRouter&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;TokenBudgetTracker&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./src&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;estimator&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;CostEstimator&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;cost&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;estimator&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;calculateCost&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;provider&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;gemini-flash&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;inputTokens&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1500&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;outputTokens&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;400&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;isFreeTier&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Total Cost (USD):&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;cost&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;totalCostUsd&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// 0.0&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;tracker&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;TokenBudgetTracker&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;maxBudgetUsd&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;5.0&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="nx"&gt;tracker&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;recordSpend&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;tenant-alpha&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;cost&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;totalCostUsd&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1900&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Remaining Budget:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;tracker&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getRemainingBudget&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;tenant-alpha&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  4. Limitations &amp;amp; Contributing
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Pre-release &lt;code&gt;v0.1.0-alpha&lt;/code&gt;. Provider rates are statically configured.&lt;/li&gt;
&lt;li&gt;Public npm publication is pending.&lt;/li&gt;
&lt;li&gt;Feedback and PRs welcome! See open &lt;code&gt;good first issue&lt;/code&gt; items on GitHub.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;License: MIT&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>typescript</category>
      <category>ai</category>
      <category>llm</category>
    </item>
    <item>
      <title>Introducing Ayeixa OpenCoordinator: Multi-Agent DAG Orchestration for TypeScript</title>
      <dc:creator>Alp Allovi</dc:creator>
      <pubDate>Mon, 17 Aug 2026 19:54:22 +0000</pubDate>
      <link>https://dev.to/alp_allovi_45214d2d8316a1/introducing-ayeixa-opencoordinator-multi-agent-dag-orchestration-for-typescript-2o86</link>
      <guid>https://dev.to/alp_allovi_45214d2d8316a1/introducing-ayeixa-opencoordinator-multi-agent-dag-orchestration-for-typescript-2o86</guid>
      <description>&lt;h1&gt;
  
  
  Introducing Ayeixa OpenCoordinator: Multi-Agent DAG Orchestration for TypeScript
&lt;/h1&gt;

&lt;p&gt;As multi-agent engineering workflows scale, managing dependent subagents requires deterministic dependency resolution, cycle prevention, and capability-aware task routing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ayeixa OpenCoordinator&lt;/strong&gt; (&lt;code&gt;@ayeixa/open-coordinator&lt;/code&gt;) is a lightweight multi-agent orchestration spine developed in TypeScript under the &lt;strong&gt;Apache-2.0&lt;/strong&gt; license.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Repository&lt;/strong&gt;: &lt;a href="https://github.com/alpallovy/ayeixa-open-coordinator" rel="noopener noreferrer"&gt;https://github.com/alpallovy/ayeixa-open-coordinator&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Status&lt;/strong&gt;: Pre-Release (&lt;code&gt;v0.1.0-alpha&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;NPM Status&lt;/strong&gt;: Public registry publication is pending; evaluate and build locally.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  1. Core Architecture
&lt;/h2&gt;

&lt;p&gt;OpenCoordinator is structured around four decoupled architectural primitives:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;IntentParser&lt;/strong&gt;: Extracts domain context, action classifications (&lt;code&gt;CODE&lt;/code&gt;, &lt;code&gt;TEST&lt;/code&gt;, &lt;code&gt;DEPLOY&lt;/code&gt;, &lt;code&gt;RESEARCH&lt;/code&gt;), and capability constraints from natural language task directives.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;TaskGraphEngine&lt;/strong&gt;: Constructs an in-memory Directed Acyclic Graph (DAG), executes topological sort, detects cycles deterministically, and groups independent tasks into concurrent execution stages.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ExecutionKernel&lt;/strong&gt;: Implements a state machine managing task lifecycles (&lt;code&gt;PENDING&lt;/code&gt;, &lt;code&gt;RUNNING&lt;/code&gt;, &lt;code&gt;COMPLETED&lt;/code&gt;, &lt;code&gt;FAILED&lt;/code&gt;, &lt;code&gt;BLOCKED&lt;/code&gt;) with bounded transitions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AgentRouter&lt;/strong&gt;: Matches tasks to subagents based on declared capabilities and current availability.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  2. Implemented Capabilities &amp;amp; Test Verification
&lt;/h2&gt;

&lt;p&gt;All capabilities are implemented and verified with 100% hermetic unit tests:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;DAG Resolution&lt;/strong&gt;: Topological sorting and execution stage resolution (&lt;code&gt;tests/dag.test.ts&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Intent Parsing&lt;/strong&gt;: Action and entity extraction (&lt;code&gt;tests/intent.test.ts&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Router Matching&lt;/strong&gt;: Capability scoring (&lt;code&gt;tests/router.test.ts&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Kernel State&lt;/strong&gt;: State transitions and error containment (&lt;code&gt;tests/kernel.test.ts&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Verification: &lt;strong&gt;9/9 hermetic unit tests passing&lt;/strong&gt; (0 failures).&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Local Quick Start
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/alpallovy/ayeixa-open-coordinator.git
&lt;span class="nb"&gt;cd &lt;/span&gt;ayeixa-open-coordinator
npm ci
npm run build
npm &lt;span class="nb"&gt;test&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Usage Example
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;IntentParser&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;TaskGraphEngine&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;ExecutionKernel&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./src&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;parser&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;IntentParser&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;intent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;parser&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;parse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Refactor auth database module to support SQLite&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;dag&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;TaskGraphEngine&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="nx"&gt;dag&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;addTask&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;task-1&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;title&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Refactor auth db&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;taskType&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;intent&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;taskType&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;dependencies&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="nx"&gt;dag&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;addTask&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;task-2&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;title&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Add auth tests&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;taskType&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;TEST&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;dependencies&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;task-1&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;stages&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;dag&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;resolveExecutionStages&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Execution stages:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;stages&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  4. Limitations &amp;amp; Contributing
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Current version is &lt;code&gt;v0.1.0-alpha&lt;/code&gt;. Graph storage operates in-memory.&lt;/li&gt;
&lt;li&gt;Public npm publication is pending.&lt;/li&gt;
&lt;li&gt;Feedback, issues, and contributions are warmly welcomed! Check out &lt;code&gt;good first issue&lt;/code&gt; tags on GitHub.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;License: Apache-2.0&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>typescript</category>
      <category>ai</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
