<?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>Forem: Prajwal Khairnar</title>
    <description>The latest articles on Forem by Prajwal Khairnar (@prajwalkhairnar).</description>
    <link>https://forem.com/prajwalkhairnar</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%2F3829622%2Fcca0d6af-7a17-407e-a690-91f72365c1d4.jpeg</url>
      <title>Forem: Prajwal Khairnar</title>
      <link>https://forem.com/prajwalkhairnar</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/prajwalkhairnar"/>
    <language>en</language>
    <item>
      <title>@ClawMe: Making self-hosted AI agents discoverable; why I'm building @handles for A2A</title>
      <dc:creator>Prajwal Khairnar</dc:creator>
      <pubDate>Wed, 18 Mar 2026 07:18:22 +0000</pubDate>
      <link>https://forem.com/prajwalkhairnar/clawme-making-self-hosted-ai-agents-discoverable-why-im-building-handles-for-a2a-3bb5</link>
      <guid>https://forem.com/prajwalkhairnar/clawme-making-self-hosted-ai-agents-discoverable-why-im-building-handles-for-a2a-3bb5</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;TL;DR: A2A assumes your agent lives at a stable domain with a &lt;code&gt;.well-known/agent.json&lt;/code&gt;.&lt;br&gt;&lt;br&gt;
Most personal / self-hosted agents don’t. &lt;strong&gt;@ClawMe&lt;/strong&gt; gives them persistent &lt;code&gt;@handles&lt;/code&gt; and a&lt;br&gt;
permissioned registry so agents can safely talk to each other (e.g. &lt;em&gt;my&lt;/em&gt; agent scheduling with &lt;em&gt;your&lt;/em&gt; agent).&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;p&gt;Website:

&lt;/p&gt;
&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
      &lt;div class="c-embed__body flex items-center justify-between"&gt;
        &lt;a href="https://www.atclawme.com/?ref=dev" rel="noopener noreferrer" class="c-link fw-bold flex items-center"&gt;
          &lt;span class="mr-2"&gt;atclawme.com&lt;/span&gt;
          

        &lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


&lt;br&gt;
GitHub:

&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/atclawme" rel="noopener noreferrer"&gt;
        atclawme
      &lt;/a&gt; / &lt;a href="https://github.com/atclawme/ClawMe" rel="noopener noreferrer"&gt;
        ClawMe
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;ClawMe – @handles for self‑hosted AI agents&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;A persistent @handle identity + discovery registry for personal AI agents.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://atclawme.com/?ref=gh" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/d4eb964e49b195d901eefb704c8dee48ce615d02b219af1e6f99afd776fe6f42/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4a6f696e253230776169746c6973742d6174636c61776d652e636f6d2d3643354345373f7374796c653d666f722d7468652d6261646765" alt="Join waitlist"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/atclawme/ClawMe/./docs/landing-hero.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fatclawme%2FClawMe%2F.%2Fdocs%2Flanding-hero.png" alt="Landing page hero"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;ClawMe gives your self‑hosted AI agent a persistent &lt;code&gt;@handle&lt;/code&gt; and A2A card so other agents can find and talk to it – even when you’re on home Wi‑Fi, spot instances, or tunnels.&lt;/p&gt;
&lt;p&gt;Think: &lt;em&gt;“my agent schedules a meeting with you via your agent”&lt;/em&gt; instead of “send me your IP and hope it hasn’t changed”.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;The problem: A2A assumes stable domains&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;Google’s A2A spec expects agents to publish metadata at:&lt;/p&gt;
&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;&lt;pre class="notranslate"&gt;&lt;code&gt;https://agent.brand.com/.well-known/agent.json
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;That works if you’re a company with a stable domain and proper DNS/TLS.&lt;/p&gt;
&lt;p&gt;It breaks for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Home‑hosted agents&lt;/strong&gt; – router restarts → new IP → broken URLs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Spot / ephemeral cloud&lt;/strong&gt; – every restart gives a new URL.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Non‑DNS people&lt;/strong&gt; – domains and certs are overkill for a personal agent.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;At the same time, we want &lt;strong&gt;agent‑to‑agent delegation&lt;/strong&gt; to be normal:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;“My…&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/atclawme/ClawMe" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;







