<?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: Cless</title>
    <description>The latest articles on DEV Community by Cless (@liberifatali).</description>
    <link>https://dev.to/liberifatali</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3613549%2Fa2c3e8cd-b4b3-43ab-823f-80ad1367ffeb.jpg</url>
      <title>DEV Community: Cless</title>
      <link>https://dev.to/liberifatali</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/liberifatali"/>
    <language>en</language>
    <item>
      <title>Zero-Click Infrastructure: Prompting an AI Agent to Buy and Setup a Domain</title>
      <dc:creator>Cless</dc:creator>
      <pubDate>Wed, 13 May 2026 04:40:51 +0000</pubDate>
      <link>https://dev.to/liberifatali/zero-click-infrastructure-prompting-an-ai-agent-to-buy-and-setup-a-domain-5e74</link>
      <guid>https://dev.to/liberifatali/zero-click-infrastructure-prompting-an-ai-agent-to-buy-and-setup-a-domain-5e74</guid>
      <description>&lt;p&gt;Building the &lt;a href="https://worldcuporacle.org" rel="noopener noreferrer"&gt;World Cup Oracle 2026&lt;/a&gt; has been an experiment in fully AI-driven development. I wanted every piece of the stack - from the UI to the deployment- to be built entirely through prompts. But when it came time to deploy, I hit a wall: buying a domain usually requires leaving the terminal, clicking through a registrar's UI, and typing in a credit card. &lt;/p&gt;

&lt;p&gt;How do you get an AI agent to buy a domain for you?&lt;/p&gt;

&lt;p&gt;Enter &lt;a href="https://agentdomainsearch.com" rel="noopener noreferrer"&gt;AgentDomainSearch.com&lt;/a&gt;. It’s an agent-first domain registry that uses &lt;a href="https://x402.org" rel="noopener noreferrer"&gt;x402&lt;/a&gt; for inline USDC payments and EIP-191 wallet signatures for authentication. No accounts, no API keys, no UIs required.&lt;/p&gt;

&lt;p&gt;Here is the exact tutorial on how I prompted my AI agent to buy &lt;code&gt;worldcuporacle.org&lt;/code&gt; and link it to my Vercel app.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 1: Funding the Agent's Wallet
&lt;/h2&gt;

&lt;p&gt;First, the agent needs a wallet (&lt;a href="https://dev.to/liberifatali/give-your-ai-agent-a-wallet-in-under-5-mins-with-aethergent-39b4"&gt;give it automatically&lt;/a&gt;). AgentDomainSearch runs on the Base network, so I generated a standard Ethereum wallet for my agent and sent it some USDC (Base) to cover the domain cost.&lt;/p&gt;

&lt;p&gt;I saved the private key in a &lt;code&gt;.env&lt;/code&gt; file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;WALLET_PRIVATE_KEY=0xYourPrivateKeyHere
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Step 2: Prompting to Buy the Domain
&lt;/h2&gt;

&lt;p&gt;With the agent funded, I needed it to interact with the AgentDomainSearch API. Because the API uses x402 (a standard for agentic payments), the agent can use the official Python SDK to handle the 402 Payment Required challenges automatically.&lt;/p&gt;

&lt;p&gt;Here is the prompt I used:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Prompt:&lt;/strong&gt; Create a Python script using the &lt;code&gt;x402&lt;/code&gt; SDK to buy &lt;code&gt;worldcuporacle.org&lt;/code&gt; on agentdomainsearch.com. Use the &lt;code&gt;WALLET_PRIVATE_KEY&lt;/code&gt; from the &lt;code&gt;.env&lt;/code&gt; file to sign the EIP-3009 payment authorization. Ensure you provide the necessary contact details in the payload.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The agent wrote a beautiful script that:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Hit the &lt;code&gt;POST /worldcuporacle.org&lt;/code&gt; endpoint.&lt;/li&gt;
&lt;li&gt;Caught the &lt;code&gt;402 Payment Required&lt;/code&gt; response.&lt;/li&gt;
&lt;li&gt;Used the wallet to sign the exact USDC amount required.&lt;/li&gt;
&lt;li&gt;Retried the request with the &lt;code&gt;PAYMENT-SIGNATURE&lt;/code&gt; header.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In seconds, the domain was mine. The wallet address that paid the USDC became the owner automatically.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faxv08lg7gqvrwtmauc2i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faxv08lg7gqvrwtmauc2i.png" alt="purchased domain verification" width="800" height="517"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 3: Prompting to Setup Vercel DNS
&lt;/h2&gt;

