<?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: kennedy</title>
    <description>The latest articles on DEV Community by kennedy (@n3on).</description>
    <link>https://dev.to/n3on</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%2F3559516%2F4fa1d3f3-83f6-4928-9d0d-ece6eef5825e.jpg</url>
      <title>DEV Community: kennedy</title>
      <link>https://dev.to/n3on</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/n3on"/>
    <language>en</language>
    <item>
      <title>The Customer Discovery Filter That Replaced My Pitch Deck</title>
      <dc:creator>kennedy</dc:creator>
      <pubDate>Mon, 24 Aug 2026 22:40:51 +0000</pubDate>
      <link>https://dev.to/n3on/the-customer-discovery-filter-that-replaced-my-pitch-deck-20jo</link>
      <guid>https://dev.to/n3on/the-customer-discovery-filter-that-replaced-my-pitch-deck-20jo</guid>
      <description>&lt;p&gt;Last year I built a SaaS in six months. Polished UI, solid architecture, clean code. Launched to 12 signups. Zero paying users. Shut it down.&lt;/p&gt;

&lt;p&gt;The postmortem was brutal but clear: I built something nobody needed. I fell in love with the solution before verifying the problem existed.&lt;/p&gt;

&lt;p&gt;Since then I've been rebuilding my customer discovery process from scratch. Not with frameworks from books, with conversations that went sideways, signal that turned out to be noise, and a few lines that stuck.&lt;/p&gt;

&lt;p&gt;Here's the filter I'm using now. It's not finished, but it's already better than anything I had before.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem With "Would You Use This?"
&lt;/h2&gt;

&lt;p&gt;Most founder advice says: talk to users, validate your idea, get feedback.&lt;/p&gt;

&lt;p&gt;The problem is that feedback is cheap. People will tell you your idea is great, that they'd totally use it, that they'd pay for it. Then they won't.&lt;/p&gt;

&lt;p&gt;The gap between what people say and what people do is where startups die.&lt;/p&gt;

&lt;p&gt;I needed a filter that separated enthusiasm from commitment.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Three Questions
&lt;/h2&gt;

&lt;p&gt;When someone names a painful task, I stopped asking "would you want this automated?" Instead I ask three things:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. The Receipt Question&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Walk me through the last time this actually hurt you."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Not "would this be useful?" but "when did it last cost you something?" A specific moment, a specific cost, a specific workaround they used instead.&lt;/p&gt;

&lt;p&gt;If they can't anchor it to a specific incident, the signal is weak no matter how enthusiastic the answer sounds.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. The Cost Question&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"What stays broken if this never gets fixed?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This separates complaints from costs. A recurring annoyance is a complaint. A recurring annoyance with a broken process and a willingness to change is a wedge.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. The Switch Question&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Would you switch tomorrow?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;But with one caveat, the answer only counts if it attaches to a dated incident.&lt;/p&gt;

&lt;p&gt;"When this broke last month, I spent two hours on it" counts.&lt;/p&gt;

&lt;p&gt;"Yes, I would probably switch" doesn't.&lt;/p&gt;

&lt;p&gt;If the switch answer cannot attach to a specific memory, it is still a wish describing itself as a decision.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Ratio Test
&lt;/h2&gt;

&lt;p&gt;Pass/fail isn't enough.&lt;/p&gt;

&lt;p&gt;Twenty conversations where five produce dated incidents and fifteen produce adjectives is a different market than the reverse.&lt;/p&gt;

&lt;p&gt;The filter gets sharper when you track two things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Did one vivid story appear?&lt;/strong&gt; (pass/fail)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;How often does the same kind of costly incident repeat?&lt;/strong&gt; (the ratio)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A founder with one dramatic anecdote and a shrug on frequency is a different signal from a boring incident that happens every week.&lt;/p&gt;

&lt;p&gt;Both count as receipts. Only one of them is a market.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Calendar Test
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;"How many times this month?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is the whole filter.&lt;/p&gt;

&lt;p&gt;One dramatic story is a blog post. The same boring incident every week is a business.&lt;/p&gt;

&lt;p&gt;You don't just need the story. You need the calendar.&lt;/p&gt;

&lt;p&gt;"When did it last hurt?" gets the receipt. "How many times this month?" tells you if it's a market or an anecdote.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Stall Index
&lt;/h2&gt;

&lt;p&gt;There's an outside check that helps too: looking at public postmortems of stalled products.&lt;/p&gt;

&lt;p&gt;The same split keeps showing up. The ones that moved had a current cost someone was already paying — a workaround, a bad alternative, an annoying manual step, a risk they were already living with.&lt;/p&gt;

&lt;p&gt;The ones that stalled had interest, but not much cost.&lt;/p&gt;

&lt;p&gt;Interest without cost is a compliment. Cost without a workaround is a market.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Full Filter In One Sentence
&lt;/h2&gt;

&lt;p&gt;Enthusiasm is cheap. A dated incident with a real cost is the receipt.&lt;/p&gt;

&lt;p&gt;A vivid incident is not always a recurring one. The receipt proves the pain is real. The frequency tells you whether it is a market.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I'm Doing With This
&lt;/h2&gt;

&lt;p&gt;I'm running this filter against 20 more conversations before I publish the full version with interview questions baked in.&lt;/p&gt;

&lt;p&gt;If you're building something and want to pressure-test your own discovery, steal these questions. Run them against your next five conversations. Track the ratio. See what holds.&lt;/p&gt;

&lt;p&gt;I'll update this post with the refined version when it's ready.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This filter was built in a public thread on DEV where someone pressure-tested my frameworks in real time. The best ideas here aren't mine, they came from the conversation.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;If you've run your own customer discovery that went sideways, I'd genuinely like to hear what you learned.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>career</category>
      <category>startup</category>
      <category>discuss</category>
    </item>
    <item>
      <title>I built an open dataset tracking Africa's nuclear energy programs, here's what I learned</title>
      <dc:creator>kennedy</dc:creator>
      <pubDate>Mon, 17 Aug 2026 22:00:46 +0000</pubDate>
      <link>https://dev.to/n3on/i-built-an-open-dataset-tracking-africas-nuclear-energy-programs-heres-what-i-learned-3h4i</link>
      <guid>https://dev.to/n3on/i-built-an-open-dataset-tracking-africas-nuclear-energy-programs-heres-what-i-learned-3h4i</guid>
      <description>&lt;p&gt;Only one African country operates a commercial nuclear reactor. Egypt is building one. A growing group of countries are in various stages of IAEA milestones preparation.&lt;/p&gt;

&lt;p&gt;The problem: announcements about these programs are scattered across government websites, IAEA press releases, and industry media. There's no neutral, cited, machine-readable source that ties it all together.&lt;/p&gt;

&lt;p&gt;So I built one.&lt;/p&gt;

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

&lt;p&gt;AfrPowerOS is a free, open dataset tracking every African country's civilian nuclear-energy programme. It covers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Programme phase&lt;/strong&gt;: Exploring, Preparing, Under Construction, Operating&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IAEA milestone status&lt;/strong&gt;: which infrastructure issues are addressed&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Regulators and implementing agencies&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Planned capacity&lt;/strong&gt; in GW&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Vendors and agreements&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Research reactors&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Key events&lt;/strong&gt; with dates&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Currently covering 20 countries across the continent.&lt;/p&gt;

&lt;h2&gt;
  
  
  The honesty system
&lt;/h2&gt;

&lt;p&gt;Every record carries a confidence label:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Label&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Verified&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Confirmed from a primary source&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Inference&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Reasonable reading of verified evidence&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Speculation&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Hypothesis; treat as unproven&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Unverified&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Reported but not yet confirmed&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Every fact has a source URL. No exceptions. If I can't source it, I mark it or leave it out.&lt;/p&gt;

&lt;p&gt;Corrections go in as pull requests — public and reviewable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Africa's nuclear programs matter
&lt;/h2&gt;