&lt;h2&gt;
  
  
  The problem: A2A meets home Wi‑Fi
&lt;/h2&gt;

&lt;p&gt;Google’s Agent‑to‑Agent (A2A) protocol is built around a simple idea:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“If I know your domain, I know where your agent lives and how to talk to it.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Concretely, an agent is expected to publish its card at a well‑known URL on a stable domain, for example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://agent.brand.com/.well-known/agent.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That’s perfect if you’re a company with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a stable domain,&lt;/li&gt;
&lt;li&gt;DNS + TLS set up,&lt;/li&gt;
&lt;li&gt;and infra folks who keep it all running.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But it breaks down completely in the places &lt;strong&gt;most&lt;/strong&gt; of us are actually experimenting with agents:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a box on your &lt;strong&gt;home Wi‑Fi&lt;/strong&gt; that gets a new IP every time the router reboots,&lt;/li&gt;
&lt;li&gt;a &lt;strong&gt;spot instance&lt;/strong&gt; you tear down and spin up with a fresh URL,&lt;/li&gt;
&lt;li&gt;a random &lt;strong&gt;tunnel URL&lt;/strong&gt; from Cloudflare / ngrok / Tailscale that changes when you reconfigure things.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You end up with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;IP addresses DM’d around in Discord,&lt;/li&gt;
&lt;li&gt;half‑broken &lt;code&gt;.well-known&lt;/code&gt; setups on personal domains,&lt;/li&gt;
&lt;li&gt;and a bunch of “I swear it worked yesterday” agent URLs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Meanwhile, the thing we all &lt;em&gt;want&lt;/em&gt; is: &lt;strong&gt;agent‑to‑agent delegation&lt;/strong&gt; that just works.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;“My calendar agent can schedule a meeting with your calendar agent.”&lt;/li&gt;
&lt;li&gt;“My research agent can ask your infra agent for status.”&lt;/li&gt;
&lt;li&gt;“My personal agent can hand off a task to your agent with the right permissions.”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can’t do that reliably — or safely — if everyone is swapping raw IPs and random tunnel URLs.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I’m building: @ClawMe &lt;code&gt;@handles&lt;/code&gt; and registry
&lt;/h2&gt;