&lt;p&gt;Now that the agent owned the domain, it needed to configure the DNS to point to my existing Vercel deployment. Vercel requires an &lt;code&gt;A&lt;/code&gt; record for the root domain pointing to &lt;code&gt;76.76.21.21&lt;/code&gt; and a &lt;code&gt;CNAME&lt;/code&gt; for &lt;code&gt;www&lt;/code&gt; pointing to &lt;code&gt;cname.vercel-dns.com&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;AgentDomainSearch handles DNS management via an authenticated &lt;code&gt;PUT /:domain/dns&lt;/code&gt; endpoint, using an EIP-191 signature (&lt;code&gt;agentdomainsearch.com:&amp;lt;unix-timestamp&amp;gt;&lt;/code&gt;) as the Bearer token.&lt;/p&gt;

&lt;p&gt;Here is the prompt to automate the DNS setup:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Prompt:&lt;/strong&gt; Create a bash script &lt;code&gt;setup_domain_vercel.sh&lt;/code&gt; that automates connecting our new domain to Vercel. First, create a Python script to update the DNS on AgentDomainSearch to point the &lt;code&gt;@&lt;/code&gt; A record to &lt;code&gt;76.76.21.21&lt;/code&gt; and the &lt;code&gt;www&lt;/code&gt; CNAME to &lt;code&gt;cname.vercel-dns.com&lt;/code&gt;. Authenticate using the EIP-191 signature from the owner's wallet. Second, run &lt;code&gt;npx vercel domains add &amp;lt;domain&amp;gt;&lt;/code&gt;. Finally, trigger a Vercel deployment to link it up.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The agent got to work. It reverse-engineered the payload structure:&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;"records"&lt;/span&gt;&lt;span class="p"&gt;:&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;span class="nl"&gt;"A"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[{&lt;/span&gt;&lt;span class="nl"&gt;"subdomain"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"ip_address"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"76.76.21.21"&lt;/span&gt;&lt;span class="p"&gt;}],&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"CNAME"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[{&lt;/span&gt;&lt;span class="nl"&gt;"subdomain"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"www"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"hostname"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"cname.vercel-dns.com"&lt;/span&gt;&lt;span class="p"&gt;}]&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;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 wrapped the Python DNS update logic, the Vercel CLI domain addition, and the redeployment trigger into one elegant bash script.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Result
&lt;/h2&gt;

&lt;p&gt;I ran the agent's script:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;./scripts/setup_domain_vercel.sh worldcuporacle.org
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Output:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;🌐 Setting up domain: worldcuporacle.org
----------------------------------------
📡 1/3: Configuring DNS records on AgentDomainSearch...
✅ DNS update successful!

☁️  2/3: Adding domain to Vercel project...
&amp;gt; Success! Domain worldcuporacle.org added to project worldcup-oracle.

🚀 3/3: Deploying and aliasing...
🔗  Aliased: https://worldcuporacle.org

🎉 SUCCESS! worldcuporacle.org is now fully configured and live.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;p&gt;This wasn't just about saving five minutes of clicking around a registrar dashboard. This proves that &lt;strong&gt;end-to-end infrastructure provisioning can now be fully agentic&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;By combining x402 payment standards with modern, API-first services like AgentDomainSearch and Vercel, an AI agent can conceptualize a project, write the code, purchase the domain, configure the DNS, and deploy the application-all autonomously, interacting purely machine-to-machine.&lt;/p&gt;

&lt;p&gt;The future of DevOps is here, and it doesn't rely on a GUI.&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;(This is a follow-up post to "&lt;a href="https://dev.to/liberifatali/build-and-deploy-a-world-cup-2026-oracle-in-under-10-minutes-1plk"&gt;Build and Deploy a World Cup 2026 Oracle in Under 10 Minutes&lt;/a&gt;")&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>web3</category>
      <category>x402</category>
    </item>
    <item>
      <title>Build and Deploy a World Cup 2026 Oracle in Under 10 Minutes 🏆</title>
      <dc:creator>Cless</dc:creator>
      <pubDate>Fri, 08 May 2026 08:52:46 +0000</pubDate>
      <link>https://dev.to/liberifatali/build-and-deploy-a-world-cup-2026-oracle-in-under-10-minutes-1plk</link>
      <guid>https://dev.to/liberifatali/build-and-deploy-a-world-cup-2026-oracle-in-under-10-minutes-1plk</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Here is the generated app &lt;a href="https://worldcup-oracle.vercel.app" rel="noopener noreferrer"&gt;https://worldcup-oracle.vercel.app&lt;/a&gt;&lt;/em&gt;&lt;br&gt;