&lt;p&gt;The numbers tell the story:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;~600 million people in sub-Saharan Africa lack electricity&lt;/li&gt;
&lt;li&gt;Africa hosts under 2% of global data-center capacity&lt;/li&gt;
&lt;li&gt;Power is the binding constraint on AI infrastructure on the continent&lt;/li&gt;
&lt;li&gt;The countries making decisions right now are choosing infrastructure that will last 40-60 years&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The tech stack
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Dataset&lt;/strong&gt;: structured JSON with a JSON Schema validator&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Validation&lt;/strong&gt;: Python script, zero dependencies, runs in CI&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Live site&lt;/strong&gt;: static GitHub Pages with an interactive SVG map&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Newsletter&lt;/strong&gt;: automated weekly digest via Buttondown API&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;License&lt;/strong&gt;: MIT (code), CC BY 4.0 (data)
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/kawacukennedy/afrpoweros.git
&lt;span class="nb"&gt;cd &lt;/span&gt;afrpoweros
python3 scripts/validate.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;What's next&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Expand to all 54 African countries&lt;/li&gt;
&lt;li&gt;Add IAEA "19 infrastructure issues" readiness tracker per country&lt;/li&gt;
&lt;li&gt;Monthly data updates with changelogs
Links&lt;/li&gt;
&lt;li&gt;Live site (&lt;a href="https://kawacukennedy.github.io/afrpoweros/" rel="noopener noreferrer"&gt;https://kawacukennedy.github.io/afrpoweros/&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;GitHub (&lt;a href="https://github.com/kawacukennedy/afrpoweros" rel="noopener noreferrer"&gt;https://github.com/kawacukennedy/afrpoweros&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Dataset (JSON) (&lt;a href="https://github.com/kawacukennedy/afrpoweros/blob/main/data/afrpoweros.json" rel="noopener noreferrer"&gt;https://github.com/kawacukennedy/afrpoweros/blob/main/data/afrpoweros.json&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Newsletter (&lt;a href="https://kawacukennedy.github.io/afrpoweros/newsletter.html" rel="noopener noreferrer"&gt;https://kawacukennedy.github.io/afrpoweros/newsletter.html&lt;/a&gt;)
If something in the dataset is wrong, open an issue or send a pull request. I'd rather be corrected in public than quietly wrong.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>opensource</category>
      <category>data</category>
      <category>webdev</category>
      <category>api</category>
    </item>
    <item>
      <title>We Built an Open-Source SDK for Cross-Chain AI Agents — Here's What Broke</title>
      <dc:creator>kennedy</dc:creator>
      <pubDate>Mon, 06 Jul 2026 20:09:10 +0000</pubDate>
      <link>https://dev.to/n3on/we-built-an-open-source-sdk-for-cross-chain-ai-agents-heres-what-broke-mih</link>
      <guid>https://dev.to/n3on/we-built-an-open-source-sdk-for-cross-chain-ai-agents-heres-what-broke-mih</guid>
      <description>&lt;p&gt;It's 3 AM and your AI agent just bridged $500 to a chain you've never heard of.&lt;/p&gt;

&lt;p&gt;The logs say "optimal route found." The balance says $0. The agent can't explain why.&lt;/p&gt;

&lt;p&gt;This is the problem we spent 6 months solving.&lt;/p&gt;

&lt;p&gt;We built Kuberna Labs — an MIT-licensed SDK that gives AI agents secure execution rails across any blockchain. The whole thing is open-source: &lt;a href="https://github.com/kawacukennedy/kuberna-labs" rel="noopener noreferrer"&gt;github.com/kawacukennedy/kuberna-labs&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here's what we actually had to build.&lt;/p&gt;




&lt;h2&gt;
  
  
  What "agent execution" actually means
&lt;/h2&gt;

&lt;p&gt;Most people think "AI agent" means a chatbot with tool access. That's not what we're building.&lt;/p&gt;

&lt;p&gt;An agent that &lt;em&gt;calls an API&lt;/em&gt; and an agent that &lt;em&gt;settles a financial transaction&lt;/em&gt; are fundamentally different problems. The first is about formatting HTTP requests. The second is about moving value across chains, proving what happened, and resolving disputes when something goes wrong.&lt;/p&gt;

&lt;p&gt;Agent execution, in our definition, means:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;An agent forms an &lt;strong&gt;intent&lt;/strong&gt; ("swap 1 ETH for USDC on Solana")&lt;/li&gt;
&lt;li&gt;That intent is &lt;strong&gt;parsed&lt;/strong&gt; into a structured, verifiable format&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Executors&lt;/strong&gt; compete to fulfill the intent at the best price&lt;/li&gt;
&lt;li&gt;An &lt;strong&gt;escrow contract&lt;/strong&gt; holds funds until conditions are met&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;TEE attestation&lt;/strong&gt; proves the agent's decision was made correctly&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Every layer above had to be built from scratch. No off-the-shelf solutions existed for open-source agent settlement.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why intent-based execution is safer than direct wallets
&lt;/h2&gt;

&lt;p&gt;Giving an agent a private key is the obvious approach. And it's terrifying.&lt;/p&gt;

&lt;p&gt;If an agent holds a key, that key is accessible wherever the agent runs. A compromised agent means a drained wallet. There's no intermediary, no dispute window, no recourse.&lt;/p&gt;

&lt;p&gt;Our architecture inverts this: &lt;strong&gt;the agent never holds keys.&lt;/strong&gt; It posts intents. Executors compete to fulfill those intents. An on-chain escrow contract settles the transaction only when conditions are met.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;sdk&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;KubernaSDK&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;apiKey&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;KUBERNA_API_KEY&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="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;sdk&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;intents&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;sourceChain&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;ethereum&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;destChain&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;solana&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;sourceToken&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;ETH&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;destToken&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;USDC&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;sourceAmount&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;1.0&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The agent posts an intent. The SDK handles the rest. No keys, no custody, no single point of failure.&lt;/p&gt;

&lt;h2&gt;
  
  
  How we stop the intent parser from hallucinating chains
&lt;/h2&gt;

&lt;p&gt;This was the hardest technical problem we solved.&lt;/p&gt;

&lt;p&gt;We started with GPT-4 to parse natural language intents. The results were terrifying:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Input: "bridge my ETH to Arbitrum"&lt;/span&gt;
&lt;span class="c1"&gt;// GPT-4 output:&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;sourceChain&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Ethereum&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;destChain&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Arbitrum&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;token&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;ARB&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;p&gt;It confused the destination &lt;strong&gt;chain&lt;/strong&gt; with the &lt;strong&gt;ARB token&lt;/strong&gt;. If an agent executed this parse, it would swap ETH for ARB instead of bridging. That's a $10,000 hallucination.&lt;/p&gt;

&lt;p&gt;We built a 4-layer fallback system:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;compromise.js&lt;/strong&gt; — zero-dependency NLP that works fully offline. Handles 80% of intents.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;12 regex patterns&lt;/strong&gt; — matching "X for Y on Z" and variations. Deterministic, no failure mode.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GPT-4 fallback&lt;/strong&gt; — only when confidence &amp;lt; 0.6 from layers 1 and 2. Activated in ~15% of cases.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;RAG memory&lt;/strong&gt; — learns from past parses. Common patterns are promoted to layer 2 over time.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Each layer assigns a confidence score. We stop at the first layer with score &amp;gt; 0.6.&lt;/p&gt;

&lt;p&gt;The result: zero hallucinated chains in production. 175 tests covering every edge case.&lt;/p&gt;

&lt;h2&gt;
  
  
  What on-chain escrow looks like for AI agents
&lt;/h2&gt;

&lt;p&gt;Trustless settlement requires an escrow contract that handles the agent-specific edge cases:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function assignExecutor(
  bytes32 intentId,
  address executor,
  bytes calldata params
) external nonReentrant onlyAgent(intentId) {
  Escrow storage e = escrows[intentId];
  require(e.status == EscrowStatus.PENDING, 'not pending');
  e.executor = executor;
  e.executorParams = params;
  e.status = EscrowStatus.ASSIGNED;
  emit ExecutorAssigned(intentId, executor, params);
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;nonReentrant&lt;/code&gt; modifier on &lt;code&gt;assignExecutor&lt;/code&gt; and &lt;code&gt;raiseDispute&lt;/code&gt; prevents reentrancy attacks. Every intent has a dispute window. If the agent disagrees with execution, funds are held pending resolution.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why TEE attestation matters for provable decisions
&lt;/h2&gt;

&lt;p&gt;An agent's decision trace must be provable. Without attestation, the agent can claim "I don't know what happened" and you have no way to verify.&lt;/p&gt;

&lt;p&gt;We run decision-making inside an SGX enclave. Every inference produces a cryptographic receipt:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"intentId"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"0xabc..."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"decision"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"executor_selected"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"executorAddress"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"0xdef..."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"confidence"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.87&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"attestation"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"sgx://enclave-123/receipt/0x789..."&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This receipt is stored on-chain. Anyone can verify that the agent made the decision it claims to have made, inside a trusted execution environment, at a specific point in time.&lt;/p&gt;

&lt;h2&gt;
  
  
  The circuit breaker problem
&lt;/h2&gt;

&lt;p&gt;An agent that can't stop calling a dead API is an agent that burns money.&lt;/p&gt;

&lt;p&gt;We implemented a sliding-window circuit breaker around all OpenAI calls:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;CLOSED&lt;/strong&gt; — normal operation&lt;/li&gt;
&lt;li&gt;3 failures in 5 minutes → &lt;strong&gt;OPEN&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;30 second probe interval → &lt;strong&gt;HALF_OPEN&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Probe succeeds → &lt;strong&gt;CLOSED&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Probe fails → back to &lt;strong&gt;OPEN&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;circuit&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;CircuitBreaker&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="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;threshold&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;windowMs&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;300&lt;/span&gt;&lt;span class="nx"&gt;_000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;probeIntervalMs&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="nx"&gt;_000&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;result&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;circuit&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;call&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;swap 1 ETH for USDC on Solana&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;p&gt;When the circuit is open, the agent falls back to the local compromise.js parser. No API call needed. The agent still works — it just makes simpler decisions.&lt;/p&gt;

&lt;p&gt;Graceful degradation &amp;gt; perfect uptime.&lt;/p&gt;

&lt;h2&gt;
  
  
  What broke (the honest part)
&lt;/h2&gt;

&lt;p&gt;Not everything went smoothly. Here's what we got wrong:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Math.sin() as a price oracle.&lt;/strong&gt; Our first "market data provider" used &lt;code&gt;Math.sin()&lt;/code&gt; to generate fake price data. It was a placeholder that somehow made it to staging. A real API integration would have caught this earlier.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Direct wallet integration.&lt;/strong&gt; Our first design gave agents access to a wallet. We reversed this after a close call in testing. The intent-based architecture is harder to build but fundamentally safer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No circuit breaker.&lt;/strong&gt; We deployed the first version without rate limiting on API calls. The agent called a dead OpenAI endpoint 47 times before we noticed. Each call cost money. Each call returned nothing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Intent parser hallucinating chains.&lt;/strong&gt; The GPT-4 hallucination problem above cost us a week of refactoring. The 4-layer system was born from failure.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where we're going next
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;zkTLS integration&lt;/strong&gt; — proving agent decisions without revealing sensitive data&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Solana support&lt;/strong&gt; — the first non-EVM chain in the execution layer&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;NEAR Intents&lt;/strong&gt; — cross-chain settlement using NEAR's intent infrastructure&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;The whole thing is MIT. 175 tests, all green. If you've fought with cross-chain settlement and won (or lost), I'd love to hear about it in the comments. PRs very welcome.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Next in this series: &lt;a href="https://dev.to/next-post-link"&gt;Why We Don't Let GPT-4 Parse Financial Intents (And What We Use Instead)&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>blockchain</category>
      <category>opensource</category>
      <category>discuss</category>
    </item>
    <item>
      <title>I Built a SaaS That Got 0 Users. Here's What I Learned About Actually Finding Problems Worth Solving.</title>
      <dc:creator>kennedy</dc:creator>
      <pubDate>Thu, 25 Jun 2026 15:56:45 +0000</pubDate>
      <link>https://dev.to/n3on/i-built-a-saas-that-got-0-users-heres-what-i-learned-about-actually-finding-problems-worth-16j</link>
      <guid>https://dev.to/n3on/i-built-a-saas-that-got-0-users-heres-what-i-learned-about-actually-finding-problems-worth-16j</guid>
      <description>&lt;p&gt;Last year I spent six months building a SaaS product. I did everything "right", polished UI, solid architecture, clean code. Launched to 12 signups. Zero paying users. Shut it down.&lt;/p&gt;

&lt;p&gt;The postmortem was brutal but clear: I built something nobody needed. I fell in love with the solution before verifying the problem existed.&lt;/p&gt;

&lt;p&gt;I'm sharing this because I know I'm not the only developer who's done this. And I want to do something different this time.&lt;/p&gt;

&lt;p&gt;I've decided to start with zero code and instead spend time talking to people about what's actually broken in their work. I'm treating customer discovery like a engineering problem: gather data, find patterns, then build.&lt;/p&gt;

&lt;p&gt;I'm looking for input from this community:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;What task do you do manually every week that you keep thinking "there should be an API for this"?&lt;/li&gt;
&lt;li&gt;What existing tool frustrates you so much that you've considered building your own replacement?&lt;/li&gt;
&lt;li&gt;If you could wave a magic wand and automate one part of your development workflow, what would it be?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I'm not promoting anything. There's no landing page, no newsletter, no beta list. I'm genuinely trying to find a problem worth solving. If patterns emerge and I build something, I'll document the entire process here.&lt;/p&gt;

&lt;p&gt;What problems are you all facing?&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>showdev</category>
      <category>career</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Why We Don't Let GPT-4 Parse Financial Intents (And What We Use Instead)</title>
      <dc:creator>kennedy</dc:creator>
      <pubDate>Wed, 24 Jun 2026 14:47:02 +0000</pubDate>
      <link>https://dev.to/n3on/why-we-dont-let-gpt-4-parse-financial-intents-and-what-we-use-instead-3ij2</link>
      <guid>https://dev.to/n3on/why-we-dont-let-gpt-4-parse-financial-intents-and-what-we-use-instead-3ij2</guid>
      <description>&lt;p&gt;I asked GPT-4 to parse "bridge my ETH to Arbitrum" and it returned:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"sourceChain"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Ethereum"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"destChain"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Arbitrum"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"token"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"ARB"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;It confused the destination &lt;strong&gt;chain&lt;/strong&gt; with the &lt;strong&gt;ARB token&lt;/strong&gt;. If an agent executed this, it would swap ETH for ARB instead of bridging. That's a $10,000 hallucination.&lt;/p&gt;

&lt;p&gt;This isn't a prompt engineering problem. It's a fundamental issue with using probabilistic models for deterministic financial parsing. Here's the system we built to eliminate it entirely.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/kawacukennedy" rel="noopener noreferrer"&gt;
        kawacukennedy
      &lt;/a&gt; / &lt;a href="https://github.com/kawacukennedy/kuberna-labs" rel="noopener noreferrer"&gt;
        kuberna-labs
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Kuberna Labs - The Full-Stack Platform for Agentic Web3. Build, deploy, and monetize autonomous AI agents across decentralized networks with TEEs, zkTLS, and cross-chain intents.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Kuberna Labs&lt;/h1&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Agent Orchestration Platform&lt;/strong&gt; — Deploy, run, and certify autonomous AI agents that execute cross-chain Web3 tasks.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/kawacukennedy/kuberna-labs/actions" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/2b5ef80d121d0c8454e58d1da53a44a3fdaece44e04dc36996f6f23a9f1ba6f2/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f6b61776163756b656e6e6564792f6b756265726e612d6c6162732f63692e796d6c3f6272616e63683d6d61696e266c6162656c3d4349266c6f676f3d676974687562" alt="CI Status"&gt;&lt;/a&gt;
&lt;a href="https://github.com/kawacukennedy/kuberna-labs/stargazers" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/0f8af3f82f53d7144899dc61369e12dbed60a01646fcd2d1501a20a3b483e2c1/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f6b61776163756b656e6e6564792f6b756265726e612d6c6162733f7374796c653d666c6174266c6f676f3d676974687562" alt="GitHub Stars"&gt;&lt;/a&gt;
&lt;a href="https://www.npmjs.com/package/@kuberna/sdk" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/54f884de382aaf63a461e7e17ae3c7d6871f732f17ff4cb9aac598b5dc3b6b92/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f762f406b756265726e612f73646b3f6c6162656c3d53444b266c6f676f3d6e706d" alt="NPM Version"&gt;&lt;/a&gt;
&lt;a href="https://opensource.org/licenses/MIT" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/fdf2982b9f5d7489dcf44570e714e3a15fce6253e0cc6b5aa61a075aac2ff71b/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d79656c6c6f772e737667" alt="License: MIT"&gt;&lt;/a&gt;
&lt;a href="https://www.typescriptlang.org/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/1c0e325b9f7692186108e036502a027c2b3d529adab93db6e73d91c3bddf125c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f547970655363726970742d352e332d3331373843363f6c6f676f3d74797065736372697074" alt="TypeScript"&gt;&lt;/a&gt;
&lt;a href="https://soliditylang.org/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/94073514357940dfdc0defefedf96bae5cb652bffbe0bba6f9d7ac602c3c4d57/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f536f6c69646974792d253545302e382e32302d3336333633363f6c6f676f3d736f6c6964697479" alt="Solidity"&gt;&lt;/a&gt;
&lt;a href="https://www.prisma.io/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/736409b0fb12480179bad7c0ea0b6105aeed1788a27d3dbac95b2e0515ad6b3f/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f507269736d612d4c61746573742d3244333734383f6c6f676f3d707269736d61" alt="Prisma"&gt;&lt;/a&gt;
&lt;a href="https://x.com/Arnaud_Kennedy" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/fa6df6541242a3c330375f244750bb8b648c8c0bc363975cdcd013dd8ca7094d/68747470733a2f2f696d672e736869656c64732e696f2f747769747465722f666f6c6c6f772f41726e6175645f4b656e6e6564793f7374796c653d736f6369616c" alt="Twitter Follow"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;br&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;⭐️ &lt;strong&gt;If you find this project useful, please star it on GitHub!&lt;/strong&gt; ⭐️&lt;/h3&gt;
&lt;/div&gt;
&lt;p&gt;&lt;em&gt;It helps others discover the project and motivates contributors.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://star-history.com/#kawacukennedy/kuberna-labs&amp;amp;Date" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/7a53e2cf3f57e83721f826b8d537e22b61da978142b82731c64f9a17e8f799fa/68747470733a2f2f6170692e737461722d686973746f72792e636f6d2f7376673f7265706f733d6b61776163756b656e6e6564792f6b756265726e612d6c61627326747970653d44617465" alt="Star History Chart"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;📋 Table of Contents&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/kawacukennedy/kuberna-labs#overview" rel="noopener noreferrer"&gt;Overview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/kawacukennedy/kuberna-labs#architecture" rel="noopener noreferrer"&gt;Architecture&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/kawacukennedy/kuberna-labs#quick-start" rel="noopener noreferrer"&gt;Quick Start&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/kawacukennedy/kuberna-labs#key-features" rel="noopener noreferrer"&gt;Key Features&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/kawacukennedy/kuberna-labs#project-structure" rel="noopener noreferrer"&gt;Project Structure&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/kawacukennedy/kuberna-labs#available-scripts" rel="noopener noreferrer"&gt;Available Scripts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/kawacukennedy/kuberna-labs#contributing" rel="noopener noreferrer"&gt;Contributing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/kawacukennedy/kuberna-labs#community" rel="noopener noreferrer"&gt;Community&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/kawacukennedy/kuberna-labs#contributors" rel="noopener noreferrer"&gt;Contributors&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/kawacukennedy/kuberna-labs#roadmap" rel="noopener noreferrer"&gt;Roadmap&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/kawacukennedy/kuberna-labs#license" rel="noopener noreferrer"&gt;License&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Overview&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;Kuberna Labs gives AI agents secure execution rails across any blockchain: agents parse natural language intents, make autonomous trading decisions, settle via on-chain escrow, and get post-quantum certified for verifiable reputation.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Target users:&lt;/strong&gt; Web3 developers and teams who want to deploy autonomous AI agents that can trade, monitor, and execute on any chain without managing LLM infrastructure, blockchain RPCs, or certification pipelines.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;✨ What Makes Kuberna Different?&lt;/h3&gt;

&lt;/div&gt;
&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Kuberna&lt;/th&gt;
&lt;th&gt;Others&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Natural Language → On-Chain Action&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Parse "swap 1 ETH for USDC on Solana" → escrow → execution → certificate&lt;/td&gt;
&lt;td&gt;Require&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;…&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/kawacukennedy/kuberna-labs" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;





&lt;h2&gt;
  
  
  The problem with LLMs for structured extraction
&lt;/h2&gt;

&lt;p&gt;LLMs are probabilistic by design. They don't &lt;em&gt;know&lt;/em&gt; anything — they predict the most likely token sequence given their training data. For financial intents, this means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Chain names overlap with token symbols&lt;/strong&gt; — "Arbitrum" vs "ARB", "Solana" vs "SOL"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Amounts can be ambiguous&lt;/strong&gt; — "1 ETH" is clear, "send some" is not&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Missing chain names&lt;/strong&gt; — "swap 1 ETH for USDC" doesn't specify the destination chain&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Novel phrasing&lt;/strong&gt; — "bridge my bags over to polygon" needs to resolve to Polygon (MATIC)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each of these is a recoverable error for a deterministic parser. Each is a potential loss-of-funds event for a probabilistic one.&lt;/p&gt;

&lt;p&gt;The cost of hallucination in financial execution is not a bad chatbot response. It's real money moving to the wrong chain.&lt;/p&gt;

&lt;h2&gt;
  
  
  Our 4-layer approach
&lt;/h2&gt;

&lt;p&gt;We never call GPT-4 first. The LLM is the last resort, not the primary parser.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Layer 1: compromise.js   (zero-dep NLP, offline)    ← 80% of intents
Layer 2: 12 regex patterns (deterministic matching)  ← 5% of intents
Layer 3: GPT-4 fallback   (only when conf &amp;lt; 0.6)     ← 15% of intents
Layer 4: RAG memory        (learns from past parses)  ← ongoing
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Layer 1: compromise.js
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/spencermountain/compromise" rel="noopener noreferrer"&gt;compromise.js&lt;/a&gt; is a zero-dependency NLP library that runs in the browser, Node.js, and Deno. It handles:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Subject-verb-object extraction ("swap ETH for USDC")&lt;/li&gt;
&lt;li&gt;Named entity recognition ("Ethereum", "Solana", "Arbitrum")&lt;/li&gt;
&lt;li&gt;Number and unit parsing ("1.5 ETH", "500 USDC")&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It weighs ~200KB and requires no API key. For well-formed intents, it's sufficient 80% of the time.&lt;br&gt;
&lt;/p&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="nx"&gt;nlp&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;compromise&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;parseWithCompromise&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;input&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="nx"&gt;Intent&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="kc"&gt;null&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;doc&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;nlp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;input&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;tokens&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;doc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;match&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;#Noun+&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;amounts&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;doc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;numbers&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="c1"&gt;// ... extract structured intent&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Layer 2: Regex patterns
&lt;/h3&gt;

&lt;p&gt;For the 5% of intents where compromise.js yields low confidence, we fall through to 12 regex patterns covering common structures:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;PATTERNS&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
  &lt;span class="c1"&gt;// "swap X for Y on Z"&lt;/span&gt;
  &lt;span class="sr"&gt;/swap&lt;/span&gt;&lt;span class="se"&gt;\s&lt;/span&gt;&lt;span class="sr"&gt;+&lt;/span&gt;&lt;span class="se"&gt;(?&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;amount&amp;gt;&lt;/span&gt;&lt;span class="se"&gt;\d&lt;/span&gt;&lt;span class="sr"&gt;+&lt;/span&gt;&lt;span class="se"&gt;\.?\d&lt;/span&gt;&lt;span class="sr"&gt;*&lt;/span&gt;&lt;span class="se"&gt;)\s&lt;/span&gt;&lt;span class="sr"&gt;+&lt;/span&gt;&lt;span class="se"&gt;(?&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;source&amp;gt;&lt;/span&gt;&lt;span class="se"&gt;\w&lt;/span&gt;&lt;span class="sr"&gt;+&lt;/span&gt;&lt;span class="se"&gt;)\s&lt;/span&gt;&lt;span class="sr"&gt;+for&lt;/span&gt;&lt;span class="se"&gt;\s&lt;/span&gt;&lt;span class="sr"&gt;+&lt;/span&gt;&lt;span class="se"&gt;(?&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;dest&amp;gt;&lt;/span&gt;&lt;span class="se"&gt;\w&lt;/span&gt;&lt;span class="sr"&gt;+&lt;/span&gt;&lt;span class="se"&gt;)\s&lt;/span&gt;&lt;span class="sr"&gt;+on&lt;/span&gt;&lt;span class="se"&gt;\s&lt;/span&gt;&lt;span class="sr"&gt;+&lt;/span&gt;&lt;span class="se"&gt;(?&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;chain&amp;gt;&lt;/span&gt;&lt;span class="se"&gt;\w&lt;/span&gt;&lt;span class="sr"&gt;+&lt;/span&gt;&lt;span class="se"&gt;)&lt;/span&gt;&lt;span class="sr"&gt;/i&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="c1"&gt;// "bridge X to Y"&lt;/span&gt;
  &lt;span class="sr"&gt;/bridge&lt;/span&gt;&lt;span class="se"&gt;\s&lt;/span&gt;&lt;span class="sr"&gt;+&lt;/span&gt;&lt;span class="se"&gt;(?&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;amount&amp;gt;&lt;/span&gt;&lt;span class="se"&gt;\d&lt;/span&gt;&lt;span class="sr"&gt;+&lt;/span&gt;&lt;span class="se"&gt;\.?\d&lt;/span&gt;&lt;span class="sr"&gt;*&lt;/span&gt;&lt;span class="se"&gt;)\s&lt;/span&gt;&lt;span class="sr"&gt;+&lt;/span&gt;&lt;span class="se"&gt;(?&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;token&amp;gt;&lt;/span&gt;&lt;span class="se"&gt;\w&lt;/span&gt;&lt;span class="sr"&gt;+&lt;/span&gt;&lt;span class="se"&gt;)\s&lt;/span&gt;&lt;span class="sr"&gt;+to&lt;/span&gt;&lt;span class="se"&gt;\s&lt;/span&gt;&lt;span class="sr"&gt;+&lt;/span&gt;&lt;span class="se"&gt;(?&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;chain&amp;gt;&lt;/span&gt;&lt;span class="se"&gt;\w&lt;/span&gt;&lt;span class="sr"&gt;+&lt;/span&gt;&lt;span class="se"&gt;)&lt;/span&gt;&lt;span class="sr"&gt;/i&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="c1"&gt;// "send X to Y on Z"&lt;/span&gt;
  &lt;span class="sr"&gt;/send&lt;/span&gt;&lt;span class="se"&gt;\s&lt;/span&gt;&lt;span class="sr"&gt;+&lt;/span&gt;&lt;span class="se"&gt;(?&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;amount&amp;gt;&lt;/span&gt;&lt;span class="se"&gt;\d&lt;/span&gt;&lt;span class="sr"&gt;+&lt;/span&gt;&lt;span class="se"&gt;\.?\d&lt;/span&gt;&lt;span class="sr"&gt;*&lt;/span&gt;&lt;span class="se"&gt;)\s&lt;/span&gt;&lt;span class="sr"&gt;+&lt;/span&gt;&lt;span class="se"&gt;(?&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;token&amp;gt;&lt;/span&gt;&lt;span class="se"&gt;\w&lt;/span&gt;&lt;span class="sr"&gt;+&lt;/span&gt;&lt;span class="se"&gt;)\s&lt;/span&gt;&lt;span class="sr"&gt;+to&lt;/span&gt;&lt;span class="se"&gt;\s&lt;/span&gt;&lt;span class="sr"&gt;+&lt;/span&gt;&lt;span class="se"&gt;(?&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;chain&amp;gt;&lt;/span&gt;&lt;span class="se"&gt;\w&lt;/span&gt;&lt;span class="sr"&gt;+&lt;/span&gt;&lt;span class="se"&gt;)&lt;/span&gt;&lt;span class="sr"&gt;/i&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="c1"&gt;// ... 9 more patterns&lt;/span&gt;
&lt;span class="p"&gt;];&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each pattern maps matched groups to a validated &lt;code&gt;Intent&lt;/code&gt; structure. If the mapping contains an unrecognized chain or token, the parse fails safely — no hallucination possible.&lt;/p&gt;

&lt;h3&gt;
  
  
  Layer 3: GPT-4 fallback
&lt;/h3&gt;

&lt;p&gt;Only when both layers 1 and 2 return confidence &amp;lt; 0.6 do we call GPT-4. The prompt is structured to minimize hallucination:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;prompt&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;`
Parse the following cross-chain intent into JSON.
Only use chain names from this list: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;VALID_CHAINS&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;, &lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)}&lt;/span&gt;&lt;span class="s2"&gt;
Only use token symbols from this list: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;VALID_TOKENS&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;, &lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)}&lt;/span&gt;&lt;span class="s2"&gt;
If any value cannot be determined, set it to null. Do not infer.

Input: "&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;input&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"
Output:`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The LLM is constrained to a known vocabulary. If it returns a chain name not in &lt;code&gt;VALID_CHAINS&lt;/code&gt;, the system rejects the parse. This caught the "Arbitrum" → "ARB" hallucination described above.&lt;/p&gt;

&lt;h3&gt;
  
  
  Layer 4: RAG memory
&lt;/h3&gt;

&lt;p&gt;Every successful parse (regardless of which layer handled it) is stored in a vector database. Common patterns are promoted to new regex patterns over time.&lt;/p&gt;

&lt;p&gt;After 6 months of operation, layer 4 has:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Generated 4 new patterns now handled by layer 2&lt;/li&gt;
&lt;li&gt;Increased layer 1 hit rate from 72% to 80%&lt;/li&gt;
&lt;li&gt;Reduced LLM fallback from 22% to 15%&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Confidence scoring
&lt;/h2&gt;

&lt;p&gt;Each layer assigns a confidence score. We stop at the first layer with score &amp;gt; 0.6.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&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;confidence&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;parseIntent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;swap 1 ETH for USDC on Solana&lt;/span&gt;&lt;span class="dl"&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="nx"&gt;intent&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;// {&lt;/span&gt;
&lt;span class="c1"&gt;//   sourceChain: "solana",&lt;/span&gt;
&lt;span class="c1"&gt;//   sourceToken: "ETH",&lt;/span&gt;
&lt;span class="c1"&gt;//   destToken: "USDC",&lt;/span&gt;
&lt;span class="c1"&gt;//   sourceAmount: "1",&lt;/span&gt;
&lt;span class="c1"&gt;//   confidence: 0.85&lt;/span&gt;
&lt;span class="c1"&gt;// }&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Confidence is based on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How many fields were successfully extracted (4/4 is better than 3/4)&lt;/li&gt;
&lt;li&gt;Whether all chain/token names are in the known vocabulary&lt;/li&gt;
&lt;li&gt;Pattern match strength (regex exact match &amp;gt; compromise fuzzy match &amp;gt; LLM generation)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If confidence is below 0.6 after all 4 layers, the intent is rejected and the agent is asked to rephrase.&lt;/p&gt;

&lt;h2&gt;
  
  
  How we tested this
&lt;/h2&gt;

&lt;p&gt;175 tests covering:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Well-formed intents ("swap 1 ETH for USDC on Solana")&lt;/li&gt;
&lt;li&gt;Missing chain names ("swap 1 ETH for USDC")&lt;/li&gt;
&lt;li&gt;Novel phrasing ("move my bags to polygon")&lt;/li&gt;
&lt;li&gt;Deliberately adversarial inputs ("ETH for BTC on Ethereum ethereum ethereum")&lt;/li&gt;
&lt;li&gt;Chain/token confusion ("bridge to ARB on Arbitrum")&lt;/li&gt;
&lt;li&gt;Mixed case, typos, extra whitespace&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Property-based tests using &lt;code&gt;fast-check&lt;/code&gt; verify invariants: the parser never returns a chain name not in &lt;code&gt;VALID_CHAINS&lt;/code&gt;, never returns a token symbol not in &lt;code&gt;VALID_TOKENS&lt;/code&gt;, and never fabricates an amount.&lt;/p&gt;

&lt;p&gt;Zero hallucinated chains in production.&lt;/p&gt;

&lt;h2&gt;
  
  
  When you SHOULD use an LLM
&lt;/h2&gt;

&lt;p&gt;The 4-layer system isn't anti-LLM. It's pro-determinism.&lt;/p&gt;

&lt;p&gt;Use an LLM when the input is genuinely novel, the phrasing is ambiguous, or the intent contains information your deterministic layers can't handle. But don't use an LLM as your &lt;strong&gt;primary&lt;/strong&gt; parser for financial inputs.&lt;/p&gt;

&lt;p&gt;The LLM is a safety net, not the primary system. Build deterministic layers first. Let the LLM handle edge cases. And always validate the output against a known vocabulary before accepting it.&lt;/p&gt;




&lt;p&gt;The parser is MIT licensed and works without any API key: &lt;a href="https://github.com/kawacukennedy/kuberna-labs/blob/main/backend/src/services/intentParser.ts" rel="noopener noreferrer"&gt;&lt;code&gt;backend/src/services/intentParser.ts&lt;/code&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you've hit similar hallucination problems with LLM-based extraction, I'd love to hear how you solved it in the comments.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Previously in this series: &lt;a href="https://dev.to/n3on/we-built-an-open-source-sdk-for-cross-chain-ai-agents-heres-what-broke-2in6"&gt;We Built an Open-Source SDK for Cross-Chain AI Agents — Here's What Broke&lt;/a&gt;&lt;/em&gt;&lt;br&gt;
&lt;em&gt;Next in this series: &lt;a href="https://dev.to/next-post-link"&gt;How We Built a Circuit Breaker for AI Agents That Touch Real Money&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>typescript</category>
      <category>tutorial</category>
      <category>beginners</category>
    </item>
    <item>
      <title>We Built an Open-Source SDK for Cross-Chain AI Agents, Here's What Broke</title>
      <dc:creator>kennedy</dc:creator>
      <pubDate>Wed, 24 Jun 2026 14:28:31 +0000</pubDate>
      <link>https://dev.to/n3on/we-built-an-open-source-sdk-for-cross-chain-ai-agents-heres-what-broke-2in6</link>
      <guid>https://dev.to/n3on/we-built-an-open-source-sdk-for-cross-chain-ai-agents-heres-what-broke-2in6</guid>
      <description>&lt;p&gt;It's 3 AM and your AI agent just bridged $500 to a chain you've never heard of.&lt;/p&gt;

&lt;p&gt;The logs say "optimal route found." The balance says $0. The agent can't explain why.&lt;/p&gt;

&lt;p&gt;This is the problem we spent 6 months solving.&lt;/p&gt;

&lt;p&gt;We built Kuberna Labs, an MIT-licensed SDK that gives AI agents secure execution rails across any blockchain. The whole thing is open-source: &lt;a href="https://github.com/kawacukennedy/kuberna-labs" rel="noopener noreferrer"&gt;github.com/kawacukennedy/kuberna-labs&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here's what we actually had to build.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/kawacukennedy" rel="noopener noreferrer"&gt;
        kawacukennedy
      &lt;/a&gt; / &lt;a href="https://github.com/kawacukennedy/kuberna-labs" rel="noopener noreferrer"&gt;
        kuberna-labs
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Kuberna Labs - The Full-Stack Platform for Agentic Web3. Build, deploy, and monetize autonomous AI agents across decentralized networks with TEEs, zkTLS, and cross-chain intents.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Kuberna Labs&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Agent Orchestration Platform&lt;/strong&gt; — Deploy, run, and certify autonomous AI agents that execute cross-chain Web3 tasks.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/kawacukennedy/kuberna-labs/actions" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/2b5ef80d121d0c8454e58d1da53a44a3fdaece44e04dc36996f6f23a9f1ba6f2/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f6b61776163756b656e6e6564792f6b756265726e612d6c6162732f63692e796d6c3f6272616e63683d6d61696e266c6162656c3d4349266c6f676f3d676974687562" alt="CI Status"&gt;&lt;/a&gt;
&lt;a href="https://github.com/kawacukennedy/kuberna-labs/stargazers" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/0f8af3f82f53d7144899dc61369e12dbed60a01646fcd2d1501a20a3b483e2c1/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f6b61776163756b656e6e6564792f6b756265726e612d6c6162733f7374796c653d666c6174266c6f676f3d676974687562" alt="GitHub Stars"&gt;&lt;/a&gt;
&lt;a href="https://www.npmjs.com/package/@kuberna/sdk" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/54f884de382aaf63a461e7e17ae3c7d6871f732f17ff4cb9aac598b5dc3b6b92/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f762f406b756265726e612f73646b3f6c6162656c3d53444b266c6f676f3d6e706d" alt="NPM Version"&gt;&lt;/a&gt;
&lt;a href="https://opensource.org/licenses/MIT" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/fdf2982b9f5d7489dcf44570e714e3a15fce6253e0cc6b5aa61a075aac2ff71b/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d79656c6c6f772e737667" alt="License: MIT"&gt;&lt;/a&gt;
&lt;a href="https://www.typescriptlang.org/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/1c0e325b9f7692186108e036502a027c2b3d529adab93db6e73d91c3bddf125c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f547970655363726970742d352e332d3331373843363f6c6f676f3d74797065736372697074" alt="TypeScript"&gt;&lt;/a&gt;
&lt;a href="https://soliditylang.org/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/94073514357940dfdc0defefedf96bae5cb652bffbe0bba6f9d7ac602c3c4d57/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f536f6c69646974792d253545302e382e32302d3336333633363f6c6f676f3d736f6c6964697479" alt="Solidity"&gt;&lt;/a&gt;
&lt;a href="https://www.prisma.io/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/736409b0fb12480179bad7c0ea0b6105aeed1788a27d3dbac95b2e0515ad6b3f/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f507269736d612d4c61746573742d3244333734383f6c6f676f3d707269736d61" alt="Prisma"&gt;&lt;/a&gt;
&lt;a href="https://x.com/Arnaud_Kennedy" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/fa6df6541242a3c330375f244750bb8b648c8c0bc363975cdcd013dd8ca7094d/68747470733a2f2f696d672e736869656c64732e696f2f747769747465722f666f6c6c6f772f41726e6175645f4b656e6e6564793f7374796c653d736f6369616c" alt="Twitter Follow"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;br&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;⭐️ &lt;strong&gt;If you find this project useful, please star it on GitHub!&lt;/strong&gt; ⭐️&lt;/h3&gt;
&lt;/div&gt;
&lt;p&gt;&lt;em&gt;It helps others discover the project and motivates contributors.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://star-history.com/#kawacukennedy/kuberna-labs&amp;amp;Date" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/7a53e2cf3f57e83721f826b8d537e22b61da978142b82731c64f9a17e8f799fa/68747470733a2f2f6170692e737461722d686973746f72792e636f6d2f7376673f7265706f733d6b61776163756b656e6e6564792f6b756265726e612d6c61627326747970653d44617465" alt="Star History Chart"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;📋 Table of Contents&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/kawacukennedy/kuberna-labs#overview" rel="noopener noreferrer"&gt;Overview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/kawacukennedy/kuberna-labs#architecture" rel="noopener noreferrer"&gt;Architecture&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/kawacukennedy/kuberna-labs#quick-start" rel="noopener noreferrer"&gt;Quick Start&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/kawacukennedy/kuberna-labs#key-features" rel="noopener noreferrer"&gt;Key Features&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/kawacukennedy/kuberna-labs#project-structure" rel="noopener noreferrer"&gt;Project Structure&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/kawacukennedy/kuberna-labs#available-scripts" rel="noopener noreferrer"&gt;Available Scripts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/kawacukennedy/kuberna-labs#contributing" rel="noopener noreferrer"&gt;Contributing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/kawacukennedy/kuberna-labs#community" rel="noopener noreferrer"&gt;Community&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/kawacukennedy/kuberna-labs#contributors" rel="noopener noreferrer"&gt;Contributors&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/kawacukennedy/kuberna-labs#roadmap" rel="noopener noreferrer"&gt;Roadmap&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/kawacukennedy/kuberna-labs#license" rel="noopener noreferrer"&gt;License&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Overview&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;Kuberna Labs gives AI agents secure execution rails across any blockchain: agents parse natural language intents, make autonomous trading decisions, settle via on-chain escrow, and get post-quantum certified for verifiable reputation.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Target users:&lt;/strong&gt; Web3 developers and teams who want to deploy autonomous AI agents that can trade, monitor, and execute on any chain without managing LLM infrastructure, blockchain RPCs, or certification pipelines.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;✨ What Makes Kuberna Different?&lt;/h3&gt;

&lt;/div&gt;
&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Kuberna&lt;/th&gt;
&lt;th&gt;Others&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Natural Language → On-Chain Action&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Parse "swap 1 ETH for USDC on Solana" → escrow → execution → certificate&lt;/td&gt;
&lt;td&gt;Require&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;…&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/kawacukennedy/kuberna-labs" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;





&lt;h2&gt;
  
  
  What "agent execution" actually means
&lt;/h2&gt;

&lt;p&gt;Most people think "AI agent" means a chatbot with tool access. That's not what we're building.&lt;/p&gt;

&lt;p&gt;An agent that &lt;em&gt;calls an API&lt;/em&gt; and an agent that &lt;em&gt;settles a financial transaction&lt;/em&gt; are fundamentally different problems. The first is about formatting HTTP requests. The second is about moving value across chains, proving what happened, and resolving disputes when something goes wrong.&lt;/p&gt;

&lt;p&gt;Agent execution, in our definition, means:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;An agent forms an &lt;strong&gt;intent&lt;/strong&gt; ("swap 1 ETH for USDC on Solana")&lt;/li&gt;
&lt;li&gt;That intent is &lt;strong&gt;parsed&lt;/strong&gt; into a structured, verifiable format&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Executors&lt;/strong&gt; compete to fulfill the intent at the best price&lt;/li&gt;
&lt;li&gt;An &lt;strong&gt;escrow contract&lt;/strong&gt; holds funds until conditions are met&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;TEE attestation&lt;/strong&gt; proves the agent's decision was made correctly&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Every layer above had to be built from scratch. No off-the-shelf solutions existed for open-source agent settlement.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why intent-based execution is safer than direct wallets
&lt;/h2&gt;

&lt;p&gt;Giving an agent a private key is the obvious approach. And it's terrifying.&lt;/p&gt;

&lt;p&gt;If an agent holds a key, that key is accessible wherever the agent runs. A compromised agent means a drained wallet. There's no intermediary, no dispute window, no recourse.&lt;/p&gt;

&lt;p&gt;Our architecture inverts this: &lt;strong&gt;the agent never holds keys.&lt;/strong&gt; It posts intents. Executors compete to fulfill those intents. An on-chain escrow contract settles the transaction only when conditions are met.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;sdk&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;KubernaSDK&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;apiKey&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;KUBERNA_API_KEY&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="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;sdk&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;intents&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;sourceChain&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;ethereum&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;destChain&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;solana&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;sourceToken&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;ETH&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;destToken&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;USDC&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;sourceAmount&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;1.0&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The agent posts an intent. The SDK handles the rest. No keys, no custody, no single point of failure.&lt;/p&gt;

&lt;h2&gt;
  
  
  How we stop the intent parser from hallucinating chains
&lt;/h2&gt;

&lt;p&gt;This was the hardest technical problem we solved.&lt;/p&gt;

&lt;p&gt;We started with GPT-4 to parse natural language intents. The results were terrifying:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Input: "bridge my ETH to Arbitrum"&lt;/span&gt;
&lt;span class="c1"&gt;// GPT-4 output:&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;sourceChain&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Ethereum&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;destChain&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Arbitrum&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;token&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;ARB&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;p&gt;It confused the destination &lt;strong&gt;chain&lt;/strong&gt; with the &lt;strong&gt;ARB token&lt;/strong&gt;. If an agent executed this parse, it would swap ETH for ARB instead of bridging. That's a $10,000 hallucination.&lt;/p&gt;

&lt;p&gt;We built a 4-layer fallback system:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;compromise.js&lt;/strong&gt; — zero-dependency NLP that works fully offline. Handles 80% of intents.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;12 regex patterns&lt;/strong&gt; — matching "X for Y on Z" and variations. Deterministic, no failure mode.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GPT-4 fallback&lt;/strong&gt; — only when confidence &amp;lt; 0.6 from layers 1 and 2. Activated in ~15% of cases.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;RAG memory&lt;/strong&gt; — learns from past parses. Common patterns are promoted to layer 2 over time.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Each layer assigns a confidence score. We stop at the first layer with score &amp;gt; 0.6.&lt;/p&gt;

&lt;p&gt;The result: zero hallucinated chains in production. 175 tests covering every edge case.&lt;/p&gt;

&lt;h2&gt;
  
  
  What on-chain escrow looks like for AI agents
&lt;/h2&gt;

&lt;p&gt;Trustless settlement requires an escrow contract that handles the agent-specific edge cases:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function assignExecutor(
  bytes32 intentId,
  address executor,
  bytes calldata params
) external nonReentrant onlyAgent(intentId) {
  Escrow storage e = escrows[intentId];
  require(e.status == EscrowStatus.PENDING, 'not pending');
  e.executor = executor;
  e.executorParams = params;
  e.status = EscrowStatus.ASSIGNED;
  emit ExecutorAssigned(intentId, executor, params);
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;nonReentrant&lt;/code&gt; modifier on &lt;code&gt;assignExecutor&lt;/code&gt; and &lt;code&gt;raiseDispute&lt;/code&gt; prevents reentrancy attacks. Every intent has a dispute window. If the agent disagrees with execution, funds are held pending resolution.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why TEE attestation matters for provable decisions
&lt;/h2&gt;

&lt;p&gt;An agent's decision trace must be provable. Without attestation, the agent can claim "I don't know what happened" and you have no way to verify.&lt;/p&gt;

&lt;p&gt;We run decision-making inside an SGX enclave. Every inference produces a cryptographic receipt:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"intentId"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"0xabc..."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"decision"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"executor_selected"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"executorAddress"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"0xdef..."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"confidence"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.87&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"attestation"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"sgx://enclave-123/receipt/0x789..."&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This receipt is stored on-chain. Anyone can verify that the agent made the decision it claims to have made, inside a trusted execution environment, at a specific point in time.&lt;/p&gt;

&lt;h2&gt;
  
  
  The circuit breaker problem
&lt;/h2&gt;

&lt;p&gt;An agent that can't stop calling a dead API is an agent that burns money.&lt;/p&gt;

&lt;p&gt;We implemented a sliding-window circuit breaker around all OpenAI calls:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;CLOSED&lt;/strong&gt; — normal operation&lt;/li&gt;
&lt;li&gt;3 failures in 5 minutes → &lt;strong&gt;OPEN&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;30 second probe interval → &lt;strong&gt;HALF_OPEN&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Probe succeeds → &lt;strong&gt;CLOSED&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Probe fails → back to &lt;strong&gt;OPEN&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;circuit&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;CircuitBreaker&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="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;threshold&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;windowMs&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;300&lt;/span&gt;&lt;span class="nx"&gt;_000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;probeIntervalMs&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="nx"&gt;_000&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;result&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;circuit&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;call&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;swap 1 ETH for USDC on Solana&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;p&gt;When the circuit is open, the agent falls back to the local compromise.js parser. No API call needed. The agent still works — it just makes simpler decisions.&lt;/p&gt;

&lt;p&gt;Graceful degradation &amp;gt; perfect uptime.&lt;/p&gt;

&lt;h2&gt;
  
  
  What broke (the honest part)
&lt;/h2&gt;

&lt;p&gt;Not everything went smoothly. Here's what we got wrong:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Math.sin() as a price oracle.&lt;/strong&gt; Our first "market data provider" used &lt;code&gt;Math.sin()&lt;/code&gt; to generate fake price data. It was a placeholder that somehow made it to staging. A real API integration would have caught this earlier.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Direct wallet integration.&lt;/strong&gt; Our first design gave agents access to a wallet. We reversed this after a close call in testing. The intent-based architecture is harder to build but fundamentally safer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No circuit breaker.&lt;/strong&gt; We deployed the first version without rate limiting on API calls. The agent called a dead OpenAI endpoint 47 times before we noticed. Each call cost money. Each call returned nothing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Intent parser hallucinating chains.&lt;/strong&gt; The GPT-4 hallucination problem above cost us a week of refactoring. The 4-layer system was born from failure.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where we're going next
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;zkTLS integration&lt;/strong&gt; — proving agent decisions without revealing sensitive data&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Solana support&lt;/strong&gt; — the first non-EVM chain in the execution layer&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;NEAR Intents&lt;/strong&gt; — cross-chain settlement using NEAR's intent infrastructure&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;The whole thing is MIT. 175 tests, all green. If you've fought with cross-chain settlement and won (or lost), I'd love to hear about it in the comments. PRs very welcome.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Next in this series: &lt;a href="https://dev.to/n3on/why-we-dont-let-gpt-4-parse-financial-intents-and-what-we-use-instead-3ij2"&gt;Why We Don't Let GPT-4 Parse Financial Intents (And What We Use Instead)&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>blockchain</category>
      <category>opensource</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Building Autonomous Cross-Chain AI Agents with Kuberna Labs</title>
      <dc:creator>kennedy</dc:creator>
      <pubDate>Sun, 15 Mar 2026 20:13:27 +0000</pubDate>
      <link>https://dev.to/n3on/building-autonomous-cross-chain-ai-agents-with-kuberna-labs-4fdb</link>
      <guid>https://dev.to/n3on/building-autonomous-cross-chain-ai-agents-with-kuberna-labs-4fdb</guid>
      <description>&lt;p&gt;If you've ever tried to build an AI agent that can actually &lt;em&gt;do&lt;/em&gt; something on-chain—like swap tokens, monitor a protocol, or execute a trade across chains—you know the pain. You need to manage private keys, estimate gas, handle failed transactions, and orchestrate complex cross-chain flows. It's brittle, time-consuming, and error-prone.&lt;/p&gt;

&lt;p&gt;That's why we built &lt;strong&gt;Kuberna Labs&lt;/strong&gt;: an open-source SDK and infrastructure that abstracts away the complexity of cross-chain execution for AI agents.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Stack&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Our architecture is designed to take a high-level intent (e.g., "Swap 1 ETH to USDC on Solana") and execute it securely, with cryptographic guarantees. Here's how it works:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;LLM / NLP Engine&lt;/strong&gt; – Parses natural language into structured tasks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Kuberna SDK&lt;/strong&gt; – Provides a unified API for agent creation, intent submission, and execution.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Execution Layer&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;TEEs&lt;/strong&gt; (Phala, Marlin) – Run agent logic in trusted enclaves with remote attestation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;zkTLS&lt;/strong&gt; (Reclaim, zkPass) – Fetch verified Web2 data without exposing credentials.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Intent Router&lt;/strong&gt; (ERC-7683) – Broadcasts intents to a decentralized solver network.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Solver Network&lt;/strong&gt; – Agents compete to fulfill intents, with funds secured in escrow contracts.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Why This Matters&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Most AI agents today are just chatbots—they can't actually transact value. Kuberna turns them into autonomous economic actors. Imagine an agent that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Monitors a DeFi protocol's TVL and alerts you on Discord.&lt;/li&gt;
&lt;li&gt;Executes arbitrage across DEXes when profitable.&lt;/li&gt;
&lt;li&gt;Proves your bank balance on-chain without revealing the number (via zkTLS).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Get Started in 2 Minutes&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; @kuberna/sdk
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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;KubernaSDK&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;@kuberna/sdk&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;sdk&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;KubernaSDK&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;apiKey&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;YOUR_API_KEY&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;agent&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;sdk&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;createAgent&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;YieldOptimizer&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;framework&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;ElizaOS&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="s2"&gt;`Agent &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;agent&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; is live!`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The SDK handles all the hard stuff—wallet management, gas estimation, intent routing—so you can focus on your agent's logic.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Open Source &amp;amp; Community&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Kuberna Labs is 100% open-source and built in public. We're based in Kigali, Rwanda, and we're on a mission to become the operating system for the agentic economy.&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://github.com/kawacukennedy/kuberna-labs" rel="noopener noreferrer"&gt;GitHub Repo&lt;/a&gt;&lt;br&gt;&lt;br&gt;
👉 &lt;a href="https://discord.gg/74jRFM7u" rel="noopener noreferrer"&gt;Discord&lt;/a&gt;  &lt;/p&gt;

&lt;p&gt;We'd love your contributions, ideas, and stars. Let's build the future of autonomous agents together.&lt;/p&gt;

</description>
      <category>agents</category>
      <category>ai</category>
      <category>blockchain</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Sunder: The Open‑Source AI Coding Assistant That Translates, Explains, and Pairs With You</title>
      <dc:creator>kennedy</dc:creator>
      <pubDate>Thu, 12 Feb 2026 09:00:17 +0000</pubDate>
      <link>https://dev.to/n3on/sunder-the-open-source-ai-coding-assistant-that-translates-explains-and-pairs-with-you-1i1g</link>
      <guid>https://dev.to/n3on/sunder-the-open-source-ai-coding-assistant-that-translates-explains-and-pairs-with-you-1i1g</guid>
      <description>&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;Every developer knows the drill:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You find a brilliant Python snippet, but your project is in JavaScript.&lt;/li&gt;
&lt;li&gt;You want a second pair of eyes, but scheduling a code review takes days.&lt;/li&gt;
&lt;li&gt;Copilot helps, but it’s proprietary, doesn’t explain &lt;em&gt;why&lt;/em&gt;, and can’t translate.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Sunder&lt;/strong&gt; fixes all of that; and it’s now &lt;strong&gt;open source&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Is Sunder?
&lt;/h2&gt;

&lt;p&gt;Sunder is an &lt;strong&gt;AI‑powered collaborative platform&lt;/strong&gt; for code snippets. Think GitHub Gists meets Figma meets Gemini.&lt;/p&gt;

&lt;p&gt;With Sunder you can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Save &amp;amp; discover&lt;/strong&gt; snippets across 50+ languages
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Translate&lt;/strong&gt; code between languages with &lt;strong&gt;functional equivalence&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pair program&lt;/strong&gt; with an AI that learns your style
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Real‑time collaborate&lt;/strong&gt; on snippets with cursors, chat, and video
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Get explanations&lt;/strong&gt; and refactoring suggestions on demand
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All inside a beautiful Next.js + Tailwind UI.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Open Source?
&lt;/h2&gt;

&lt;p&gt;We believe developer tools should be &lt;strong&gt;transparent, community‑owned, and accessible to everyone&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;By open‑sourcing Sunder we’re saying:  &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;You shouldn’t need a corporate budget to have an AI pair programmer.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We also want to build the &lt;strong&gt;best AI‑first coding platform&lt;/strong&gt; – and that can only happen with contributions from developers like you.&lt;/p&gt;




&lt;h2&gt;
  
  
  Try It in 60 Seconds
&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/kawacukennedy/sunder
&lt;span class="nb"&gt;cd &lt;/span&gt;sunder
./scripts/setup.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That’s it. Docker Compose spins up PostgreSQL, Redis, and a &lt;strong&gt;mock AI server&lt;/strong&gt; – you don’t even need a Gemini API key.&lt;br&gt;&lt;br&gt;
Then open &lt;code&gt;http://localhost:3000&lt;/code&gt; and start exploring.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧩 What Needs Help?
&lt;/h2&gt;

&lt;p&gt;We’ve curated &lt;strong&gt;20+ “good first issues”&lt;/strong&gt; with detailed instructions and mentors.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Area&lt;/th&gt;
&lt;th&gt;Example Issue&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;🎨 Frontend (React)&lt;/td&gt;
&lt;td&gt;Add syntax highlighting for Rust&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;⚙️ Backend (Node)&lt;/td&gt;
&lt;td&gt;Optimize snippet search with trigram indexes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🧠 AI (Gemini)&lt;/td&gt;
&lt;td&gt;Improve translation accuracy for Go → TypeScript&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;📚 Docs&lt;/td&gt;
&lt;td&gt;Write a tutorial for real‑time collaboration&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://github.com/kawacukennedy/sunder/labels/good%20first%20issue" rel="noopener noreferrer"&gt;Browse good first issues →&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  💬 Join Our Community
&lt;/h2&gt;

&lt;p&gt;We’re on Discord; ask questions, share what you build, and meet other contributors.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://discord.gg/n8G4BVe7" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimg.shields.io%2Fdiscord%2F1234567890%3Fcolor%3D5865F2%26label%3DJoin%2520Discord%26logo%3Ddiscord" alt="Discord" width="179" height="20"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  One Last Thing
&lt;/h2&gt;

&lt;p&gt;If you believe AI tools should be open and collaborative:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Star the repo&lt;/strong&gt; – it helps others find us
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Share this post&lt;/strong&gt; with a friend who loves AI
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pick an issue&lt;/strong&gt; and make your first contribution today
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let’s build the future of coding – together.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Sunder on GitHub:&lt;/strong&gt; &lt;a href="https://github.com/kawacukennedy/sunder" rel="noopener noreferrer"&gt;github.com/kawacukennedy/sunder&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Contact:&lt;/strong&gt; &lt;a href="//kawacukent@gmail.com"&gt;Email&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Twitter:&lt;/strong&gt; &lt;a href="http://x.com/Arnaud_Kennedy" rel="noopener noreferrer"&gt;@Arnaud_Kennedy&lt;/a&gt;&lt;/p&gt;




</description>
      <category>opensource</category>
      <category>ai</category>
      <category>javascript</category>
      <category>nextjs</category>
    </item>
    <item>
      <title>I’m Building a High-Signal Discord for Developers Who Actually Want to Build (Not Another Dead Server)</title>
      <dc:creator>kennedy</dc:creator>
      <pubDate>Thu, 08 Jan 2026 18:44:17 +0000</pubDate>
      <link>https://dev.to/n3on/im-building-a-high-signal-discord-for-developers-who-actually-want-to-build-not-another-dead-19je</link>
      <guid>https://dev.to/n3on/im-building-a-high-signal-discord-for-developers-who-actually-want-to-build-not-another-dead-19je</guid>
      <description>

&lt;p&gt;Most developer Discord servers fail for the same reasons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Too many channels&lt;/li&gt;
&lt;li&gt;No structure&lt;/li&gt;
&lt;li&gt;No onboarding&lt;/li&gt;
&lt;li&gt;Everyone talks, nobody builds&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So I decided to build something different.&lt;/p&gt;

&lt;p&gt;I just launched a &lt;strong&gt;Developer Discord Community&lt;/strong&gt; designed around &lt;strong&gt;clarity, progression, and real collaboration&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  What makes this server different
&lt;/h3&gt;

&lt;p&gt;This is not a “drop a link and disappear” Discord.&lt;/p&gt;

&lt;p&gt;We’ve designed it with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Structured onboarding&lt;/strong&gt; (Beginner, Intermediate, Advanced)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Clean channel UX&lt;/strong&gt; (you only see what’s relevant to you)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Focused help channels&lt;/strong&gt; (no noise, no spam)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Project collaboration&lt;/strong&gt; (ideas → teams → execution)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A new Web3 channel&lt;/strong&gt; for serious discussions around blockchain, smart contracts, and decentralized apps&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Who this is for
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Developers who want to &lt;strong&gt;learn properly&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Developers who want to &lt;strong&gt;build real projects&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Developers who want &lt;strong&gt;feedback, not fluff&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Developers who want a community that respects their time&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Stacks include:&lt;br&gt;
Frontend, Backend, Mobile, AI/ML, DevOps — and now &lt;strong&gt;Web3&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  What you’ll actually do inside
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Ask and answer real technical questions&lt;/li&gt;
&lt;li&gt;Get code reviews&lt;/li&gt;
&lt;li&gt;Collaborate on projects&lt;/li&gt;
&lt;li&gt;Share resources that matter&lt;/li&gt;
&lt;li&gt;Learn from developers at different levels&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Join here
&lt;/h3&gt;

&lt;p&gt;👉 &lt;a href="https://discord.gg/9nqtzGVb" rel="noopener noreferrer"&gt;Discord Server&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you’re tired of low-signal communities and want a place that feels intentional and well-run, you’re welcome.&lt;/p&gt;

&lt;p&gt;Let’s build something meaningful.&lt;/p&gt;




</description>
      <category>developer</category>
      <category>career</category>
      <category>productivity</category>
      <category>discuss</category>
    </item>
    <item>
      <title>I Built 12 Projects In 12 Days… and Almost Lost My Mind 😭💻</title>
      <dc:creator>kennedy</dc:creator>
      <pubDate>Tue, 02 Dec 2025 11:51:56 +0000</pubDate>
      <link>https://dev.to/n3on/i-built-12-projects-in-12-days-and-almost-lost-my-mind-56p8</link>
      <guid>https://dev.to/n3on/i-built-12-projects-in-12-days-and-almost-lost-my-mind-56p8</guid>
      <description>&lt;p&gt;If you’ve ever said &lt;strong&gt;“I’ll start coding seriously tomorrow”&lt;/strong&gt;,&lt;br&gt;
and then tomorrow becomes &lt;em&gt;next week&lt;/em&gt;… and next week becomes&lt;br&gt;
&lt;strong&gt;“after this YouTube video”&lt;/strong&gt;…&lt;/p&gt;

&lt;p&gt;Yeah. Same.&lt;/p&gt;

&lt;p&gt;I wasn’t a “perfect” coder — I wasn’t even a consistent coder.&lt;/p&gt;

&lt;p&gt;I was more like:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Start a project → Get excited → Get stuck → Open TikTok → Never return.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;But deep inside, something had to change.&lt;/p&gt;

&lt;p&gt;So I did something… &lt;strong&gt;questionable&lt;/strong&gt;, bold, and slightly unhinged:&lt;br&gt;
I challenged myself to build &lt;strong&gt;12 projects in 12 days&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Did I suffer? Yes.&lt;br&gt;
Did I improve? &lt;em&gt;More than I expected.&lt;/em&gt;&lt;br&gt;
Would I do it again?&lt;/p&gt;

&lt;p&gt;…Let’s not talk about that yet.&lt;/p&gt;




&lt;h1&gt;
  
  
  😤 Days 1–3: “I Am Him” Energy
&lt;/h1&gt;

&lt;p&gt;I started small — a little too small.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A weather app&lt;/li&gt;
&lt;li&gt;A mini Pac-Man style game&lt;/li&gt;
&lt;li&gt;A simple note app&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I felt unstoppable. I was coding like I had a personal sponsorship from Red Bull.&lt;/p&gt;




&lt;h1&gt;
  
  
  😵 Days 4–6: Bug-Induced Hallucinations
&lt;/h1&gt;

&lt;p&gt;This is where things… shifted.&lt;/p&gt;

&lt;p&gt;You know those bugs that exist purely to test your patience?&lt;/p&gt;

&lt;p&gt;Like when a button doesn’t work because you spelled &lt;code&gt;onclick&lt;/code&gt; as &lt;code&gt;onlcik&lt;/code&gt;&lt;br&gt;
&lt;strong&gt;for 2 hours straight&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;At one point, I opened my console and it opened &lt;em&gt;back at me&lt;/em&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  😭 Days 7–9: The Existential Dread Arc
&lt;/h1&gt;

&lt;p&gt;Halfway through, I questioned EVERYTHING:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;My skills&lt;/li&gt;
&lt;li&gt;My sanity&lt;/li&gt;
&lt;li&gt;My life decisions&lt;/li&gt;
&lt;li&gt;Whether computers were even meant for humans&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But each time I considered giving up, a tiny voice whispered:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;“Bro, you already tweeted about this challenge. You can’t embarrass yourself now.”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;So I kept going.&lt;/p&gt;




&lt;h1&gt;
  
  
  🤯 Days 10–12: Final Boss Mode
&lt;/h1&gt;

&lt;p&gt;Something weird happened:&lt;br&gt;
I started coding… calmly?&lt;/p&gt;

&lt;p&gt;My debugging got faster.&lt;br&gt;
My problem-solving improved.&lt;br&gt;
I didn’t cry (as much).&lt;/p&gt;

&lt;p&gt;By Day 12, I pushed the last project, closed VS Code, and just sat there.&lt;/p&gt;

&lt;p&gt;I felt &lt;strong&gt;peace&lt;/strong&gt;.&lt;br&gt;
Or maybe burnout. Hard to tell.&lt;/p&gt;




&lt;h1&gt;
  
  
  💡 What I Learned (that school doesn’t teach you)
&lt;/h1&gt;

&lt;h3&gt;
  
  
  ✔ Consistency &amp;gt; Motivation
&lt;/h3&gt;

&lt;p&gt;Motivation comes and goes.&lt;br&gt;
Consistency stays — especially when your pride is on the line.&lt;/p&gt;

&lt;h3&gt;
  
  
  ✔ Projects teach faster than tutorials
&lt;/h3&gt;

&lt;p&gt;You can’t “tutorial” your way into mastery.&lt;br&gt;
You need to build stuff. Break stuff. Fix stuff. Cry a bit.&lt;/p&gt;

&lt;h3&gt;
  
  
  ✔ Your future self will thank you
&lt;/h3&gt;

&lt;p&gt;Even if your current self is suffering and eating cold noodles at 2 AM.&lt;/p&gt;




&lt;h1&gt;
  
  
  🔥 Final Thoughts
&lt;/h1&gt;

&lt;p&gt;This challenge didn’t turn me into a genius overnight.&lt;/p&gt;

&lt;p&gt;But it &lt;strong&gt;changed my mindset&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;If you're a beginner reading this, let me tell you:&lt;br&gt;
You &lt;em&gt;can&lt;/em&gt; become a great developer — just don’t quit when it gets hard.&lt;/p&gt;

&lt;p&gt;Start small. Build consistently.&lt;br&gt;
And maybe don’t do 12 projects in 12 days unless you're mentally prepared.&lt;/p&gt;

&lt;p&gt;(You’re probably not. I wasn’t.)&lt;/p&gt;




&lt;h1&gt;
  
  
  ❤️ If You Enjoyed This
&lt;/h1&gt;

&lt;p&gt;Leave a comment!&lt;br&gt;
Share the article!&lt;br&gt;
Tell me if you want the &lt;strong&gt;“12 Projects in 12 Days” full breakdown + code&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I might drop it.&lt;br&gt;
After I recover.&lt;/p&gt;




</description>
      <category>beginners</category>
      <category>productivity</category>
      <category>discuss</category>
      <category>programming</category>
    </item>
    <item>
      <title>👨‍💻 Welcome to the Life of a Developer</title>
      <dc:creator>kennedy</dc:creator>
      <pubDate>Mon, 24 Nov 2025 15:48:33 +0000</pubDate>
      <link>https://dev.to/n3on/welcome-to-the-life-of-a-developer-4aak</link>
      <guid>https://dev.to/n3on/welcome-to-the-life-of-a-developer-4aak</guid>
      <description>&lt;p&gt;Hey there! If you’ve ever wondered what it’s like to &lt;strong&gt;be a software developer&lt;/strong&gt;, pull up a chair, grab some coffee, and brace yourself. &lt;/p&gt;




&lt;h3&gt;
  
  
  My Daily Routine
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;9:00 AM&lt;/strong&gt; – Open laptop and stare at code for 5 minutes wondering if I'm alive.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;9:05 AM&lt;/strong&gt; – Realize I have no idea what I’m doing, Google everything.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;11:00 AM&lt;/strong&gt; – Solve a bug that shouldn’t have existed in the first place.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;2:00 PM&lt;/strong&gt; – Automate a task that takes 2 minutes, just to feel like a wizard.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;4:00 PM&lt;/strong&gt; – Remember I skipped lunch. Eat instant noodles.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;6:00 PM&lt;/strong&gt; – Code review: Cry silently while pretending to understand your teammate’s code.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;2:00 AM&lt;/strong&gt; – Push a fix to production. Panic internally. Celebrate externally. 🎉&lt;/li&gt;
&lt;/ol&gt;




&lt;h3&gt;
  
  
  Developer Truths
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Debugging&lt;/strong&gt; is like being a detective in a crime movie where you are also the murderer.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stack Overflow&lt;/strong&gt; is basically my second home.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Coffee&lt;/strong&gt;: not a drink, a lifestyle.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Code Comments&lt;/strong&gt;: If future-me can’t understand this, no one can.
&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Why I Love Development
&lt;/h3&gt;

&lt;p&gt;Because at the end of the day, I build things that &lt;strong&gt;make life easier&lt;/strong&gt;, &lt;strong&gt;solve problems&lt;/strong&gt;, and occasionally &lt;strong&gt;cause chaos in production&lt;/strong&gt;. And somehow, people pay me for it. 💸&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;"Talk is cheap. Show me the code." – Linus Torvalds&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;&lt;strong&gt;PS:&lt;/strong&gt; If you read this and laughed (or cried), &lt;strong&gt;star this repo&lt;/strong&gt;. You know, for moral support. &lt;strong&gt;&lt;a href="https://github.com/kawacukennedy/life_os.git" rel="noopener noreferrer"&gt;Star it here!&lt;/a&gt;&lt;/strong&gt; ⭐&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>devhumor</category>
      <category>career</category>
    </item>
    <item>
      <title>🚀 Autonomous Process Auditor (APA)</title>
      <dc:creator>kennedy</dc:creator>
      <pubDate>Sat, 22 Nov 2025 22:43:08 +0000</pubDate>
      <link>https://dev.to/n3on/autonomous-process-auditor-apa-3p0p</link>
      <guid>https://dev.to/n3on/autonomous-process-auditor-apa-3p0p</guid>
      <description>&lt;h3&gt;
  
  
  &lt;em&gt;AI that doesn’t assist — it works.&lt;/em&gt;
&lt;/h3&gt;

&lt;p&gt;I just built &lt;strong&gt;Autonomous Process Auditor (APA)&lt;/strong&gt; for the &lt;strong&gt;Agentic AI Hackathon (IBM watsonx Orchestrate)&lt;/strong&gt; — and it might be the most &lt;em&gt;useful&lt;/em&gt; AI agent I’ve ever created.&lt;/p&gt;

&lt;p&gt;Audits suck.&lt;br&gt;
They’re slow, manual, error-prone, and nobody wants to do them.&lt;/p&gt;

&lt;p&gt;So I built an AI agent that does &lt;strong&gt;100% of the auditing work&lt;/strong&gt; automatically.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔥 What APA Does
&lt;/h2&gt;

&lt;h3&gt;
  
  
  ✅ &lt;strong&gt;Automates end-to-end auditing&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;No more spreadsheets. No more human mistakes.&lt;/p&gt;

&lt;h3&gt;
  
  
  🤖 &lt;strong&gt;Validates workflows across tools&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Slack, Jira, Notion, Gmail, internal systems — APA checks everything.&lt;/p&gt;

&lt;h3&gt;
  
  
  📊 &lt;strong&gt;Detects anomalies in real time&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Human reviewers catch mistakes late. AI catches them instantly.&lt;/p&gt;

&lt;h3&gt;
  
  
  ⚡ &lt;strong&gt;Generates audit trails automatically&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Every action. Every timestamp. Fully traceable &amp;amp; exportable.&lt;/p&gt;

&lt;h3&gt;
  
  
  🔗 &lt;strong&gt;Uses IBM watsonx Orchestrate to chain skills&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;APA can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pull data&lt;/li&gt;
&lt;li&gt;Analyze patterns&lt;/li&gt;
&lt;li&gt;Flag issues&lt;/li&gt;
&lt;li&gt;Write reports&lt;/li&gt;
&lt;li&gt;Notify teams&lt;/li&gt;
&lt;li&gt;Log results
—all without human intervention.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🧠 Why This Matters
&lt;/h2&gt;

&lt;p&gt;Most “AI assistants” still need humans for everything important.&lt;br&gt;
APA isn’t an assistant.&lt;br&gt;
It’s an &lt;strong&gt;Agentic AI system&lt;/strong&gt; that completes tasks &lt;em&gt;autonomously&lt;/em&gt; from start to finish.&lt;/p&gt;

&lt;p&gt;This is the future of work.&lt;br&gt;
Not chatbots — &lt;em&gt;agents that handle entire workflows&lt;/em&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  🏆 If this doesn’t win the hackathon…
&lt;/h2&gt;

&lt;p&gt;…then maybe I need to build an &lt;strong&gt;Autonomous Judge Auditor&lt;/strong&gt; too 😤🔥&lt;/p&gt;




&lt;h2&gt;
  
  
  💬 What do you think?
&lt;/h2&gt;

&lt;p&gt;Would you trust an AI agent to run audits at your company?&lt;br&gt;
Or is this too much automation?&lt;/p&gt;

&lt;p&gt;Let’s talk 👇&lt;/p&gt;

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