&lt;p&gt;I’m working on &lt;strong&gt;@ClawMe&lt;/strong&gt;, a persistent &lt;code&gt;@handle&lt;/code&gt; identity + discovery registry for personal AI agents, with a strong focus on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;self‑hosted / OpenClaw agents&lt;/strong&gt;,&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;dynamic IPs + tunnels&lt;/strong&gt;,&lt;/li&gt;
&lt;li&gt;and &lt;strong&gt;delegated agent‑to‑agent conversations&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At a high level:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You get a unique &lt;code&gt;@handle&lt;/code&gt; (e.g. &lt;code&gt;@alex_m&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Your agent keeps @ClawMe updated with its current &lt;strong&gt;tunnel URL&lt;/strong&gt; (not a bare IP).&lt;/li&gt;
&lt;li&gt;Other agents resolve &lt;code&gt;@alex_m&lt;/code&gt; to get an A2A‑compliant card with the right level of access.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Under the hood:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;@ClawMe stores a &lt;strong&gt;registry&lt;/strong&gt; of handles → owners → current gateway (tunnel) URLs.&lt;/li&gt;
&lt;li&gt;There’s a &lt;strong&gt;three‑tier access model&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;Tier 1: public, partial card (no gateway).&lt;/li&gt;
&lt;li&gt;Tier 2: approved connections only (full card with tunnel endpoint).&lt;/li&gt;
&lt;li&gt;Tier 3: “unknown but registered” – you get a limited card + a connection‑request URL.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;A &lt;strong&gt;heartbeat&lt;/strong&gt; API keeps your tunnel URL fresh as your environment changes (on startup and on a schedule).&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;If you squint, &lt;strong&gt;@ClawMe is a bit like LinkedIn for agents&lt;/strong&gt; – &lt;code&gt;@handles&lt;/code&gt;, profiles and a connection graph – but implemented as an A2A registry, not a social feed.&lt;/p&gt;

&lt;p&gt;So instead of:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Here’s my IP, don’t DDoS me and hopefully it doesn’t change.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;you get:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Here’s my &lt;code&gt;@handle&lt;/code&gt;. If your agent is approved, it can discover and talk to mine.”&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  A concrete A2A example
&lt;/h2&gt;

&lt;p&gt;For approved connections (Tier 2), resolving &lt;code&gt;@alex_m&lt;/code&gt; could return an A2A card like:&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;"@context"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://schema.org/extensions/a2a-v1.json"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"A2AAgent"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"clawme:@alex_m"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Alex's Home Agent"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"description"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Self-hosted OpenClaw agent behind a tunnel."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"verification"&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;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"ClawMeVerifiedHuman"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"assertionUrl"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://clawme.network/v1/verify/alex_m"&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;"endpoints"&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;span class="nl"&gt;"protocol"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"wss"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"uri"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"wss://your-tunnel-url.example"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"priority"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"supportedMethods"&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="s2"&gt;"GET_AVAILABILITY"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"PROPOSE_MEETING"&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;span class="nl"&gt;"publicKey"&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;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"clawme:@alex_m#key-1"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Ed25519VerificationKey2020"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"publicKeyMultibase"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"z..."&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;Key points:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;strong&gt;ID&lt;/strong&gt; is registry‑scoped (&lt;code&gt;clawme:@alex_m&lt;/code&gt;), not tied to a particular DNS name.&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;endpoint&lt;/strong&gt; uses a &lt;strong&gt;tunnel URL&lt;/strong&gt;, not a raw IP.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Supported methods&lt;/strong&gt; are explicit, so your agent knows what it’s allowed to do.&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;verification&lt;/strong&gt; object ties the handle to a real human identity (initially via GitHub OAuth, later possibly LinkedIn / other providers).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For non‑approved callers, the same handle would only return a partial card without the &lt;code&gt;endpoints&lt;/code&gt; array, plus a URL to request a connection.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why I care about delegated conversations
&lt;/h2&gt;

&lt;p&gt;Most of the fun use‑cases I want from agents are inherently &lt;em&gt;multi‑agent&lt;/em&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Two calendar agents negotiating a time slot while respecting different constraints.&lt;/li&gt;
&lt;li&gt;A travel agent talking to a personal finance agent before booking flights.&lt;/li&gt;
&lt;li&gt;A “home infra” agent coordinating with a friend’s agent to gate access to a resource.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These all require:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Stable, routable identities&lt;/strong&gt; (something like &lt;code&gt;@alex_m&lt;/code&gt;, &lt;code&gt;@your_company&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Permissioned discovery&lt;/strong&gt; (not “everyone sees everything”).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A shared protocol&lt;/strong&gt; (A2A, in this case).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;@ClawMe is my attempt at building (1) + (2) for the self‑hosted / OpenClaw corner of the ecosystem, based on (3).&lt;/p&gt;




&lt;h2&gt;
  
  
  How @ClawMe is wired right now
&lt;/h2&gt;

&lt;p&gt;I’m building this in phases, trying to keep each one shippable on its own.&lt;/p&gt;

&lt;h3&gt;
  
  
  Phase 1 – Waitlist + handle reservations (live now)
&lt;/h3&gt;

&lt;p&gt;The current focus:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Landing page with:

&lt;ul&gt;
&lt;li&gt;explanation of the problem,&lt;/li&gt;
&lt;li&gt;“how it works” in 3 steps,&lt;/li&gt;
&lt;li&gt;waitlist + handle reservation form.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;A Supabase‑backed &lt;code&gt;waitlist&lt;/code&gt; table storing:

&lt;ul&gt;
&lt;li&gt;email,&lt;/li&gt;
&lt;li&gt;desired handle,&lt;/li&gt;
&lt;li&gt;source (e.g. &lt;code&gt;discord&lt;/code&gt;, &lt;code&gt;github&lt;/code&gt;, etc.).&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;You can see it here and reserve a handle if this resonates:&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://www.atclawme.com/?ref=dev" rel="noopener noreferrer"&gt;https://www.atclawme.com/?ref=dev&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Repo: &lt;strong&gt;&lt;a href="https://github.com/atclawme/ClawMe" rel="noopener noreferrer"&gt;https://github.com/atclawme/ClawMe&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Phase 2 – Registry core + GitHub auth
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;handles&lt;/code&gt; and &lt;code&gt;connections&lt;/code&gt; tables with proper RLS.&lt;/li&gt;
&lt;li&gt;GitHub sign‑in → claim your reserved handle (with a claim window to prevent squatting).&lt;/li&gt;
&lt;li&gt;Heartbeat endpoint: agents report their current tunnel URL.&lt;/li&gt;
&lt;li&gt;Resolver API that:

&lt;ul&gt;
&lt;li&gt;returns different views of the A2A card depending on the caller’s relationship to the handle,&lt;/li&gt;
&lt;li&gt;exposes a human‑readable profile for UI display.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  Next up: Phase 3 – OpenClaw skill (&lt;code&gt;@ClawMe&lt;/code&gt;)
&lt;/h3&gt;

&lt;p&gt;This is where I want it to feel “automatic”:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;OpenClaw skill that:

&lt;ul&gt;
&lt;li&gt;syncs the gateway URL on startup + every N minutes,&lt;/li&gt;
&lt;li&gt;exposes tools like &lt;code&gt;clawme_lookup(@handle)&lt;/code&gt; and &lt;code&gt;clawme_request_connection(@handle, message)&lt;/code&gt;,&lt;/li&gt;
&lt;li&gt;surfaces pending connection requests to the user.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Built‑in checks to warn if you accidentally configure a bare IP instead of a tunnel.&lt;/li&gt;

&lt;/ul&gt;




&lt;h2&gt;
  
  
  How this compares to other registries
&lt;/h2&gt;

&lt;p&gt;There are already a few A2A registries and discovery servers appearing in the ecosystem, which is great — it means we agree discovery is a core missing piece.&lt;/p&gt;

&lt;p&gt;My focus with @ClawMe is deliberately narrow:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Self‑hosted / OpenClaw first.&lt;/strong&gt; If you’re running an agent on a box under your desk or a cheap VPS, that’s who I’m thinking about.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Handles + delegation.&lt;/strong&gt; Handles aren’t just labels; they’re meant to unlock safe “my agent talks to your agent” flows.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Privacy and permissioning built‑in.&lt;/strong&gt; Tunnel‑only endpoints, no raw IPs, three access tiers.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you’re building something similar, I’d genuinely love to compare notes.&lt;/p&gt;




&lt;h2&gt;
  
  
  I’d love your feedback
&lt;/h2&gt;

&lt;p&gt;If you’re:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;running OpenClaw or any self‑hosted agent,&lt;/li&gt;
&lt;li&gt;juggling tunnels / IPs / random URLs,&lt;/li&gt;
&lt;li&gt;or experimenting with A2A or multi‑agent conversations,&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I’d love to know:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Does this line up with problems you actually have?&lt;/li&gt;
&lt;li&gt;What would make you &lt;em&gt;trust&lt;/em&gt; a registry like this enough to let your agent use it?&lt;/li&gt;
&lt;li&gt;Are there “must have” fields in the A2A card I should support from day one?&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;reserve a handle at &lt;strong&gt;&lt;a href="https://www.atclawme.com/?ref=dev" rel="noopener noreferrer"&gt;https://www.atclawme.com/?ref=dev&lt;/a&gt;&lt;/strong&gt;,
&lt;/li&gt;
&lt;li&gt;take a look at the spec / code at &lt;strong&gt;&lt;a href="https://github.com/atclawme/ClawMe" rel="noopener noreferrer"&gt;https://github.com/atclawme/ClawMe&lt;/a&gt;&lt;/strong&gt;,
&lt;/li&gt;
&lt;li&gt;or just drop thoughts in the comments here.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I’ll be building this in the open, so I’ll also share follow‑ups as Phase 2 (registry core) and Phase 3 (OpenClaw skill) go live.&lt;/p&gt;

</description>
      <category>ai</category>
    </item>
  </channel>
</rss>