&lt;em&gt;(If you want to use your own domain, check the next post)&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;Predicting the future doesn't have to be expensive. In fact, following this &lt;a href="https://drive.google.com/file/d/18PgRLexNeqqye7SfnZMrUVAUw5XxvrHN/view?usp=drive_link" rel="noopener noreferrer"&gt;worldcup-orcale_plan.md&lt;/a&gt;, you can build, host, and deploy a full-scale World Cup 2026 simulator using a minimal, zero-cost stack.&lt;/p&gt;

&lt;p&gt;We're going to use a modern, minimalist approach to get this app live on a free Vercel subdomain, with a streamlined code management flow using AgentRepo.&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;The Mission: A Self-Sustaining Predictor&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Our goal is to create a beautiful, self-contained web app where all the complex simulation logic runs entirely on the client side.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;1. Building the Prediction Engine&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;The heart of the app is a robust engine that calculates team strengths and simulates outcomes using a multi-layered statistical approach:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;ELO-Based Win Probability&lt;/strong&gt;: We use the standard ELO formula to determine the expected win probability 

&lt;span class="katex-element"&gt;
  &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;WeW_e &lt;/span&gt;&lt;span class="katex-html"&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mord mathnormal"&gt;W&lt;/span&gt;&lt;span class="msupsub"&gt;&lt;span class="vlist-t vlist-t2"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist"&gt;&lt;span&gt;&lt;span class="pstrut"&gt;&lt;/span&gt;&lt;span class="sizing reset-size6 size3 mtight"&gt;&lt;span class="mord mathnormal mtight"&gt;e&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-s"&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;
 between any two teams.&lt;br&gt;

&lt;/p&gt;
&lt;div class="katex-element"&gt;
  &lt;span class="katex-display"&gt;&lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;We=11+10(RB−RA)/400W_e = \frac{1}{1 + 10^{(R_B - R_A)/400}} &lt;/span&gt;&lt;span class="katex-html"&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mord mathnormal"&gt;W&lt;/span&gt;&lt;span class="msupsub"&gt;&lt;span class="vlist-t vlist-t2"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist"&gt;&lt;span&gt;&lt;span class="pstrut"&gt;&lt;/span&gt;&lt;span class="sizing reset-size6 size3 mtight"&gt;&lt;span class="mord mathnormal mtight"&gt;e&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-s"&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;=&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mopen nulldelimiter"&gt;&lt;/span&gt;&lt;span class="mfrac"&gt;&lt;span class="vlist-t vlist-t2"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist"&gt;&lt;span&gt;&lt;span class="pstrut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mord"&gt;1&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mbin"&gt;+&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mord"&gt;1&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mord"&gt;0&lt;/span&gt;&lt;span class="msupsub"&gt;&lt;span class="vlist-t"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist"&gt;&lt;span&gt;&lt;span class="pstrut"&gt;&lt;/span&gt;&lt;span class="sizing reset-size6 size3 mtight"&gt;&lt;span class="mord mtight"&gt;&lt;span class="mopen mtight"&gt;(&lt;/span&gt;&lt;span class="mord mtight"&gt;&lt;span class="mord mathnormal mtight"&gt;R&lt;/span&gt;&lt;span class="msupsub"&gt;&lt;span class="vlist-t vlist-t2"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist"&gt;&lt;span&gt;&lt;span class="pstrut"&gt;&lt;/span&gt;&lt;span class="sizing reset-size3 size1 mtight"&gt;&lt;span class="mord mathnormal mtight"&gt;B&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-s"&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="mbin mtight"&gt;−&lt;/span&gt;&lt;span class="mord mtight"&gt;&lt;span class="mord mathnormal mtight"&gt;R&lt;/span&gt;&lt;span class="msupsub"&gt;&lt;span class="vlist-t vlist-t2"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist"&gt;&lt;span&gt;&lt;span class="pstrut"&gt;&lt;/span&gt;&lt;span class="sizing reset-size3 size1 mtight"&gt;&lt;span class="mord mathnormal mtight"&gt;A&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-s"&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="mclose mtight"&gt;)&lt;/span&gt;&lt;span class="mord mtight"&gt;/400&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span class="pstrut"&gt;&lt;/span&gt;&lt;span class="frac-line"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span class="pstrut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mord"&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-s"&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="mclose nulldelimiter"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/div&gt;

In this formula, 
&lt;span class="katex-element"&gt;
  &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;RAR_A &lt;/span&gt;&lt;span class="katex-html"&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mord mathnormal"&gt;R&lt;/span&gt;&lt;span class="msupsub"&gt;&lt;span class="vlist-t vlist-t2"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist"&gt;&lt;span&gt;&lt;span class="pstrut"&gt;&lt;/span&gt;&lt;span class="sizing reset-size6 size3 mtight"&gt;&lt;span class="mord mathnormal mtight"&gt;A&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-s"&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;
 and 
&lt;span class="katex-element"&gt;
  &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;RBR_B &lt;/span&gt;&lt;span class="katex-html"&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mord mathnormal"&gt;R&lt;/span&gt;&lt;span class="msupsub"&gt;&lt;span class="vlist-t vlist-t2"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist"&gt;&lt;span&gt;&lt;span class="pstrut"&gt;&lt;/span&gt;&lt;span class="sizing reset-size6 size3 mtight"&gt;&lt;span class="mord mathnormal mtight"&gt;B&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-s"&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;
 represent the ELO ratings of Team A and Team B. The constant &lt;strong&gt;400&lt;/strong&gt; sets the scale of the system; a 400-point rating difference means the stronger team has a 10:1 ratio of expected wins compared to the weaker team.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Poisson-Approximated Goals&lt;/strong&gt;: To simulate realistic scores, we use a Poisson distribution. The parameter 
&lt;span class="katex-element"&gt;
  &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;λ\lambda &lt;/span&gt;&lt;span class="katex-html"&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;λ&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;
 (lambda) represents the &lt;strong&gt;Expected Goals (xG)&lt;/strong&gt; for a team. We calculate 
&lt;span class="katex-element"&gt;
  &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;λ\lambda &lt;/span&gt;&lt;span class="katex-html"&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;λ&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;
 by scaling the historical World Cup average of 1.15 goals per team based on the square root of the teams' relative ELO strengths:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;lambdaA&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;baseGoals&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sqrt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;teamA&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;strength&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="nx"&gt;teamB&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;strength&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;goalsA&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;poissonSample&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;lambdaA&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;This ensures that while a stronger team is more likely to score, the Poisson distribution still allows for the natural variance and low-scoring "upsets" typical of international football.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;2026 Tournament Logic&lt;/strong&gt;: The engine faithfully recreates the expanded 48-team format. It handles 12 groups of four, simulates the round-robin stage, and implements the tie-breaking advancement logic: the top 2 from each group plus the 8 best 3rd-place teams advance to a 32-team knockout bracket.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Monte Carlo Simulation&lt;/strong&gt;: To keep the UI buttery smooth while running &lt;strong&gt;10,000 simulations&lt;/strong&gt;, we offload the heavy lifting to a &lt;strong&gt;Web Worker&lt;/strong&gt; (&lt;code&gt;src/monte-carlo.worker.js&lt;/code&gt;). This ensures the browser doesn't freeze while the "Oracle" calculates goal probability distributions and win percentages across thousands of possible timelines.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;2. The Aesthetic: Glassmorphism&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;For the UI, we’re going with a "dark glassmorphism" look, think frosted glass over a high-energy stadium hero background.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Zero Image Assets&lt;/strong&gt;: We use emoji-based country flags to keep the app ultra-lightweight.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Dynamic Design&lt;/strong&gt;: The UI features an animated tournament bracket with smooth CSS transitions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Fully Responsive&lt;/strong&gt;: The layout is optimized for both mobile and desktop users.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;The Workflow: AgentRepo + Vercel&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Forget traditional signups. For this project, we’re using &lt;strong&gt;AgentRepo&lt;/strong&gt; for a frictionless, account-free source control experience.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Step 1: Push to AgentRepo&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;Standard Git repositories often require accounts. With AgentRepo, you simply generate a UUID for the project and push.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Initialize and push to a free UUID org&lt;/span&gt;
git init
&lt;span class="nv"&gt;UUID&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;python3 &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="s1"&gt;'import uuid; print(uuid.uuid4())'&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;
git remote add origin https://agentrepo.com/&lt;span class="nv"&gt;$UUID&lt;/span&gt;/worldcup-oracle  
git push origin main
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The project UUID is saved locally in a gitignored &lt;code&gt;.env&lt;/code&gt; file so you can push updates later.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Step 2: Instant Deployment&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;Deploying to the cloud is handled via a simple shell script that wraps Vercel’s production deployment.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;One-Click Launch&lt;/strong&gt;: Run &lt;code&gt;./scripts/deploy.sh&lt;/code&gt; to go live instantly.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Live URL&lt;/strong&gt;: The app lives at &lt;code&gt;worldcup-oracle.vercel.app&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Security&lt;/strong&gt;: SSL is automatically provisioned and managed for you.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Summary&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;This setup proves you can build professional-grade tools with zero overhead. You get:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;High-Performance Logic&lt;/strong&gt;: Monte Carlo simulations via Web Workers.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;No-Auth Source Control&lt;/strong&gt;: Public Git repos without the signup friction.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Zero Cost&lt;/strong&gt;: Total spend is exactly &lt;strong&gt;$0&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;




&lt;p&gt;Simply hand the &lt;strong&gt;&lt;a href="https://drive.google.com/file/d/18PgRLexNeqqye7SfnZMrUVAUw5XxvrHN/view?usp=drive_link" rel="noopener noreferrer"&gt;worldcup-orcale_plan.md&lt;/a&gt;&lt;/strong&gt; to your favorite AI coding agent and watch it build the future of World Cup 2026 forecasting!&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>agentrepo</category>
      <category>web</category>
    </item>
    <item>
      <title>Give your AI agent a wallet in under 5 mins with Aethergent</title>
      <dc:creator>Cless</dc:creator>
      <pubDate>Fri, 24 Apr 2026 13:37:47 +0000</pubDate>
      <link>https://dev.to/liberifatali/give-your-ai-agent-a-wallet-in-under-5-mins-with-aethergent-39b4</link>
      <guid>https://dev.to/liberifatali/give-your-ai-agent-a-wallet-in-under-5-mins-with-aethergent-39b4</guid>
      <description>&lt;p&gt;Building an autonomous agent is one thing; giving it the ability to pay for its own API credits or interact with on-chain protocols is another. Traditionally, this required complex SDKs and API keys.&lt;/p&gt;

&lt;p&gt;With &lt;strong&gt;&lt;a href="https://aethergent.com/" rel="noopener noreferrer"&gt;Aethergent&lt;/a&gt;&lt;/strong&gt;, you can bypass the onboarding friction and give your agent a wallet with a single HTTP call.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. The Basics: Crypto, Wallets, and Keypairs
&lt;/h2&gt;

&lt;p&gt;Before we code, let's break down what your agent actually needs to interact with a blockchain like Ethereum:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;What is a "Wallet"?&lt;/strong&gt; In the context of an AI agent, a wallet isn't an app or a physical object. It is a digital identity that allows the agent to sign transactions and hold assets.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;The Keypair:&lt;/strong&gt; Every wallet consists of two mathematically linked strings of characters:

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Private Key:&lt;/strong&gt; A secret 256-bit number that acts like a digital signature. If your agent has this key, it can move funds. &lt;strong&gt;Never share this.&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Public Address:&lt;/strong&gt; Derived from the public key, this is the "account number" (e.g., &lt;code&gt;0x742...&lt;/code&gt;) that others use to send funds to your agent.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;  &lt;strong&gt;Ethereum/EVM:&lt;/strong&gt; Ethereum is the network, and the EVM (Ethereum Virtual Machine) is the standard it uses. A wallet generated via Aethergent works across all EVM-compatible chains, including Base, Optimism, Arbitrum, and Polygon.&lt;/li&gt;

&lt;/ul&gt;




&lt;h2&gt;
  
  
  2. How Aethergent Works
&lt;/h2&gt;

&lt;p&gt;Aethergent is an open API that performs the math required to generate these keys and returns them instantly over HTTPS. It is stateless and zero-auth, meaning no signups or API keys are required.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;⚠️ &lt;strong&gt;Security Note:&lt;/strong&gt; Aethergent does not log or store private keys. However, because the key is generated on a server, it is best suited for micropayment wallets and agent operations rather than storing large amounts of capital.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  3. Step-by-Step Integration
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step A: Generate the Wallet
&lt;/h3&gt;

&lt;p&gt;Your agent simply needs to make a &lt;code&gt;POST&lt;/code&gt; request to the Aethergent root URL.&lt;/p&gt;

&lt;h4&gt;
  
  
  Using CURL
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST https://aethergent.com/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Using Python
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;

&lt;span class="c1"&gt;# One call to get a fresh Ethereum keypair
&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://aethergent.com/&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;wallet&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Address: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;wallet&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;address&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Private Key: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;wallet&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;private_key&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Using Node.js
&lt;/h4&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;res&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;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://aethergent.com/&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;method&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;POST&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;wallet&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;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&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 Address: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;wallet&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;address&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step B: Fund the Agent
&lt;/h3&gt;

&lt;p&gt;Once you have the address, send a small amount of ETH or USDC to it from your own wallet.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step C: Secure the Key
&lt;/h3&gt;

&lt;p&gt;Do not hardcode the private key. For agents, we recommend:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Environment Variables:&lt;/strong&gt; Best for Docker or Cloud deployments.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Secret Managers:&lt;/strong&gt; Use AWS Secrets Manager, GitHub Secrets, or equivalent to keep the key encrypted at rest.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Ephemeral Use:&lt;/strong&gt; Generate a new wallet for every session if the task is one-off.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  4. Advanced: Model Context Protocol (MCP)
&lt;/h2&gt;

&lt;p&gt;If you are using frameworks like &lt;strong&gt;Claude Code&lt;/strong&gt; or &lt;strong&gt;Cursor&lt;/strong&gt;, Aethergent supports &lt;a href="https://modelcontextprotocol.io/" rel="noopener noreferrer"&gt;MCP&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Your agent can natively discover the &lt;code&gt;generate_wallet&lt;/code&gt; tool via a JSON-RPC 2.0 call to &lt;code&gt;/mcp&lt;/code&gt;, allowing it to create its own wallet without you writing any custom HTTP logic.&lt;/p&gt;




&lt;p&gt;Your agent is now ready to transact on the open web!&lt;/p&gt;

&lt;p&gt;&lt;em&gt;What will you build next?&lt;/em&gt; Let me know in the comments! 👇&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>cryptocurrency</category>
      <category>ethereum</category>
    </item>
    <item>
      <title>Google Antigravity - Increase font size for the agent chat area</title>
      <dc:creator>Cless</dc:creator>
      <pubDate>Thu, 23 Apr 2026 10:06:14 +0000</pubDate>
      <link>https://dev.to/liberifatali/google-antigravity-increase-font-size-for-the-agent-chat-area-3fem</link>
      <guid>https://dev.to/liberifatali/google-antigravity-increase-font-size-for-the-agent-chat-area-3fem</guid>
      <description>&lt;p&gt;Google Antigravity is a good IDE for AI-assisted coding. From the release, there has been no option to increase the font size in the agent chat, so it's a pain to read text there.&lt;/p&gt;

&lt;p&gt;This &lt;strong&gt;&lt;a href="https://gist.github.com/LiberiFatali/b8482ba2b5030b73aa0fac420a4df650" rel="noopener noreferrer"&gt;Python script&lt;/a&gt;&lt;/strong&gt; will enable setting the font size.&lt;/p&gt;

&lt;p&gt;Before&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkk0m80ancsx2rh6q1fjq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkk0m80ancsx2rh6q1fjq.png" alt="Chat area before" width="680" height="422"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fonkpjvrcyop50bam2szz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fonkpjvrcyop50bam2szz.png" alt="Chat area after" width="680" height="623"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It implemented steps described &lt;strong&gt;&lt;a href="https://www.reddit.com/r/google_antigravity/comments/1qw4r19/heres_how_to_fix_the_small_font_size_in_google/" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

</description>
      <category>antigravity</category>
    </item>
    <item>
      <title>Advent of Agents - Day 8</title>
      <dc:creator>Cless</dc:creator>
      <pubDate>Fri, 26 Dec 2025 04:35:29 +0000</pubDate>
      <link>https://dev.to/liberifatali/advent-of-agents-day-8-4h88</link>
      <guid>https://dev.to/liberifatali/advent-of-agents-day-8-4h88</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fml3tmrkn7wxxc0837nvv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fml3tmrkn7wxxc0837nvv.png" alt="ADK Context Engineering Infographic" width="800" height="447"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/eQDx90dVc38"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.kaggle.com/whitepaper-context-engineering-sessions-and-memory" rel="noopener noreferrer"&gt;More details&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
    </item>
    <item>
      <title>Advent of Agents - Day 4</title>
      <dc:creator>Cless</dc:creator>
      <pubDate>Mon, 08 Dec 2025 07:18:32 +0000</pubDate>
      <link>https://dev.to/liberifatali/advent-of-agents-day-4-1843</link>
      <guid>https://dev.to/liberifatali/advent-of-agents-day-4-1843</guid>
      <description>&lt;p&gt;Agent Engine supports source-based deployment. Your source code deploys directly to production.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Get started with Agent Starter Pack:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For a new project:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;uvx agent-starter-pack create my-agent &lt;span class="nt"&gt;-a&lt;/span&gt; adk_base &lt;span class="nt"&gt;-d&lt;/span&gt; agent_engine
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Already have an ADK agent? Use enhance:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;uvx agent-starter-pack enhance &lt;span class="nt"&gt;--d&lt;/span&gt; agent_engine
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then trigger the deployment with&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;make deploy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>ai</category>
      <category>agents</category>
      <category>adventofagents</category>
    </item>
    <item>
      <title>Advent of Agents - Day 3</title>
      <dc:creator>Cless</dc:creator>
      <pubDate>Thu, 04 Dec 2025 09:00:15 +0000</pubDate>
      <link>https://dev.to/liberifatali/advent-of-agents-day-3-2565</link>
      <guid>https://dev.to/liberifatali/advent-of-agents-day-3-2565</guid>
      <description>&lt;p&gt;&lt;em&gt;Build a powerful AI Agent using Gemini 3 and ADK with native support for Google Search grounding, computer use, and real-time streaming.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Setup the project&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;One liner with Agent Starter Pack&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;uvx agent-starter-pack create -y --api-key &amp;lt;YOUR_GEMINI_API_KEY&amp;gt; my_agent
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;or&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Using ADK CLI&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;uv init
uv add google-adk
uv add google-genai
export GOOGLE_API_KEY="YOUR_API_KEY"
source .venv/bin/activate
adk create my_agent
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;2. Download sample and run locally&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl 'https://raw.githubusercontent.com/GoogleCloudPlatform/devrel-demos/refs/heads/main/ai-ml/agent-labs/gemini-3-pro-agent-demo/my_agent/agent.py' &amp;gt; my_agent/agent.py
adk web
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>ai</category>
      <category>agents</category>
      <category>adventoagents</category>
    </item>
    <item>
      <title>Advent of Agents - Day 2</title>
      <dc:creator>Cless</dc:creator>
      <pubDate>Wed, 03 Dec 2025 01:35:35 +0000</pubDate>
      <link>https://dev.to/liberifatali/advent-of-agents-day-2-4mnp</link>
      <guid>https://dev.to/liberifatali/advent-of-agents-day-2-4mnp</guid>
      <description>&lt;ul&gt;
&lt;li&gt;4 lines of text = 1 working AI agent.&lt;/li&gt;
&lt;li&gt;No coding. Just YAML.&lt;/li&gt;
&lt;li&gt;A working AI agent powered by Gemini 3&lt;/li&gt;
&lt;li&gt;Google Search integration
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;uvx --from google-adk adk create --type=config my_agent
uvx --from google-adk adk web
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>ai</category>
      <category>agents</category>
      <category>adventofagents</category>
    </item>
    <item>
      <title>Advent of Agents - Day 1</title>
      <dc:creator>Cless</dc:creator>
      <pubDate>Tue, 02 Dec 2025 13:31:47 +0000</pubDate>
      <link>https://dev.to/liberifatali/advent-of-agents-day-1-4hb9</link>
      <guid>https://dev.to/liberifatali/advent-of-agents-day-1-4hb9</guid>
      <description>&lt;p&gt;&lt;a href="https://notebooklm.google.com/notebook/35f2378a-1cbe-448d-a3dd-b34a84f93ea3?authuser=1" rel="noopener noreferrer"&gt;Introduction to Agents&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/nOYWU9f5p3M"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href="https://adventofagents.com/" rel="noopener noreferrer"&gt;More info here&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>adventofagents</category>
    </item>
    <item>
      <title>Story of Esperanto</title>
      <dc:creator>Cless</dc:creator>
      <pubDate>Sat, 29 Nov 2025 14:23:04 +0000</pubDate>
      <link>https://dev.to/liberifatali/story-of-esperanto-n1l</link>
      <guid>https://dev.to/liberifatali/story-of-esperanto-n1l</guid>
      <description>&lt;p&gt;I'm learning Esperanto, lingvo de paco - the language of peace. Here are interesting things about its history.&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/mcX1OF7fEas"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

</description>
      <category>esperanto</category>
      <category>polygot</category>
    </item>
    <item>
      <title>Google ADK Tutorials</title>
      <dc:creator>Cless</dc:creator>
      <pubDate>Sun, 23 Nov 2025 12:12:16 +0000</pubDate>
      <link>https://dev.to/liberifatali/google-adk-tutorials-1e2b</link>
      <guid>https://dev.to/liberifatali/google-adk-tutorials-1e2b</guid>
      <description>&lt;p&gt;I'm putting a list of tutorials for Google ADK (Agent Development Kit). This is the foundation.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://codelabs.developers.google.com/devsite/codelabs/build-agents-with-adk-foundation" rel="noopener noreferrer"&gt;A quick start to get a feel of Google ADK&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://cloud.google.com/blog/topics/developers-practitioners/building-collaborative-ai-a-developers-guide-to-multi-agent-systems-with-adk" rel="noopener noreferrer"&gt;Foundational concepts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://codelabs.developers.google.com/devsite/codelabs/build-agents-with-adk-empowering-with-tools" rel="noopener noreferrer"&gt;First experience with ADK tools&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://codelabs.developers.google.com/onramp/instructions" rel="noopener noreferrer"&gt;A good crash course&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://codelabs.developers.google.com/adkcourse/instructions" rel="noopener noreferrer"&gt;ADK pattern with Memory and MCP (Model Context Protocol)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/google/adk-samples" rel="noopener noreferrer"&gt;google/adk-samples&lt;/a&gt;: A collection of sample agents built with Agent Development (ADK)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://tidal-draw-67c.notion.site/Study-Note-AI-Agent-2b4b2866cc68805c8018dfb996578c94" rel="noopener noreferrer"&gt;Study Note « AI Agent from Annie Wang&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>agents</category>
      <category>ai</category>
    </item>
    <item>
      <title>Setup Gstreamer with Python on Windows</title>
      <dc:creator>Cless</dc:creator>
      <pubDate>Wed, 19 Nov 2025 04:44:49 +0000</pubDate>
      <link>https://dev.to/liberifatali/setup-gstreamer-with-python-on-windows-59n3</link>
      <guid>https://dev.to/liberifatali/setup-gstreamer-with-python-on-windows-59n3</guid>
      <description>&lt;p&gt;&lt;em&gt;When I started trying GStreamer with Python on Windows 10, it took me quite some time to set up the development environment. So this might help others on the way.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The most convenient approach is through MSYS2. Here are the steps:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1.&lt;/strong&gt; Download and install MSYS2: &lt;a href="https://www.msys2.org" rel="noopener noreferrer"&gt;https://www.msys2.org&lt;/a&gt;. Remember [msys2_path] for environment variable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2.&lt;/strong&gt; Install Python, GStreamer, tools, plugins, and PyGObject&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Open MSYS2 UCRT64 terminal&lt;/li&gt;
&lt;li&gt;Update MSYS2 &lt;code&gt;pacman -Syu&lt;/code&gt;. After this, the terminal may close; you need to open it again.&lt;/li&gt;
&lt;li&gt;Install gcc &lt;code&gt;pacman -S mingw-w64-ucrt-x86_64-gcc&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Install Python, GStreamer, tools, plugins, and PyGObject
&lt;code&gt;pacman -S mingw-w64-x86_64-python3 mingw-w64-x86_64-gstreamer mingw-w64-x86_64-gst-devtools mingw-w64-x86_64-gst-plugins-{base,good,bad,ugly} mingw-w64-x86_64-python3-gobject&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Add the following paths to &lt;code&gt;~/.bashrc&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;export PATH="&amp;lt;msys2_path&amp;gt;/mingw64/bin:$PATH"
export XDG_DATA_DIRS="&amp;lt;msys2_path&amp;gt;/mingw64/share/:$XDG_DATA_DIRS"
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Apply bashrc: &lt;code&gt;source ~/.bashrc&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;3.&lt;/strong&gt; Test: run this on the terminal&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pip install pygobject
python -c "import gi; gi.require_version('Gst', '1.0'); from gi.repository import Gst; print(Gst.version_string())"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>gstreamer</category>
      <category>python</category>
      <category>windows</category>
    </item>
  </channel>
</rss>
