{"slug":"dns-aid-goes-vendor-neutral-linux-foundation-takes-over-agent-discovery","citations":[{"url":"https://www.linuxfoundation.org/press/linux-foundation-announces-dns-aid-project-to-advance-decentralized-ai-agent-discovery","committed_hash":"sha256:3834ad9857e601e32ee69eb1130cc1b9a94dd04f2393d736ac6e55bb0c179a09","committed_hash_short":"sha256:3834ad98…0c179a09","mime_type":"text/html","committed_at":"2026-09-01T14:00:26.846449+00:00","content_snapshot":"<!doctype html><html><head>\n    <meta charset=\"utf-8\">\n    <meta name=\"description\" content=\"Linux Foundation Announces DNS-AID Project to Advance Decentralized AI Agent Discovery\">\n    <title>Linux Foundation Announces DNS-AID Project to Advance Decentralized AI Agent Discovery</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n\n    \n    <meta property=\"og:description\" content=\"Linux Foundation Announces DNS-AID Project to Advance Decentralized AI Agent Discovery\">\n    <meta property=\"og:title\" content=\"Linux Foundation Announces DNS-AID Project to Advance Decentralized AI Agent Discovery\">\n    <meta name=\"twitter:description\" content=\"Linux Foundation Announces DNS-AID Project to Advance Decentralized AI Agent Discovery\">\n    <meta name=\"twitter:title\" content=\"Linux Foundation Announces DNS-AID Project to Advance Decentralized AI Agent Discovery\">\n\n    \n\n    \n    <style>\na.cta_button{-moz-box-sizing:content-box !important;-webkit-box-sizing:content-box !important;box-sizing:content-box !important;vertical-align:middle}.hs-breadcrumb-menu{list-style-type:none;margin:0px 0px 0px 0px;padding:0px 0px 0px 0px}.hs-breadcrumb-menu-item{float:left;padding:10px 0px 10px 10px}.hs-breadcrumb-menu-divider:before{content:'›';padding-left:10px}.hs-featured-image-link{border:0}.hs-featured-image{float:right;margin:0 0 20px 20px;max-width:50%}@media (max-width: 568px){.hs-featured-image{float:none;margin:0;width:100%;max-width:100%}}.hs-screen-reader-text{clip:rect(1px, 1px, 1px, 1px);height:1px;overflow:hidden;position:absolute !important;width:1px}\n</style>\n\n<link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css\">\n<link rel=\"stylesheet\" href=\"https://www.linuxfoundation.org/hubfs/hub_generated/template_assets/1/77282239896/1788237352292/template_magnific.min.css\">\n<link rel=\"stylesheet\" href=\"https://www.linuxfoundation.org/hubfs/hub_generated/template_assets/1/85121828485/1788237342444/template_mega-header.min.css\">\n<link rel=\"stylesheet\" href=\"https://www.linuxfoundation.org/hubfs/hub_generated/module_assets/1/78365212720/1740820938516/module_Social_Share_-_Blog_Post.min.css\">\n\n<style>\n  .section--module_165707532951021 .social-links__icon {\n    background-color: rgba(255, 255, 255,1.0);\n    border-radius: 0px;\n  }\n  .section--module_165707532951021 .social-links__icon svg {\n    fill: #0094FF;\n    height: 32px;\n    width: 32px;\n  }\n  .section--module_165707532951021 .social-links__icon:hover,\n  .section--module_165707532951021 .social-links__icon:focus,\n  .section--module_165707532951021 .social-links__icon:active {\n    background-color: rgba(0, 148, 255,1.0);\n  }\n  .section--module_165707532951021 .social-links__icon:hover svg,\n  .section--module_165707532951021 .social-links__icon:focus svg,\n  .section--module_165707532951021 .social-links__icon:active svg {\n    fill: #ffffff;\n  }\n</style>\n\n<link rel=\"stylesheet\" href=\"https://www.linuxfoundation.org/hubfs/hub_generated/module_assets/1/77362524751/1753976444399/module_Main_Mega_Footer.min.css\">\n<style>\n  @font-face {\n    font-family: \"Roboto Slab\";\n    font-weight: 400;\n    font-style: normal;\n    font-display: swap;\n    src: url(\"/_hcms/googlefonts/Roboto_Slab/regular.woff2\") format(\"woff2\"), url(\"/_hcms/googlefonts/Roboto_Slab/regular.woff\") format(\"woff\");\n  }\n  @font-face {\n    font-family: \"Roboto Slab\";\n    font-weight: 700;\n    font-style: normal;\n    font-display: swap;\n    src: url(\"/_hcms/googlefonts/Roboto_Slab/700.woff2\") format(\"woff2\"), url(\"/_hcms/googlefonts/Roboto_Slab/700.woff\") format(\"woff\");\n  }\n  @font-face {\n    font-family: \"Roboto Slab\";\n    font-weight: 300;\n    font-style: normal;\n    font-display: swap;\n    src: url(\"/_hcms/googlefonts/Roboto_Slab/300.woff2\") format(\"woff2\"), url(\"/_hcms/googlefonts/Roboto_Slab/300.woff\") format(\"woff\");\n  }\n  @font-face {\n    font-family: \"Open Sans\";\n    font-weight: 400;\n    font-style: normal;\n    font-display: swap;\n    src: url(\"/_hcms/googlefonts/Open_Sans/regular.woff2\") format(\"woff2\"), url(\"/_hcms/googlefonts/Open_Sans/regular.woff\") format(\"woff\");\n  }\n  @font-face {\n    font-family: \"Open Sans\";\n    font-weight: 700;\n    font-style: normal;\n    font-display: swap;\n    src: url(\"/_hcms/googlefonts/Open_Sans/700.woff2\") format(\"woff2\"), url(\"/_hcms/googlefonts/Open_Sans/700.woff\") format(\"woff\");\n  }\n</style>\n\n    <script type=\"application/ld+json\">\n{\n  \"mainEntityOfPage\" : {\n    \"@type\" : \"WebPage\",\n    \"@id\" : \"https://www.linuxfoundation.org/press/linux-foundation-announces-dns-aid-project-to-advance-decentralized-ai-agent-discovery\"\n  },\n  \"author\" : {\n    \"name\" : \"The Linux Foundation\",\n    \"url\" : \"https://www.linuxfoundation.org/press/author/andrewb\",\n    \"@type\" : \"Person\"\n  },\n  \"headline\" : \"Linux Foundation Announces DNS-AID Project to Advance Decentralized AI Agent Discovery\",\n  \"datePublished\" : \"2026-05-27T13:00:04.000Z\",\n  \"dateModified\" : \"2026-05-29T16:13:40.474Z\",\n  \"publisher\" : {\n    \"name\" : \"The Linux Foundation\",\n    \"logo\" : {\n      \"url\" : \"https://www.linuxfoundation.org/hubfs/Linux%20Logo.png\",\n      \"@type\" : \"ImageObject\"\n    },\n    \"@type\" : \"Organization\"\n  },\n  \"@context\" : \"https://schema.org\",\n  \"@type\" : \"BlogPosting\",\n  \"image\" : [ \"https://www.linuxfoundation.org/hubfs/Press%20Release%20(14).png\" ]\n}\n</script>\n\n\n    \n<!--  Added by GoogleTagManager integration -->\n<script>\nvar _hsp = window._hsp = window._hsp || [];\nwindow.dataLayer = window.dataLayer || [];\nfunction gtag(){dataLayer.push(arguments);}\n\nvar useGoogleConsentModeV2 = true;\nvar waitForUpdateMillis = 1000;\n\n\n\nvar hsLoadGtm = function loadGtm() {\n    if(window._hsGtmLoadOnce) {\n      return;\n    }\n\n    if (useGoogleConsentModeV2) {\n\n      gtag('set','developer_id.dZTQ1Zm',true);\n\n      gtag('consent', 'default', {\n      'ad_storage': 'denied',\n      'analytics_storage': 'denied',\n      'ad_user_data': 'denied',\n      'ad_personalization': 'denied',\n      'wait_for_update': waitForUpdateMillis\n      });\n\n      _hsp.push(['useGoogleConsentModeV2'])\n    }\n\n    (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':\n    new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],\n    j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=\n    'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);\n    })(window,document,'script','dataLayer','GTM-WWBXMJK');\n\n    window._hsGtmLoadOnce = true;\n};\n\n_hsp.push(['addPrivacyConsentListener', function(consent){\n  if(consent.allowed || (consent.categories && consent.categories.analytics)){\n    hsLoadGtm();\n  }\n}]);\n\n</script>\n\n<!-- /Added by GoogleTagManager integration -->\n\n\n<script>\n  window.dataLayer = window.dataLayer ||[];\n  function gtag(){dataLayer.push(arguments);}\n  gtag('consent','default',{\n    'ad_storage':'denied',\n    'analytics_storage':'denied',\n    'ad_user_data':'denied',\n    'ad_personalization':'denied',\n    'personalization_storage':'denied',\n    'functionality_storage':'granted',\n    'security_storage':'granted',\n    'wait_for_update': 500\n  });\n  gtag(\"set\", \"ads_data_redaction\", true);\n  gtag(\"set\", \"url_passthrough\",true);\n</script>\n<script src=\"https://transcend-cdn.com/cm/f484e2d0-ad2e-43a9-9d64-d07f6fa20966/airgap.js\" data-cfasync=\"false\" data-prompt=\"auto\"></script>\n<script type=\"text/javascript\" src=\"//d2c7xlmseob604.cloudfront.net/tracker.min.js\" defer></script>\n<script>\n  $(document).ready( function() { \n\tSmartlingContextTracker.init({\n\t\torgId: '-BHEtmsmrUGOM8sNYfeBSQ'\n\t});\n  });\n</script>\n<!-- LFX Segments Analytics -->\n<script src=\"https://lfx-segment.platform.linuxfoundation.org/latest/lfx-segment-analytics.min.js\"></script>\n<script>\n  // Initialize with default configuration (no custom write key needed)\n  LfxAnalytics.LfxSegmentsAnalytics.getInstance().init();\n</script>\n\n<!-- Google Tag Manager -->\n<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':\nnew Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],\nj=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=\n'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);\n})(window,document,'script','dataLayer','GTM-WWBXMJK');</script>\n<!-- End Google Tag Manager -->\n<link rel=\"amphtml\" href=\"https://www.linuxfoundation.org/press/linux-foundation-announces-dns-aid-project-to-advance-decentralized-ai-agent-discovery?hs_amp=true\">\n\n<meta property=\"og:image\" content=\"https://www.linuxfoundation.org/hubfs/Press%20Release%20(14).png\">\n<meta property=\"og:image:width\" content=\"1200\">\n<meta property=\"og:image:height\" content=\"628\">\n\n<meta name=\"twitter:image\" content=\"https://www.linuxfoundation.org/hubfs/Press%20Release%20(14).png\">\n\n\n<meta property=\"og:url\" content=\"https://www.linuxfoundation.org/press/linux-foundation-announces-dns-aid-project-to-advance-decentralized-ai-agent-discovery\">\n<meta name=\"twitter:card\" content=\"summary_large_image\">\n\n<link rel=\"canonical\" href=\"https://www.linuxfoundation.org/press/linux-foundation-announces-dns-aid-project-to-advance-decentralized-ai-agent-discovery\">\n\n<meta property=\"og:type\" content=\"article\">\n<link rel=\"alternate\" type=\"application/rss+xml\" href=\"https://www.linuxfoundation.org/press/rss.xml\">\n<meta name=\"twitter:domain\" content=\"www.linuxfoundation.org\">\n<script src=\"//platform.linkedin.com/in.js\" type=\"text/javascript\">\n    lang: en_US\n</script>\n\n<meta http-equiv=\"content-language\" content=\"en\">\n\n\n\n\n\n\n    <link href=\"https://www.linuxfoundation.org/hubfs/hub_generated/template_assets/1/77283435922/1788237341030/template_main.min.css\" rel=\"stylesheet\">\n    \n    \n  <meta name=\"generator\" content=\"HubSpot\"></head>\n  \n   \n  \n  <body class=\" \">\n<!--  Added by GoogleTagManager integration -->\n<noscript><iframe src=\"https://www.googletagmanager.com/ns.html?id=GTM-WWBXMJK\" height=\"0\" width=\"0\" style=\"display:none;visibility:hidden\"></iframe></noscript>\n\n<!-- /Added by GoogleTagManager integration -->\n\n    \n      <div id=\"hs_cos_wrapper_language_switcher\" class=\"hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_module widget-type-language_switcher\" style=\"\" data-hs-cos-general-type=\"widget\" data-hs-cos-type=\"module\"><span id=\"hs_cos_wrapper_language_switcher_\" class=\"hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_language_switcher\" style=\"\" data-hs-cos-general-type=\"widget\" data-hs-cos-type=\"language_switcher\"></span></div>\n      <div id=\"hs_cos_wrapper_module_16560108726164\" class=\"hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_module\" style=\"\" data-hs-cos-general-type=\"widget\" data-hs-cos-type=\"module\">\n\n<section id=\"mega-menu\" class=\"section--module_16560108726164\n                section--mega-menu\n                bg--black__slight\n                page_header\">\n  \n   \n   <div class=\"top__bar\n               bg--secondary\">\n      <div class=\"top__bar-wrapper\n                  section-wrapper\n                  flex-row\n                  jc--space-between\">\n          \n         <p class=\"top__bar--callout text-color--white\"><!-- <span style=\"font-size: 16px;\"><span style=\"color: #ffffff;\">Celebrate Linux 35th Anniversary With 35% Off Training &amp; Certification • </span> <a href=\"https://hubs.la/Q04rQh8-0\" rel=\"noopener\" style=\"text-decoration: underline;\">SAVE NOW</a></span> \n--><span style=\"font-size: 16px;\"><span style=\"color: #ffffff;\">Open Source Summit Europe • 7-9 OCT 2026 • </span> <a href=\"https://events.linuxfoundation.org/open-source-summit-europe/\" rel=\"noopener\" style=\"text-decoration: underline;\">REGISTER NOW</a></span></p>\n         <div class=\"right-items\n                     flex-row\n                     align-items--center\n                     jc--end\">\n           \n            <div class=\"menu--language\"> \n             \n              <svg class=\"icon--globe\" width=\"13\" height=\"12\" viewbox=\"0 0 13 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n                <path d=\"M6.33333 0.166748C3.11159 0.166748 0.5 2.77834 0.5 6.00008C0.5 9.22182 3.11159 11.8334 6.33333 11.8334C9.55507 11.8334 12.1667 9.22182 12.1667 6.00008C12.1667 2.77834 9.55507 0.166748 6.33333 0.166748ZM8.26892 8.57804C8.17718 8.6693 8.08098 8.76503 8.00289 8.84336C7.93256 8.91393 7.88293 9.00095 7.85776 9.09528C7.82224 9.22841 7.79355 9.36295 7.74556 9.49208L7.33653 10.5941C7.01287 10.6646 6.67792 10.7044 6.33333 10.7044V10.0604C6.37308 9.76352 6.15363 9.20747 5.80104 8.85489C5.65991 8.71376 5.58065 8.52229 5.58065 8.32259V7.56967C5.58065 7.29588 5.43317 7.0442 5.19348 6.91178C4.85548 6.72478 4.3747 6.46345 4.0454 6.29763C3.77537 6.16167 3.52557 5.98856 3.30094 5.78604L3.28212 5.7691C3.12149 5.6241 2.97886 5.46031 2.85733 5.28126C2.63669 4.95737 2.27728 4.42461 2.04372 4.07837C2.5252 3.00815 3.39291 2.14867 4.47114 1.68177L5.03589 1.96426C5.28616 2.0894 5.58065 1.90757 5.58065 1.62767V1.36188C5.76858 1.33153 5.95981 1.31225 6.15433 1.30495L6.81999 1.97061C6.967 2.11762 6.967 2.35589 6.81999 2.5029L6.70968 2.61298L6.46646 2.8562C6.39308 2.92958 6.39308 3.04884 6.46646 3.12223L6.57678 3.23254C6.65017 3.30593 6.65017 3.42518 6.57678 3.49857L6.38861 3.68674C6.35328 3.722 6.30539 3.7418 6.25548 3.74178H6.04402C5.99509 3.74178 5.94805 3.76083 5.91277 3.79518L5.67944 4.02216C5.65083 4.05001 5.63182 4.08623 5.62514 4.12559C5.61846 4.16495 5.62446 4.20541 5.64227 4.24114L6.00897 4.97478C6.07154 5.09991 5.98051 5.24716 5.84079 5.24716H5.70813C5.66273 5.24716 5.61899 5.23069 5.58488 5.20106L5.3666 5.01147C5.3172 4.96862 5.25751 4.93936 5.19338 4.92658C5.12925 4.91379 5.06289 4.91792 5.00084 4.93856L4.26767 5.18294C4.2117 5.20161 4.16302 5.23741 4.12853 5.28529C4.09404 5.33316 4.07549 5.39067 4.0755 5.44968C4.0755 5.55623 4.13572 5.65337 4.23098 5.70112L4.4916 5.83143C4.71294 5.94222 4.95709 5.99985 5.20454 5.99985C5.45198 5.99985 5.73589 6.64175 5.95722 6.75253H7.52729C7.72698 6.75253 7.91821 6.8318 8.05958 6.97293L8.38159 7.29494C8.51611 7.42952 8.59167 7.61202 8.59163 7.8023C8.59159 7.94648 8.56305 8.08924 8.50767 8.22237C8.45229 8.35549 8.37115 8.47636 8.26892 8.57804ZM10.3085 6.42935C10.1723 6.39524 10.0535 6.31174 9.97564 6.19484L9.55272 5.56046C9.49084 5.46778 9.45781 5.35884 9.45781 5.24739C9.45781 5.13595 9.49084 5.02701 9.55272 4.93432L10.0135 4.24326C10.0681 4.16164 10.1429 4.09531 10.2308 4.05156L10.5362 3.89891C10.8542 4.5321 11.0376 5.24434 11.0376 6.00008C11.0376 6.20401 11.0202 6.40371 10.9948 6.60082L10.3085 6.42935Z\" fill=\"white\" />\n              </svg>\n              <select class=\"menu--language__list\" onchange=\"window.open(this.options[this.selectedIndex].value, '_self');\"> \n                  <option value=\"https://www.linuxfoundation.org/\">English</option> \n                  <option value=\"https://www.linuxfoundation.org/ja-jp/\">Japan</option> \n                  <option value=\"https://www.linuxfoundation.org/zh/chinese/\">China</option> \n                  <option value=\"https://linuxfoundation.eu\">Europe</option>\n              </select> \n            </div> \n            <div class=\"top__bar-menu text-color--white\"> <span id=\"hs_cos_wrapper_module_16560108726164_\" class=\"hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_simple_menu\" style=\"\" data-hs-cos-general-type=\"widget\" data-hs-cos-type=\"simple_menu\"><div id=\"hs_menu_wrapper_module_16560108726164_\" class=\"hs-menu-wrapper active-branch flyouts hs-menu-flow-horizontal\" role=\"navigation\" data-sitemap-name=\"\" data-menu-id=\"\" aria-label=\"Navigation Menu\">\n <ul role=\"menu\">\n  <li class=\"hs-menu-item hs-menu-depth-1\" role=\"none\"><a href=\"https://openprofile.dev/\" role=\"menuitem\" target=\"_blank\" rel=\"noopener\">Sign In</a></li>\n </ul>\n</div></span> </div>\n           \n             <a href=\"#search-popup\" class=\"search-popup-link\">\n               <svg width=\"18\" height=\"18\" class=\"icon icon-search header-search-icon\" viewbox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n                 <path d=\"M12.0409 0.757324C8.07935 0.757324 4.85339 3.98328 4.85339 7.94482C4.85339 9.66589 5.45703 11.2438 6.47058 12.4819L0.743042 18.2095L1.77625 19.2427L7.50378 13.5151C8.74194 14.5287 10.3198 15.1323 12.0409 15.1323C16.0024 15.1323 19.2284 11.9064 19.2284 7.94482C19.2284 3.98328 16.0024 0.757324 12.0409 0.757324ZM12.0409 2.19482C15.2247 2.19482 17.7909 4.76099 17.7909 7.94482C17.7909 11.1287 15.2247 13.6948 12.0409 13.6948C8.85706 13.6948 6.29089 11.1287 6.29089 7.94482C6.29089 4.76099 8.85706 2.19482 12.0409 2.19482Z\" fill=\"white\" />\n               </svg>\n             </a>\n           \n            <div id=\"search-popup\" class=\"hs-search-field\n                        mfp-hide\">\n                <h4>\n                  Search\n                </h4>\n                <div class=\"hs-search-field__bar\">\n                  <form action=\"/hs-search-results\">\n                    \n                    <input type=\"text\" class=\"hs-search-field__input\" name=\"term\" autocomplete=\"off\" aria-label=\"Search\" placeholder=\"Search the site...\">\n                      <input type=\"hidden\" name=\"type\" value=\"SITE_PAGE\">\n                      <input type=\"hidden\" name=\"type\" value=\"LANDING_PAGE\">\n                      <input type=\"hidden\" name=\"type\" value=\"BLOG_POST\">\n                      <input type=\"hidden\" name=\"type\" value=\"LISTING_PAGE\">\n                  </form>\n                </div>\n                <ul class=\"hs-search-field__suggestions\"></ul>\n            </div>\n           \n           \n         </div>\n      </div>\n   </div>\n  \n   \n   <header id=\"js-top-header\" class=\"section-wrapper\">\n      <div class=\"header__row header__main\">\n         <div class=\"header_branding\">\n            <a href=\"/?hsLang=en\"> <img src=\"https://www.linuxfoundation.org/hubfs/LF%20Logo%20White.svg\"> </a>\n         </div>\n         <div class=\"header_content\n            flex-row\n            jc--space-between\n            align-items--center         \n            pt--sm\n            pb--sm\">\n            <div class=\"header-left\">\n               <button class=\"burger-button menu-toggle\" onclick=\"myFunction(this); openSlideMenu();\" type=\"button\"> <span></span> </button>\n            </div>\n            <div class=\"header-right\">\n               <div class=\"header-button\"> \n                   <a class=\"hs-button\n                  hs-button--primary\n                  mt--none\" href=\"https://www.linuxfoundation.org/about/join?hsLang=en\">\n                  Join\n                  </a> \n               </div>\n            </div>\n         </div>\n         \n      </div>\n   </header>\n   <nav class=\"mega-menu__nav-menu\n               bg--white\n      mega__menu\" role=\"navigation\">\n      <div class=\"mega__menu-content\">\n         <div class=\"row\">\n            <div id=\"burger-menu\">\n               <div class=\"menu-items\n                           section-wrapper\n                           flex-row\n                           jc--space-between\n                           pt--md\n                           pb--md\">\n                  \n                  <div class=\"menu__row-list\n                     open-menu--1\">\n                     \n                     <div class=\"child-menu\n                        dropdown--1\" aria-expanded=\"false\">\n                        <p class=\"row-list-title letter__spacing\">\n                           <input type=\"checkbox\" class=\"menu_arrow menu_arrow-invert\" name=\"menu_arrow\" id=\"menu_arrow\">\n                           <label for=\"menu_arrow dropdown--1\"></label>\n                           ABOUT\n                        </p>\n                        <div class=\"menu-links\">\n                           <span id=\"hs_cos_wrapper_module_16560108726164_\" class=\"hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_simple_menu\" style=\"\" data-hs-cos-general-type=\"widget\" data-hs-cos-type=\"simple_menu\"><div id=\"hs_menu_wrapper_module_16560108726164_\" class=\"hs-menu-wrapper active-branch flyouts hs-menu-flow-horizontal\" role=\"navigation\" data-sitemap-name=\"\" data-menu-id=\"\" aria-label=\"Navigation Menu\">\n <ul role=\"menu\">\n  <li class=\"hs-menu-item hs-menu-depth-1\" role=\"none\"><a href=\"https://www.linuxfoundation.org/about\" role=\"menuitem\" target=\"_self\">About the LF</a></li>\n  <li class=\"hs-menu-item hs-menu-depth-1\" role=\"none\"><a href=\"https://www.linuxfoundation.org/about/members\" role=\"menuitem\" target=\"_self\">Corporate Members</a></li>\n  <li class=\"hs-menu-item hs-menu-depth-1\" role=\"none\"><a href=\"https://www.linuxfoundation.org/about/individual-supporters\" role=\"menuitem\" target=\"_self\">Individual Supporters</a></li>\n  <li class=\"hs-menu-item hs-menu-depth-1\" role=\"none\"><a href=\"https://www.linuxfoundation.org/about/leadership\" role=\"menuitem\" target=\"_self\">Leadership</a></li>\n  <li class=\"hs-menu-item hs-menu-depth-1\" role=\"none\"><a href=\"https://www.linuxfoundation.org/about/inclusion-accessibility\" role=\"menuitem\" target=\"_self\">Inclusion &amp; Accessibility</a></li>\n  <li class=\"hs-menu-item hs-menu-depth-1\" role=\"none\"><a href=\"https://www.linuxfoundation.org/careers\" role=\"menuitem\" target=\"_self\">Careers</a></li>\n  <li class=\"hs-menu-item hs-menu-depth-1\" role=\"none\"><a href=\"https://www.linuxfoundation.org/brand-guidelines\" role=\"menuitem\" target=\"_self\">Brand Guidelines</a></li>\n  <li class=\"hs-menu-item hs-menu-depth-1\" role=\"none\"><a href=\"https://www.linuxfoundation.org/about/contact\" role=\"menuitem\" target=\"_self\">Contact Us</a></li>\n </ul>\n</div></span> \n                        </div>\n                     </div>\n                      \n                  </div>\n                  \n                  <div class=\"menu__row-list\n                     open-menu--2\">\n                     \n                     <div class=\"child-menu\n                        dropdown--1\" aria-expanded=\"false\">\n                        <p class=\"row-list-title letter__spacing\">\n                           <input type=\"checkbox\" class=\"menu_arrow menu_arrow-invert\" name=\"menu_arrow\" id=\"menu_arrow\">\n                           <label for=\"menu_arrow dropdown--1\"></label>\n                           PROJECTS\n                        </p>\n                        <div class=\"menu-links\">\n                           <span id=\"hs_cos_wrapper_module_16560108726164_\" class=\"hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_simple_menu\" style=\"\" data-hs-cos-general-type=\"widget\" data-hs-cos-type=\"simple_menu\"><div id=\"hs_menu_wrapper_module_16560108726164_\" class=\"hs-menu-wrapper active-branch flyouts hs-menu-flow-horizontal\" role=\"navigation\" data-sitemap-name=\"\" data-menu-id=\"\" aria-label=\"Navigation Menu\">\n <ul role=\"menu\">\n  <li class=\"hs-menu-item hs-menu-depth-1\" role=\"none\"><a href=\"https://www.linuxfoundation.org/projects\" role=\"menuitem\" target=\"_self\">View All Projects</a></li>\n  <li class=\"hs-menu-item hs-menu-depth-1\" role=\"none\"><a href=\"https://www.linuxfoundation.org/projects/hosting\" role=\"menuitem\" target=\"_self\">Host Your Project</a></li>\n  <li class=\"hs-menu-item hs-menu-depth-1\" role=\"none\"><a href=\"https://www.linuxfoundation.org/projects/partnerships\" role=\"menuitem\" target=\"_self\">Partner Program</a></li>\n  <li class=\"hs-menu-item hs-menu-depth-1\" role=\"none\"><a href=\"https://www.linuxfoundation.org/security\" role=\"menuitem\" target=\"_self\">Security</a></li>\n  <li class=\"hs-menu-item hs-menu-depth-1\" role=\"none\"><a href=\"https://www.linuxfoundation.org/projects/standards\" role=\"menuitem\" target=\"_self\">Standards and Specifications</a></li>\n  <li class=\"hs-menu-item hs-menu-depth-1\" role=\"none\"><a href=\"https://www.linuxfoundation.org/projects/digital-trust\" role=\"menuitem\" target=\"_self\">Digital Trust</a></li>\n  <li class=\"hs-menu-item hs-menu-depth-1\" role=\"none\"><a href=\"https://www.linuxfoundation.org/projects/sustainability\" role=\"menuitem\" target=\"_self\">Sustainability</a></li>\n  <li class=\"hs-menu-item hs-menu-depth-1\" role=\"none\"><a href=\"https://www.linuxfoundation.org/projects/management\" role=\"menuitem\" target=\"_self\">Management &amp; Best Practices</a></li>\n </ul>\n</div></span> \n                        </div>\n                     </div>\n                      \n                  </div>\n                  \n                  <div class=\"menu__row-list\n                     open-menu--3\">\n                     \n                     <div class=\"child-menu\n                        dropdown--1\" aria-expanded=\"false\">\n                        <p class=\"row-list-title letter__spacing\">\n                           <input type=\"checkbox\" class=\"menu_arrow menu_arrow-invert\" name=\"menu_arrow\" id=\"menu_arrow\">\n                           <label for=\"menu_arrow dropdown--1\"></label>\n                           RESOURCES\n                        </p>\n                        <div class=\"menu-links\">\n                           <span id=\"hs_cos_wrapper_module_16560108726164_\" class=\"hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_simple_menu\" style=\"\" data-hs-cos-general-type=\"widget\" data-hs-cos-type=\"simple_menu\"><div id=\"hs_menu_wrapper_module_16560108726164_\" class=\"hs-menu-wrapper active-branch flyouts hs-menu-flow-horizontal\" role=\"navigation\" data-sitemap-name=\"\" data-menu-id=\"\" aria-label=\"Navigation Menu\">\n <ul role=\"menu\">\n  <li class=\"hs-menu-item hs-menu-depth-1\" role=\"none\"><a href=\"https://www.linuxfoundation.org/blog\" role=\"menuitem\" target=\"_self\">Blog</a></li>\n  <li class=\"hs-menu-item hs-menu-depth-1\" role=\"none\"><a href=\"https://www.linuxfoundation.org/resources/publications\" role=\"menuitem\" target=\"_self\">Publications</a></li>\n  <li class=\"hs-menu-item hs-menu-depth-1\" role=\"none\"><a href=\"https://www.linuxfoundation.org/resources/open-source-guides\" role=\"menuitem\" target=\"_self\">Open Source Guides</a></li>\n  <li class=\"hs-menu-item hs-menu-depth-1\" role=\"none\"><a href=\"https://www.linuxfoundation.org/webinars\" role=\"menuitem\" target=\"_self\">Webinars</a></li>\n  <li class=\"hs-menu-item hs-menu-depth-1\" role=\"none\"><a href=\"https://www.linuxfoundation.org/resources/case-studies\" role=\"menuitem\" target=\"_self\">Case Studies</a></li>\n </ul>\n</div></span> \n                        </div>\n                     </div>\n                     \n                     <div class=\"child-menu\n                        dropdown--2\" aria-expanded=\"false\">\n                        <p class=\"row-list-title letter__spacing\">\n                           <input type=\"checkbox\" class=\"menu_arrow menu_arrow-invert\" name=\"menu_arrow\" id=\"menu_arrow\">\n                           <label for=\"menu_arrow dropdown--2\"></label>\n                           NEWSROOM\n                        </p>\n                        <div class=\"menu-links\">\n                           <span id=\"hs_cos_wrapper_module_16560108726164_\" class=\"hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_simple_menu\" style=\"\" data-hs-cos-general-type=\"widget\" data-hs-cos-type=\"simple_menu\"><div id=\"hs_menu_wrapper_module_16560108726164_\" class=\"hs-menu-wrapper active-branch flyouts hs-menu-flow-horizontal\" role=\"navigation\" data-sitemap-name=\"\" data-menu-id=\"\" aria-label=\"Navigation Menu\">\n <ul role=\"menu\">\n  <li class=\"hs-menu-item hs-menu-depth-1\" role=\"none\"><a href=\"https://www.linuxfoundation.org/press\" role=\"menuitem\" target=\"_self\">Press Releases</a></li>\n </ul>\n</div></span> \n                        </div>\n                     </div>\n                      \n                  </div>\n                  \n                  <div class=\"menu__row-list\n                     open-menu--4\">\n                     \n                     <div class=\"child-menu\n                        dropdown--1\" aria-expanded=\"false\">\n                        <p class=\"row-list-title letter__spacing\">\n                           <input type=\"checkbox\" class=\"menu_arrow menu_arrow-invert\" name=\"menu_arrow\" id=\"menu_arrow\">\n                           <label for=\"menu_arrow dropdown--1\"></label>\n                           LF RESEARCH\n                        </p>\n                        <div class=\"menu-links\">\n                           <span id=\"hs_cos_wrapper_module_16560108726164_\" class=\"hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_simple_menu\" style=\"\" data-hs-cos-general-type=\"widget\" data-hs-cos-type=\"simple_menu\"><div id=\"hs_menu_wrapper_module_16560108726164_\" class=\"hs-menu-wrapper active-branch flyouts hs-menu-flow-horizontal\" role=\"navigation\" data-sitemap-name=\"\" data-menu-id=\"\" aria-label=\"Navigation Menu\">\n <ul role=\"menu\">\n  <li class=\"hs-menu-item hs-menu-depth-1\" role=\"none\"><a href=\"https://www.linuxfoundation.org/research\" role=\"menuitem\" target=\"_self\">Latest Research</a></li>\n  <li class=\"hs-menu-item hs-menu-depth-1\" role=\"none\"><a href=\"https://www.linuxfoundation.org/research/leadership\" role=\"menuitem\" target=\"_self\">Leadership &amp; Advisory Board</a></li>\n  <li class=\"hs-menu-item hs-menu-depth-1\" role=\"none\"><a href=\"https://www.linuxfoundation.org/research/surveys\" role=\"menuitem\" target=\"_self\">Surveys</a></li>\n  <li class=\"hs-menu-item hs-menu-depth-1\" role=\"none\"><a href=\"https://www.linuxfoundation.org/research/lfr-forum\" role=\"menuitem\" target=\"_self\">Research Forum</a></li>\n </ul>\n</div></span> \n                        </div>\n                     </div>\n                     \n                     <div class=\"child-menu\n                        dropdown--2\" aria-expanded=\"false\">\n                        <p class=\"row-list-title letter__spacing\">\n                           <input type=\"checkbox\" class=\"menu_arrow menu_arrow-invert\" name=\"menu_arrow\" id=\"menu_arrow\">\n                           <label for=\"menu_arrow dropdown--2\"></label>\n                           LF EDUCATION\n                        </p>\n                        <div class=\"menu-links\">\n                           <span id=\"hs_cos_wrapper_module_16560108726164_\" class=\"hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_simple_menu\" style=\"\" data-hs-cos-general-type=\"widget\" data-hs-cos-type=\"simple_menu\"><div id=\"hs_menu_wrapper_module_16560108726164_\" class=\"hs-menu-wrapper active-branch flyouts hs-menu-flow-horizontal\" role=\"navigation\" data-sitemap-name=\"\" data-menu-id=\"\" aria-label=\"Navigation Menu\">\n <ul role=\"menu\">\n  <li class=\"hs-menu-item hs-menu-depth-1\" role=\"none\"><a href=\"https://training.linuxfoundation.org\" role=\"menuitem\" target=\"_blank\" rel=\"noopener\">Home</a></li>\n  <li class=\"hs-menu-item hs-menu-depth-1\" role=\"none\"><a href=\"https://training.linuxfoundation.org/full-catalog/\" role=\"menuitem\" target=\"_blank\" rel=\"noopener\">Course Catalog</a></li>\n  <li class=\"hs-menu-item hs-menu-depth-1\" role=\"none\"><a href=\"https://training.linuxfoundation.org/resources/\" role=\"menuitem\" target=\"_self\">Resources</a></li>\n </ul>\n</div></span> \n                        </div>\n                     </div>\n                      \n                  </div>\n                  \n                  <div class=\"menu__row-list\n                     open-menu--5\">\n                     \n                     <div class=\"child-menu\n                        dropdown--1\" aria-expanded=\"false\">\n                        <p class=\"row-list-title letter__spacing\">\n                           <input type=\"checkbox\" class=\"menu_arrow menu_arrow-invert\" name=\"menu_arrow\" id=\"menu_arrow\">\n                           <label for=\"menu_arrow dropdown--1\"></label>\n                           LF EVENTS\n                        </p>\n                        <div class=\"menu-links\">\n                           <span id=\"hs_cos_wrapper_module_16560108726164_\" class=\"hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_simple_menu\" style=\"\" data-hs-cos-general-type=\"widget\" data-hs-cos-type=\"simple_menu\"><div id=\"hs_menu_wrapper_module_16560108726164_\" class=\"hs-menu-wrapper active-branch flyouts hs-menu-flow-horizontal\" role=\"navigation\" data-sitemap-name=\"\" data-menu-id=\"\" aria-label=\"Navigation Menu\">\n <ul role=\"menu\">\n  <li class=\"hs-menu-item hs-menu-depth-1\" role=\"none\"><a href=\"https://events.linuxfoundation.org/\" role=\"menuitem\" target=\"_self\">Home</a></li>\n  <li class=\"hs-menu-item hs-menu-depth-1\" role=\"none\"><a href=\"https://events.linuxfoundation.org/about/sponsor/\" role=\"menuitem\" target=\"_self\">Sponsor</a></li>\n  <li class=\"hs-menu-item hs-menu-depth-1\" role=\"none\"><a href=\"https://linuxfoundation.smapply.io/\" role=\"menuitem\" target=\"_self\">Submit a Talk</a></li>\n  <li class=\"hs-menu-item hs-menu-depth-1\" role=\"none\"><a href=\"https://events.linuxfoundation.org/about/code-of-conduct/\" role=\"menuitem\" target=\"_self\">Code of conduct</a></li>\n </ul>\n</div></span> \n                        </div>\n                     </div>\n                      \n                  </div>\n                  \n                  <div class=\"menu__row-list\n                     open-menu--6\">\n                     \n                     <div class=\"child-menu\n                        dropdown--1\" aria-expanded=\"false\">\n                        <p class=\"row-list-title letter__spacing\">\n                           <input type=\"checkbox\" class=\"menu_arrow menu_arrow-invert\" name=\"menu_arrow\" id=\"menu_arrow\">\n                           <label for=\"menu_arrow dropdown--1\"></label>\n                           LFX PLATFORM\n                        </p>\n                        <div class=\"menu-links\">\n                           <span id=\"hs_cos_wrapper_module_16560108726164_\" class=\"hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_simple_menu\" style=\"\" data-hs-cos-general-type=\"widget\" data-hs-cos-type=\"simple_menu\"><div id=\"hs_menu_wrapper_module_16560108726164_\" class=\"hs-menu-wrapper active-branch flyouts hs-menu-flow-horizontal\" role=\"navigation\" data-sitemap-name=\"\" data-menu-id=\"\" aria-label=\"Navigation Menu\">\n <ul role=\"menu\">\n  <li class=\"hs-menu-item hs-menu-depth-1\" role=\"none\"><a href=\"https://lfx.linuxfoundation.org/\" role=\"menuitem\" target=\"_self\">LFX Home</a></li>\n  <li class=\"hs-menu-item hs-menu-depth-1\" role=\"none\"><a href=\"https://myprofile.lfx.linuxfoundation.org/\" role=\"menuitem\" target=\"_self\">LFX Tools</a></li>\n  <li class=\"hs-menu-item hs-menu-depth-1\" role=\"none\"><a href=\"https://insights.linuxfoundation.org/\" role=\"menuitem\" target=\"_self\">LFX Insights</a></li>\n  <li class=\"hs-menu-item hs-menu-depth-1\" role=\"none\"><a href=\"https://openprofile.dev/\" role=\"menuitem\" target=\"_self\">Create an LFX Account</a></li>\n </ul>\n</div></span> \n                        </div>\n                     </div>\n                      \n                  </div>\n                   \n               </div>\n               <div class=\"mega__menu-footer\">\n                  <div class=\"footer_content\n                              section-wrapper\n                               flex-row\n                               jc--space-between\n                               align-items--center\n                               pt--xs\n                               pb--xs\">\n                    \n                     <div class=\"footer-left\n                                 col6\n                                 flex-row\n                                 align-items--center\">\n                       \n                        <div class=\"header-button__wrapper\n                                    mobile-only\">\n                          <div class=\"header-button\"> \n                               <a class=\"hs-button\n                              hs-button--primary\n                              mt--none\" href=\"https://www.linuxfoundation.org/about/join?hsLang=en\">\n                              Join\n                              </a> \n                           </div>\n                         </div>\n                       \n                       \n                        <p class=\"footer-social-title\n                                  letter__spacing\">Follow Us</p>\n                        <div class=\"footer-social-icons\">\n                           \n                           \n                           \n                           <a href=\"https://twitter.com/linuxfoundation\" target=\"_blank\" rel=\"noopener\">\n                           <span id=\"hs_cos_wrapper_module_16560108726164_\" class=\"hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_icon\" style=\"\" data-hs-cos-general-type=\"widget\" data-hs-cos-type=\"icon\"><svg version=\"1.0\" xmlns=\"http://www.w3.org/2000/svg\" viewbox=\"0 0 512 512\" aria-hidden=\"true\"><g id=\"Twitter1_layer\"><path d=\"M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z\" /></g></svg></span>\n                           </a> \n                           \n                           \n                           <a href=\"https://www.facebook.com/TheLinuxFoundation\" target=\"_blank\" rel=\"noopener\">\n                           <span id=\"hs_cos_wrapper_module_16560108726164_\" class=\"hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_icon\" style=\"\" data-hs-cos-general-type=\"widget\" data-hs-cos-type=\"icon\"><svg version=\"1.0\" xmlns=\"http://www.w3.org/2000/svg\" viewbox=\"0 0 320 512\" aria-hidden=\"true\"><g id=\"Facebook F2_layer\"><path d=\"M279.14 288l14.22-92.66h-88.91v-60.13c0-25.35 12.42-50.06 52.24-50.06h40.42V6.26S260.43 0 225.36 0c-73.22 0-121.08 44.38-121.08 124.72v70.62H22.89V288h81.39v224h100.17V288z\" /></g></svg></span>\n                           </a> \n                           \n                           \n                           <a href=\"https://www.youtube.com/user/TheLinuxFoundation\" target=\"_blank\" rel=\"noopener\">\n                           <span id=\"hs_cos_wrapper_module_16560108726164_\" class=\"hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_icon\" style=\"\" data-hs-cos-general-type=\"widget\" data-hs-cos-type=\"icon\"><svg version=\"1.0\" xmlns=\"http://www.w3.org/2000/svg\" viewbox=\"0 0 576 512\" aria-hidden=\"true\"><g id=\"YouTube3_layer\"><path d=\"M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.78 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821 11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305zm-317.51 213.508V175.185l142.739 81.205-142.739 81.201z\" /></g></svg></span>\n                           </a> \n                           \n                           \n                           <a href=\"https://www.linkedin.com/company/208777\" target=\"_blank\" rel=\"noopener\">\n                           <span id=\"hs_cos_wrapper_module_16560108726164_\" class=\"hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_icon\" style=\"\" data-hs-cos-general-type=\"widget\" data-hs-cos-type=\"icon\"><svg version=\"1.0\" xmlns=\"http://www.w3.org/2000/svg\" viewbox=\"0 0 448 512\" aria-hidden=\"true\"><g id=\"LinkedIn In4_layer\"><path d=\"M100.28 448H7.4V148.9h92.88zM53.79 108.1C24.09 108.1 0 83.5 0 53.8a53.79 53.79 0 0 1 107.58 0c0 29.7-24.1 54.3-53.79 54.3zM447.9 448h-92.68V302.4c0-34.7-.7-79.2-48.29-79.2-48.29 0-55.69 37.7-55.69 76.7V448h-92.78V148.9h89.08v40.8h1.3c12.4-23.5 42.69-48.3 87.88-48.3 94 0 111.28 61.9 111.28 142.3V448z\" /></g></svg></span>\n                           </a> \n                           \n                           \n                           <a href=\"https://github.com/LF-Engineering\" target=\"_blank\" rel=\"noopener\">\n                           <span id=\"hs_cos_wrapper_module_16560108726164_\" class=\"hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_icon\" style=\"\" data-hs-cos-general-type=\"widget\" data-hs-cos-type=\"icon\"><svg version=\"1.0\" xmlns=\"http://www.w3.org/2000/svg\" viewbox=\"0 0 496 512\" aria-hidden=\"true\"><g id=\"GitHub5_layer\"><path d=\"M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z\" /></g></svg></span>\n                           </a>  \n                        </div>\n                     </div>\n                     <div class=\"footer-right\n                        col6\n                        align-items--center\">\n                       <span id=\"hs_cos_wrapper_module_16560108726164_\" class=\"hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_simple_menu\" style=\"\" data-hs-cos-general-type=\"widget\" data-hs-cos-type=\"simple_menu\"><div id=\"hs_menu_wrapper_module_16560108726164_\" class=\"hs-menu-wrapper active-branch flyouts hs-menu-flow-horizontal\" role=\"navigation\" data-sitemap-name=\"\" data-menu-id=\"\" aria-label=\"Navigation Menu\">\n <ul role=\"menu\">\n  <li class=\"hs-menu-item hs-menu-depth-1\" role=\"none\"><a href=\"https://openprofile.dev/\" role=\"menuitem\" target=\"_self\">My Account</a></li>\n  <li class=\"hs-menu-item hs-menu-depth-1\" role=\"none\"><a href=\"https://openprofile.dev/\" role=\"menuitem\" target=\"_self\">Log In</a></li>\n </ul>\n</div></span>\n                       \n                       <div class=\"menu--language\n                                   mobile-only\"> \n                         \n                          <svg class=\"icon--globe\" width=\"18\" height=\"18\" viewbox=\"0 0 13 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n                            <path d=\"M6.33333 0.166748C3.11159 0.166748 0.5 2.77834 0.5 6.00008C0.5 9.22182 3.11159 11.8334 6.33333 11.8334C9.55507 11.8334 12.1667 9.22182 12.1667 6.00008C12.1667 2.77834 9.55507 0.166748 6.33333 0.166748ZM8.26892 8.57804C8.17718 8.6693 8.08098 8.76503 8.00289 8.84336C7.93256 8.91393 7.88293 9.00095 7.85776 9.09528C7.82224 9.22841 7.79355 9.36295 7.74556 9.49208L7.33653 10.5941C7.01287 10.6646 6.67792 10.7044 6.33333 10.7044V10.0604C6.37308 9.76352 6.15363 9.20747 5.80104 8.85489C5.65991 8.71376 5.58065 8.52229 5.58065 8.32259V7.56967C5.58065 7.29588 5.43317 7.0442 5.19348 6.91178C4.85548 6.72478 4.3747 6.46345 4.0454 6.29763C3.77537 6.16167 3.52557 5.98856 3.30094 5.78604L3.28212 5.7691C3.12149 5.6241 2.97886 5.46031 2.85733 5.28126C2.63669 4.95737 2.27728 4.42461 2.04372 4.07837C2.5252 3.00815 3.39291 2.14867 4.47114 1.68177L5.03589 1.96426C5.28616 2.0894 5.58065 1.90757 5.58065 1.62767V1.36188C5.76858 1.33153 5.95981 1.31225 6.15433 1.30495L6.81999 1.97061C6.967 2.11762 6.967 2.35589 6.81999 2.5029L6.70968 2.61298L6.46646 2.8562C6.39308 2.92958 6.39308 3.04884 6.46646 3.12223L6.57678 3.23254C6.65017 3.30593 6.65017 3.42518 6.57678 3.49857L6.38861 3.68674C6.35328 3.722 6.30539 3.7418 6.25548 3.74178H6.04402C5.99509 3.74178 5.94805 3.76083 5.91277 3.79518L5.67944 4.02216C5.65083 4.05001 5.63182 4.08623 5.62514 4.12559C5.61846 4.16495 5.62446 4.20541 5.64227 4.24114L6.00897 4.97478C6.07154 5.09991 5.98051 5.24716 5.84079 5.24716H5.70813C5.66273 5.24716 5.61899 5.23069 5.58488 5.20106L5.3666 5.01147C5.3172 4.96862 5.25751 4.93936 5.19338 4.92658C5.12925 4.91379 5.06289 4.91792 5.00084 4.93856L4.26767 5.18294C4.2117 5.20161 4.16302 5.23741 4.12853 5.28529C4.09404 5.33316 4.07549 5.39067 4.0755 5.44968C4.0755 5.55623 4.13572 5.65337 4.23098 5.70112L4.4916 5.83143C4.71294 5.94222 4.95709 5.99985 5.20454 5.99985C5.45198 5.99985 5.73589 6.64175 5.95722 6.75253H7.52729C7.72698 6.75253 7.91821 6.8318 8.05958 6.97293L8.38159 7.29494C8.51611 7.42952 8.59167 7.61202 8.59163 7.8023C8.59159 7.94648 8.56305 8.08924 8.50767 8.22237C8.45229 8.35549 8.37115 8.47636 8.26892 8.57804ZM10.3085 6.42935C10.1723 6.39524 10.0535 6.31174 9.97564 6.19484L9.55272 5.56046C9.49084 5.46778 9.45781 5.35884 9.45781 5.24739C9.45781 5.13595 9.49084 5.02701 9.55272 4.93432L10.0135 4.24326C10.0681 4.16164 10.1429 4.09531 10.2308 4.05156L10.5362 3.89891C10.8542 4.5321 11.0376 5.24434 11.0376 6.00008C11.0376 6.20401 11.0202 6.40371 10.9948 6.60082L10.3085 6.42935Z\" fill=\"black\" />\n                          </svg>\n                         \n                          <a href=\"https://linuxfoundation.org/\" target=\"_blank\">English</a>&nbsp;|&nbsp;\n                          <a href=\"https://www.linuxfoundation.jp\" target=\"_blank\">Japan</a>&nbsp;|&nbsp;\n                          <a href=\"https://www.linuxfoundation.org/zh/chinese/?hsLang=en\" target=\"_blank\">China</a>&nbsp;|&nbsp;\n                          <a href=\"https://linuxfoundation.eu?hsLang=en\" target=\"_blank\">Europe</a>\n                        </div> \n                    </div>\n                  </div>\n               </div>\n            </div>\n         </div>\n      </div>\n   </nav>\n</section></div>\n    \n\n    <main id=\"main\">\n      \n\n<main id=\"main-content\" class=\"body-container-wrapper\">\n  <div class=\"body-container body-container--blog-post\">\n \n    \n    <div class=\"section-wrapper\n                flex-row\n                jc--space-around\n                pt--md\n                pb--md\">\n      <div class=\"blog-item__header mb--md mt--md\">\n          \n           6 MIN READ\n        \n        <h1 class=\"blog-post__title\"><span id=\"hs_cos_wrapper_name\" class=\"hs_cos_wrapper hs_cos_wrapper_meta_field hs_cos_wrapper_type_text\" style=\"\" data-hs-cos-general-type=\"meta_field\" data-hs-cos-type=\"text\">Linux Foundation Announces DNS-AID Project to Advance Decentralized AI Agent Discovery</span></h1>\n        <h6 class=\"post-author__info\">The Linux Foundation | 27 May 2026 </h6>\n      </div>\n\n      \n        <div id=\"sticky-anchor\">\n        \n        \n        \n        <div id=\"sticky\" class=\"col2 sidebar-left  mt--xs\">\n          <div class=\"blog-single__share\">\n            <div id=\"hs_cos_wrapper_module_165707532951021\" class=\"hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_module\" style=\"\" data-hs-cos-general-type=\"widget\" data-hs-cos-type=\"module\">\n\n\n\n\n<section id=\"\" class=\"section-wrapper\n              section--module_165707532951021\n              section--social-icons\n              \">\n  <div class=\"social-icons__wrapper\">\n    <div class=\"social-icons__container\n                flex-row\n                jc--\">\n        \n        <div class=\"social-links\n                    flex-column\">\n           <a href=\"mailto:?subject=Linux%20Foundation%20Announces%20DNS-AID%20Project%20to%20Advance%20Decentralized%20AI%20Agent%20Discovery&amp;body=https%3A%2F%2Fwww.linuxfoundation.org%2Fpress%2Flinux-foundation-announces-dns-aid-project-to-advance-decentralized-ai-agent-discovery\" title=\"Share via Email\" class=\"social-links__link\">\n            <div class=\"icon social-icons__email\">\n              <svg xmlns=\"http://www.w3.org/2000/svg\" viewbox=\"0 0 512 512\"><path d=\"M464 64C490.5 64 512 85.49 512 112C512 127.1 504.9 141.3 492.8 150.4L275.2 313.6C263.8 322.1 248.2 322.1 236.8 313.6L19.2 150.4C7.113 141.3 0 127.1 0 112C0 85.49 21.49 64 48 64H464zM217.6 339.2C240.4 356.3 271.6 356.3 294.4 339.2L512 176V384C512 419.3 483.3 448 448 448H64C28.65 448 0 419.3 0 384V176L217.6 339.2z\" /></svg>            \n            </div>\n          </a>\n          <a href=\"https://twitter.com/home?status=https%3A%2F%2Fwww.linuxfoundation.org%2Fpress%2Flinux-foundation-announces-dns-aid-project-to-advance-decentralized-ai-agent-discovery\" title=\"Share via Twitter\" target=\"_blank\" class=\"social-links__link\">\n            <div class=\"icon social-icons__twitter\">\n              <svg version=\"1.0\" xmlns=\"http://www.w3.org/2000/svg\" viewbox=\"0 0 512 512\" height=\"25\" width=\"25\" aria-labelledby=\"twitter3\" role=\"img\"><title id=\"twitter3\">Follow us on Twitter</title><g id=\"twitter3_layer\"><path d=\"M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z\"></path></g></svg>\n            </div>\n          </a>\n          <a href=\"https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fwww.linuxfoundation.org%2Fpress%2Flinux-foundation-announces-dns-aid-project-to-advance-decentralized-ai-agent-discovery\" title=\"Share via Facebook\" target=\"_blank\" class=\"social-links__link\">\n            <div class=\"icon social-icons__facebook\">\n              <svg version=\"1.0\" xmlns=\"http://www.w3.org/2000/svg\" viewbox=\"0 0 264 512\" height=\"25\" width=\"25\" aria-labelledby=\"facebook-f1\" role=\"img\"><title id=\"facebook-f1\">Follow us on Facebook</title><g id=\"facebook-f1_layer\"><path d=\"M76.7 512V283H0v-91h76.7v-71.7C76.7 42.4 124.3 0 193.8 0c33.3 0 61.9 2.5 70.2 3.6V85h-48.2c-37.8 0-45.1 18-45.1 44.3V192H256l-11.7 91h-73.6v229\"></path></g></svg>\n            </div>\n          </a>\n          <a href=\"https://www.linkedin.com/shareArticle?mini=true&amp;url=https%3A%2F%2Fwww.linuxfoundation.org%2Fpress%2Flinux-foundation-announces-dns-aid-project-to-advance-decentralized-ai-agent-discovery&amp;title=&amp;summary=&amp;source=\" title=\"Share via LinkedIn\" target=\"_blank\" class=\"social-links__link\">\n            <div class=\"icon social-icons__linkedin\">\n              <svg version=\"1.0\" xmlns=\"http://www.w3.org/2000/svg\" viewbox=\"0 0 448 512\" height=\"25\" width=\"25\" aria-labelledby=\"linkedin-in2\" role=\"img\"><title id=\"linkedin-in2\">Follow us on LinkedIn</title><g id=\"linkedin-in2_layer\"><path d=\"M100.3 480H7.4V180.9h92.9V480zM53.8 140.1C24.1 140.1 0 115.5 0 85.8 0 56.1 24.1 32 53.8 32c29.7 0 53.8 24.1 53.8 53.8 0 29.7-24.1 54.3-53.8 54.3zM448 480h-92.7V334.4c0-34.7-.7-79.2-48.3-79.2-48.3 0-55.7 37.7-55.7 76.7V480h-92.8V180.9h89.1v40.8h1.3c12.4-23.5 42.7-48.3 87.9-48.3 94 0 111.3 61.9 111.3 142.3V480z\"></path></g></svg>\n            </div>\n          </a>\n        </div>\n    </div>\n  </div>\n</section></div>\n          </div>\n        </div>\n        \n      \n      </div>\n      \n      \n      <div class=\"col10 section--blog-post\">\n        <div class=\"blog-post__post-info\">\n          <span id=\"hs_cos_wrapper_post_body\" class=\"hs_cos_wrapper hs_cos_wrapper_meta_field hs_cos_wrapper_type_rich_text\" style=\"\" data-hs-cos-general-type=\"meta_field\" data-hs-cos-type=\"rich_text\"><p><em><img src=\"https://www.linuxfoundation.org/hs-fs/hubfs/Press%20Release%20(14).png?width=775&amp;height=406&amp;name=Press%20Release%20(14).png\" width=\"775\" height=\"406\" loading=\"lazy\" alt=\"Press Release (14)\" style=\"height: auto; max-width: 100%; width: 775px; margin-left: auto; margin-right: auto; display: block;\" srcset=\"https://www.linuxfoundation.org/hs-fs/hubfs/Press%20Release%20(14).png?width=388&amp;height=203&amp;name=Press%20Release%20(14).png 388w, https://www.linuxfoundation.org/hs-fs/hubfs/Press%20Release%20(14).png?width=775&amp;height=406&amp;name=Press%20Release%20(14).png 775w, https://www.linuxfoundation.org/hs-fs/hubfs/Press%20Release%20(14).png?width=1163&amp;height=609&amp;name=Press%20Release%20(14).png 1163w, https://www.linuxfoundation.org/hs-fs/hubfs/Press%20Release%20(14).png?width=1550&amp;height=812&amp;name=Press%20Release%20(14).png 1550w, https://www.linuxfoundation.org/hs-fs/hubfs/Press%20Release%20(14).png?width=1938&amp;height=1015&amp;name=Press%20Release%20(14).png 1938w, https://www.linuxfoundation.org/hs-fs/hubfs/Press%20Release%20(14).png?width=2325&amp;height=1218&amp;name=Press%20Release%20(14).png 2325w\" sizes=\"(max-width: 775px) 100vw, 775px\"></em></p>\n<!--more-->\n<p style=\"text-align: center;\"><em><span>New project enables open, secure, decentralized connectivity for the emerging agentic web</span></em><span></span></p>\n<p><strong><span>Summary</span></strong></p>\n<ul>\n<li><span>The Linux Foundation announced the launch of the DNS-AID project, a new open source project designed to enable secure, decentralized discovery and communication between AI agents using the internet’s existing DNS infrastructure and open standards.</span></li>\n<li><span>Initially developed by Infoblox, DNS-AID provides a vendor-neutral framework for publishing, discovering, and verifying AI agents and Model Context Protocol (MCP) servers without relying on centralized registries or hardcoded integrations.</span></li>\n<li><span>The Linux Foundation and initial project members – including Cloudflare, CSC, Equinix, GoDaddy, IDC, Indeed, Infoblox, Internet Systems Consortium, and WWT – will support the long-term growth of open, interoperable infrastructure for the emerging agentic web.</span></li>\n</ul>\n<p><strong><span>SAN FRANCISCO, May 27, 2026 –</span></strong><span style=\"white-space-collapse: preserve;\"> </span><a href=\"//www.linuxfoundation.org?hsLang=en\" data-feathr-click-track=\"true\" data-feathr-link-aids=\"5e59d3cf27f56a08159cd952\"><u><span style=\"color: #1155cc;\">The Linux Foundation,</span></u></a><span> the nonprofit organization enabling mass innovation through open source, today announced the launch of the DNS-AID project, an open source project enabling AI agents to discover and communicate with one another in a standard way. By leveraging the internet’s existing Domain Name System (DNS) infrastructure, DNS-AID provides a robust, decentralized alternative to the centralized registries and hardcoded URLs currently limiting AI interoperability.</span><span></span></p>\n<p><span>As the AI ecosystem expands, the ability for autonomous agents to locate and verify each other across disparate platforms has become a critical bottleneck. The DNS-AID project, initially developed by Infoblox, enables agents and Model Context Protocol (MCP) servers to use DNS as a global, vendor-neutral directory. This approach ensures that agent discovery remains scalable, secure, and compatible with the foundational protocols of the internet.</span><span></span></p>\n<p><span>“AI agents are quickly becoming the connective tissue of the modern internet, but without secure, open discovery infrastructure, that connectivity becomes a liability,” said Jim Zemlin, CEO at the Linux Foundation. “DNS-AID helps anchor agent discovery in the DNS infrastructure the internet already trusts. The Linux Foundation provides the neutral home where this work can grow with the open governance, community collaboration, and long-term stability the emerging agentic web requires.”</span><span></span></p>\n<p><span>The DNS-AID project provides a reference implementation including a Python SDK, a command-line interface (CLI), and an MCP server, allowing developers to integrate agent discovery into their existing workflows immediately. Because the protocol is implementation-agnostic, it functions across any DNS provider, ensuring that organizations maintain control over their agent infrastructure without relying on proprietary, centralized services.</span><span></span></p>\n<p><span>“Current approaches to agent connectivity are fragmented and often rely on fragile, hardcoded configurations,” said Igor Racic and Ingmar Van Glabbeek, project maintainers for DNS-AID. “With DNS-AID, we are moving toward a 'web-native' model for AI. By utilizing the existing DNS hierarchy, we enable developers to publish and discover agents with the same reliability and ubiquity that we’ve used to navigate the internet for decades. We look forward to building this community under the Linux Foundation to ensure the protocol evolves to meet the needs of the global AI developer community.”</span><span></span></p>\n<p><span>Under Linux Foundation governance, DNS-AID will remain vendor neutral, fostering transparent, community-driven growth, ensuring accessibility, and supporting sustainability.</span><span></span></p>\n<p><span>The project is now open for contributions and community participation. To review the documentation, explore the reference implementation, and join the conversation, visit: </span><a href=\"https://github.com/dns-aid\" data-feathr-click-track=\"true\" data-feathr-link-aids=\"5e59d3cf27f56a08159cd952\"><u><span style=\"color: #1155cc;\">https://github.com/dns-aid</span></u></a><span>. </span></p>\n<h4 style=\"background-color: #ffffff;\"><strong><span>Supporting Quotes</span></strong></h4>\n<p style=\"background-color: #ffffff;\"><span>“The Internet already solved the discovery problem decades ago with DNS – it's fast, it scales globally, and every network on earth understands it. By extending this proven architecture to the agentic web, DNS-AID provides the foundational routing layer that autonomous systems need to operate safely and efficiently. Cloudflare has always championed an open, interoperable Internet, and we are excited to support this project as it builds a decentralized future where AI scale isn't bottlenecked by centralized chokepoints.”</span><span style=\"white-space-collapse: preserve;\"><br></span><strong><span>– Dane Knecht, Chief Technology Officer, Cloudflare </span></strong><span></span></p>\n<p><span>“The Domain Name System has proven its resiliency and scalability across every major technological disruption and innovation. As AI ecosystems continue to evolve, domains, the DNS, and their associated security protocols will become a foundational trust layer for AI, ML, and LLM-driven systems, enabling agent identity, routing, security, and policy enforcement. Through the monitoring and enforcement of daily domain name behaviors across the internet, we have seen firsthand the emerging threat vectors targeting enterprises globally. Initiatives like DNS-AID are critical to ensuring that the domain and DNS ecosystem, and the internet’s trusted infrastructure, evolve securely alongside the rise of AI-powered communication.”</span></p>\n<p style=\"background-color: #ffffff;\"><strong><span>– Ihab Shraim, Chief Technology, Product and AI Officer, CSC</span></strong></p>\n<p style=\"background-color: #ffffff;\"><span>“As AI agents become a foundational part of how enterprises interact across digital ecosystems, open and neutral discovery mechanisms will be critical. DNS-AID represents a promising step toward standardizing how agents are discovered and trusted across hybrid and multicloud environments. At Equinix, we see this as complementary to enabling secure, high-performance interconnection across a globally distributed infrastructure.”</span><span style=\"white-space-collapse: preserve;\"><br></span><strong><span>– Kaladhar Voruganti, Vice President and Senior Technologist, Equinix </span></strong></p>\n<p style=\"background-color: #ffffff;\"><span>\"The agentic internet is going to be built on the same DNS and public-CA infrastructure that carried the human web for 30 years, and that works because no single operator owns it. DNS-AID gives agent discovery a neutral DNS-layer protocol any resolver can implement. The Agent Name Service open standard then adds a layer of verification and identification any agent can use. Both standards compose with whatever sits above them at the application layer. DNS-AID and Agent Name Service at the Linux Foundation are part of a broader move toward open, interoperable building blocks for the evolving internet. The standards that succeed at internet scale are the open ones, well operated.\"</span></p>\n<p style=\"background-color: #ffffff;\"><strong><span>– Scott Courtney, Vice President, Engineering, GoDaddy</span></strong><span></span></p>\n<p><span>“The threat of shadow AI always lurks in the deployment of agentic AI agents. It seems to me that the business community and cybersecurity teams need a common interface/protocol that can be used at the time of agent deployment. With DNS-AID, end-users use a common convention (DNS) and an open standard to create scale for the proliferation of AI agents that will only grow exponentially.”</span></p>\n<p><strong><span>– Chris Kissel, Research Vice President, IDC Security &amp; Trust Team</span></strong><span></span></p>\n<p><span>“For forty years, DNS has quietly operated as the internet’s largest distributed trust graph. Every name resolution is, in effect, a trust signal. The agentic Internet inherits that graph the moment we extend DNS to agents, which is exactly what DNS-AID does. The DNS-AID architecture enables further fine-grained trust bootstrapping by linking to AI-native artifacts like AgentCards as well as third-party verifiable attestations about the agent and the human or enterprise behind it.”</span></p>\n<p><strong><span>– Ken Adler, Technical Fellow, AgenticIAM, Indeed</span></strong></p>\n<p style=\"background-color: #ffffff;\"><span>“DNS is already running everywhere agents will run. It's the only discovery system on the internet that is universally deployed, universally interoperable, and proven at planetary scale. DNS-AID extends what DNS has always done to AI agents that will increasingly act on our behalf. By standardizing how agents are published, discovered, and verified in DNS, it gives every operator, registrar, and platform one shared way to participate.”</span></p>\n<p style=\"background-color: #ffffff;\"><span style=\"background-color: #ffffff;\">– </span><strong><span style=\"background-color: #ffffff;\">Wei Chen, Chief Legal Officer and Executive Vice President, Regulatory Strategy, Infoblox</span></strong></p>\n<p style=\"background-color: #ffffff;\"><span style=\"background-color: #ffffff;\">“This is exactly the kind of application that the DNS Service Binding (SVCB) and HTTPS records were designed for. By publishing metadata about available agents and their capabilities, the DNS-AID can provide a quick and efficient process for discovering resources on the Internet.”</span></p>\n<p style=\"background-color: #ffffff;\"><strong><span style=\"background-color: #ffffff;\">– Victoria Risk, BIND 9 Product Manager, Internet Systems Consortium</span></strong><span></span></p>\n<p><span>\"Agent-to-agent communication is the next frontier of AI attack surface, and it's exactly the kind of challenge our ARMOR framework was built to address. DNS-AID gives enterprises an open, standards-based way to handle agent discovery and identity – a foundational control that maps directly to ARMOR's infrastructure security and secure AI operations domains. We've been telling clients there's no AI without ARMOR; open protocols like DNS-AID are what make that principle operational at internet scale.\" </span></p>\n<p><strong><span>– Chris Konrad, Vice President, Global Cyber, WWT</span></strong></p>\n<p>&nbsp;</p>\n<p><strong><span>Media Contact</span></strong></p>\n<p style=\"font-weight: normal;\">pr@linuxfoundation.org</p>\n<p style=\"text-align: center;\">&nbsp;</p></span>\n        </div>\n        \n        \n        <div id=\"stop\" class=\"post-meta-infos flex-row mb--md\n                              linux-box\n                              bg--secondary\n                              jc--space-between\">\n          <div class=\"col2 author__avatar-name mt--sm\">\n            <div class=\"hs-author-avatar align--center\"> \n              <svg width=\"126\" height=\"126\" viewbox=\"0 0 126 126\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n                <path d=\"M25.1418 100.884V50.6897H0V126H75.3103V100.884H25.1418Z\" fill=\"white\" />\n                <path d=\"M126 0H0V37.7923H25.2154V25.3232H100.823V100.792H88.2346V126H126V0Z\" fill=\"white\" />\n              </svg>\n            </div>\n          </div>\n          <div class=\"col10\n                      ml--sm author__bio\">\n            <h3 class=\"text-color--white\">\n              About The Linux Foundation\n            </h3>\n            <p class=\"text-color--white\">The Linux Foundation is the world’s leading home for collaboration on open source software, hardware, standards, and data. Linux Foundation projects are critical to the world’s infrastructure including Linux, Kubernetes, Node.js, ONAP, OpenChain, OpenSSF, OpenStack, PyTorch, RISC-V, SPDX, Zephyr, and more. The Linux Foundation is focused on leveraging best practices and addressing the needs of contributors, users, and solution providers to create sustainable models for open collaboration. For more information, please visit us at <a style=\"color:#ffffff !important\" href=\"https://linuxfoundation.org/\">linuxfoundation.org</a>.</p>\n            <p class=\"text-color--white\"><i>For a list of trademarks of The Linux Foundation, please see its trademark usage page: <a style=\"color:#ffffff !important\" href=\"https://www.linuxfoundation.org/trademark-usage?hsLang=en\">linuxfoundation.org/trademark-usage</a>. Linux is a registered trademark of Linus Torvalds.</i></p>\n          </div>\n          \n        </div>\n        \n        \n        \n      \n      \n      \n        \n      \n     </div>\n      \n\n      \n      <div class=\"col3 sidebar-right ml--sm\" style=\"visibility:hidden !important;\">\n        <div class=\"blog-post__sidebar\">\n\n        </div>\n      </div>\n\n  </div>\n  </div>\n</main>\n\n    </main>\n\n    \n      \n      <div id=\"hs_cos_wrapper_module_16613593312364\" class=\"hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_module\" style=\"\" data-hs-cos-general-type=\"widget\" data-hs-cos-type=\"module\">\n\n\n  <section id=\"sticky-form\" class=\"section--module_16613593312364\n                  section--footer_form\n                  \">\n  \n    <div class=\"form__container\n                hs-form\n                \n                bg--secondary\n                \n                pb--md\n                pt--md\">\n    <div class=\"section-wrapper\">\n      \n      <div class=\"footer_form_title\"><h3>Stay Connected with the Linux Foundation</h3></div>\n      \n      <div class=\"footer__form\n                  align-items--center\">\n        <span id=\"hs_cos_wrapper_module_16613593312364_\" class=\"hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_form\" style=\"\" data-hs-cos-general-type=\"widget\" data-hs-cos-type=\"form\"><h3 id=\"hs_cos_wrapper_form_146635840_title\" class=\"hs_cos_wrapper form-title\" data-hs-cos-general-type=\"widget_field\" data-hs-cos-type=\"text\"></h3>\n\n<div id=\"hs_form_target_form_146635840\"></div>\n\n\n\n\n\n\n\n\n\n</span>\n      </div>\n    </div>\n  </div>\n  \n</section>\n  <footer class=\"section--module_16613593312364\n                 section--footer\n                 pt--xs\">\n  <div class=\"footer\n              section-wrapper\">\n    <div class=\"footer__wrapper\">\n      <div class=\"footer__container\n                  flex-row\n                  jc--space-between\">\n        <div class=\"footer__left\n                    pt--xs\n                    col4\">\n          <div class=\"footer__logo\">\n            <a href=\"https://linuxfoundation.org\">\n            <img src=\"https://www.linuxfoundation.org/hubfs/LF%20Logo%20White-1.svg\" alt=\"LF Logo White-1\" height=\"50\" style=\"height:50px;\">\n              </a>\n          </div>\n          <p class=\"footer__title\">ABOUT THE LINUX FOUNDATION</p>\n           <p class=\"footer__content\">The Linux Foundation provides a neutral, trusted hub for developers to code, manage, and scale open technology projects.</p>\n             <div class=\"footer__info-menu\"><span id=\"hs_cos_wrapper_module_16613593312364_\" class=\"hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_simple_menu\" style=\"\" data-hs-cos-general-type=\"widget\" data-hs-cos-type=\"simple_menu\"><div id=\"hs_menu_wrapper_module_16613593312364_\" class=\"hs-menu-wrapper active-branch flyouts hs-menu-flow-horizontal\" role=\"navigation\" data-sitemap-name=\"\" data-menu-id=\"\" aria-label=\"Navigation Menu\">\n <ul role=\"menu\">\n  <li class=\"hs-menu-item hs-menu-depth-1\" role=\"none\"><a href=\"https://www.linuxfoundation.org/about\" role=\"menuitem\" target=\"_self\">About the LF</a></li>\n  <li class=\"hs-menu-item hs-menu-depth-1\" role=\"none\"><a href=\"https://www.linuxfoundation.org/about/leadership\" role=\"menuitem\" target=\"_self\">Leadership</a></li>\n  <li class=\"hs-menu-item hs-menu-depth-1\" role=\"none\"><a href=\"https://www.linuxfoundation.org/careers\" role=\"menuitem\" target=\"_self\">Careers</a></li>\n  <li class=\"hs-menu-item hs-menu-depth-1\" role=\"none\"><a href=\"https://www.linuxfoundation.org/about/members\" role=\"menuitem\" target=\"_self\">Corporate Members</a></li>\n  <li class=\"hs-menu-item hs-menu-depth-1\" role=\"none\"><a href=\"https://www.linuxfoundation.org/about/inclusion-accessibility\" role=\"menuitem\" target=\"_self\">Inclusion &amp; Accessibility</a></li>\n  <li class=\"hs-menu-item hs-menu-depth-1\" role=\"none\"><a href=\"https://www.linuxfoundation.org/brand-guidelines\" role=\"menuitem\" target=\"_self\">Brand Guidelines</a></li>\n  <li class=\"hs-menu-item hs-menu-depth-1\" role=\"none\"><a href=\"https://www.linuxfoundation.org/about/contact\" role=\"menuitem\" target=\"_self\">Contact Us</a></li>\n  <li class=\"hs-menu-item hs-menu-depth-1\" role=\"none\"><a href=\"https://linuxfoundation.store/\" role=\"menuitem\" target=\"_blank\" rel=\"noopener\">Store</a></li>\n </ul>\n</div></span></div>\n               <div class=\"footer__social-links\">\n                \n                  \n                    \n                  <a href=\"https://twitter.com/linuxfoundation\" target=\"_blank\" rel=\"noopener\">\n                      <span id=\"hs_cos_wrapper_module_16613593312364_\" class=\"hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_icon\" style=\"\" data-hs-cos-general-type=\"widget\" data-hs-cos-type=\"icon\"><svg version=\"1.0\" xmlns=\"http://www.w3.org/2000/svg\" viewbox=\"0 0 512 512\" aria-hidden=\"true\"><g id=\"Twitter6_layer\"><path d=\"M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z\" /></g></svg></span></a>\n               \n                  \n                    \n                  <a href=\"https://www.facebook.com/TheLinuxFoundation\" target=\"_blank\" rel=\"noopener\">\n                      <span id=\"hs_cos_wrapper_module_16613593312364_\" class=\"hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_icon\" style=\"\" data-hs-cos-general-type=\"widget\" data-hs-cos-type=\"icon\"><svg version=\"1.0\" xmlns=\"http://www.w3.org/2000/svg\" viewbox=\"0 0 320 512\" aria-hidden=\"true\"><g id=\"Facebook F7_layer\"><path d=\"M279.14 288l14.22-92.66h-88.91v-60.13c0-25.35 12.42-50.06 52.24-50.06h40.42V6.26S260.43 0 225.36 0c-73.22 0-121.08 44.38-121.08 124.72v70.62H22.89V288h81.39v224h100.17V288z\" /></g></svg></span></a>\n               \n                  \n                    \n                  <a href=\"https://www.youtube.com/user/TheLinuxFoundation\" target=\"_blank\" rel=\"noopener\">\n                      <span id=\"hs_cos_wrapper_module_16613593312364_\" class=\"hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_icon\" style=\"\" data-hs-cos-general-type=\"widget\" data-hs-cos-type=\"icon\"><svg version=\"1.0\" xmlns=\"http://www.w3.org/2000/svg\" viewbox=\"0 0 576 512\" aria-hidden=\"true\"><g id=\"YouTube8_layer\"><path d=\"M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.78 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821 11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305zm-317.51 213.508V175.185l142.739 81.205-142.739 81.201z\" /></g></svg></span></a>\n               \n                  \n                    \n                  <a href=\"https://www.linkedin.com/company/208777\" target=\"_blank\" rel=\"noopener\">\n                      <span id=\"hs_cos_wrapper_module_16613593312364_\" class=\"hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_icon\" style=\"\" data-hs-cos-general-type=\"widget\" data-hs-cos-type=\"icon\"><svg version=\"1.0\" xmlns=\"http://www.w3.org/2000/svg\" viewbox=\"0 0 448 512\" aria-hidden=\"true\"><g id=\"LinkedIn In9_layer\"><path d=\"M100.28 448H7.4V148.9h92.88zM53.79 108.1C24.09 108.1 0 83.5 0 53.8a53.79 53.79 0 0 1 107.58 0c0 29.7-24.1 54.3-53.79 54.3zM447.9 448h-92.68V302.4c0-34.7-.7-79.2-48.29-79.2-48.29 0-55.69 37.7-55.69 76.7V448h-92.78V148.9h89.08v40.8h1.3c12.4-23.5 42.69-48.3 87.88-48.3 94 0 111.28 61.9 111.28 142.3V448z\" /></g></svg></span></a>\n               \n                  \n                    \n                  <a href=\"https://github.com/LF-Engineering\" target=\"_blank\" rel=\"noopener\">\n                      <span id=\"hs_cos_wrapper_module_16613593312364_\" class=\"hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_icon\" style=\"\" data-hs-cos-general-type=\"widget\" data-hs-cos-type=\"icon\"><svg version=\"1.0\" xmlns=\"http://www.w3.org/2000/svg\" viewbox=\"0 0 496 512\" aria-hidden=\"true\"><g id=\"GitHub10_layer\"><path d=\"M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z\" /></g></svg></span></a>\n                \n           </div>\n         </div>\n        <div class=\"footer__right\n                    col8\n                    pt--xs\n                    align-items--top\">\n          <div class=\"footer__right-content\">\n            <div class=\"footer__right-content-menu\n                        menu-items-footer\n                        flex-row\">\n              \n              <div class=\"footer__row-list\n                          open-menu--1\">\n                \n                <div class=\"menu-group col3\">\n                  <div class=\"child-menu_links\n                              dropdown--1\" aria-expanded=\"false\">\n                    <input class=\"footer_menu_arrow \n                                  footer_menu_arrow-invert\" type=\"checkbox\" name=\"footer_menu_arrow\" id=\"footer_menu_arrow\">\n                    <label for=\"footer_menu_arrow dropdown--1\"></label>\n                     <p class=\"footer__menu-title\n                               letter__spacing\">PROJECTS</p>\n                    <div class=\"menu-row\"><span id=\"hs_cos_wrapper_module_16613593312364_\" class=\"hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_simple_menu\" style=\"\" data-hs-cos-general-type=\"widget\" data-hs-cos-type=\"simple_menu\"><div id=\"hs_menu_wrapper_module_16613593312364_\" class=\"hs-menu-wrapper active-branch flyouts hs-menu-flow-horizontal\" role=\"navigation\" data-sitemap-name=\"\" data-menu-id=\"\" aria-label=\"Navigation Menu\">\n <ul role=\"menu\">\n  <li class=\"hs-menu-item hs-menu-depth-1\" role=\"none\"><a href=\"https://www.linuxfoundation.org/projects\" role=\"menuitem\" target=\"_self\">View All Projects</a></li>\n  <li class=\"hs-menu-item hs-menu-depth-1\" role=\"none\"><a href=\"https://www.linuxfoundation.org/projects/hosting\" role=\"menuitem\" target=\"_self\">Host Your Project</a></li>\n  <li class=\"hs-menu-item hs-menu-depth-1\" role=\"none\"><a href=\"https://www.linuxfoundation.org/security\" role=\"menuitem\" target=\"_self\">Security</a></li>\n </ul>\n</div></span></div>\n                  </div>\n                </div>\n                \n                <div class=\"menu-group col3\">\n                  <div class=\"child-menu_links\n                              dropdown--2\" aria-expanded=\"false\">\n                    <input class=\"footer_menu_arrow \n                                  footer_menu_arrow-invert\" type=\"checkbox\" name=\"footer_menu_arrow\" id=\"footer_menu_arrow\">\n                    <label for=\"footer_menu_arrow dropdown--2\"></label>\n                     <p class=\"footer__menu-title\n                               letter__spacing\">NEWSROOM</p>\n                    <div class=\"menu-row\"><span id=\"hs_cos_wrapper_module_16613593312364_\" class=\"hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_simple_menu\" style=\"\" data-hs-cos-general-type=\"widget\" data-hs-cos-type=\"simple_menu\"><div id=\"hs_menu_wrapper_module_16613593312364_\" class=\"hs-menu-wrapper active-branch flyouts hs-menu-flow-horizontal\" role=\"navigation\" data-sitemap-name=\"\" data-menu-id=\"\" aria-label=\"Navigation Menu\">\n <ul role=\"menu\">\n  <li class=\"hs-menu-item hs-menu-depth-1\" role=\"none\"><a href=\"https://www.linuxfoundation.org/press\" role=\"menuitem\" target=\"_self\">Press Releases</a></li>\n </ul>\n</div></span></div>\n                  </div>\n                </div>\n                \n                <div class=\"menu-group col3\">\n                  <div class=\"child-menu_links\n                              dropdown--3\" aria-expanded=\"false\">\n                    <input class=\"footer_menu_arrow \n                                  footer_menu_arrow-invert\" type=\"checkbox\" name=\"footer_menu_arrow\" id=\"footer_menu_arrow\">\n                    <label for=\"footer_menu_arrow dropdown--3\"></label>\n                     <p class=\"footer__menu-title\n                               letter__spacing\">LF RESEARCH</p>\n                    <div class=\"menu-row\"><span id=\"hs_cos_wrapper_module_16613593312364_\" class=\"hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_simple_menu\" style=\"\" data-hs-cos-general-type=\"widget\" data-hs-cos-type=\"simple_menu\"><div id=\"hs_menu_wrapper_module_16613593312364_\" class=\"hs-menu-wrapper active-branch flyouts hs-menu-flow-horizontal\" role=\"navigation\" data-sitemap-name=\"\" data-menu-id=\"\" aria-label=\"Navigation Menu\">\n <ul role=\"menu\">\n  <li class=\"hs-menu-item hs-menu-depth-1\" role=\"none\"><a href=\"https://www.linuxfoundation.org/research\" role=\"menuitem\" target=\"_self\">Latest Research</a></li>\n  <li class=\"hs-menu-item hs-menu-depth-1\" role=\"none\"><a href=\"https://www.linuxfoundation.org/research/sponsorship\" role=\"menuitem\" target=\"_self\">Sponsor a Study</a></li>\n  <li class=\"hs-menu-item hs-menu-depth-1\" role=\"none\"><a href=\"https://www.linuxfoundation.org/research/leadership\" role=\"menuitem\" target=\"_self\">Leadership &amp; Advisory Board</a></li>\n  <li class=\"hs-menu-item hs-menu-depth-1\" role=\"none\"><a href=\"https://www.linuxfoundation.org/research/lfr-forum\" role=\"menuitem\" target=\"_self\">Research Forum</a></li>\n </ul>\n</div></span></div>\n                  </div>\n                </div>\n                \n                <div class=\"menu-group col3\">\n                  <div class=\"child-menu_links\n                              dropdown--4\" aria-expanded=\"false\">\n                    <input class=\"footer_menu_arrow \n                                  footer_menu_arrow-invert\" type=\"checkbox\" name=\"footer_menu_arrow\" id=\"footer_menu_arrow\">\n                    <label for=\"footer_menu_arrow dropdown--4\"></label>\n                     <p class=\"footer__menu-title\n                               letter__spacing\">LFX PLATFORM</p>\n                    <div class=\"menu-row\"><span id=\"hs_cos_wrapper_module_16613593312364_\" class=\"hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_simple_menu\" style=\"\" data-hs-cos-general-type=\"widget\" data-hs-cos-type=\"simple_menu\"><div id=\"hs_menu_wrapper_module_16613593312364_\" class=\"hs-menu-wrapper active-branch flyouts hs-menu-flow-horizontal\" role=\"navigation\" data-sitemap-name=\"\" data-menu-id=\"\" aria-label=\"Navigation Menu\">\n <ul role=\"menu\">\n  <li class=\"hs-menu-item hs-menu-depth-1\" role=\"none\"><a href=\"https://lfx.linuxfoundation.org\" role=\"menuitem\" target=\"_blank\" rel=\"noopener\">LFX Home</a></li>\n  <li class=\"hs-menu-item hs-menu-depth-1\" role=\"none\"><a href=\"https://myprofile.lfx.linuxfoundation.org/\" role=\"menuitem\" target=\"_blank\" rel=\"noopener\">LFX Tools</a></li>\n  <li class=\"hs-menu-item hs-menu-depth-1\" role=\"none\"><a href=\"https://insights.lfx.dev/\" role=\"menuitem\" target=\"_blank\" rel=\"noopener\">LFX Insights</a></li>\n  <li class=\"hs-menu-item hs-menu-depth-1\" role=\"none\"><a href=\"https://openprofile.dev/\" role=\"menuitem\" target=\"_blank\" rel=\"noopener\">Create an LFX Account</a></li>\n </ul>\n</div></span></div>\n                  </div>\n                </div>\n                \n              </div>\n              \n              <div class=\"footer__row-list\n                          open-menu--2\">\n                \n                <div class=\"menu-group col3\">\n                  <div class=\"child-menu_links\n                              dropdown--1\" aria-expanded=\"false\">\n                    <input class=\"footer_menu_arrow \n                                  footer_menu_arrow-invert\" type=\"checkbox\" name=\"footer_menu_arrow\" id=\"footer_menu_arrow\">\n                    <label for=\"footer_menu_arrow dropdown--1\"></label>\n                     <p class=\"footer__menu-title\n                               letter__spacing\">RESOURCES</p>\n                    <div class=\"menu-row\"><span id=\"hs_cos_wrapper_module_16613593312364_\" class=\"hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_simple_menu\" style=\"\" data-hs-cos-general-type=\"widget\" data-hs-cos-type=\"simple_menu\"><div id=\"hs_menu_wrapper_module_16613593312364_\" class=\"hs-menu-wrapper active-branch flyouts hs-menu-flow-horizontal\" role=\"navigation\" data-sitemap-name=\"\" data-menu-id=\"\" aria-label=\"Navigation Menu\">\n <ul role=\"menu\">\n  <li class=\"hs-menu-item hs-menu-depth-1\" role=\"none\"><a href=\"https://www.linuxfoundation.org/blog\" role=\"menuitem\" target=\"_self\">Blog</a></li>\n  <li class=\"hs-menu-item hs-menu-depth-1\" role=\"none\"><a href=\"https://www.linuxfoundation.org/resources/publications\" role=\"menuitem\" target=\"_self\">Publications</a></li>\n  <li class=\"hs-menu-item hs-menu-depth-1\" role=\"none\"><a href=\"https://www.linuxfoundation.org/resources/open-source-guides\" role=\"menuitem\" target=\"_self\">Open Source Guides</a></li>\n  <li class=\"hs-menu-item hs-menu-depth-1\" role=\"none\"><a href=\"https://www.linuxfoundation.org/webinars\" role=\"menuitem\" target=\"_self\">Webinars</a></li>\n  <li class=\"hs-menu-item hs-menu-depth-1\" role=\"none\"><a href=\"https://www.linuxfoundation.org/resources/case-studies\" role=\"menuitem\" target=\"_self\">Case Studies</a></li>\n </ul>\n</div></span></div>\n                  </div>\n                </div>\n                \n                <div class=\"menu-group col3\">\n                  <div class=\"child-menu_links\n                              dropdown--2\" aria-expanded=\"false\">\n                    <input class=\"footer_menu_arrow \n                                  footer_menu_arrow-invert\" type=\"checkbox\" name=\"footer_menu_arrow\" id=\"footer_menu_arrow\">\n                    <label for=\"footer_menu_arrow dropdown--2\"></label>\n                     <p class=\"footer__menu-title\n                               letter__spacing\">LF EVENTS</p>\n                    <div class=\"menu-row\"><span id=\"hs_cos_wrapper_module_16613593312364_\" class=\"hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_simple_menu\" style=\"\" data-hs-cos-general-type=\"widget\" data-hs-cos-type=\"simple_menu\"><div id=\"hs_menu_wrapper_module_16613593312364_\" class=\"hs-menu-wrapper active-branch flyouts hs-menu-flow-horizontal\" role=\"navigation\" data-sitemap-name=\"\" data-menu-id=\"\" aria-label=\"Navigation Menu\">\n <ul role=\"menu\">\n  <li class=\"hs-menu-item hs-menu-depth-1\" role=\"none\"><a href=\"https://events.linuxfoundation.org/\" role=\"menuitem\" target=\"_blank\" rel=\"noopener\">Home</a></li>\n  <li class=\"hs-menu-item hs-menu-depth-1\" role=\"none\"><a href=\"https://events.linuxfoundation.org/about/sponsor/\" role=\"menuitem\" target=\"_blank\" rel=\"noopener\">Sponsor an Event</a></li>\n  <li class=\"hs-menu-item hs-menu-depth-1\" role=\"none\"><a href=\"https://linuxfoundation.smapply.io/\" role=\"menuitem\" target=\"_blank\" rel=\"noopener\">Submit a Talk</a></li>\n  <li class=\"hs-menu-item hs-menu-depth-1\" role=\"none\"><a href=\"https://events.linuxfoundation.org/about/code-of-conduct/\" role=\"menuitem\" target=\"_blank\" rel=\"noopener\">Code of Conduct</a></li>\n </ul>\n</div></span></div>\n                  </div>\n                </div>\n                \n                <div class=\"menu-group col3\">\n                  <div class=\"child-menu_links\n                              dropdown--3\" aria-expanded=\"false\">\n                    <input class=\"footer_menu_arrow \n                                  footer_menu_arrow-invert\" type=\"checkbox\" name=\"footer_menu_arrow\" id=\"footer_menu_arrow\">\n                    <label for=\"footer_menu_arrow dropdown--3\"></label>\n                     <p class=\"footer__menu-title\n                               letter__spacing\">LF EDUCATION</p>\n                    <div class=\"menu-row\"><span id=\"hs_cos_wrapper_module_16613593312364_\" class=\"hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_simple_menu\" style=\"\" data-hs-cos-general-type=\"widget\" data-hs-cos-type=\"simple_menu\"><div id=\"hs_menu_wrapper_module_16613593312364_\" class=\"hs-menu-wrapper active-branch flyouts hs-menu-flow-horizontal\" role=\"navigation\" data-sitemap-name=\"\" data-menu-id=\"\" aria-label=\"Navigation Menu\">\n <ul role=\"menu\">\n  <li class=\"hs-menu-item hs-menu-depth-1\" role=\"none\"><a href=\"https://training.linuxfoundation.org/\" role=\"menuitem\" target=\"_blank\" rel=\"noopener\">Home</a></li>\n  <li class=\"hs-menu-item hs-menu-depth-1\" role=\"none\"><a href=\"https://training.linuxfoundation.org/full-catalog/\" role=\"menuitem\" target=\"_self\">Course Catalog</a></li>\n  <li class=\"hs-menu-item hs-menu-depth-1\" role=\"none\"><a href=\"https://training.linuxfoundation.org/resources/\" role=\"menuitem\" target=\"_self\">Resources</a></li>\n </ul>\n</div></span></div>\n                  </div>\n                </div>\n                \n              </div>\n              \n            </div>\n          </div>\n          <div class=\"footer__info\">\n            <p class=\"content_info\"><span style=\"font-size: 12px; color: #ffffff;\">Copyright © 2026 The Linux Foundation®. All rights reserved. The Linux Foundation has registered trademarks and uses trademarks. For more information, including terms of use, privacy policy, and trademark usage, please see our <a href=\"/legal/policies?hsLang=en\"><span style=\"font-size: 12px; color: #ffffff;\">Policies</span></a> page. <a href=\"/legal/privacy-policy?hsLang=en\"><span style=\"font-size: 12px; color: #ffffff;\">Privacy Policy</span></a> | <a href=\"/legal/trademark-usage?hsLang=en\"><span style=\"font-size: 12px; color: #ffffff;\">Trademark Usage</span></a></span></p>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</footer></div>\n    \n\n    \n    \n<!-- HubSpot performance collection script -->\n<script defer src=\"/hs/hsstatic/content-cwv-embed/static-1.1293/embed.js\"></script>\n<script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js\"></script>\n<script>\nvar hsVars = hsVars || {}; hsVars['language'] = 'en';\n</script>\n\n<script src=\"/hs/hsstatic/cos-i18n/static-1.53/bundles/project.js\"></script>\n<script src=\"https://www.linuxfoundation.org/hubfs/hub_generated/template_assets/1/80245626652/1788237346916/template_magnific-popup.min.js\"></script>\n<script src=\"https://www.linuxfoundation.org/hubfs/hub_generated/module_assets/1/76935915621/1779987420071/module_Main_Mega_Header.min.js\"></script>\n\n           <script>\n              function myFunction(x) {\n                x.classList.toggle(\"change\");\n              }\n\n              function openSlideMenu() {\n                document.getElementById('burger-menu').classList.toggle(\"open\");\n              }\n\n              function closeSlideMenu() {\n                document.getElementById('burger-menu').style.width = '0px';\n              }\n\n           </script> \n         \n<script src=\"https://www.linuxfoundation.org/hubfs/hub_generated/template_assets/1/77282240621/1788237350733/template_main.min.js\"></script>\n<script src=\"https://www.linuxfoundation.org/hubfs/hub_generated/module_assets/1/77362524751/1753976444399/module_Main_Mega_Footer.min.js\"></script>\n\n    <!--[if lte IE 8]>\n    <script charset=\"utf-8\" src=\"https://js.hsforms.net/forms/v2-legacy.js\"></script>\n    <![endif]-->\n\n<script data-hs-allowed=\"true\" src=\"/_hcms/forms/v2.js\"></script>\n\n    <script data-hs-allowed=\"true\">\n        var options = {\n            portalId: '8112310',\n            formId: 'e5c83800-1206-402c-9050-decfe094cca8',\n            formInstanceId: '2293',\n            \n            pageId: '213659262474',\n            \n            region: 'na1',\n            \n            \n            \n            \n            pageName: \"Linux Foundation Announces DNS-AID Project to Advance Decentralized AI Agent Discovery\",\n            \n            \n            \n            inlineMessage: \"Thanks for submitting the form. You have been added to the subscriber list.&nbsp;\",\n            \n            \n            rawInlineMessage: \"Thanks for submitting the form. You have been added to the subscriber list.&nbsp;\",\n            \n            \n            hsFormKey: \"cd4728a2f33c41da62b1c00fe40299a8\",\n            \n            \n            css: '',\n            target: '#hs_form_target_form_146635840',\n            \n            \n            \n            \n            \n            \n            \n            contentType: \"blog-post\",\n            \n            \n            \n            formsBaseUrl: '/_hcms/forms/',\n            \n            \n            \n            formData: {\n                cssClass: 'hs-form stacked hs-custom-form'\n            }\n        };\n\n        options.getExtraMetaDataBeforeSubmit = function() {\n            var metadata = {};\n            \n\n            if (hbspt.targetedContentMetadata) {\n                var count = hbspt.targetedContentMetadata.length;\n                var targetedContentData = [];\n                for (var i = 0; i < count; i++) {\n                    var tc = hbspt.targetedContentMetadata[i];\n                     if ( tc.length !== 3) {\n                        continue;\n                     }\n                     targetedContentData.push({\n                        definitionId: tc[0],\n                        criterionId: tc[1],\n                        smartTypeId: tc[2]\n                     });\n                }\n                metadata[\"targetedContentMetadata\"] = JSON.stringify(targetedContentData);\n            }\n\n            return metadata;\n        };\n\n        hbspt.forms.create(options);\n    </script>\n\n\n<!-- Start of HubSpot Analytics Code -->\n<script type=\"text/javascript\">\nvar _hsq = _hsq || [];\n_hsq.push([\"setContentType\", \"blog-post\"]);\n_hsq.push([\"setCanonicalUrl\", \"https:\\/\\/www.linuxfoundation.org\\/press\\/linux-foundation-announces-dns-aid-project-to-advance-decentralized-ai-agent-discovery\"]);\n_hsq.push([\"setPageId\", \"213659262474\"]);\n_hsq.push([\"setContentMetadata\", {\n    \"contentPageId\": 213659262474,\n    \"legacyPageId\": \"213659262474\",\n    \"contentFolderId\": null,\n    \"contentGroupId\": 83688301748,\n    \"abTestId\": null,\n    \"languageVariantId\": 213659262474,\n    \"languageCode\": \"en\",\n    \n    \n}]);\n</script>\n\n<script type=\"text/javascript\" id=\"hs-script-loader\" async defer src=\"/hs/scriptloader/8112310.js?businessUnitId=0\"></script>\n<!-- End of HubSpot Analytics Code -->\n\n\n<script type=\"text/javascript\">\nvar hsVars = {\n    render_id: \"8b6e3f42-d1bb-4d7c-96ef-04f9aa1f3b88\",\n    ticks: 1788237968612,\n    page_id: 213659262474,\n    \n    content_group_id: 83688301748,\n    portal_id: 8112310,\n    app_hs_base_url: \"https://app.hubspot.com\",\n    cp_hs_base_url: \"https://cp.hubspot.com\",\n    language: \"en\",\n    analytics_page_type: \"blog-post\",\n    scp_content_type: \"\",\n    \n    analytics_page_id: \"213659262474\",\n    category_id: 3,\n    folder_id: 0,\n    is_hubspot_user: false\n}\n</script>\n\n\n<script defer src=\"/hs/hsstatic/HubspotToolsMenu/static-1.640/js/index.js\"></script>\n\n<!-- Google Tag Manager (noscript) -->\n<noscript><iframe src=\"https://www.googletagmanager.com/ns.html?id=GTM-WWBXMJK\" height=\"0\" width=\"0\" style=\"display:none;visibility:hidden\"></iframe></noscript>\n<!-- End Google Tag Manager (noscript) -->\n\n<div id=\"fb-root\"></div>\n  <script>(function(d, s, id) {\n  var js, fjs = d.getElementsByTagName(s)[0];\n  if (d.getElementById(id)) return;\n  js = d.createElement(s); js.id = id;\n  js.src = \"//connect.facebook.net/en_GB/sdk.js#xfbml=1&version=v3.0\";\n  fjs.parentNode.insertBefore(js, fjs);\n }(document, 'script', 'facebook-jssdk'));</script> <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=\"https://platform.twitter.com/widgets.js\";fjs.parentNode.insertBefore(js,fjs);}}(document,\"script\",\"twitter-wjs\");</script>\n \n\n\n    \n  \n\n</body></html>","snapshot_chars":94832,"live_check":"changed"},{"url":"https://www.theregister.com/ai-ml/2026/05/28/ai-agents-get-their-own-phone-directory-built-atop-dns/5247539","committed_hash":"sha256:e35e765ae82079d75f6033b096ce159f8d14d97e2b341cb82efd13099a03f3e4","committed_hash_short":"sha256:e35e765a…9a03f3e4","mime_type":"text/html","committed_at":"2026-09-01T14:00:28.051606+00:00","content_snapshot":"<!DOCTYPE html>\n<html lang=\"en-US\" dir=\"ltr\" class=\"resp_fonts\">\n\n    <head>\n                <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n                \n                <script>\n                    window.labClientAPIReady = new Promise(function (resolve) {\n                        document.addEventListener(\n                            'labClientAPIReady',\n                            function () { resolve(window.labClientAPI); },\n                            { once: true }\n                        );\n                    });\n                </script>\n                <script type=\"module\">\n                    import { ClientAPI } from '/view-resources/baseview/public/common/ClientAPI/index.js?v=1787211890-L4';\n                    window.labClientAPI = new ClientAPI({\n                        pageData: {\n                            url: 'https://www.theregister.com/ai-ml/2026/05/28/ai-agents-get-their-own-phone-directory-built-atop-dns/5247539',\n                            pageType: 'article',\n                            pageId: '5247539',\n                            section: 'ai + ml',\n                            subsection: '',\n                            title: 'AI&nbsp;agents get their own phone directory built atop DNS',\n                            seotitle: 'AI agents get their own phone directory built atop DNS',\n                            sometitle: 'AI&nbsp;agents get their own phone directory built atop DNS',\n                            description: 'DNS-AID, under the auspices of the Linux Foundation, promises easier agent discovery',\n                            seodescription: 'DNS-AID, under the auspices of the Linux Foundation, promises easier agent discovery',\n                            somedescription: 'DNS-AID, under the auspices of the Linux Foundation, promises easier agent discovery',\n                            device: 'desktop',\n                            cmsVersion: '4.2.21',\n                            contentLanguage: 'en-US',\n                            published: '2026-05-28T13:06:00.000Z',\n                            tags: [\"cloudflare\", \"ai agents\", \"ai + ml\", \"ai\", \"linux foundation\", \"domain name system\", \"dns-aid\"],\n                            bylines: [\"Thomas Claburn\"],\n                            site: {\n                                domain: 'https://www.theregister.com',\n                                id: '2',\n                                alias: 'theregister'\n                            },\n                            paid: 0,\n                            paywall: 'internal'\n                        },\n                        debug: false\n                    });\n                    document.dispatchEvent(new Event('labClientAPIReady'));\n                </script>\n                <title>AI agents get their own phone directory built atop DNS</title>\n                <meta name=\"title\" content=\"AI agents get their own phone directory built atop DNS\">\n                <meta name=\"description\" content=\"DNS-AID, under the auspices of the Linux Foundation, promises easier agent discovery\">\n                    <link rel=\"canonical\" href=\"https://www.theregister.com/ai-ml/2026/05/28/ai-agents-get-their-own-phone-directory-built-atop-dns/5247539\">\n                <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n                <meta property=\"og:type\" content=\"article\">\n                <meta property=\"og:title\" content=\"AI agents get their own phone directory built atop DNS\">\n                <meta property=\"og:description\" content=\"DNS-AID, under the auspices of the Linux Foundation, promises easier agent discovery\">\n                    <meta property=\"og:locale\" content=\"en-US\">\n                <meta property=\"og:site_name\" content=\"theregister\">\n                <meta property=\"article:published_time\" content=\"2026-05-28T13:06:00.000Z\">\n                <meta property=\"article:modified_time\" content=\"\">\n                <meta property=\"article:author\" content=\"Thomas Claburn\">\n                    <meta property=\"article:tag\" content=\"cloudflare\">\n                    <meta property=\"article:tag\" content=\"ai agents\">\n                    <meta property=\"article:tag\" content=\"ai + ml\">\n                    <meta property=\"article:tag\" content=\"ai\">\n                    <meta property=\"article:tag\" content=\"linux foundation\">\n                    <meta property=\"article:tag\" content=\"domain name system\">\n                    <meta property=\"article:tag\" content=\"dns-aid\">\n                <meta property=\"og:image\" content=\"https://image.theregister.com/5247563.jpg?imageId=5247563&x=0&y=0&cropw=100&croph=100&panox=0&panoy=0&panow=100&panoh=100&width=1200&height=683\">\n                <meta property=\"og:image:width\" content=\"1200\">\n                <meta property=\"og:image:height\" content=\"684\">\n                <meta name=\"twitter:card\" content=\"summary_large_image\">\n                \n                <meta name=\"twitter:title\" content=\"AI agents get their own phone directory built atop DNS\">\n                <meta name=\"twitter:description\" content=\"DNS-AID, under the auspices of the Linux Foundation, promises easier agent discovery\">\n                <meta name=\"twitter:image\" content=\"https://image.theregister.com/5247563.jpg?imageId=5247563&x=0&y=0&cropw=100&croph=100&panox=0&panoy=0&panow=100&panoh=100&width=1200&height=683\">\n                <link rel=\"alternate\" type=\"application/json+oembed\" href=\"https://www.theregister.com/ai-ml/2026/05/28/ai-agents-get-their-own-phone-directory-built-atop-dns/5247539?lab_viewport=oembed\">\n\n                \n                <script >// OOPS slot definition v2 — same code on all sites, only SITE_KEY changes:\n//   theregister.com    → 'thereg'\n//   blocksandfiles.com → 'bandf'\n//   devclass.com       → 'devclass'\n//   nextplatform.com   → 'nextplatform'\n\nwindow.googletag = window.googletag || { cmd: [] };\ngoogletag.cmd.push(function () {\n    const SITE_KEY = 'thereg'; // CHANGE PER SITE\n    const context = document.querySelector('meta[property=\"og:type\"]')?.content === \"article\" ? \"article\" : \"front\";\n    const device = window.Dac.clientData.labDevice === \"mobile\" ? \"mobile\" : \"desktop\";\n    const bwidth = window.innerWidth || 0;\n    const test = new URLSearchParams(window.location.search).get('test');\n    const author = document.querySelector('meta[property=\"article:author\"]')?.content;\n    const canonicalUrl = document.querySelector(\"link[rel=canonical]\")?.getAttribute(\"href\");\n    const articleId = canonicalUrl?.split(\"/\").pop();\n    googletag.setConfig({\n        targeting: {\n            device,\n            ...(bwidth && { bwidth: bwidth + '' }),\n            ...(test && { test }),\n            ...(author && { author }),\n            ...(canonicalUrl && { canonicalUrl }),\n            ...(articleId && { articleId }),\n        }\n    });\n    function createOops() {\n        if (document.getElementById('oops')) return;\n        const oopsDiv = document.createElement('div');\n        oopsDiv.id = 'oops';\n        oopsDiv.style.cssText = 'width:0;height:0;overflow:hidden;';\n        document.body.prepend(oopsDiv);\n    }\n    if (document.body) {\n        createOops();\n    } else {\n        document.addEventListener('DOMContentLoaded', createOops);\n    }\n    googletag.defineOutOfPageSlot('/6978/labrador/' + SITE_KEY + '/' + context + '/' + device + '/oops', 'oops')\n        .addService(googletag.pubads())\n        .setConfig({ targeting: { is_oops: '1' } });\n});</script><script type=\"module\">import { setArticlePagePostCount } from \"https://cdn.theregister.com/assets/javascript/forum_post_counts.cade00e6.js\";\nsetArticlePagePostCount();</script><script type=\"module\" src=\"https://cdn.theregister.com/assets/javascript/article.2d9d928c.js\"></script><script >window.dataLayer = window.dataLayer || [];\n  function gtag(){dataLayer.push(arguments);}\n\n  gtag('consent', 'default', {\n    'analytics_storage': 'granted',\n    'ad_storage': 'denied',\n    'ad_user_data': 'denied',\n    'ad_personalization': 'denied',\n    'wait_for_update': 500\n  });\n\n  window.googlefc = window.googlefc || {};\n  window.googlefc.callbackQueue = window.googlefc.callbackQueue || [];\n\n  window.googlefc.callbackQueue.push({\n    'CONSENT_DATA_READY': function() {\n      if (typeof __tcfapi === 'undefined') return;\n\n      __tcfapi('ping', 2, function(pingData) {\n        if (pingData && pingData.gdprApplies === false) {\n          gtag('consent', 'update', {\n            'ad_storage': 'granted',\n            'ad_user_data': 'granted',\n            'ad_personalization': 'granted'\n          });\n        }\n      });\n    }\n  });</script><script type=\"module\">import { initAccountLink } from \"https://cdn.theregister.com/assets/javascript/account_link.9903a027.js\";\ninitAccountLink();</script><script type=\"module\">import { applyDevMode } from \"https://cdn.theregister.com/assets/javascript/dev_mode.54481a06.js\";\napplyDevMode();</script>\n                <style >.bodytext .column.google-ad.widthFull {\n  padding-top: 40px;\n  padding-bottom: 50px;\n}\n\n/* Prevents GAM from pushing the footer up automatically */\nbody {\n    padding-bottom: 0px !important;\n    margin-bottom: 0px !important;\n}</style>\n                <link rel=\"stylesheet\" href=\"https://cdn.theregister.com/assets/css/forum_post_counts.4501b489.css\"><link rel=\"stylesheet\" href=\"https://cdn.theregister.com/assets/css/article.8855f7fa.css\"><link rel=\"stylesheet\" href=\"https://cdn.theregister.com/assets/css/account_link.74f9c2bd.css\"><link rel=\"stylesheet\" href=\"https://cdn.theregister.com/assets/css/labrador_overrides.c9e9a0ef.css\">\n                \n<script>\nconst PROVIDER_CONFIG = null\n;\n\nif (PROVIDER_CONFIG && !window.__labradorPaywallClientAPIInitialized) {\n    window.__labradorPaywallClientAPIInitialized = true;\n\n    const LOG_PREFIX = '[Paywall:' + PROVIDER_CONFIG.provider + ']';\n\n    function checkAuthState() {\n        if (!window.userStatus) {\n            return;\n        }\n        window.userStatus.verify().then(function() {\n            var status = window.userStatus.getStatus(PROVIDER_CONFIG.right);\n            var engagentlyToken = window.userStatus.getEngagently();\n\n            if (status >= 2) {\n                window.labClientAPI.emit('accessGranted', {\n                    provider: PROVIDER_CONFIG.provider,\n                    paid: status,\n                    engagentlyToken: engagentlyToken\n                });\n            } else {\n                var data = { provider: PROVIDER_CONFIG.provider, paid: status || 0 };\n                if (engagentlyToken) data.engagentlyToken = engagentlyToken;\n                window.labClientAPI.emit('accessDenied', data);\n            }\n        }).catch(function(err) {\n            window.labClientAPI.emit('accessDenied', { provider: PROVIDER_CONFIG.provider, paid: 0 });\n        });\n    }\n\n    window.labClientAPIReady.then(function(api) {\n        api.set(PROVIDER_CONFIG.provider + 'PaywallHelper', {\n            checkNow: function() { return (window.userStatus && window.userStatus.getStatus(PROVIDER_CONFIG.right)) || 0; },\n            getStatus: checkAuthState\n        });\n        checkAuthState();\n    });\n}\n</script>\n                <meta property=\"og:url\" content=\"https://www.theregister.com/ai-ml/2026/05/28/ai-agents-get-their-own-phone-directory-built-atop-dns/5247539\">\n                        <link type=\"image/x-icon\" rel=\"icon\" href=\"/view-resources/dachser2/public/theregister/favicons/favicon.ico\">\n                        <link type=\"image/svg+xml\" rel=\"icon\" href=\"/view-resources/dachser2/public/theregister/favicons/favicon.svg\">\n                        <link type=\"image/png\" rel=\"icon\" sizes=\"16x16\" href=\"/view-resources/dachser2/public/theregister/favicons/favicon-16x16.png\">\n                        <link type=\"image/png\" rel=\"icon\" sizes=\"32x32\" href=\"/view-resources/dachser2/public/theregister/favicons/favicon-32x32.png\">\n                        <link type=\"image/png\" rel=\"icon\" sizes=\"48x48\" href=\"/view-resources/dachser2/public/theregister/favicons/favicon-48x48.png\">\n                        <link type=\"image/png\" rel=\"icon\" sizes=\"96x96\" href=\"/view-resources/dachser2/public/theregister/favicons/favicon-96x96.png\">\n                        <link type=\"image/png\" rel=\"icon\" sizes=\"192x192\" href=\"/view-resources/dachser2/public/theregister/favicons/web-app-manifest-192x192.png\">\n                        <link type=\"image/png\" rel=\"icon\" sizes=\"512x512\" href=\"/view-resources/dachser2/public/theregister/favicons/web-app-manifest-512x512.png\">\n                        <link type=\"image/png\" rel=\"apple-touch-icon\" sizes=\"180x180\" href=\"/view-resources/dachser2/public/theregister/favicons/apple-touch-icon.png\">\n                    <link rel=\"manifest\" href=/view-resources/dachser2/public/theregister/favicons/manifest.json />\n                <link href=\"https://fonts.googleapis.com/css?family=Merriweather:300,400,700,900\" rel=\"stylesheet\"  media=\"print\" onload=\"this.media='all'\" >\n                <link rel=\"stylesheet\" href=\"/view-resources/view/css/grid.css?v=1787211890-L4\">\n                <link rel=\"stylesheet\" href=\"/view-resources/view/css/main.css?v=1787211890-L4\">\n                <link rel=\"stylesheet\" href=\"/view-resources/view/css/colors.css?v=1787211890-L4\">\n                <link rel=\"stylesheet\" href=\"/view-resources/view/css/print.css?v=1787211890-L4\" media=\"print\">\n                <link rel=\"stylesheet\" href=\"/view-resources/view/css/foundation-icons/foundation-icons.css?v=1787211890-L4\">\n                <link rel=\"stylesheet\" href=\"/view-resources/view/css/site/theregister.css?v=1787211890-L4\">\n                <style data-key=\"custom_properties\">\n                    :root{--primary: rgba(0,0,0,1);--secondary: rgba(255,255,255,1);--tertiary: rgba(214,0,0,1);--quaternary: rgba(0,0,0,1);--bg-secondary: rgba(255,255,255,1);--bg-tertiary: rgba(239,239,239,1);--bg-quaternary: rgba(0,0,0,1);--bg-quinary: rgba(22,22,22,1);--bg-senary: rgba(255,235,235,1);--bg-septenary: rgba(214,0,0,1);--bg-octonary: rgba(248,248,248,1);--bg-nonary: rgba(208, 200, 200, 1);--bg-primary: rgba(255,0,0,1);--bg-septenary-light: rgba(230,102,102,1);--bg-septenary-dark: rgba(150,0,0,1);--bg-nonary-light: rgba(227,222,222,1);--bg-nonary-dark: rgba(146,140,140,1);}\n                </style>\n                <style data-key=\"background_colors\">\n                    .bg-secondary {background-color: rgba(255,255,255,1);}.bg-tertiary {background-color: rgba(239,239,239,1);}.bg-quaternary {background-color: rgba(0,0,0,1);color: #fff;}.bg-quinary {background-color: rgba(22,22,22,1);color: #fff;}.bg-senary {background-color: rgba(255,235,235,1);}.bg-septenary {background-color: rgba(214,0,0,1);color: #fff;}.bg-octonary {background-color: rgba(248,248,248,1);}.bg-nonary {background-color: rgba(208, 200, 200, 1);}.bg-primary {background-color: rgba(255,0,0,1);color: #fff;}.bg-septenary-light {background-color: rgba(230,102,102,1);}.bg-septenary-dark {background-color: rgba(150,0,0,1);color: #fff;}.bg-nonary-light {background-color: rgba(227,222,222,1);}.bg-nonary-dark {background-color: rgba(146,140,140,1);}@media (max-width: 1023px) { .color_mobile_bg-secondary {background-color: rgba(255,255,255,1);}}@media (max-width: 1023px) { .color_mobile_bg-tertiary {background-color: rgba(239,239,239,1);}}@media (max-width: 1023px) { .color_mobile_bg-quaternary {background-color: rgba(0,0,0,1);color: #fff;}}@media (max-width: 1023px) { .color_mobile_bg-quinary {background-color: rgba(22,22,22,1);color: #fff;}}@media (max-width: 1023px) { .color_mobile_bg-senary {background-color: rgba(255,235,235,1);}}@media (max-width: 1023px) { .color_mobile_bg-septenary {background-color: rgba(214,0,0,1);color: #fff;}}@media (max-width: 1023px) { .color_mobile_bg-octonary {background-color: rgba(248,248,248,1);}}@media (max-width: 1023px) { .color_mobile_bg-nonary {background-color: rgba(208, 200, 200, 1);}}@media (max-width: 1023px) { .color_mobile_bg-primary {background-color: rgba(255,0,0,1);color: #fff;}}@media (max-width: 1023px) { .color_mobile_bg-septenary-light {background-color: rgba(230,102,102,1);}}@media (max-width: 1023px) { .color_mobile_bg-septenary-dark {background-color: rgba(150,0,0,1);color: #fff;}}@media (max-width: 1023px) { .color_mobile_bg-nonary-light {background-color: rgba(227,222,222,1);}}@media (max-width: 1023px) { .color_mobile_bg-nonary-dark {background-color: rgba(146,140,140,1);}}\n                </style>\n                <style data-key=\"background_colors_opacity\">\n                    .bg-secondary.op-bg_20 {background-color: rgba(255, 255, 255, 0.2);}.bg-secondary.op-bg_40 {background-color: rgba(255, 255, 255, 0.4);}.bg-secondary.op-bg_60 {background-color: rgba(255, 255, 255, 0.6);}.bg-secondary.op-bg_80 {background-color: rgba(255, 255, 255, 0.8);}.bg-tertiary.op-bg_20 {background-color: rgba(239, 239, 239, 0.2);}.bg-tertiary.op-bg_40 {background-color: rgba(239, 239, 239, 0.4);}.bg-tertiary.op-bg_60 {background-color: rgba(239, 239, 239, 0.6);}.bg-tertiary.op-bg_80 {background-color: rgba(239, 239, 239, 0.8);}.bg-quaternary.op-bg_20 {background-color: rgba(0, 0, 0, 0.2);color: #fff;}.bg-quaternary.op-bg_40 {background-color: rgba(0, 0, 0, 0.4);color: #fff;}.bg-quaternary.op-bg_60 {background-color: rgba(0, 0, 0, 0.6);color: #fff;}.bg-quaternary.op-bg_80 {background-color: rgba(0, 0, 0, 0.8);color: #fff;}.bg-quinary.op-bg_20 {background-color: rgba(22, 22, 22, 0.2);color: #fff;}.bg-quinary.op-bg_40 {background-color: rgba(22, 22, 22, 0.4);color: #fff;}.bg-quinary.op-bg_60 {background-color: rgba(22, 22, 22, 0.6);color: #fff;}.bg-quinary.op-bg_80 {background-color: rgba(22, 22, 22, 0.8);color: #fff;}.bg-senary.op-bg_20 {background-color: rgba(255, 235, 235, 0.2);}.bg-senary.op-bg_40 {background-color: rgba(255, 235, 235, 0.4);}.bg-senary.op-bg_60 {background-color: rgba(255, 235, 235, 0.6);}.bg-senary.op-bg_80 {background-color: rgba(255, 235, 235, 0.8);}.bg-septenary.op-bg_20 {background-color: rgba(214, 0, 0, 0.2);color: #fff;}.bg-septenary.op-bg_40 {background-color: rgba(214, 0, 0, 0.4);color: #fff;}.bg-septenary.op-bg_60 {background-color: rgba(214, 0, 0, 0.6);color: #fff;}.bg-septenary.op-bg_80 {background-color: rgba(214, 0, 0, 0.8);color: #fff;}.bg-octonary.op-bg_20 {background-color: rgba(248, 248, 248, 0.2);}.bg-octonary.op-bg_40 {background-color: rgba(248, 248, 248, 0.4);}.bg-octonary.op-bg_60 {background-color: rgba(248, 248, 248, 0.6);}.bg-octonary.op-bg_80 {background-color: rgba(248, 248, 248, 0.8);}.bg-nonary.op-bg_20 {background-color: rgba(208, 200, 200, 0.2);}.bg-nonary.op-bg_40 {background-color: rgba(208, 200, 200, 0.4);}.bg-nonary.op-bg_60 {background-color: rgba(208, 200, 200, 0.6);}.bg-nonary.op-bg_80 {background-color: rgba(208, 200, 200, 0.8);}.bg-primary.op-bg_20 {background-color: rgba(255, 0, 0, 0.2);color: #fff;}.bg-primary.op-bg_40 {background-color: rgba(255, 0, 0, 0.4);color: #fff;}.bg-primary.op-bg_60 {background-color: rgba(255, 0, 0, 0.6);color: #fff;}.bg-primary.op-bg_80 {background-color: rgba(255, 0, 0, 0.8);color: #fff;}.bg-septenary-light.op-bg_20 {background-color: rgba(230, 102, 102, 0.2);}.bg-septenary-light.op-bg_40 {background-color: rgba(230, 102, 102, 0.4);}.bg-septenary-light.op-bg_60 {background-color: rgba(230, 102, 102, 0.6);}.bg-septenary-light.op-bg_80 {background-color: rgba(230, 102, 102, 0.8);}.bg-septenary-dark.op-bg_20 {background-color: rgba(150, 0, 0, 0.2);color: #fff;}.bg-septenary-dark.op-bg_40 {background-color: rgba(150, 0, 0, 0.4);color: #fff;}.bg-septenary-dark.op-bg_60 {background-color: rgba(150, 0, 0, 0.6);color: #fff;}.bg-septenary-dark.op-bg_80 {background-color: rgba(150, 0, 0, 0.8);color: #fff;}.bg-nonary-light.op-bg_20 {background-color: rgba(227, 222, 222, 0.2);}.bg-nonary-light.op-bg_40 {background-color: rgba(227, 222, 222, 0.4);}.bg-nonary-light.op-bg_60 {background-color: rgba(227, 222, 222, 0.6);}.bg-nonary-light.op-bg_80 {background-color: rgba(227, 222, 222, 0.8);}.bg-nonary-dark.op-bg_20 {background-color: rgba(146, 140, 140, 0.2);}.bg-nonary-dark.op-bg_40 {background-color: rgba(146, 140, 140, 0.4);}.bg-nonary-dark.op-bg_60 {background-color: rgba(146, 140, 140, 0.6);}.bg-nonary-dark.op-bg_80 {background-color: rgba(146, 140, 140, 0.8);}@media (max-width: 1023px) { .color_mobile_bg-secondary.op-bg_20 {background-color: rgba(255, 255, 255, 0.2);}}@media (max-width: 1023px) { .color_mobile_bg-secondary.op-bg_40 {background-color: rgba(255, 255, 255, 0.4);}}@media (max-width: 1023px) { .color_mobile_bg-secondary.op-bg_60 {background-color: rgba(255, 255, 255, 0.6);}}@media (max-width: 1023px) { .color_mobile_bg-secondary.op-bg_80 {background-color: rgba(255, 255, 255, 0.8);}}@media (max-width: 1023px) { .color_mobile_bg-tertiary.op-bg_20 {background-color: rgba(239, 239, 239, 0.2);}}@media (max-width: 1023px) { .color_mobile_bg-tertiary.op-bg_40 {background-color: rgba(239, 239, 239, 0.4);}}@media (max-width: 1023px) { .color_mobile_bg-tertiary.op-bg_60 {background-color: rgba(239, 239, 239, 0.6);}}@media (max-width: 1023px) { .color_mobile_bg-tertiary.op-bg_80 {background-color: rgba(239, 239, 239, 0.8);}}@media (max-width: 1023px) { .color_mobile_bg-quaternary.op-bg_20 {background-color: rgba(0, 0, 0, 0.2);color: #fff;}}@media (max-width: 1023px) { .color_mobile_bg-quaternary.op-bg_40 {background-color: rgba(0, 0, 0, 0.4);color: #fff;}}@media (max-width: 1023px) { .color_mobile_bg-quaternary.op-bg_60 {background-color: rgba(0, 0, 0, 0.6);color: #fff;}}@media (max-width: 1023px) { .color_mobile_bg-quaternary.op-bg_80 {background-color: rgba(0, 0, 0, 0.8);color: #fff;}}@media (max-width: 1023px) { .color_mobile_bg-quinary.op-bg_20 {background-color: rgba(22, 22, 22, 0.2);color: #fff;}}@media (max-width: 1023px) { .color_mobile_bg-quinary.op-bg_40 {background-color: rgba(22, 22, 22, 0.4);color: #fff;}}@media (max-width: 1023px) { .color_mobile_bg-quinary.op-bg_60 {background-color: rgba(22, 22, 22, 0.6);color: #fff;}}@media (max-width: 1023px) { .color_mobile_bg-quinary.op-bg_80 {background-color: rgba(22, 22, 22, 0.8);color: #fff;}}@media (max-width: 1023px) { .color_mobile_bg-senary.op-bg_20 {background-color: rgba(255, 235, 235, 0.2);}}@media (max-width: 1023px) { .color_mobile_bg-senary.op-bg_40 {background-color: rgba(255, 235, 235, 0.4);}}@media (max-width: 1023px) { .color_mobile_bg-senary.op-bg_60 {background-color: rgba(255, 235, 235, 0.6);}}@media (max-width: 1023px) { .color_mobile_bg-senary.op-bg_80 {background-color: rgba(255, 235, 235, 0.8);}}@media (max-width: 1023px) { .color_mobile_bg-septenary.op-bg_20 {background-color: rgba(214, 0, 0, 0.2);color: #fff;}}@media (max-width: 1023px) { .color_mobile_bg-septenary.op-bg_40 {background-color: rgba(214, 0, 0, 0.4);color: #fff;}}@media (max-width: 1023px) { .color_mobile_bg-septenary.op-bg_60 {background-color: rgba(214, 0, 0, 0.6);color: #fff;}}@media (max-width: 1023px) { .color_mobile_bg-septenary.op-bg_80 {background-color: rgba(214, 0, 0, 0.8);color: #fff;}}@media (max-width: 1023px) { .color_mobile_bg-octonary.op-bg_20 {background-color: rgba(248, 248, 248, 0.2);}}@media (max-width: 1023px) { .color_mobile_bg-octonary.op-bg_40 {background-color: rgba(248, 248, 248, 0.4);}}@media (max-width: 1023px) { .color_mobile_bg-octonary.op-bg_60 {background-color: rgba(248, 248, 248, 0.6);}}@media (max-width: 1023px) { .color_mobile_bg-octonary.op-bg_80 {background-color: rgba(248, 248, 248, 0.8);}}@media (max-width: 1023px) { .color_mobile_bg-nonary.op-bg_20 {background-color: rgba(208, 200, 200, 0.2);}}@media (max-width: 1023px) { .color_mobile_bg-nonary.op-bg_40 {background-color: rgba(208, 200, 200, 0.4);}}@media (max-width: 1023px) { .color_mobile_bg-nonary.op-bg_60 {background-color: rgba(208, 200, 200, 0.6);}}@media (max-width: 1023px) { .color_mobile_bg-nonary.op-bg_80 {background-color: rgba(208, 200, 200, 0.8);}}@media (max-width: 1023px) { .color_mobile_bg-primary.op-bg_20 {background-color: rgba(255, 0, 0, 0.2);color: #fff;}}@media (max-width: 1023px) { .color_mobile_bg-primary.op-bg_40 {background-color: rgba(255, 0, 0, 0.4);color: #fff;}}@media (max-width: 1023px) { .color_mobile_bg-primary.op-bg_60 {background-color: rgba(255, 0, 0, 0.6);color: #fff;}}@media (max-width: 1023px) { .color_mobile_bg-primary.op-bg_80 {background-color: rgba(255, 0, 0, 0.8);color: #fff;}}@media (max-width: 1023px) { .color_mobile_bg-septenary-light.op-bg_20 {background-color: rgba(230, 102, 102, 0.2);}}@media (max-width: 1023px) { .color_mobile_bg-septenary-light.op-bg_40 {background-color: rgba(230, 102, 102, 0.4);}}@media (max-width: 1023px) { .color_mobile_bg-septenary-light.op-bg_60 {background-color: rgba(230, 102, 102, 0.6);}}@media (max-width: 1023px) { .color_mobile_bg-septenary-light.op-bg_80 {background-color: rgba(230, 102, 102, 0.8);}}@media (max-width: 1023px) { .color_mobile_bg-septenary-dark.op-bg_20 {background-color: rgba(150, 0, 0, 0.2);color: #fff;}}@media (max-width: 1023px) { .color_mobile_bg-septenary-dark.op-bg_40 {background-color: rgba(150, 0, 0, 0.4);color: #fff;}}@media (max-width: 1023px) { .color_mobile_bg-septenary-dark.op-bg_60 {background-color: rgba(150, 0, 0, 0.6);color: #fff;}}@media (max-width: 1023px) { .color_mobile_bg-septenary-dark.op-bg_80 {background-color: rgba(150, 0, 0, 0.8);color: #fff;}}@media (max-width: 1023px) { .color_mobile_bg-nonary-light.op-bg_20 {background-color: rgba(227, 222, 222, 0.2);}}@media (max-width: 1023px) { .color_mobile_bg-nonary-light.op-bg_40 {background-color: rgba(227, 222, 222, 0.4);}}@media (max-width: 1023px) { .color_mobile_bg-nonary-light.op-bg_60 {background-color: rgba(227, 222, 222, 0.6);}}@media (max-width: 1023px) { .color_mobile_bg-nonary-light.op-bg_80 {background-color: rgba(227, 222, 222, 0.8);}}@media (max-width: 1023px) { .color_mobile_bg-nonary-dark.op-bg_20 {background-color: rgba(146, 140, 140, 0.2);}}@media (max-width: 1023px) { .color_mobile_bg-nonary-dark.op-bg_40 {background-color: rgba(146, 140, 140, 0.4);}}@media (max-width: 1023px) { .color_mobile_bg-nonary-dark.op-bg_60 {background-color: rgba(146, 140, 140, 0.6);}}@media (max-width: 1023px) { .color_mobile_bg-nonary-dark.op-bg_80 {background-color: rgba(146, 140, 140, 0.8);}}\n                </style>\n                <style data-key=\"border_colors\">\n                    .border-bg-secondary{--border-color: var(--bg-secondary);}.mobile_border-bg-secondary{--mobile-border-color: var(--bg-secondary);}.border-bg-tertiary{--border-color: var(--bg-tertiary);}.mobile_border-bg-tertiary{--mobile-border-color: var(--bg-tertiary);}.border-bg-quaternary{--border-color: var(--bg-quaternary);}.mobile_border-bg-quaternary{--mobile-border-color: var(--bg-quaternary);}.border-bg-quinary{--border-color: var(--bg-quinary);}.mobile_border-bg-quinary{--mobile-border-color: var(--bg-quinary);}.border-bg-senary{--border-color: var(--bg-senary);}.mobile_border-bg-senary{--mobile-border-color: var(--bg-senary);}.border-bg-septenary{--border-color: var(--bg-septenary);}.mobile_border-bg-septenary{--mobile-border-color: var(--bg-septenary);}.border-bg-octonary{--border-color: var(--bg-octonary);}.mobile_border-bg-octonary{--mobile-border-color: var(--bg-octonary);}.border-bg-nonary{--border-color: var(--bg-nonary);}.mobile_border-bg-nonary{--mobile-border-color: var(--bg-nonary);}.border-bg-primary{--border-color: var(--bg-primary);}.mobile_border-bg-primary{--mobile-border-color: var(--bg-primary);}.border-bg-septenary-light{--border-color: var(--bg-septenary-light);}.mobile_border-bg-septenary-light{--mobile-border-color: var(--bg-septenary-light);}.border-bg-septenary-dark{--border-color: var(--bg-septenary-dark);}.mobile_border-bg-septenary-dark{--mobile-border-color: var(--bg-septenary-dark);}.border-bg-nonary-light{--border-color: var(--bg-nonary-light);}.mobile_border-bg-nonary-light{--mobile-border-color: var(--bg-nonary-light);}.border-bg-nonary-dark{--border-color: var(--bg-nonary-dark);}.mobile_border-bg-nonary-dark{--mobile-border-color: var(--bg-nonary-dark);}\n                </style>\n                <style data-key=\"font_colors\">\n                    .primary {color: rgba(0,0,0,1) !important;}.secondary {color: rgba(255,255,255,1) !important;}.tertiary {color: rgba(214,0,0,1) !important;}.quaternary {color: rgba(0,0,0,1) !important;}@media (max-width: 1023px) { .color_mobile_primary {color: rgba(0,0,0,1) !important;}}@media (max-width: 1023px) { .color_mobile_secondary {color: rgba(255,255,255,1) !important;}}@media (max-width: 1023px) { .color_mobile_tertiary {color: rgba(214,0,0,1) !important;}}@media (max-width: 1023px) { .color_mobile_quaternary {color: rgba(0,0,0,1) !important;}}\n                </style>\n                <style data-key=\"image_gradient\">\n                    .image-gradient-bg-secondary{--background-color: var(--bg-secondary);}.color_mobile_image-gradient-bg-secondary{--mobile-background-color: var(--bg-secondary);}.image-gradient-bg-tertiary{--background-color: var(--bg-tertiary);}.color_mobile_image-gradient-bg-tertiary{--mobile-background-color: var(--bg-tertiary);}.image-gradient-bg-quaternary{--background-color: var(--bg-quaternary);}.color_mobile_image-gradient-bg-quaternary{--mobile-background-color: var(--bg-quaternary);}.image-gradient-bg-quinary{--background-color: var(--bg-quinary);}.color_mobile_image-gradient-bg-quinary{--mobile-background-color: var(--bg-quinary);}.image-gradient-bg-senary{--background-color: var(--bg-senary);}.color_mobile_image-gradient-bg-senary{--mobile-background-color: var(--bg-senary);}.image-gradient-bg-septenary{--background-color: var(--bg-septenary);}.color_mobile_image-gradient-bg-septenary{--mobile-background-color: var(--bg-septenary);}.image-gradient-bg-octonary{--background-color: var(--bg-octonary);}.color_mobile_image-gradient-bg-octonary{--mobile-background-color: var(--bg-octonary);}.image-gradient-bg-nonary{--background-color: var(--bg-nonary);}.color_mobile_image-gradient-bg-nonary{--mobile-background-color: var(--bg-nonary);}.image-gradient-bg-primary{--background-color: var(--bg-primary);}.color_mobile_image-gradient-bg-primary{--mobile-background-color: var(--bg-primary);}.image-gradient-bg-septenary-light{--background-color: var(--bg-septenary-light);}.color_mobile_image-gradient-bg-septenary-light{--mobile-background-color: var(--bg-septenary-light);}.image-gradient-bg-septenary-dark{--background-color: var(--bg-septenary-dark);}.color_mobile_image-gradient-bg-septenary-dark{--mobile-background-color: var(--bg-septenary-dark);}.image-gradient-bg-nonary-light{--background-color: var(--bg-nonary-light);}.color_mobile_image-gradient-bg-nonary-light{--mobile-background-color: var(--bg-nonary-light);}.image-gradient-bg-nonary-dark{--background-color: var(--bg-nonary-dark);}.color_mobile_image-gradient-bg-nonary-dark{--mobile-background-color: var(--bg-nonary-dark);}\n                </style>\n                <style data-key=\"custom_css_variables\">\n                :root {\n                    --lab_page_width: 1200px;\n                    --lab_columns_gutter: 11px;\n                    --lab_focus_ring_color: #005fcc;\n                    --lab_social_hover_color: #008cba;\n                    --space-top: 0;\n                    --space-top-adnuntiusAd: ;\n                }\n\n                @media(max-width: 767px) {\n                    :root {\n                        --lab_columns_gutter: 10px;\n                    }\n                }\n\n                @media(min-width: 767px) {\n                    :root {\n                    }\n                }\n                </style>\n<script src=\"/view-resources/public/common/JWTCookie.js?v=1787211890-L4\"></script>\n<script src=\"/view-resources/public/common/Paywall.js?v=1787211890-L4\"></script>\n                <script>\n                window.Dac = window.Dac || {};\n                (function () {\n                    if (navigator) {\n                        window.Dac.clientData = {\n                            language: navigator.language,\n                            userAgent: navigator.userAgent,\n                            innerWidth: window.innerWidth,\n                            innerHeight: window.innerHeight,\n                            deviceByMediaQuery: getDeviceByMediaQuery(),\n                            labDevice: 'desktop', // Device from labrador\n                            device: 'desktop', // Device from varnish\n                            paywall: {\n                                isAuthenticated: isPaywallAuthenticated(),\n                                toggleAuthenticatedContent: toggleAuthenticatedContent,\n                                requiredProducts: [],\n                            },\n                            page: {\n                                id: '5247539',\n                                extId: ''\n                            },\n                            siteAlias: 'theregister',\n                            debug: window.location.href.includes('debug=1')\n                        };\n                        function getDeviceByMediaQuery() {\n                            if (window.matchMedia('(max-width: 767px)').matches) return 'mobile';\n                            if (window.matchMedia('(max-width: 1023px)').matches) return 'tablet';\n                            return 'desktop';\n                        }\n\n                        function isPaywallAuthenticated() {\n                            if (window.Dac && window.Dac.JWTCookie) {\n                                var JWTCookie = new Dac.JWTCookie({ debug: false });\n                                return JWTCookie.isAuthenticated();\n                            }\n                            return false;\n                        }\n\n                        function toggleAuthenticatedContent(settings) {\n                            if (!window.Dac || !window.Dac.Paywall) {\n                                return;\n                            }\n                            var Paywall = new Dac.Paywall();\n                            var updateDOM = Paywall.updateDOM;\n\n                            if(settings && settings.displayUserName) {\n                                var userName = Paywall.getUserName().then((userName) => {\n                                    updateDOM(userName !== false, userName, settings.optionalGreetingText);\n                                });\n                            } else {\n                                updateDOM(window.Dac.clientData.paywall.isAuthenticated);\n                            }\n                        }\n                    }\n                }());\n                </script>\n\n                    <script type=\"module\" src=\"/view-resources/baseview/public/common/baseview/moduleHandlers.js?v=1787211890-L4\" data-cookieconsent=\"ignore\"></script>\n<!-- DataLayer -->\n<script>\n\n    var dataLayerData = {};\n\n        dataLayerData['id'] = '5247539';\n        dataLayerData['title'] = 'AI agents get their own phone directory built atop DNS';\n        dataLayerData['subtitle'] = 'DNS-AID, under the auspices of the Linux Foundation, promises easier agent discovery';\n        dataLayerData['kicker'] = 'AI + ML';\n        dataLayerData['created_by'] = '49';\n        dataLayerData['created_by_name'] = 'Claburn, Thomas';\n        dataLayerData['page_template_alias'] = 'default';\n        dataLayerData['published'] = '1779973560';\n        dataLayerData['published_url'] = '/ai-ml/2026/05/28/ai-agents-get-their-own-phone-directory-built-atop-dns/5247539';\n        dataLayerData['tags'] = 'cloudflare,ai agents,ai + ml,ai,linux foundation,domain name system,dns-aid';\n        dataLayerData['modified'] = '1779972239';\n        dataLayerData['article_authors'] = 'Thomas Claburn';\n        dataLayerData['testfield'] = 'testvalue';\n        dataLayerData['section'] = 'ai + ml';\n        dataLayerData['type'] = 'page_article';\n        dataLayerData['seotitle'] = 'AI agents get their own phone directory built atop DNS';\n\n    dataLayer = [dataLayerData];\n</script><!-- Google Tag Manager -->\n<script>\n    window.dataLayer = window.dataLayer || [];\n</script>\n<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':\nnew Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],\nj=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=\n'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);\n})(window,document,'script','dataLayer','GTM-KVXB44');</script>\n\n                        <script async src=\"https://securepubads.g.doubleclick.net/tag/js/gpt.js\"></script>\n                        <script>\n                            window.googletag = window.googletag || {cmd: []};\n\n                            googletag.cmd.push(function() {\n                                var handleAsTablet = (Dac.clientData.device === 'tablet' || Dac.clientData.innerWidth < 1316);\n\n                                if (!(handleAsTablet && '' === 'true')) {\n                                    googletag\n                                        .defineSlot('/6978/labrador/thereg/article/desktop/a', [[728,90], [970,90], [970,250], [970,280], [1200,250], [1200,270], [728,91], [970,251], [1200,271], [970,91]], 'labrador/thereg/article/desktop/a')\n                                        .addService(googletag.pubads());\n                                }\n                                if (!(handleAsTablet && '' === 'true')) {\n                                    googletag\n                                        .defineSlot('/6978/labrador/thereg/article/desktop/f', [[728,90], [970,90], [970,250], [970,280], [1200,250], [1200,270], [728,96], [970,256], [1200,276], [970,96], [1200,600], [970,254], [728,94], [970,94], [300,254], [1200,274]], 'labrador/thereg/article/desktop/f')\n                                        .addService(googletag.pubads());\n                                }\n                                if (!(handleAsTablet && '' === 'true')) {\n                                    googletag\n                                        .defineSlot('/6978/labrador/thereg/article/desktop/b', [[728,90], [970,90], [970,250], [970,280], [1200,250], [1200,270], [1200,600], [728,92], [970,252], [1200,272], [970,92], [1200,602]], 'labrador/thereg/article/desktop/b')\n                                        .addService(googletag.pubads());\n                                }\n                                if (!(handleAsTablet && '' === 'true')) {\n                                    googletag\n                                        .defineSlot('/6978/labrador/thereg/article/desktop/c', [[300,250], [300,600], [300,253], [300,603]], 'labrador/thereg/article/desktop/c')\n                                        .addService(googletag.pubads());\n                                }\n                                if (!(handleAsTablet && '' === 'true')) {\n                                    googletag\n                                        .defineSlot('/6978/labrador/thereg/article/desktop/d', [[300,250], [300,254]], 'labrador/thereg/article/desktop/d')\n                                        .addService(googletag.pubads());\n                                }\n                                if (!(handleAsTablet && '' === 'true')) {\n                                    googletag\n                                        .defineSlot('/6978/labrador/thereg/article/desktop/e', [[300,250], [300,255]], 'labrador/thereg/article/desktop/e')\n                                        .addService(googletag.pubads());\n                                }\n\n                                var pageTargeting = {\n                                    env:     \"prod\",\n                                    site:    \"theregister\",\n                                    section: \"ai + ml\",\n                                    context: \"article\"\n                                };\n                                pageTargeting.tags = \"cloudflare,ai agents,ai + ml,ai,linux foundation,domain name system,dns-aid\";\n                                googletag.setConfig({ targeting: pageTargeting });\n\n                                var useLazyLoading = true || false;\n                                if (useLazyLoading) {\n                                    googletag.setConfig({\n                                        lazyLoad: {\n                                            fetchMarginPercent: 200 || 150, // Fetch ad content when it is within 1.5 viewports of the visible area\n                                            renderMarginPercent: 150 || 150, // Render ads when they are within 1.5 viewports of the visible area\n                                            mobileScaling: 2 || 2.0 // Scale the above values by 2.0 on mobile devices to account for slower connections and rendering times\n                                        }\n                                    });\n                                }\n                                \n                                googletag.setConfig({ singleRequest: true });\n                                googletag.setConfig({ collapseDiv: \"ON_NO_FILL\" });\n                                googletag.enableServices();\n                            });\n                        </script>\n                <link href=\"https://fonts.googleapis.com/css?family=Roboto:regular,italic,700,900,600\" rel=\"stylesheet\"  media=\"print\" onload=\"this.media='all'\" >\n                <link href=\"https://fonts.googleapis.com/css?family=Roboto+Condensed:regular,italic,700,900\" rel=\"stylesheet\"  media=\"print\" onload=\"this.media='all'\" >\n                <link href=\"https://fonts.googleapis.com/css?family=Roboto+Flex:regular\" rel=\"stylesheet\"  media=\"print\" onload=\"this.media='all'\" >\n                <link href=\"https://fonts.googleapis.com/css?family=Roboto+Mono:regular,100,200,300,100italic,300italic,200italic,500,italic,500italic,700,600,600italic,700italic\" rel=\"stylesheet\"  media=\"print\" onload=\"this.media='all'\" >\n                <style id=\"dachser-vieweditor-styles\">\n                    header#nav, header.pageHeader { font-family: \"Roboto\"; font-weight: normal; font-style: normal; text-transform: none; letter-spacing: normal; color: #000000; }\n                    .articleList .article-list-title { font-family: \"Roboto\"; font-weight: normal; font-style: normal; font-size: 1.1875rem; text-transform: none; letter-spacing: normal; }\n                    .pageHeader .search .search-container input[type=text]::placeholder { font-family: \"Roboto\"; font-weight: normal; font-style: normal; text-transform: none; letter-spacing: normal; }\n                    .bodytext { font-family: \"Roboto\"; font-weight: normal; font-style: normal; font-size: 1.125rem; text-transform: none; letter-spacing: normal; }@media (max-width: 767px) { .resp_fonts .bodytext {font-size: calc(0.262vw * 16); } }\n                    .articleHeader .headline { font-family: \"Roboto\"; font-weight: 700; font-style: normal; font-size: 2.75rem; text-transform: none; letter-spacing: normal; }@media (max-width: 767px) { .resp_fonts .articleHeader .headline {font-size: calc(0.262vw * 24); } }\n                    article.column .content .headline { font-family: \"Roboto\"; font-weight: 700; font-style: normal; font-size: 1.5rem; text-transform: none; letter-spacing: normal; }@media (max-width: 767px) { .resp_fonts article.column .content .headline {font-size: calc(0.262vw * 20); } }\n                    .byline .name { font-family: \"Roboto Mono\"; font-weight: normal; font-style: normal; font-size: 0.8125rem; text-transform: none; letter-spacing: normal; color: #000000; }@media (max-width: 767px) { .resp_fonts .byline .name {font-size: calc(0.262vw * 13); } }\n                    .articleHeader .subtitle { font-family: \"Roboto\"; font-weight: normal; font-style: normal; text-transform: none; letter-spacing: normal; }@media (max-width: 767px) { .resp_fonts .articleHeader .subtitle {font-size: calc(0.262vw * 16); } }\n                    article.column .content .subtitle { font-family: \"Roboto\"; font-weight: normal; font-style: normal; text-transform: none; letter-spacing: normal; }\n                    .byline .name .description { font-family: \"Roboto Mono\"; font-weight: normal; font-style: normal; text-transform: none; letter-spacing: normal; }\n                    .byline .extended_description { font-family: \"Roboto Mono\"; font-weight: normal; font-style: normal; text-transform: none; letter-spacing: normal; }\n                    article .bodytext figure .caption { font-family: \"Roboto Condensed\"; font-weight: normal; font-style: normal; text-transform: none; letter-spacing: normal; }\n                    article .articleHeader .caption { font-family: \"Roboto Condensed\"; font-weight: normal; font-style: normal; text-transform: none; letter-spacing: normal; }\n                    article .meta .dates { font-family: \"Roboto Mono\"; font-weight: normal; font-style: normal; font-size: 0.75rem; text-transform: none; letter-spacing: normal; }@media (max-width: 767px) { .resp_fonts article .meta .dates {font-size: calc(0.262vw * 12); } }\n                    article .meta .dates .dateLabel { font-family: \"Roboto Mono\"; font-weight: normal; font-style: normal; font-size: 0.75rem; text-transform: none; letter-spacing: normal; }@media (max-width: 767px) { .resp_fonts article .meta .dates .dateLabel {font-size: calc(0.262vw * 12); } }\n                    .articleFooter .tags a { font-family: \"Roboto Mono\"; font-weight: normal; font-style: normal; text-transform: uppercase; letter-spacing: normal; }\n                    body { font-family: \"Roboto\"; font-weight: normal; font-style: normal; line-height: 1.6; text-transform: none; letter-spacing: normal; }\n                    .articleList .article-list-title { font-family: \"Roboto\"; font-weight: normal; font-style: normal; font-size: 1rem; text-transform: none; letter-spacing: normal; }@media (max-width: 767px) { .resp_fonts .articleList .article-list-title {font-size: calc(0.262vw * 16); } }\n                    .articleList ul li a .al-title { font-family: \"Roboto\"; font-weight: normal; font-style: normal; font-size: 1rem; text-transform: none; letter-spacing: normal; }@media (max-width: 767px) { .resp_fonts .articleList ul li a .al-title {font-size: calc(0.262vw * 16); } }\n                    .topBarMenu ul li a, topBarMenu ul li span, .pageHeader .hamburger .hamburger-container .topBarMenu ul li { font-family: \"Roboto\"; font-weight: normal; font-style: normal; font-size: 1.25rem; text-transform: none; letter-spacing: normal; }@media (max-width: 767px) { .resp_fonts .topBarMenu ul li a, topBarMenu ul li span, .pageHeader .hamburger .hamburger-container .topBarMenu ul li {font-size: calc(0.262vw * 12); line-height: 1.0; } }\n                    .customMenu1 ul li a, .customMenu1 ul li span, .pageHeader .hamburger .hamburger-container .customMenu1 ul li a, .pageHeader .hamburger .hamburger-container .customMenu1 ul li span { font-family: \"Roboto\"; font-weight: normal; font-style: normal; font-size: 1.125rem; text-transform: none; letter-spacing: normal; }\n                    .articleHeader .kicker { font-family: \"Roboto\"; font-weight: normal; font-style: normal; font-size: 1rem; text-transform: uppercase; letter-spacing: normal; }@media (max-width: 767px) { .resp_fonts .articleHeader .kicker {font-size: calc(0.262vw * 16); } }\n                    article.column .content .kicker { font-family: \"Roboto\"; font-weight: normal; font-style: normal; font-size: 1rem; text-transform: uppercase; letter-spacing: normal; }@media (max-width: 767px) { .resp_fonts article.column .content .kicker {font-size: calc(0.262vw * 16); } }\n                    footer.page { font-family: \"Roboto\"; font-weight: normal; font-style: normal; font-size: 0.75rem; text-transform: none; letter-spacing: normal; text-decoration: none; hyphens: auto; }@media (max-width: 767px) { .resp_fonts footer.page {font-size: calc(0.262vw * 12); } }\n                    .bodytext>p a, .bodytext>ul a, .bodytext>ol a, .bodytext>h2 a, .bodytext>h3 a, .bodytext>h4 a { font-family: \"Roboto\"; font-weight: normal; font-style: normal; font-size: 1.125rem; text-transform: none; letter-spacing: normal; color: #333333; text-decoration: underline; hyphens: auto; }@media (max-width: 767px) { .resp_fonts .bodytext>p a, .bodytext>ul a, .bodytext>ol a, .bodytext>h2 a, .bodytext>h3 a, .bodytext>h4 a {font-size: calc(0.262vw * 16); } }\n                    .toplist ul li .text h4 { font-family: \"Roboto\"; font-weight: 700; font-style: normal; font-size: 1.125rem; line-height: 1.5; text-transform: none; letter-spacing: normal; hyphens: auto; }\n                    .articlescroller ul li h3 { font-family: \"Roboto\"; font-weight: 700; font-style: normal; font-size: 1.1875rem; letter-spacing: normal; hyphens: auto; }\n                    .articlescroller ul li .subtitle { font-family: \"Roboto\"; font-weight: normal; font-style: normal; font-size: 1rem; letter-spacing: normal; hyphens: auto; }\n                    .articleHeader .lab-article-section { font-family: \"Roboto\"; font-weight: normal; font-style: normal; font-size: 0.9375rem; text-transform: uppercase; letter-spacing: normal; hyphens: auto; }@media (max-width: 767px) { .resp_fonts .articleHeader .lab-article-section {font-size: calc(0.262vw * 15); } }\n                    article.column .content .section { font-family: \"Roboto\"; font-weight: normal; font-style: normal; font-size: 0.9375rem; text-transform: uppercase; letter-spacing: normal; hyphens: auto; }@media (max-width: 767px) { .resp_fonts article.column .content .section {font-size: calc(0.262vw * 15); } }\n                    .bodytext > h2 { font-family: \"Roboto\"; font-weight: 600; font-style: normal; font-size: 1.5625rem; line-height: 1.2; letter-spacing: normal; hyphens: auto; }@media (max-width: 767px) { .resp_fonts .bodytext > h2 {font-size: calc(0.262vw * 25); line-height: 1.2; } }\n                    .font-Roboto { font-family: \"Roboto\" !important; }\n                    .font-Roboto.font-weight-normal { font-weight: normal !important; }\n                    .font-Roboto.font-weight-bold { font-weight: 700 !important; }\n                    .font-Roboto.font-weight-black { font-weight: 900 !important; }\n                    .font-RobotoCondensed { font-family: \"Roboto Condensed\" !important; }\n                    .font-RobotoCondensed.font-weight-normal { font-weight: normal !important; }\n                    .font-RobotoCondensed.font-weight-bold { font-weight: 700 !important; }\n                    .font-RobotoCondensed.font-weight-black { font-weight: 900 !important; }\n                    .font-RobotoFlex { font-family: \"Roboto Flex\" !important; }\n                    .font-RobotoFlex.font-weight-normal { font-weight: normal !important; }\n                    .font-RobotoMono { font-family: \"Roboto Mono\" !important; }\n                    .font-RobotoMono.font-weight-normal { font-weight: normal !important; }\n                    .font-RobotoMono.font-weight-light { font-weight: 100 !important; }\n                    .font-RobotoMono.font-weight-bold { font-weight: 700 !important; }\n                </style>\n                <style id=\"css_variables\"></style>\n                <script>\n                    window.dachserData = {\n                        _data: {},\n                        _instances: {},\n                        get: function(key) {\n                            return dachserData._data[key] || null;\n                        },\n                        set: function(key, value) {\n                            dachserData._data[key] = value;\n                        },\n                        push: function(key, value) {\n                            if (!dachserData._data[key]) {\n                                dachserData._data[key] = [];\n                            }\n                            dachserData._data[key].push(value);\n                        },\n                        setInstance: function(key, identifier, instance) {\n                            if (!dachserData._instances[key]) {\n                                dachserData._instances[key] = {};\n                            }\n                            dachserData._instances[key][identifier] = instance;\n                        },\n                        getInstance: function(key, identifier) {\n                            return dachserData._instances[key] ? dachserData._instances[key][identifier] || null : null;\n                        },\n                        reflow: () => {}\n                    };\n                </script>\n                \n\n                <script type=\"application/ld+json\">\n                    [{\"@context\":\"http://schema.org\",\"@type\":\"WebSite\",\"name\":\"theregister\",\"url\":\"https://www.theregister.com\"},{\"@context\":\"https://schema.org\",\"@type\":\"NewsArticle\",\"headline\":\"AI agents get their own phone directory built atop DNS\",\"description\":\"DNS-AID, under the auspices of the Linux Foundation, promises easier agent discovery\",\"url\":\"https://www.theregister.com/ai-ml/2026/05/28/ai-agents-get-their-own-phone-directory-built-atop-dns/5247539\",\"inLanguage\":[{\"@type\":\"Language\",\"alternateName\":\"en-US\"}],\"image\":[{\"@type\":\"ImageObject\",\"url\":\"https://image.theregister.com/?imageId=227469&width=1200\",\"@id\":\"https://www.theregister.com/ai-ml/2026/05/28/ai-agents-get-their-own-phone-directory-built-atop-dns/5247539#primaryimage\"},{\"@type\":\"ImageObject\",\"url\":\"https://image.theregister.com/?imageId=5238835&width=1200\"},{\"@type\":\"ImageObject\",\"url\":\"https://image.theregister.com/?imageId=5247468&width=1200\"},{\"@type\":\"ImageObject\",\"url\":\"https://image.theregister.com/?imageId=232762&width=1200\"}],\"keywords\":\"cloudflare, ai agents, ai + ml, ai, linux foundation, domain name system, dns-aid\",\"thumbnailUrl\":\"https://image.theregister.com/?imageId=227469&width=400\",\"articleSection\":\"ai + ml\",\"author\":[{\"@type\":\"Person\",\"name\":\"Thomas Claburn\",\"description\":\"Senior reporter\",\"url\":\"https://www.theregister.com/author/thomas-claburn\",\"email\":\"tclaburn@theregister.com\"}],\"publisher\":{\"@type\":\"Organization\",\"name\":\"theregister\",\"url\":\"https://www.theregister.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://www.theregister.com/view-resources/dachser2/public/theregister/logo.svg\"}},\"mainEntityOfPage\":\"https://www.theregister.com/ai-ml/2026/05/28/ai-agents-get-their-own-phone-directory-built-atop-dns/5247539\",\"datePublished\":\"2026-05-28T13:06:00.000Z\",\"dateModified\":\"2026-05-28T12:43:59.000Z\",\"isAccessibleForFree\":true}]\n                </script>                \n                \n                \n                <style >@media (min-width: 768px) {\n.custom-bodytext-alignment .bodytext>p,\n.custom-bodytext-alignment .bodytext>h2, \n.custom-bodytext-alignment .bodytext>h3, \n.custom-bodytext-alignment .bodytext>h4, \n.custom-bodytext-alignment .bodytext>ul, \n.custom-bodytext-alignment .bodytext>ol {\n    padding-left: 220px;\n    padding-right: 320px;\n}\n}\n@media (min-width: 768px) {\n.custom-bodytext-alignment .bodytext .articleList {\n        padding-left: 230px !important;\n    width: 880px;\n}\n}\n@media (min-width: 768px) {\n.custom-bodytext-alignment .bodytext .google-ad.floatRight {\n    position: sticky;\n    top: 125px;\n}\n}\n\n@media (min-width: 768px) {\n.custom-bodytext-alignment .column.google-ad.widthFull,\n.custom-bodytext-alignment .placement-top > .column.google-ad,\nbody.article section.related .large-12.google-ad,\nbody.front .placement-top > .column.google-ad,\nbody.front .large-12.google-ad {\npadding-left: 0;\npadding-right: 0;\n}\n}</style>\n                \n\n\n\n\n        <meta property=\"article:section\" content=\"ai + ml\">\n<script>\nvar k5aMeta = { \"paid\": 0, \"wordCount\": \"543\", \"lix\": \"57\", \"author\": [\"Thomas Claburn\"], \"tag\": [\"cloudflare\", \"ai agents\", \"ai + ml\", \"ai\", \"linux foundation\", \"domain name system\", \"dns-aid\"], \"title\": \"AI agents get their own phone directory built atop DNS\", \"teasertitle\": \"AI agents get their own phone directory built atop DNS\", \"kicker\": \"AI + ML\", \"url\": \"https://www.theregister.com/a/5247539\", \"login\": (Dac.clientData.paywall.isAuthenticated ? 1 : 0), \"subscriber\": (Dac.clientData.paywall.isAuthenticated ? 1 : 0), \"subscriberId\": (Dac.clientData.subscriberId ? `\"${ Dac.clientData.subscriberId }\"` : \"\") };\n</script>\n        <script>\n        (function () {\n            var sources = [\n                '//cl.k5a.io/6156b8c81b4d741e051f44c2.js',\n            ];\n\n            function load() {\n                for (var i = 0; i < sources.length; i++) {\n                    var script = document.createElement('script');\n                    script.src = sources[i];\n                    script.async = true;\n                    document.head.appendChild(script);\n                }\n            }\n\n            // Kilkaya reads k5aMeta once, when it boots. On a paid article behind a\n            // client-side paywall the reader's access is not known while the head is\n            // parsed, so partial/lab4/analytics/kilkaya_metadata publishes k5aMetaReady\n            // and we hold off until the metadata is correct. Everywhere else the values\n            // are right already and Kilkaya loads immediately.\n            if (window.k5aMetaReady) {\n                window.k5aMetaReady.then(load);\n            } else {\n                load();\n            }\n        }());\n        </script>\n\n        <style>\n            :root {\n                --bodytext-width: var(--large-6-width);\n                --bodytext-alignment: var(--bodytext-alignment-center);\n            }\n        </style>\n        \n        \n    </head>\n\n    <body class=\"l4 article site_theregister section_ai + ml custom-bodytext-width custom-bodytext-alignment\"\n        data-tag=\"cloudflare,ai agents,ai + ml,ai,linux foundation,domain name system,dns-aid\"\n        \n        \n        >\n\n<!-- Google Tag Manager (noscript) -->\n<noscript><iframe src=\"https://www.googletagmanager.com/ns.html?id=GTM-KVXB44\"\nheight=\"0\" width=\"0\" style=\"display:none;visibility:hidden\"></iframe></noscript>\n<!-- End Google Tag Manager (noscript) -->        \n        \n        <script>\n        document.addEventListener(\"DOMContentLoaded\", (event) => {\n            setScrollbarWidth();\n            window.addEventListener('resize', setScrollbarWidth);\n        });\n        function setScrollbarWidth() {\n            const root = document.querySelector(':root');\n            const width = (window.innerWidth - document.body.offsetWidth < 21) ? window.innerWidth - document.body.offsetWidth : 15;\n            root.style.setProperty('--lab-scrollbar-width', `${ width }px`);\n        }\n        </script>\n\n        \n        <a href=\"#main\" class=\"skip-link\">Jump to main content</a>\n\n        <header class=\"pageElement pageHeader\">\n    <div class=\"row mainrow\">\n    <div class=\"hamburger to-be-expanded\" data-id=\"pageElements-3\">\n    <div class=\"positionRelative\">\n        <span class=\"hamburger-button hamburger-expander \">\n            <button class=\"burger-btn\" aria-label=\"Open menu\" aria-expanded=\"false\" aria-controls=\"hamburger-container\" aria-haspopup=\"menu\">\n                    <i class=\"open fi-list\"></i>\n                    <i class=\"close fi-x\"></i>\n            </button>\n        </span>\n            <div class=\"hamburger-container\" id=\"hamburger-container\">        \n                <div data-id=\"pageElements-4\" class=\"search visible dac-hidden-desktop-up\">\n\n    <form class=\"search-container\" action=\"/cse\" method=\"get\" role=\"search\">\n        <label for=\"search-input-4\" class=\"visuallyhidden\">Search</label>\n        <input type=\"text\" id=\"search-input-4\" name=\"q\" placeholder=\"Search...\">\n                <button type=\"submit\" class=\"search-button\" aria-label=\"Search\">\n                        <i class=\"open fi-magnifying-glass\"></i>\n                </button>\n    </form>\n\n</div>\n\n<nav class=\"navigation mainMenu expandable\">\n\t\t\t<p class=\"lab-menu-name  dac-hidden-desktop-down\">TOPICS</p>\n\t<ul class=\"menu-list\">\n\t\t\t<li class=\"first-list-item has-children\">\n\t\t\t\t<span tabindex=\"0\">Security</span>\n\t\t\t\t<ul class=\"children\">\n\t\t\t\t\t<li class=\"\">\n\t\t\t\t\t\t<a href=\"/security\" target=\"_self\">All Security</a>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li class=\"\">\n\t\t\t\t\t\t<a href=\"/cyber_crime\" target=\"_self\">Cyber-crime</a>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li class=\"\">\n\t\t\t\t\t\t<a href=\"/patches\" target=\"_self\">Patches</a>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li class=\"\">\n\t\t\t\t\t\t<a href=\"/research\" target=\"_self\">Research</a>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li class=\"\">\n\t\t\t\t\t\t<a href=\"/cso\" target=\"_self\">CSO</a>\n\t\t\t\t\t</li>\n\t\t\t\t</ul>\n\t\t\t</li>\n\t\t\t<li class=\"first-list-item has-children\">\n\t\t\t\t<span tabindex=\"0\">Off-Prem</span>\n\t\t\t\t<ul class=\"children\">\n\t\t\t\t\t<li class=\"\">\n\t\t\t\t\t\t<a href=\"/off_prem\" target=\"_self\">All Off-Prem</a>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li class=\"\">\n\t\t\t\t\t\t<a href=\"/edge_iot\" target=\"_self\">Edge and IoT</a>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li class=\"\">\n\t\t\t\t\t\t<a href=\"/channel\" target=\"_self\">Channel</a>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li class=\"\">\n\t\t\t\t\t\t<a href=\"/tag/paas-iaas\" target=\"_self\">PaaS and IaaS</a>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li class=\"\">\n\t\t\t\t\t\t<a href=\"/saas\" target=\"_self\">SaaS</a>\n\t\t\t\t\t</li>\n\t\t\t\t</ul>\n\t\t\t</li>\n\t\t\t<li class=\"first-list-item has-children\">\n\t\t\t\t<span tabindex=\"0\">On-Prem</span>\n\t\t\t\t<ul class=\"children\">\n\t\t\t\t\t<li class=\"\">\n\t\t\t\t\t\t<a href=\"/on_prem\" target=\"_self\">All On-Prem</a>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li class=\"\">\n\t\t\t\t\t\t<a href=\"/systems\" target=\"_self\">Systems</a>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li class=\"\">\n\t\t\t\t\t\t<a href=\"/storage\" target=\"_self\">Storage</a>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li class=\"\">\n\t\t\t\t\t\t<a href=\"/networks\" target=\"_self\">Networks</a>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li class=\"\">\n\t\t\t\t\t\t<a href=\"/hpc\" target=\"_self\">HPC</a>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li class=\"\">\n\t\t\t\t\t\t<a href=\"/personal_tech\" target=\"_self\">Personal Tech</a>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li class=\"\">\n\t\t\t\t\t\t<a href=\"/cxo\" target=\"_self\">Cx0</a>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li class=\"\">\n\t\t\t\t\t\t<a href=\"/public-sector\" target=\"_self\">Public Sector</a>\n\t\t\t\t\t</li>\n\t\t\t\t</ul>\n\t\t\t</li>\n\t\t\t<li class=\"first-list-item has-children\">\n\t\t\t\t<span tabindex=\"0\">Software</span>\n\t\t\t\t<ul class=\"children\">\n\t\t\t\t\t<li class=\"\">\n\t\t\t\t\t\t<a href=\"/software\" target=\"_self\">All Software</a>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li class=\"\">\n\t\t\t\t\t\t<a href=\"/tag/ai%20and%20ml\" target=\"_self\">AI and ML</a>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li class=\"\">\n\t\t\t\t\t\t<a href=\"/applications\" target=\"_self\">Applications</a>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li class=\"\">\n\t\t\t\t\t\t<a href=\"/databases\" target=\"_self\">Databases</a>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li class=\"\">\n\t\t\t\t\t\t<a href=\"/devops\" target=\"_self\">DevOps</a>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li class=\"\">\n\t\t\t\t\t\t<a href=\"/tag/os%20platforms\" target=\"_self\">OS Platforms</a>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li class=\"\">\n\t\t\t\t\t\t<a href=\"/virtualization\" target=\"_self\">Virtualization</a>\n\t\t\t\t\t</li>\n\t\t\t\t</ul>\n\t\t\t</li>\n\t\t\t<li class=\"first-list-item has-children\">\n\t\t\t\t<span tabindex=\"0\">Offbeat</span>\n\t\t\t\t<ul class=\"children\">\n\t\t\t\t\t<li class=\"\">\n\t\t\t\t\t\t<a href=\"/offbeat\" target=\"_self\">All Offbeat</a>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li class=\"\">\n\t\t\t\t\t\t<a href=\"/columnists\" target=\"_self\">Columnists</a>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li class=\"\">\n\t\t\t\t\t\t<a href=\"/science\" target=\"_self\">Science</a>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li class=\"\">\n\t\t\t\t\t\t<a href=\"/bofh\" target=\"_self\">BOFH</a>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li class=\"\">\n\t\t\t\t\t\t<a href=\"/legal\" target=\"_self\">Legal</a>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li class=\"\">\n\t\t\t\t\t\t<a href=\"/site_news\" target=\"_self\">Site News</a>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li class=\"\">\n\t\t\t\t\t\t<a href=\"https://www.theregister.com/about_us\" target=\"_self\">About Us</a>\n\t\t\t\t\t</li>\n\t\t\t\t</ul>\n\t\t\t</li>\n\t</ul>\n</nav>\n\n\t\t<script>\n\t\t\t(function () {\n\t\t\t\t// This is only called when the user presses the escape key.\n\t\t\t\tfunction closeElement(event, element) {\n\t\t\t\t\tif (event.key === 'Escape') {\n\t\t\t\t\t\twindow.removeEventListener('keydown', closeElement);\n\n\t\t\t\t\t\t// Get all expanded elements and close them\n\t\t\t\t\t\tconst expanded = document.querySelectorAll('nav.mainMenu.expandable .has-children.expanded');\n\t\t\t\t\t\tfor (let i = 0; i < expanded.length; i++) {\n\t\t\t\t\t\t\texpanded[i].classList.remove('expanded');\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t// Traverse up from the element the user has selected to see if it is a child of the expanded element\n\t\t\t\t\t\t\t// If it is, set focus to the first child, as that is the span element with tabindex. \n\t\t\t\t\t\t\t// This is so that if the user has moved on from the menu, we shouldn't mess with the focus and flow\n\t\t\t\t\t\t\tif (document.activeElement.closest('.has-children') === expanded[i]) {\n\t\t\t\t\t\t\t\texpanded[i].children[0].focus();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tfunction toggleElement(event, element) {\n\t\t\t\t\t// Prevent the default link behavior\n\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t// Check if there are other expanded elements and close them\n\t\t\t\t\tconst expanded = document.querySelectorAll('nav.mainMenu.expandable .has-children.expanded');\n\t\t\t\t\tfor (let i = 0; i < expanded.length; i++) {\n\t\t\t\t\t\tif (expanded[i] !== element.parentElement) {\n\t\t\t\t\t\t\texpanded[i].classList.remove('expanded');\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Toggle the class \"expanded\" on the parent element\n\t\t\t\t\t// We toggle instead of add/remove the class because we don't know if we are opening or closing the element\n\t\t\t\t\telement.parentElement.classList.toggle('expanded');\n\n\t\t\t\t\twindow.addEventListener('keydown', closeElement);\n\t\t\t\t}\n\n\t\t\t\t// Add extra element for carat and toggle functionality after the span or a element\n\t\t\t\tfunction addCarat(element) {\n\t\t\t\t\tconst carat = document.createElement('span');\n\t\t\t\t\tcarat.classList.add('carat');\n\t\t\t\t\tcarat.tabIndex = '0';\n\t\t\t\t\tconst sibling = element.querySelector(':scope > a') || element.querySelector(':scope > span');\n\t\t\t\t\telement.insertBefore(carat, sibling.nextSibling);\n\t\t\t\t\telement.tabIndex = '-1';\n\t\t\t\t\tif (sibling.tagName === 'A') {\n\t\t\t\t\t\tsibling.tabIndex = '0';\n\t\t\t\t\t} else if (sibling.tagName === 'SPAN') {\n\t\t\t\t\t\tsibling.tabIndex = '-1';\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Get all elements with class \"has-children\" and add two events - one click event and one keydown event\n\t\t\t\t// Allow for the same expandable menu to be reused in different viewports by using different classes\n\t\t\t\tlet classes = '';\n\t\t\t\tif (classes) {\n\t\t\t\t\tclasses = '.' + classes.trim().split(' ').join('.');\n\t\t\t\t}\n\n\t\t\t\tconst hasChildren = document.querySelectorAll(`nav.mainMenu${ classes }.expandable .has-children > span`);\n\t\t\t\tfor (let i = 0; i < hasChildren.length; i++) {\n\t\t\t\t\thasChildren[i].addEventListener('click', function(e) {\n\t\t\t\t\t\ttoggleElement(e, this);\n\t\t\t\t\t});\n\n\t\t\t\t\thasChildren[i].addEventListener('keydown', function (e) {\n\t\t\t\t\t\t// Check for both enter and space keys\n\t\t\t\t\t\tif (e.key === 'Enter' || e.key === ' ') {\n\t\t\t\t\t\t\ttoggleElement(e, this);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t// Get all elements with class \"has-children\" when toggleChildren is enabled and carat and toggle functionality \n\t\t\t\tconst hasChildrenToggle = document.querySelectorAll(`nav.mainMenu${ classes }.expandable.toggleChildren .has-children > span, nav.mainMenu${ classes }.expandable.toggleChildren .has-children > a`);\n\t\t\t\tfor (let i = 0; i < hasChildrenToggle.length; i++) {\n\n\t\t\t\t\t// Add carat to the element\n\t\t\t\t\taddCarat(hasChildrenToggle[i].parentElement);\n\n\t\t\t\t\tif (hasChildrenToggle[i].tagName === 'A' || hasChildrenToggle[i].tagName === 'SPAN') {\n\t\t\t\t\t\thasChildrenToggle[i].nextSibling.addEventListener('click', function(e) {\n\t\t\t\t\t\t\ttoggleElement(e, hasChildrenToggle[i]);\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\thasChildrenToggle[i].nextSibling.addEventListener('keydown', function(e) {\n\t\t\t\t\t\t\t// Check for both enter and space keys\n\t\t\t\t\t\t\tif (e.key === 'Enter' || e.key === ' ') {\n\t\t\t\t\t\t\t\ttoggleElement(e, hasChildrenToggle[i]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\t// Use with caution - ensure that parent li overlaps with child ul to avoid prematurely triggering leave\n\t\t\t\t\t\tif (hasChildrenToggle[i].closest('nav').classList.contains('toggleOnHover')) {\n\t\t\t\t\t\t\thasChildrenToggle[i].addEventListener('mouseenter', function(e) {\n\t\t\t\t\t\t\t\thasChildrenToggle[i].parentElement.classList.add('expanded');\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\thasChildrenToggle[i].parentElement.addEventListener('mouseleave', function(e) {\n\t\t\t\t\t\t\t\thasChildrenToggle[i].parentElement.classList.remove('expanded');\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})();\n\t\t</script>\n\n\n\t<script>\n\t\t(function () {\n\t\t\tconst menuLinks = document.querySelectorAll(`nav.mainMenu ul li a`);\n\t\t\tfor (let i = 0; i < menuLinks.length; i++) {\n\t\t\t\tconst link = menuLinks[i].pathname;\n\t\t\t\tif (link === window.location.pathname) {\n\t\t\t\t\tmenuLinks[i].parentElement.classList.add('lab-link-active');\n\t\t\t\t} else {\n\t\t\t\t\tmenuLinks[i].parentElement.classList.remove('lab-link-active');\n\t\t\t\t}\n\t\t\t}\n\t\t})();\n\t</script>\n\n<nav class=\"navigation bottomBarMenu expandable\">\n\t<ul class=\"menu-list\">\n\t\t\t<li class=\"first-list-item has-children\">\n\t\t\t\t<span tabindex=\"0\">Special Features</span>\n\t\t\t\t<ul class=\"children\">\n\t\t\t\t\t<li class=\"dac-hidden-desktop-up\">\n\t\t\t\t\t\t<a href=\"/special_features\" target=\"_self\">All Special Features</a>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li class=\"\">\n\t\t\t\t\t\t<a href=\"/special_features/vmware_explore_2026\" target=\"_self\">VMware Explore 2026</a>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li class=\"\">\n\t\t\t\t\t\t<a href=\"/special_features/cloud_infrastructure_month_2026\" target=\"_self\">Cloud Infrastructure Month 2026</a>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li class=\"\">\n\t\t\t\t\t\t<a href=\"/explainer/ai-explainer\" target=\"_self\">HPE: AI Explainers</a>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li class=\"\">\n\t\t\t\t\t\t<a href=\"/special_features/agentic_ai\" target=\"_self\">Agentic AI</a>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li class=\"\">\n\t\t\t\t\t\t<a href=\"/special_features/future_of_the_datacenter\" target=\"_self\">The Future of the Datacenter</a>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li class=\"\">\n\t\t\t\t\t\t<a href=\"/special_features/aws_reinvent\" target=\"_self\">AWS:Reinvent</a>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li class=\"\">\n\t\t\t\t\t\t<a href=\"/special_features/nvidia_gtc\" target=\"_self\">Nvidia GTC</a>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li class=\"\">\n\t\t\t\t\t\t<a href=\"/special_features/2025_11_supercomputing_month\" target=\"_self\">Supercomputing Month</a>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li class=\"\">\n\t\t\t\t\t\t<a href=\"/special_features/computex\" target=\"_self\">Computex 2026</a>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li class=\"\">\n\t\t\t\t\t\t<a href=\"/special_features/ai_infrastructure_month_2026\" target=\"_self\">AI Infrastructure Month 2026</a>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li class=\"\">\n\t\t\t\t\t\t<a href=\"/special_features/state_of_storage_2026\" target=\"_self\">The State of Storage 2026</a>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li class=\"\">\n\t\t\t\t\t\t<a href=\"/special_features/rsa\" target=\"_self\">RSA Conference</a>\n\t\t\t\t\t</li>\n\t\t\t\t</ul>\n\t\t\t</li>\n\t\t\t<li class=\"first-list-item has-children\">\n\t\t\t\t<span tabindex=\"0\">Vendor Voice</span>\n\t\t\t\t<ul class=\"children\">\n\t\t\t\t\t<li class=\"\">\n\t\t\t\t\t\t<a href=\"https://vendorvoice.theregister.com/\" target=\"_self\">All Vendor Voice</a>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li class=\"\">\n\t\t\t\t\t\t<a href=\"https://vendorvoice.theregister.com/aws_fis_capital_markets/\" target=\"_self\">Modernizing Financial Services with FIS and AWS</a>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li class=\"\">\n\t\t\t\t\t\t<a href=\"https://vendorvoice.theregister.com/barco/\" target=\"_self\">Barco</a>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li class=\"\">\n\t\t\t\t\t\t<a href=\"https://vendorvoice.theregister.com/infinidat/\" target=\"_self\">Infinidat</a>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li class=\"\">\n\t\t\t\t\t\t<a href=\"https://vendorvoice.theregister.com/everpure/\" target=\"_self\">Everpure</a>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li class=\"\">\n\t\t\t\t\t\t<a href=\"https://vendorvoice.theregister.com/rubrik/\" target=\"_self\">Rubrik</a>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li class=\"\">\n\t\t\t\t\t\t<a href=\"https://vendorvoice.theregister.com/aws_capgemini/\" target=\"_self\">Make it real with Capgemini and AWS</a>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li class=\"\">\n\t\t\t\t\t\t<a href=\"https://vendorvoice.theregister.com/aws_fis/\" target=\"_self\">Money Movement Hub</a>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li class=\"\">\n\t\t\t\t\t\t<a href=\"https://vendorvoice.theregister.com/zte_news_and_stories/\" target=\"_self\">ZTE</a>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li class=\"\">\n\t\t\t\t\t\t<a href=\"https://vendorvoice.theregister.com/nutantix_cloud_native_apps/\" target=\"_self\">Nutanix: Scale Kubernetes. Not Chaos.</a>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li class=\"\">\n\t\t\t\t\t\t<a href=\"https://vendorvoice.theregister.com/aws_new_horizon/\" target=\"_self\">AWS New Horizon</a>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li class=\"\">\n\t\t\t\t\t\t<a href=\"https://vendorvoice.theregister.com/digicert\" target=\"_self\">Digicert</a>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li class=\"\">\n\t\t\t\t\t\t<a href=\"https://vendorvoice.theregister.com/netscout\" target=\"_self\">Netscout</a>\n\t\t\t\t\t</li>\n\t\t\t\t</ul>\n\t\t\t</li>\n\t\t\t<li class=\"first-list-item has-children\">\n\t\t\t\t<span tabindex=\"0\">Resources</span>\n\t\t\t\t<ul class=\"children\">\n\t\t\t\t\t<li class=\"\">\n\t\t\t\t\t\t<a href=\"https://intelligence.theregister.com\" target=\"_self\">Intelligence</a>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li class=\"\">\n\t\t\t\t\t\t<a href=\"https://intelligence.theregister.com/events/list/\" target=\"_self\">Webinars &amp; Events</a>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li class=\"\">\n\t\t\t\t\t\t<a href=\"https://account.theregister.com/login?r=https%3A%2F%2Faccount.theregister.com%2Fedit%2Fnewsletter%2F\" target=\"_self\">Newsletters</a>\n\t\t\t\t\t</li>\n\t\t\t\t</ul>\n\t\t\t</li>\n\t</ul>\n</nav>\n\n\t\t<script>\n\t\t\t(function () {\n\t\t\t\t// This is only called when the user presses the escape key.\n\t\t\t\tfunction closeElement(event, element) {\n\t\t\t\t\tif (event.key === 'Escape') {\n\t\t\t\t\t\twindow.removeEventListener('keydown', closeElement);\n\n\t\t\t\t\t\t// Get all expanded elements and close them\n\t\t\t\t\t\tconst expanded = document.querySelectorAll('nav.bottomBarMenu.expandable .has-children.expanded');\n\t\t\t\t\t\tfor (let i = 0; i < expanded.length; i++) {\n\t\t\t\t\t\t\texpanded[i].classList.remove('expanded');\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t// Traverse up from the element the user has selected to see if it is a child of the expanded element\n\t\t\t\t\t\t\t// If it is, set focus to the first child, as that is the span element with tabindex. \n\t\t\t\t\t\t\t// This is so that if the user has moved on from the menu, we shouldn't mess with the focus and flow\n\t\t\t\t\t\t\tif (document.activeElement.closest('.has-children') === expanded[i]) {\n\t\t\t\t\t\t\t\texpanded[i].children[0].focus();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tfunction toggleElement(event, element) {\n\t\t\t\t\t// Prevent the default link behavior\n\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t// Check if there are other expanded elements and close them\n\t\t\t\t\tconst expanded = document.querySelectorAll('nav.bottomBarMenu.expandable .has-children.expanded');\n\t\t\t\t\tfor (let i = 0; i < expanded.length; i++) {\n\t\t\t\t\t\tif (expanded[i] !== element.parentElement) {\n\t\t\t\t\t\t\texpanded[i].classList.remove('expanded');\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Toggle the class \"expanded\" on the parent element\n\t\t\t\t\t// We toggle instead of add/remove the class because we don't know if we are opening or closing the element\n\t\t\t\t\telement.parentElement.classList.toggle('expanded');\n\n\t\t\t\t\twindow.addEventListener('keydown', closeElement);\n\t\t\t\t}\n\n\t\t\t\t// Add extra element for carat and toggle functionality after the span or a element\n\t\t\t\tfunction addCarat(element) {\n\t\t\t\t\tconst carat = document.createElement('span');\n\t\t\t\t\tcarat.classList.add('carat');\n\t\t\t\t\tcarat.tabIndex = '0';\n\t\t\t\t\tconst sibling = element.querySelector(':scope > a') || element.querySelector(':scope > span');\n\t\t\t\t\telement.insertBefore(carat, sibling.nextSibling);\n\t\t\t\t\telement.tabIndex = '-1';\n\t\t\t\t\tif (sibling.tagName === 'A') {\n\t\t\t\t\t\tsibling.tabIndex = '0';\n\t\t\t\t\t} else if (sibling.tagName === 'SPAN') {\n\t\t\t\t\t\tsibling.tabIndex = '-1';\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Get all elements with class \"has-children\" and add two events - one click event and one keydown event\n\t\t\t\t// Allow for the same expandable menu to be reused in different viewports by using different classes\n\t\t\t\tlet classes = '';\n\t\t\t\tif (classes) {\n\t\t\t\t\tclasses = '.' + classes.trim().split(' ').join('.');\n\t\t\t\t}\n\n\t\t\t\tconst hasChildren = document.querySelectorAll(`nav.bottomBarMenu${ classes }.expandable .has-children > span`);\n\t\t\t\tfor (let i = 0; i < hasChildren.length; i++) {\n\t\t\t\t\thasChildren[i].addEventListener('click', function(e) {\n\t\t\t\t\t\ttoggleElement(e, this);\n\t\t\t\t\t});\n\n\t\t\t\t\thasChildren[i].addEventListener('keydown', function (e) {\n\t\t\t\t\t\t// Check for both enter and space keys\n\t\t\t\t\t\tif (e.key === 'Enter' || e.key === ' ') {\n\t\t\t\t\t\t\ttoggleElement(e, this);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t// Get all elements with class \"has-children\" when toggleChildren is enabled and carat and toggle functionality \n\t\t\t\tconst hasChildrenToggle = document.querySelectorAll(`nav.bottomBarMenu${ classes }.expandable.toggleChildren .has-children > span, nav.bottomBarMenu${ classes }.expandable.toggleChildren .has-children > a`);\n\t\t\t\tfor (let i = 0; i < hasChildrenToggle.length; i++) {\n\n\t\t\t\t\t// Add carat to the element\n\t\t\t\t\taddCarat(hasChildrenToggle[i].parentElement);\n\n\t\t\t\t\tif (hasChildrenToggle[i].tagName === 'A' || hasChildrenToggle[i].tagName === 'SPAN') {\n\t\t\t\t\t\thasChildrenToggle[i].nextSibling.addEventListener('click', function(e) {\n\t\t\t\t\t\t\ttoggleElement(e, hasChildrenToggle[i]);\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\thasChildrenToggle[i].nextSibling.addEventListener('keydown', function(e) {\n\t\t\t\t\t\t\t// Check for both enter and space keys\n\t\t\t\t\t\t\tif (e.key === 'Enter' || e.key === ' ') {\n\t\t\t\t\t\t\t\ttoggleElement(e, hasChildrenToggle[i]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\t// Use with caution - ensure that parent li overlaps with child ul to avoid prematurely triggering leave\n\t\t\t\t\t\tif (hasChildrenToggle[i].closest('nav').classList.contains('toggleOnHover')) {\n\t\t\t\t\t\t\thasChildrenToggle[i].addEventListener('mouseenter', function(e) {\n\t\t\t\t\t\t\t\thasChildrenToggle[i].parentElement.classList.add('expanded');\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\thasChildrenToggle[i].parentElement.addEventListener('mouseleave', function(e) {\n\t\t\t\t\t\t\t\thasChildrenToggle[i].parentElement.classList.remove('expanded');\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})();\n\t\t</script>\n\n\n\t<script>\n\t\t(function () {\n\t\t\tconst menuLinks = document.querySelectorAll(`nav.bottomBarMenu ul li a`);\n\t\t\tfor (let i = 0; i < menuLinks.length; i++) {\n\t\t\t\tconst link = menuLinks[i].pathname;\n\t\t\t\tif (link === window.location.pathname) {\n\t\t\t\t\tmenuLinks[i].parentElement.classList.add('lab-link-active');\n\t\t\t\t} else {\n\t\t\t\t\tmenuLinks[i].parentElement.classList.remove('lab-link-active');\n\t\t\t\t}\n\t\t\t}\n\t\t})();\n\t</script>\n\n\n            </div>\n    </div>\n\n</div>\n\n<script>\n    (function(){\n        const burgerButton = document.querySelector('[data-id=\"pageElements-3\"] .burger-btn');\n        const dropdownCloseSection = document.querySelector('[data-id=\"pageElements-3\"] .dropdown-close-section');\n        const hamburgerContainer = document.querySelector('[data-id=\"pageElements-3\"] .hamburger-container');\n\n        function toggleDropdown() {\n            // Toggle the expanded class and aria-expanded attribute\n            document.querySelector('[data-id=\"pageElements-3\"].hamburger.to-be-expanded').classList.toggle('expanded');\n            burgerButton.setAttribute('aria-expanded', burgerButton.getAttribute('aria-expanded') === 'true' ? 'false' : 'true');\n            burgerButton.setAttribute('aria-label', burgerButton.getAttribute('aria-expanded') === 'true' ? 'Close menu' : 'Open menu');\n\n            // This doesn't seem to do anything? But there's styling dependent on it some places\n            document.body.classList.toggle('hamburger-expanded');\n        }\n\n        function getFocusableElements() {\n            if (!hamburgerContainer) return [];\n            return Array.from(hamburgerContainer.querySelectorAll(\n                'a[href], button:not([disabled]), input:not([disabled]), ' +\n                'select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"])'\n            )).filter(function(el) {\n                if (el.closest('[hidden]')) return false;\n                if (getComputedStyle(el).visibility === 'hidden') return false;\n                const rect = el.getBoundingClientRect();\n                return rect.width > 0 || rect.height > 0;\n            });\n        }\n\n        // Called via the event listener - handles Escape (close menu, restore focus) and\n        // Tab (trap focus within the open menu)\n        function handleKeydown(e) {\n            if (e.key === 'Escape') {\n                toggleDropdown();\n                // Set the focus back on the button when clicking escape, so the user can continue tabbing down\n                // the page in a natural flow\n                burgerButton.focus();\n                window.removeEventListener('keydown', handleKeydown);\n                return;\n            }\n\n            if (e.key === 'Tab') {\n                const focusable = getFocusableElements();\n                if (focusable.length === 0) return;\n\n                if (!e.shiftKey && document.activeElement === focusable[focusable.length - 1]) {\n                    // Tab past last item → burger button\n                    e.preventDefault();\n                    burgerButton.focus();\n                } else if (e.shiftKey && document.activeElement === burgerButton) {\n                    // Shift+Tab from burger button → last item\n                    e.preventDefault();\n                    focusable[focusable.length - 1].focus();\n                }\n            }\n        }\n\n        if(burgerButton) {\n            burgerButton.addEventListener('click', function(e) {\n                e.preventDefault();\n                toggleDropdown();\n\n                // If the menu gets expanded, add the event listener that will close it on pressing Escape\n                // else, remove the event listener otherwise it will continue to listen for escape even if the menu is closed.\n                if(burgerButton.getAttribute('aria-expanded') === 'true') {\n                    window.addEventListener('keydown', handleKeydown);\n                } else {\n                    window.removeEventListener('keydown', handleKeydown);\n                }\n            })\n        }\n        if (dropdownCloseSection) {\n            dropdownCloseSection.addEventListener('click', function(e) {\n                e.preventDefault();\n                toggleDropdown();\n            });\n        }\n\n        document.querySelectorAll('.hamburger .hamburger-expander, .hamburger .hamburger-container, .stop-propagation').forEach(function (element) {\n            element.addEventListener('click', function (e) {\n                e.stopPropagation();\n            });\n        });\n    }());\n</script><div data-id=\"pageElements-7\" class=\"search to-be-expanded dac-hidden-desktop-down bonusButton\">\n\n    <form class=\"search-container\" action=\"/cse\" method=\"get\" role=\"search\">\n        <label for=\"search-input-7\" class=\"visuallyhidden\">Search</label>\n        <input type=\"text\" id=\"search-input-7\" name=\"q\" placeholder=\"Search...\">\n                <button id=\"bonusButton\" class=\"bonusButton\">\n                        <i class=\"fi-magnifying-glass\" aria-hidden=\"true\"></i>\n                </button>\n    </form>\n\n            <button class=\"search-button search-expander\" aria-label=\"Search\" aria-expanded=\"false\" aria-controls=\"search-input-7\">\n                    <i class=\"open fi-magnifying-glass\"></i>\n                    <i class=\"close fi-x\"></i>\n            </button>\n</div>\n\n        <script>\n            // Do the check for the search button inside the if statement, so we don't set a global const if there are multiple search buttons\n            if (document.querySelector('[data-id=\"pageElements-7\"] .search-button')) {\n                // Now we can set a const that is only available inside the if scope\n                const searchButton = document.querySelector('[data-id=\"pageElements-7\"] .search-button');\n                let searchWasExpanded = false;\n                let hadPointerDown = false;\n                searchButton.addEventListener('pointerdown', () => {\n                    searchWasExpanded = searchButton.getAttribute('aria-expanded') === 'true';\n                    hadPointerDown = true;\n                });\n                searchButton.addEventListener('click', (event) => {\n                    event.preventDefault();\n                    event.stopPropagation();\n\n                    // For pointer interactions (mouse/touch), use the state captured at pointerdown time,\n                    // before focusout could collapse the search. For keyboard interactions, pointerdown\n                    // never fires, so read aria-expanded directly — focusout doesn't fire on keyboard\n                    // so the current state is still accurate.\n                    const wasExpanded = hadPointerDown ? searchWasExpanded : searchButton.getAttribute('aria-expanded') === 'true';\n                    hadPointerDown = false;\n\n                    const shouldOpen = !wasExpanded;\n                    searchButton.parentElement.classList.toggle('expanded', shouldOpen);\n                    searchButton.setAttribute('aria-expanded', shouldOpen ? 'true' : 'false');\n                    searchButton.setAttribute('aria-label', shouldOpen ? 'Close search' : 'Open search');\n\n                    // Set focus to the input.\n                    // This might be dodgy due to moving focus automatically, but we'll keep it in for now.\n                    if (shouldOpen) {\n                        document.getElementById('search-input-7').focus();\n                    }\n                }, false);\n            }\n\n            if (document.getElementById('bonusButton')) {\n                document.getElementById('bonusButton').addEventListener('pointerdown', (event) => {\n                    event.preventDefault();\n                });\n                document.getElementById('bonusButton').addEventListener('click', (event) => {\n                    document.querySelector('[data-id=\"pageElements-7\"] .search-container').submit();\n                }, false);\n            }\n\n            // Wrap in a block so const doesn't conflict when multiple search widgets are on the same page\n            {\n                const searchWrapper = document.querySelector('[data-id=\"pageElements-7\"]');\n                if (searchWrapper) {\n                    const searchButton = document.querySelector('[data-id=\"pageElements-7\"] .search-button');\n                    searchWrapper.addEventListener('focusout', (event) => {\n                        if (searchWrapper.classList.contains('expanded') && !searchWrapper.contains(event.relatedTarget)) {\n                            searchWrapper.classList.remove('expanded');\n                            if (searchButton) {\n                                searchButton.setAttribute('aria-expanded', 'false');\n                                searchButton.setAttribute('aria-label', 'Open search');\n                            }\n                        }\n                    });\n\n                    searchWrapper.addEventListener('keydown', (event) => {\n                        if (event.key === 'Escape' && searchWrapper.classList.contains('expanded')) {\n                            searchWrapper.classList.remove('expanded');\n                            if (searchButton) {\n                                searchButton.setAttribute('aria-expanded', 'false');\n                                searchButton.setAttribute('aria-label', 'Open search');\n                                searchButton.focus();\n                            }\n                        }\n                    });\n                }\n            }\n\n        </script>\n<figure class=\"logo logo--mobile\">\n    <a href=\"https://www.theregister.com\" aria-label=\"Go to frontpage\">\n        <img src=\"/view-resources/dachser2/public/theregister/logo.svg\"\n            alt=\"Go to frontpage. Logo, The Register\"\n            width=\"275\"\n            >\n    </a>\n</figure>\n\n<figure class=\"logo logo--primary\">\n    <a href=\"https://www.theregister.com\" aria-label=\"Go to frontpage\">\n        <img src=\"/view-resources/dachser2/public/theregister/logo.svg\"\n            alt=\"Go to frontpage. Logo, The Register\"\n            width=\"275\"\n            >\n    </a>\n</figure>\n\n<figure class=\"logo logo--secondary\">\n    <a href=\"https://www.theregister.com\" aria-label=\"Go to frontpage\">\n        <img src=\"/view-resources/dachser2/public/theregister/logo.svg\"\n            alt=\"Go to frontpage. Logo, The Register\"\n            width=\"275\"\n            >\n    </a>\n</figure>\n<nav class=\"navigation topBarMenu\">\n\t<ul class=\"menu-list\">\n\t\t\t<li class=\"first-list-item login-btn\">\n\t\t\t\t<a href=\"https://account.theregister.com/login\" target=\"_self\">Sign in</a>\n\t\t\t</li>\n\t</ul>\n</nav>\n\n\n\n\t<script>\n\t\t(function () {\n\t\t\tconst menuLinks = document.querySelectorAll(`nav.topBarMenu ul li a`);\n\t\t\tfor (let i = 0; i < menuLinks.length; i++) {\n\t\t\t\tconst link = menuLinks[i].pathname;\n\t\t\t\tif (link === window.location.pathname) {\n\t\t\t\t\tmenuLinks[i].parentElement.classList.add('lab-link-active');\n\t\t\t\t} else {\n\t\t\t\t\tmenuLinks[i].parentElement.classList.remove('lab-link-active');\n\t\t\t\t}\n\t\t\t}\n\t\t})();\n\t</script>\n\n\n</div>\n<div class=\"row dac-hidden-desktop-down bottom-row\">\n    <div class=\"section\">\n<nav class=\"navigation customMenu1\">\n\t<ul class=\"menu-list\">\n\t\t\t<li class=\"first-list-item \">\n\t\t\t\t<a href=\"/tag/ai%20and%20ml\" target=\"_self\">AI</a>\n\t\t\t</li>\n\t\t\t<li class=\"first-list-item \">\n\t\t\t\t<a href=\"/security\" target=\"_self\">Security</a>\n\t\t\t</li>\n\t\t\t<li class=\"first-list-item \">\n\t\t\t\t<a href=\"/tag/aws\" target=\"_self\">AWS</a>\n\t\t\t</li>\n\t\t\t<li class=\"first-list-item \">\n\t\t\t\t<a href=\"/tag/microsoft\" target=\"_self\">Microsoft</a>\n\t\t\t</li>\n\t\t\t<li class=\"first-list-item \">\n\t\t\t\t<a href=\"/tag/devops\" target=\"_self\">Developer</a>\n\t\t\t</li>\n\t\t\t<li class=\"first-list-item \">\n\t\t\t\t<a href=\"/tag/open%20source\" target=\"_self\">Open Source</a>\n\t\t\t</li>\n\t\t\t<li class=\"first-list-item \">\n\t\t\t\t<a href=\"/tag/bofh\" target=\"_self\">BOFH</a>\n\t\t\t</li>\n\t\t\t<li class=\"first-list-item \">\n\t\t\t\t<a href=\"/tag/who%20me\" target=\"_self\">Who, Me?</a>\n\t\t\t</li>\n\t\t\t<li class=\"first-list-item \">\n\t\t\t\t<a href=\"/tag/on%20call/\" target=\"_self\">On Call</a>\n\t\t\t</li>\n\t\t\t<li class=\"first-list-item \">\n\t\t\t\t<a href=\"/tag/kettle\" target=\"_self\">Podcasts</a>\n\t\t\t</li>\n\t</ul>\n</nav>\n\n\n\n\t<script>\n\t\t(function () {\n\t\t\tconst menuLinks = document.querySelectorAll(`nav.customMenu1 ul li a`);\n\t\t\tfor (let i = 0; i < menuLinks.length; i++) {\n\t\t\t\tconst link = menuLinks[i].pathname;\n\t\t\t\tif (link === window.location.pathname) {\n\t\t\t\t\tmenuLinks[i].parentElement.classList.add('lab-link-active');\n\t\t\t\t} else {\n\t\t\t\t\tmenuLinks[i].parentElement.classList.remove('lab-link-active');\n\t\t\t\t}\n\t\t\t}\n\t\t})();\n\t</script>\n\n\n</div>\n\n</div>\n\n\n    <script>\n        (function () {\n            if (!'IntersectionObserver' in window) { return; }\n\n            var scrollEvents = scrollEvents || [];\n\n            if (scrollEvents) {\n                const domInterface = {\n                    classList: {\n                        remove: () => {},\n                        add: () => {}\n                    },\n                    style: {\n                        cssText: ''\n                    }\n                };\n\n                scrollEvents.forEach(function(event) {\n                    if (!event.directional) {\n                        var callback = function(entries, observer) {\n                            if (!entries[0]) { return; }\n                            if (entries[0].isIntersecting) {\n                                event.styles.forEach(function(item) {\n                                    (document.querySelector(item.selector) || domInterface).style.cssText = \"\";\n                                });\n                                event.classes.forEach(function(item) {\n                                    item.class.forEach(function(classname) {\n                                        (document.querySelector(item.selector) || domInterface).classList.remove(classname);\n                                    });\n                                });\n                            } else {\n                                event.styles.forEach(function(item) {\n                                    (document.querySelector(item.selector) || domInterface).style.cssText = item.style;\n                                });\n                                event.classes.forEach(function(item) {\n                                    item.class.forEach(function(classname) {\n                                        (document.querySelector(item.selector) || domInterface).classList.add(classname);\n                                    });\n                                });\n                            }\n                        };\n\n                        var observer = new IntersectionObserver(callback, {\n                            rootMargin: event.offset,\n                            threshold: 1\n                        });\n                        var target = document.querySelector(event.target);\n                        if (target) {\n                            observer.observe(target);\n                        }\n                    }\n\n                    if (event.directional) {\n                        let previousTop = 0;\n                        window.addEventListener('scroll', function() {\n                            setTimeout(function() {\n                                const currentTop = window.pageYOffset || document.documentElement.scrollTop;\n                                if (currentTop > previousTop + 10) {\n                                    event.styles.forEach(function(item) {\n                                        (document.querySelector(item.selector) || domInterface).style.cssText = item.style;\n                                    });\n                                    event.classes.forEach(function(item) {\n                                        item.class.forEach(function(classname) {\n                                            (document.querySelector(item.selector) || domInterface).classList.add(classname);\n                                        });\n                                    });\n                                } else if (currentTop < previousTop - 10) {\n                                    event.styles.forEach(function(item) {\n                                        (document.querySelector(item.selector) || domInterface).style.cssText = \"\";\n                                    });\n                                    event.classes.forEach(function(item) {\n                                        item.class.forEach(function(classname) {\n                                            (document.querySelector(item.selector) || domInterface).classList.remove(classname);\n                                        });\n                                    });\n                                }\n                                previousTop = currentTop;\n                            }, 200);\n                        });\n                    }\n                });\n            }\n        }());\n\n        window.Dac.clientData.paywall.toggleAuthenticatedContent(); \n    </script>\n</header>\n\n        \n\n        \n                \n\n\n        <section id=\"mainArticleSection\" class=\"main article\">\n            <div data-element-guid=\"bb2bc9fa-2bf1-42b2-e0f3-bd5f791876dc\" class=\"placeholder placement-top\">\n<div data-element-guid=\"a9722a72-ce97-4889-ed60-371e61ba0230\" class=\"column google-ad small-12 large-12 small-abs-12 large-abs-12\"  style=\"\">\n\n        <span class=\"ad-label\">REG AD</span>\n        <div class=\"adunit\" id=\"labrador/thereg/article/desktop/a\" style=\"min-height:90px;\"></div>\n        <script>\n            googletag.cmd.push(function() {\n                googletag.display('labrador/thereg/article/desktop/a');\n            });\n        </script>\n</div>\n\n</div>\n            <main class=\"pageWidth\">\n                <article class=\" \"\n                    \n                >\n\n                    <section class=\"main article k5a-article\" id=\"main\">\n\n                            <div></div>\n<script>\n(function() {\n    let windowUrl = window.location.href;\n    windowUrl = windowUrl.substring(windowUrl.indexOf('?') + 1);\n    let messageElement = document.querySelector('.shareableMessage');\n    if (windowUrl && windowUrl.includes('code') && windowUrl.includes('expires')) {\n        messageElement.style.display = 'block';\n    } \n})();\n</script>\n\n\n                        <div data-element-guid=\"d11159dd-82a3-4c53-901c-d41dec75505c\" class=\"articleHeader column\">\n\n    \n\n\n\n        <p class=\"kicker \" style=\"\">AI + ML</p>\n\n\n    <div class=\"media\">\n        <div class=\"floatingText\">        </div>\n    </div>\n\n\n\n\n\n        <h1 class=\"headline mainTitle t42\" style=\"\">AI&nbsp;agents get their own phone directory built atop DNS</h1>\n        <p class=\"subtitle t25\" style=\"\">DNS-AID, under the auspices of the Linux Foundation, promises easier agent discovery</p>\n\n\n        <div data-element-guid=\"07410499-2665-44c7-ab99-ccf53f1dde69\" class=\"meta\">\n    \n\n    <div class=\"bylines\">\n        <div data-element-guid=\"fbc4f0f1-802e-4355-8057-ec45771d0444\" class=\"byline column\" itemscope itemtype=\"http://schema.org/Person\">\n    \n    <div class=\"content\">\n            \n        <address class=\"name lab-name-flex\">\n        <span class=\"lab-hidden-byline-name\" itemprop=\"name\">Thomas Claburn</span>\n                <a rel=\"author\" itemprop=\"url\" href=\"https:&#x2F;&#x2F;www.theregister.com&#x2F;author&#x2F;thomas-claburn\">\n                <span class=\"firstname \">Thomas</span>\n                <span class=\"lastname \">Claburn</span>\n                </a>\n\n                <span class=\"description \">Senior reporter</span>\n        </address>\n    </div>\n</div>\n\n        \n    </div>\n\n\n    \n    <div class=\"dates\">\n        <span class=\"dateGroup datePublished\">\n            <span class=\"dateLabel\">Published</span>\n            <time datetime=\"2026-05-28T13:06:00.000Z\">thu 28 May 2026 // 14:06 UTC</time>\n        </span>\n    </div>\n\n\n    <div class=\"social\">\n            <a target=\"_blank\" href=\"https://www.facebook.com/sharer.php?u=https%3A%2F%2Fwww.theregister.com%2Fai-ml%2F2026%2F05%2F28%2Fai-agents-get-their-own-phone-directory-built-atop-dns%2F5247539\" class=\"fi-social-facebook\" aria-label=\"Share on Facebook\"></a>\n            <a target=\"_blank\" href=\"https://twitter.com/intent/tweet?url=https%3A%2F%2Fwww.theregister.com%2Fai-ml%2F2026%2F05%2F28%2Fai-agents-get-their-own-phone-directory-built-atop-dns%2F5247539\" class=\"fi-social-twitter\" aria-label=\"Share on X (Twitter)\"></a>\n            <a target=\"_blank\" href=\"https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fwww.theregister.com%2Fai-ml%2F2026%2F05%2F28%2Fai-agents-get-their-own-phone-directory-built-atop-dns%2F5247539\" class=\"fi-social-linkedin\" aria-label=\"Share on LinkedIn\"></a>\n            <a target=\"_blank\" href=\"https://bsky.app/intent/compose?text=AI%26nbsp%3Bagents%20get%20their%20own%20phone%20directory%20built%20atop%20DNS%0Ahttps%3A%2F%2Fwww.theregister.com%2Fai-ml%2F2026%2F05%2F28%2Fai-agents-get-their-own-phone-directory-built-atop-dns%2F5247539\" class=\"fi-social-bluesky\" aria-label=\"Share on Bluesky\"></a>\n            <a target=\"_blank\" href=\"https://www.reddit.com/submit?url=https%3A%2F%2Fwww.theregister.com%2Fai-ml%2F2026%2F05%2F28%2Fai-agents-get-their-own-phone-directory-built-atop-dns%2F5247539&title=AI%26nbsp%3Bagents%20get%20their%20own%20phone%20directory%20built%20atop%20DNS\" class=\"fi-social-reddit\" aria-label=\"Share on Reddit\"></a>\n            <a target=\"_blank\" href=\"https://api.whatsapp.com/send?text=AI%26nbsp%3Bagents%20get%20their%20own%20phone%20directory%20built%20atop%20DNS%0Ahttps%3A%2F%2Fwww.theregister.com%2Fai-ml%2F2026%2F05%2F28%2Fai-agents-get-their-own-phone-directory-built-atop-dns%2F5247539\" class=\"fi-social-whatsapp\" aria-label=\"Share on WhatsApp\"></a>\n    </div>\n\n\n\n</div>\n\n</div>\n\n\n                        \n\n                        \n                        \n\n\n                        \n\n                        <div data-element-guid=\"4c9dc5d9-c886-4348-bf4a-01d0dc71377d\" class=\"bodytext large-12 small-12 medium-12\"\n    >\n    \n    \n\n    <p>In the future, AI agents will be able to find one another using the Domain Name System (DNS), instead of crawling about and probing ports or checking configured resources.</p><p>That future begins now with DNS for AI Discovery (<a href=\"https://dns-aid.org/\">DNS-AID</a>), an open source project intended to facilitate agent-to-agent discovery using existing internet infrastructure. The system has been built atop DNS to avoid the creation of yet another registry that has the potential to become a competitive chokepoint.</p><p>\"Current approaches to agent connectivity are fragmented and often rely on fragile, hardcoded configurations,” said Ingmar Van Glabbeek, project maintainer for DNS-AID, in <a href=\"https://www.linuxfoundation.org/press/linux-foundation-announces-dns-aid-project-to-advance-decentralized-ai-agent-discovery\">a statement</a>. \"With DNS-AID, we are moving toward a 'web-native' model for AI. By utilizing the existing DNS hierarchy, we enable developers to publish and discover agents with the same reliability and ubiquity that we’ve used to navigate the internet for decades.\"</p><div data-element-guid=\"8536e526-9325-4f67-a408-48d8282648dd\" class=\"column google-ad widthFull\"  style=\"\">\n\n        <span class=\"ad-label\">REG AD</span>\n        <div class=\"adunit\" id=\"labrador/thereg/article/desktop/b\" ></div>\n        <script>\n            googletag.cmd.push(function() {\n                googletag.display('labrador/thereg/article/desktop/b');\n            });\n        </script>\n</div>\n<p>DNS already provides various capabilities beyond domain name resolution. For example, websites expose their DMARC, SPF, and DKIM records via DNS TXT entries. And more recently, Service Binding (<a href=\"https://datatracker.ietf.org/doc/html/rfc9460\">SVCB</a>) and HTTPS RR (HTTPS Resource Records) were adopted to make it easier for clients to discover services and associated parameters.</p><div data-element-guid=\"38a98a11-3376-4152-edca-d4d6b349f370\" class=\"column google-ad floatRight widthAuto\"  style=\"\">\n\n        <span class=\"ad-label\">REG AD</span>\n        <div class=\"adunit\" id=\"labrador/thereg/article/desktop/c\" ></div>\n        <script>\n            googletag.cmd.push(function() {\n                googletag.display('labrador/thereg/article/desktop/c');\n            });\n        </script>\n</div>\n<p>DNS-AID utilizes SVCB (with TXT as a fallback) and optionally DNS Security Extensions (DNSSEC) and DNS-Based Authentication of Named Entities (DANE) TLSA records. These provide agents with a way to connect without a mediating entity, additional infrastructure, or a preferred protocol. DNS-AID supports MCP, A2A, HTTPS, and anything addressable via SVCB and ALPN.&nbsp;</p><div data-element-guid=\"afe083ca-6701-48e9-9bd8-f8827dd7fb42\" class=\"lab4 column articleList layout_vertical imageLayout_left small-12 large-12 small-abs-12 large-abs-12 abs_grid_12 grid-vas-start mobile-grid-vas-start\" style=\"--articleList-columnsDesktop: repeat(1, 1fr); --articleList-columnsMobile: repeat(1, 1fr); \">\n    \n    <div class=\"content border_width_0 border_width_mobile_0 border-radius-48 border-radius-mobile_48\">\n        <h2 class=\"article-list-title t19 font-RobotoCondensed\" style=\"\">MORE CONTEXT</h2>\n        <ul><li class=\"\">\n    <a itemprop=\"url\" href=\"&#x2F;off-prem&#x2F;2026&#x2F;05&#x2F;27&#x2F;snowflake-to-burn-6b-on-aws-graviton-cpus-ai-infra&#x2F;5247475\" data-k5a-url=\"https://www.theregister.com/a/5247475\">\n        \n            <h3 itemprop=\"name headline\" class=\"al-title \">Snowflake to burn $6B on AWS Graviton CPUs and AI accelerators</h3>\n    </a>\n</li>\n<li class=\"\">\n    <a itemprop=\"url\" href=\"&#x2F;offbeat&#x2F;2026&#x2F;05&#x2F;27&#x2F;faa-grounds-spacexs-starship-after-another-launch-mishap&#x2F;5247446\" data-k5a-url=\"https://www.theregister.com/a/5247446\">\n        \n            <h3 itemprop=\"name headline\" class=\"al-title \">FAA grounds SpaceX’s Starship after another launch mishap</h3>\n    </a>\n</li>\n<li class=\"\">\n    <a itemprop=\"url\" href=\"&#x2F;cyber-crime&#x2F;2026&#x2F;05&#x2F;27&#x2F;supply-chain-brain-drain-npm-attacker-foolishly-leaks-own-github-private-token&#x2F;5247424\" data-k5a-url=\"https://www.theregister.com/a/5247424\">\n        \n            <h3 itemprop=\"name headline\" class=\"al-title \">Malware dev tries to steal Claude users' secrets, writes npm slop, leaks own GitHub private token</h3>\n    </a>\n</li>\n<li class=\"\">\n    <a itemprop=\"url\" href=\"&#x2F;ai-ml&#x2F;2026&#x2F;05&#x2F;27&#x2F;argonne-flexes-spare-supercompute-to-build-private-ai-inference-servic&#x2F;5247362\" data-k5a-url=\"https://www.theregister.com/a/5247362\">\n        \n            <h3 itemprop=\"name headline\" class=\"al-title \">Argonne flexes spare supercompute to build private AI inference service</h3>\n    </a>\n</li>\n</ul>\n    </div>\n</div>\n<p>The system allows agents to be searched by name, by function, and by domain.</p><p>The Linux Foundation promises vendor-neutral governance for the project, which was initially developed by Infoblox.</p><p>\"The Internet already solved the discovery problem decades ago with DNS – it's fast, it scales globally, and every network on earth understands it,\" said Dane Knecht, CTO of Cloudflare, in a statement. \"By extending this proven architecture to the agentic web, DNS-AID provides the foundational routing layer that autonomous systems need to operate safely and efficiently.\"</p><p>There are various ways <a href=\"https://github.com/dns-aid/dns-aid-core/blob/main/docs/getting-started.md\">to get started</a>, the simplest of which is to install dns-aid and then issue the command dns-aid init. There is already a <a href=\"https://pypi.org/project/dns-aid/\">Python SDK</a>, and presumably it won't be long before other languages have a reference implementation.</p><p>The setup process involves publishing an SVCB record for your agent to your site's DNS zone and signing the zone with DNSSEC as a verification of provenance. Thereafter, attempts to resolve the agent record <span data-lab-font_weight=\"font-weight-bold\" class=\"font-weight-bold m-font-weight-bold\">_{agent-name}._{protocol}._agents.{your-domain}</span> will return the relevant details, which can then be verified via DNSSEC, optional JWS signatures, and DANE policy before agents connect to one another.</p><p>Several DNS providers currently offer DNS-AID support, including AWS Route 53, Azure DNS, Cloudflare, Google Cloud DNS, Infoblox NIOS and UDDI, NS1, and any standards-compliant DNS service (RFC 2136 DDNS). Developers experimenting locally have the option to use a Docker BIND9 playground.</p><p>Global consultancy McKinsey&nbsp;<a href=\"https://www.mckinsey.com/capabilities/quantumblack/our-insights/the-agentic-commerce-opportunity-how-ai-agents-are-ushering-in-a-new-era-for-consumers-and-merchants\">argues</a>&nbsp;that agent-to-agent commerce could be meaningful someday, calling it a \"projected $3 trillion to $5 trillion economic opportunity.\" We note that McKinsey's 1980s&nbsp;<a href=\"https://en.wikipedia.org/w/index.php?title=McKinsey_%26_Company&amp;oldid=1356408391\">prediction about the size of the mobile phone market</a>&nbsp;in 2000 was off by about 100x.&nbsp;®</p>\n\n    \n\n    \n</div>\n\n\n                        \n\n\n                        <div data-element-guid=\"7475c074-83b3-4e50-ab01-91bf62dcdfe6\" class=\"column articleFooter\">\n        <span class=\"tags\">\n                    <a href=\"/tag/cloudflare\" data-tag=\"cloudflare\">cloudflare</a>\n                    <a href=\"/tag/ai%20agents\" data-tag=\"ai agents\">ai agents</a>\n                    <a href=\"/tag/ai%20%2B%20ml\" data-tag=\"ai + ml\">ai + ml</a>\n                    <a href=\"/tag/ai\" data-tag=\"ai\">ai</a>\n                    <a href=\"/tag/linux%20foundation\" data-tag=\"linux foundation\">linux foundation</a>\n                    <a href=\"/tag/domain%20name%20system\" data-tag=\"domain name system\">domain name system</a>\n                    <a href=\"/tag/dns-aid\" data-tag=\"dns-aid\">dns-aid</a>\n        </span>\n    \n</div>\n\n\n                        <div class=\"row social\">\n                            <div class=\"column large-12 small-12\">\n                                    <a target=\"_blank\" href=\"https://www.facebook.com/sharer.php?u=https%3A%2F%2Fwww.theregister.com%2Fai-ml%2F2026%2F05%2F28%2Fai-agents-get-their-own-phone-directory-built-atop-dns%2F5247539\" class=\"fi-social-facebook\" aria-label=\"Share on Facebook\"></a>\n                                    <a target=\"_blank\" href=\"https://twitter.com/intent/tweet?url=https%3A%2F%2Fwww.theregister.com%2Fai-ml%2F2026%2F05%2F28%2Fai-agents-get-their-own-phone-directory-built-atop-dns%2F5247539\" class=\"fi-social-twitter\" aria-label=\"Share on X (Twitter)\"></a>\n                                    <a target=\"_blank\" href=\"https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fwww.theregister.com%2Fai-ml%2F2026%2F05%2F28%2Fai-agents-get-their-own-phone-directory-built-atop-dns%2F5247539\" class=\"fi-social-linkedin\" aria-label=\"Share on LinkedIn\"></a>\n                                    <a target=\"_blank\" href=\"https://bsky.app/intent/compose?text=AI%26nbsp%3Bagents%20get%20their%20own%20phone%20directory%20built%20atop%20DNS%0Ahttps%3A%2F%2Fwww.theregister.com%2Fai-ml%2F2026%2F05%2F28%2Fai-agents-get-their-own-phone-directory-built-atop-dns%2F5247539\" class=\"fi-social-bluesky\" aria-label=\"Share on Bluesky\"></a>\n                                    <a target=\"_blank\" href=\"https://www.reddit.com/submit?url=https%3A%2F%2Fwww.theregister.com%2Fai-ml%2F2026%2F05%2F28%2Fai-agents-get-their-own-phone-directory-built-atop-dns%2F5247539&title=AI%26nbsp%3Bagents%20get%20their%20own%20phone%20directory%20built%20atop%20DNS\" class=\"fi-social-reddit\" aria-label=\"Share on Reddit\"></a>\n                                    <a target=\"_blank\" href=\"https://api.whatsapp.com/send?text=AI%26nbsp%3Bagents%20get%20their%20own%20phone%20directory%20built%20atop%20DNS%0Ahttps%3A%2F%2Fwww.theregister.com%2Fai-ml%2F2026%2F05%2F28%2Fai-agents-get-their-own-phone-directory-built-atop-dns%2F5247539\" class=\"fi-social-whatsapp\" aria-label=\"Share on WhatsApp\"></a>\n                            </div>\n                        </div>\n\n                    </section>\n                    \n                </article>\n                <section class=\"related desktop-fullWidth mobile-fullWidth fullwidthTarget\">\n                <div data-element-guid=\"d0c67ae9-bc6c-4c61-aa6b-a98a4084c33e\" class=\"page-content\"><div data-element-guid=\"db61f234-06cb-49bc-e78b-19af86c81f91\" class=\"row small-12 large-12\" style=\"\">\n\t<div data-element-guid=\"3734c6cf-e974-45bf-899f-cf4e17c1b90e\" class=\"column google-ad small-12 large-12 small-abs-12 large-abs-12 large-12 small-12\"  style=\"\">\n\n        <span class=\"ad-label\">REG AD</span>\n        <div class=\"adunit\" id=\"labrador/thereg/article/desktop/f\" ></div>\n        <script>\n            googletag.cmd.push(function() {\n                googletag.display('labrador/thereg/article/desktop/f');\n            });\n        </script>\n</div>\n</div>\n<div data-element-guid=\"7148da8b-0308-496b-9ad2-2271aadd0520\" class=\"row small-12 large-12\" style=\"\">\n\t\n<!-- placeholder(#1) -->\n<div data-element-guid=\"7e5f3a58-10d3-4906-f977-86a8ddc653db\" class=\"front_rows small-12 large-12 small-abs-12 large-abs-12 large-6 small-12 large-12 small-12\">\n    \n    <div class=\"content fullwidthTarget\" style=\"\">\n            \n            <div data-element-guid=\"06b3fb90-9516-4852-9951-35e6c1258027\" class=\"row small-12 large-12\" style=\"\">\n\t<div data-element-guid=\"d6e8ebeb-3092-49e9-b1f2-d58d8201ff65\" id=\"markup_5253783\" class=\"markupbox column small-12 large-12 small-abs-12 large-abs-12\">\n    \n    <div class=\"content fullwidthTarget\" style=\"\">\n\n        \n\n        \n\n            <div data-tf-live=\"01KZP2YN5KJVNX946T1A89HMRW\"></div><script src=\"//embed.typeform.com/next/embed.js\"></script>\n\n        \n        \n    </div>\n</div>\n</div>\n<div data-element-guid=\"4bbed283-a2c5-4166-9180-f14b373db0ee\" class=\"row small-12 large-12 desktop-space-outsideTop-small mobile-space-outsideTop-small desktop-space-outsideBottom-medium mobile-space-outsideBottom-medium bg-tertiary color_mobile_bg-tertiary op-bg_80 color_mobile_op-bg_80 hasContentPadding mobile-hasContentPadding\" style=\"\">\n\t<div data-element-guid=\"c613a685-236f-4105-8a50-8126cec1f926\" class=\"columns small-12 large-4 small-abs-12 large-abs-4\"><div data-element-guid=\"0ab19c22-f064-4243-94db-ad9523462ffe\" class=\"row small-12 large-12\" style=\"\">\n\t<article data-element-guid=\"a9be01e0-5084-4618-a6e5-bc5051e67bc3\" class=\"column small-12 large-12 small-abs-12 large-abs-4 \" data-site-alias=\"theregister\" data-section=\"science\" data-tag=\"science,satellite,esa\" data-instance=\"5248919\" itemscope>\n    \n    <div class=\"content bg-nonary-light color_mobile_bg-nonary-light op-bg_40 color_mobile_op-bg_40 border-bg-octonary mobile_border-bg-octonary border-side-bottom mobile_border-side-bottom border_width_2 border_width_mobile_2 hasContentPadding mobile-hasContentPadding hasBorder mobile-hasBorder\" style=\"\">\n        \n            <a itemprop=\"url\" class=\"\" href=\"https://www.theregister.com/science/2026/09/01/esas-cluster-quartet-prepares-for-its-final-tango/5293619\" data-k5a-url=\"https://www.theregister.com/a/5293619\" rel=\"\">\n\n\n        <div class=\"media \">\n                \n                <figure data-element-guid=\"0ee86205-d05f-412e-8463-ef472188c588\" class=\"\" >\n    <div class=\"img fullwidthTarget\">\n        <picture>\n            <source srcset=\"https://image.theregister.com/260336.jpg?imageId=260336&panox=0.00&panoy=0.00&panow=100.00&panoh=72.88&heightx=9.66&heighty=0.00&heightw=40.48&heighth=100.00&width=706&height=318&format=webp&format=webp\" \n                width=\"353\"\n                height=\"159\"\n                media=\"(min-width: 768px)\"\n                type=\"image/webp\">    \n            <source srcset=\"https://image.theregister.com/260336.jpg?imageId=260336&panox=0.00&panoy=0.00&panow=100.00&panoh=72.88&heightx=9.66&heighty=0.00&heightw=40.48&heighth=100.00&width=706&height=318&format=webp&format=jpg\" \n                width=\"353\"\n                height=\"159\"\n                media=\"(min-width: 768px)\"\n                type=\"image/jpeg\">    \n            <source srcset=\"https://image.theregister.com/260336.jpg?imageId=260336&panox=0.00&panoy=0.00&panow=100.00&panoh=72.88&heightx=9.66&heighty=0.00&heightw=40.48&heighth=100.00&width=960&height=432&format=webp&format=webp\" \n                width=\"480\"\n                height=\"216\"\n                media=\"(max-width: 767px)\"\n                type=\"image/webp\">    \n            <source srcset=\"https://image.theregister.com/260336.jpg?imageId=260336&panox=0.00&panoy=0.00&panow=100.00&panoh=72.88&heightx=9.66&heighty=0.00&heightw=40.48&heighth=100.00&width=960&height=432&format=webp&format=jpg\" \n                width=\"480\"\n                height=\"216\"\n                media=\"(max-width: 767px)\"\n                type=\"image/jpeg\">    \n            <img src=\"https://image.theregister.com/260336.jpg?imageId=260336&panox=0.00&panoy=0.00&panow=100.00&panoh=72.88&heightx=9.66&heighty=0.00&heightw=40.48&heighth=100.00&width=960&height=432&format=webp&format=jpg\"\n                width=\"480\"\n                height=\"216\"\n                alt=\"\" \n                loading=\"lazy\"\n                style=\"\"    \n                >\n        </picture>        \n            </div>\n    \n</figure>\n\n                \n                \n                \n                \n                \n                \n                \n                \n\n            <div class=\"floatingText\">\n                    <div \nstyle=\"\"\nclass=\"kicker floating bg-primary color_mobile_bg-primary secondary color_mobile_secondary hasTextPadding mobile-hasTextPadding hasTextColor hasTextColorMobile\">\nscience\n</div>\n\n                <div class=\"labels\">\n                </div>\n            </div>\n            \n\n        </div>\n\n\n        \n                <h2 itemprop=\"headline\" \n    class=\"headline t19\"\n    style=\"\"\n    >ESA's Cluster quartet prepares for its final Tango\n</h2>\n                <p itemprop=\"description\" \n    class=\"subtitle t14\"\n    style=\"\"\n    >\n    Two-year mission bows out after 26 thanks to some heroic engineering\n</p>\n\n\n        \n\n\n\n\n        </a>\n\n        <time itemprop=\"datePublished\" datetime=\"2026-09-01T15:32:00+02:00\"></time>\n    </div>\n</article>\n<article data-element-guid=\"d5752714-6923-482a-acff-6c7be1ba49a1\" class=\"column small-12 large-12 small-abs-12 large-abs-4 \" data-site-alias=\"theregister\" data-section=\"cyber-crime\" data-tag=\"cyber-crime\" data-instance=\"5248921\" itemscope>\n    \n    <div class=\"content bg-nonary-light color_mobile_bg-nonary-light op-bg_60 color_mobile_op-bg_60 border-bg-octonary mobile_border-bg-octonary border-side-bottom mobile_border-side-bottom border_width_2 border_width_mobile_2 hasContentPadding mobile-hasContentPadding hasBorder mobile-hasBorder\" style=\"\">\n        \n            <a itemprop=\"url\" class=\"\" href=\"https://www.theregister.com/cyber-crime/2026/09/01/the-gentlemen-come-calling-as-nutex-confirms-sensitive-data-theft/5293642\" data-k5a-url=\"https://www.theregister.com/a/5293642\" rel=\"\">\n\n\n        <div class=\"media \">\n\n            <div class=\"floatingText\">\n\n                <div class=\"labels\">\n                </div>\n            </div>\n            \n\n        </div>\n\n\n        \n                <div \nstyle=\"\"\nclass=\"kicker below t14\">\ncyber-crime\n</div>\n                <h2 itemprop=\"headline\" \n    class=\"headline t19\"\n    style=\"\"\n    >The Gentlemen come calling as Nutex confirms sensitive data theft\n</h2>\n                <p itemprop=\"description\" \n    class=\"subtitle t14\"\n    style=\"\"\n    >\n    Ransomware crew threatens publication while healthcare biz assesses which records escaped\n</p>\n\n\n        \n\n\n\n\n        </a>\n\n        <time itemprop=\"datePublished\" datetime=\"2026-09-01T14:45:00+02:00\"></time>\n    </div>\n</article>\n<article data-element-guid=\"bb22098e-9b3c-4782-b74c-7711294fcf2a\" class=\"column small-12 large-12 small-abs-12 large-abs-4 \" data-site-alias=\"theregister\" data-section=\"devops\" data-tag=\"devops\" data-instance=\"5248923\" itemscope>\n    \n    <div class=\"content bg-nonary-light color_mobile_bg-nonary-light op-bg_60 color_mobile_op-bg_60 border-bg-septenary mobile_border-bg-septenary mobile_no_border_side border_width_2 border_width_mobile_2 hasContentPadding mobile-hasContentPadding hasBorder mobile-hasBorder\" style=\"\">\n        \n            <a itemprop=\"url\" class=\"\" href=\"https://www.theregister.com/devops/2026/08/06/partner-content-platform-engineering-20-your-platform-was-built-for-a-different-era-ai-just-exposed-it/5283237\" data-k5a-url=\"https://www.theregister.com/a/5283237\" rel=\"sponsored \">\n\n\n        <div class=\"media \">\n\n            <div class=\"floatingText\">\n\n                <div class=\"labels\">\n                </div>\n            </div>\n            \n\n        </div>\n\n\n        \n                <div \nstyle=\"\"\nclass=\"kicker below t14\">\ndevops\n</div>\n                <h2 itemprop=\"headline\" \n    class=\"headline t19\"\n    style=\"\"\n    >Platform Engineering 2.0: your platform was built for a different era. AI just exposed it\n</h2>\n                <p itemprop=\"description\" \n    class=\"subtitle t14\"\n    style=\"\"\n    >\n    PARTNER CONTENT: Platform engineering won the argument. Now it has to grow up fast and evolve for the AI era.\n</p>\n\n\n        \n\n\n\n\n        </a>\n\n        <time itemprop=\"datePublished\" datetime=\"2026-08-06T17:00:00+02:00\"></time>\n    </div>\n</article>\n</div>\n</div><div data-element-guid=\"f6ddbf86-659e-49fc-a8b1-49335cdab812\" class=\"columns small-12 large-4 small-abs-12 large-abs-4\"><div data-element-guid=\"0bc148e8-a10f-48d0-a80c-9cb123d20afe\" class=\"row small-12 large-12\" style=\"\">\n\t<article data-element-guid=\"757c9104-16dd-484d-b68d-5426da1adfef\" class=\"column small-12 large-12 small-abs-12 large-abs-4 \" data-site-alias=\"theregister\" data-section=\"security\" data-tag=\"security\" data-instance=\"5248925\" itemscope>\n    \n    <div class=\"content bg-nonary-light color_mobile_bg-nonary-light op-bg_60 color_mobile_op-bg_60 border-bg-octonary mobile_border-bg-octonary border-side-bottom mobile_border-side-bottom border_width_2 border_width_mobile_2 hasContentPadding mobile-hasContentPadding hasBorder mobile-hasBorder\" style=\"\">\n        \n            <a itemprop=\"url\" class=\"\" href=\"https://www.theregister.com/security/2026/09/01/33-hour-bgp-hijack-of-softaculous-traffic-prompts-security-scramble/5293608\" data-k5a-url=\"https://www.theregister.com/a/5293608\" rel=\"\">\n\n\n        <div class=\"media \">\n\n            <div class=\"floatingText\">\n\n                <div class=\"labels\">\n                </div>\n            </div>\n            \n\n        </div>\n\n\n        \n                <div \nstyle=\"\"\nclass=\"kicker below t14\">\nSecurity\n</div>\n                <h2 itemprop=\"headline\" \n    class=\"headline t19\"\n    style=\"\"\n    >33-hour BGP hijack of Softaculous traffic prompts security scramble\n</h2>\n                <p itemprop=\"description\" \n    class=\"subtitle t14\"\n    style=\"\"\n    >\n    Hosting software vendor tells customers to reset credentials and hunt for malicious packages\n</p>\n\n\n        \n\n\n\n\n        </a>\n\n        <time itemprop=\"datePublished\" datetime=\"2026-09-01T14:04:00+02:00\"></time>\n    </div>\n</article>\n<article data-element-guid=\"9e6258d2-802b-484c-8eee-51bc92196816\" class=\"column small-12 large-12 small-abs-12 large-abs-4 \" data-site-alias=\"theregister\" data-section=\"columnists\" data-tag=\"hacking,bill gates,ai and ml,columnists,microsoft\" data-instance=\"5248927\" itemscope>\n    \n    <div class=\"content bg-nonary-light color_mobile_bg-nonary-light op-bg_40 color_mobile_op-bg_40 border-bg-octonary mobile_border-bg-octonary border-side-bottom mobile_border-side-bottom border_width_2 border_width_mobile_2 hasContentPadding mobile-hasContentPadding hasBorder mobile-hasBorder\" style=\"\">\n        \n            <a itemprop=\"url\" class=\"\" href=\"https://www.theregister.com/columnists/2026/09/01/the-teen-bill-gates-has-answers-to-the-ai-pocalypse-the-70-year-old-gates-has-forgotten/5293201\" data-k5a-url=\"https://www.theregister.com/a/5293201\" rel=\"\">\n\n\n        <div class=\"media \">\n                \n                <figure data-element-guid=\"1958528f-18fc-4f52-8a68-18ef1aa447d8\" class=\"\" >\n    <div class=\"img fullwidthTarget\">\n        <picture>\n            <source srcset=\"https://image.theregister.com/154258.jpg?imageId=154258&panox=0.00&panoy=9.85&panow=100.00&panoh=63.55&heightx=16.85&heighty=0.00&heightw=46.67&heighth=100.00&width=706&height=318&format=webp&format=webp\" \n                width=\"353\"\n                height=\"159\"\n                media=\"(min-width: 768px)\"\n                type=\"image/webp\">    \n            <source srcset=\"https://image.theregister.com/154258.jpg?imageId=154258&panox=0.00&panoy=9.85&panow=100.00&panoh=63.55&heightx=16.85&heighty=0.00&heightw=46.67&heighth=100.00&width=706&height=318&format=webp&format=jpg\" \n                width=\"353\"\n                height=\"159\"\n                media=\"(min-width: 768px)\"\n                type=\"image/jpeg\">    \n            <source srcset=\"https://image.theregister.com/154258.jpg?imageId=154258&panox=0.00&panoy=9.85&panow=100.00&panoh=63.55&heightx=16.85&heighty=0.00&heightw=46.67&heighth=100.00&width=960&height=432&format=webp&format=webp\" \n                width=\"480\"\n                height=\"216\"\n                media=\"(max-width: 767px)\"\n                type=\"image/webp\">    \n            <source srcset=\"https://image.theregister.com/154258.jpg?imageId=154258&panox=0.00&panoy=9.85&panow=100.00&panoh=63.55&heightx=16.85&heighty=0.00&heightw=46.67&heighth=100.00&width=960&height=432&format=webp&format=jpg\" \n                width=\"480\"\n                height=\"216\"\n                media=\"(max-width: 767px)\"\n                type=\"image/jpeg\">    \n            <img src=\"https://image.theregister.com/154258.jpg?imageId=154258&panox=0.00&panoy=9.85&panow=100.00&panoh=63.55&heightx=16.85&heighty=0.00&heightw=46.67&heighth=100.00&width=960&height=432&format=webp&format=jpg\"\n                width=\"480\"\n                height=\"216\"\n                alt=\"\" \n                loading=\"lazy\"\n                style=\"\"    \n                >\n        </picture>        \n            </div>\n    \n</figure>\n\n                \n                \n                \n                \n                \n                \n                \n                \n\n            <div class=\"floatingText\">\n                    <div \nstyle=\"\"\nclass=\"kicker floating bg-primary color_mobile_bg-primary secondary color_mobile_secondary hasTextPadding mobile-hasTextPadding hasTextColor hasTextColorMobile\">\nCOLUMNISTS\n</div>\n\n                <div class=\"labels\">\n                </div>\n            </div>\n            \n\n        </div>\n\n\n        \n                <h2 itemprop=\"headline\" \n    class=\"headline t19\"\n    style=\"\"\n    >The teen Bill Gates has answers to the AI-pocalypse the 70-year-old Gates has forgotten\n</h2>\n                <p itemprop=\"description\" \n    class=\"subtitle t14\"\n    style=\"\"\n    >\n    Hacking education to thrive in the AI world is the first and best step in keeping control\n</p>\n\n\n        \n\n\n\n\n        </a>\n\n        <time itemprop=\"datePublished\" datetime=\"2026-09-01T10:30:00+02:00\"></time>\n    </div>\n</article>\n<article data-element-guid=\"b8d1c518-25f5-4e1e-b9b0-92bec0bde645\" class=\"column small-12 large-12 small-abs-12 large-abs-4 \" data-site-alias=\"theregister\" data-section=\"ai and ml\" data-tag=\"developer,ai and ml,token usage,red hat,ibm,open source,exclusive\" data-instance=\"5248929\" itemscope>\n    \n    <div class=\"content bg-nonary-light color_mobile_bg-nonary-light op-bg_60 color_mobile_op-bg_60 border-bg-octonary mobile_border-bg-octonary border-side-bottom mobile_border-side-bottom border_width_2 border_width_mobile_2 hasContentPadding mobile-hasContentPadding hasBorder mobile-hasBorder\" style=\"\">\n        \n            <a itemprop=\"url\" class=\"\" href=\"https://www.theregister.com/ai-and-ml/2026/09/01/insider-red-hat-is-capping-devs-bot-budgets/5292620\" data-k5a-url=\"https://www.theregister.com/a/5292620\" rel=\"\">\n\n\n        <div class=\"media \">\n\n            <div class=\"floatingText\">\n\n                <div class=\"labels\">\n                </div>\n            </div>\n            \n\n        </div>\n\n\n        \n                <div \nstyle=\"\"\nclass=\"kicker below t14\">\nai and ml\n</div>\n                <h2 itemprop=\"headline\" \n    class=\"headline t19\"\n    style=\"\"\n    >Insider: Red Hat is capping devs' bot budgets\n</h2>\n                <p itemprop=\"description\" \n    class=\"subtitle t14\"\n    style=\"\"\n    >\n    And no sharing your allowance! What do you think we are, communists?\n</p>\n\n\n        \n\n\n\n\n        </a>\n\n        <time itemprop=\"datePublished\" datetime=\"2026-09-01T12:45:00+02:00\"></time>\n    </div>\n</article>\n</div>\n</div>\n<!-- placeholder(#1) -->\n<div data-element-guid=\"b0b79df7-305b-4d35-9581-2ac153eddd40\" \n    id=\"toplist_5248931\" \n    class=\"column toplist layout_vertical small-12 large-4 small-abs-12 large-abs-4\">\n    \n    <div class=\"content bg-secondary color_mobile_bg-secondary hasContentPadding mobile-hasContentPadding\" \n        style=\"--active-tab-background-color: var(--bg-primary);\">\n\n\n                <h3 class=\"headline t32 font-weight-bold m-font-weight-bold bg-primary color_mobile_bg-primary align-center mobile_text_align_align-center font-Roboto hasTextPadding mobile-hasTextPadding\">\n                    TOP STORIES\n                </h3>\n\n\n\n        <ul class=\"toplist-results toplist-counter\">\n                <li\n                data-section=\"research\"\n                data-tags=\"ai and ml,anthropic,prompt injection,research,security\"\n                data-hostname=\"www.theregister.com\"\n                data-source-display-name=\"www.theregister.com\" \n                data-tab-content=\"\">\n                    <figure class=\"media paywall-position-hidePaywallLabel\">\n                        <a href=\"/research/2026/08/28/researcher-shows-how-claude-code-can-be-tricked-simply-by-asking-it-to-summarize-a-website/5293372\">\n                            <img src=\"//image.theregister.com/5222549.jpg?imageId=5222549&x=0&y=0&cropw=100&croph=100&panox=0&panoy=0&panow=100&panoh=100&width=70&height=60\" alt=\"\">\n                        </a>\n                    </figure>\n                    <div class=\"text kicker-position-hideKicker paywall-position-hidePaywallLabel\">\n                        <a href=\"/research/2026/08/28/researcher-shows-how-claude-code-can-be-tricked-simply-by-asking-it-to-summarize-a-website/5293372\">\n                            <div class=\"kicker-paywall-container\">\n                                <span class=\"kicker\">security</span>\n                            </div>\n                            <h4>Researcher shows how Claude Code can be tricked simply by asking it to summarize a website</h4>\n                            \n                        </a>\n                    </div>\n                </li>\n                <li\n                data-section=\"virtualization\"\n                data-tags=\"broadcom,open source,virtualization,vmware,vmware explore 2026\"\n                data-hostname=\"www.theregister.com\"\n                data-source-display-name=\"www.theregister.com\" \n                data-tab-content=\"\">\n                    <figure class=\"media paywall-position-hidePaywallLabel\">\n                        <a href=\"/virtualization/2026/08/31/broadcom-pledges-to-lock-down-open-source-python-java-libraries/5293454\">\n                            <img src=\"//image.theregister.com/5258559.jpg?imageId=5258559&x=0&y=0&cropw=100&croph=100&panox=0&panoy=0&panow=100&panoh=100&width=70&height=60\" alt=\"\">\n                        </a>\n                    </figure>\n                    <div class=\"text kicker-position-hideKicker paywall-position-hidePaywallLabel\">\n                        <a href=\"/virtualization/2026/08/31/broadcom-pledges-to-lock-down-open-source-python-java-libraries/5293454\">\n                            <div class=\"kicker-paywall-container\">\n                                <span class=\"kicker\">virtualization</span>\n                            </div>\n                            <h4>Broadcom pledges to lock down open source Python, Java libraries</h4>\n                            \n                        </a>\n                    </div>\n                </li>\n                <li\n                data-section=\"security\"\n                data-tags=\"australia post,password management,security\"\n                data-hostname=\"www.theregister.com\"\n                data-source-display-name=\"www.theregister.com\" \n                data-tab-content=\"\">\n                    <figure class=\"media paywall-position-hidePaywallLabel\">\n                        <a href=\"/security/2026/08/24/security-vets-rally-around-4-paper-password-books-for-sale-in-australia/5291234\">\n                            <img src=\"//image.theregister.com/5269504.jpg?imageId=5269504&x=0&y=0&cropw=100&croph=100&panox=0&panoy=0&panow=100&panoh=100&width=70&height=60\" alt=\"\">\n                        </a>\n                    </figure>\n                    <div class=\"text kicker-position-hideKicker paywall-position-hidePaywallLabel\">\n                        <a href=\"/security/2026/08/24/security-vets-rally-around-4-paper-password-books-for-sale-in-australia/5291234\">\n                            <div class=\"kicker-paywall-container\">\n                                <span class=\"kicker\">security</span>\n                            </div>\n                            <h4>Security vets rally around $4 paper password books for sale in Australia</h4>\n                            \n                        </a>\n                    </div>\n                </li>\n                <li\n                data-section=\"science\"\n                data-tags=\"cooling,datacenter,science,sustainability\"\n                data-hostname=\"www.theregister.com\"\n                data-source-display-name=\"www.theregister.com\" \n                data-tab-content=\"\">\n                    <figure class=\"media paywall-position-hidePaywallLabel\">\n                        <a href=\"/science/2026/08/28/german-japanese-researchers-invent-electricity-free-tech-that-could-cool-datacenters/5293364\">\n                            <img src=\"//image.theregister.com/230908.jpg?imageId=230908&x=0&y=0&cropw=100&croph=100&panox=0&panoy=0&panow=100&panoh=100&width=70&height=60\" alt=\"\">\n                        </a>\n                    </figure>\n                    <div class=\"text kicker-position-hideKicker paywall-position-hidePaywallLabel\">\n                        <a href=\"/science/2026/08/28/german-japanese-researchers-invent-electricity-free-tech-that-could-cool-datacenters/5293364\">\n                            <div class=\"kicker-paywall-container\">\n                                <span class=\"kicker\">science</span>\n                            </div>\n                            <h4>German-Japanese researchers invent electricity-free tech that could cool datacenters</h4>\n                            \n                        </a>\n                    </div>\n                </li>\n                <li\n                data-section=\"security\"\n                data-tags=\"ico,marketing,security\"\n                data-hostname=\"www.theregister.com\"\n                data-source-display-name=\"www.theregister.com\" \n                data-tab-content=\"\">\n                    <figure class=\"media paywall-position-hidePaywallLabel\">\n                        <a href=\"/security/2026/08/27/nuisance-call-blocker-fined-190k-for-being-a-nuisance-caller/5292888\">\n                            <img src=\"//image.theregister.com/230946.jpg?imageId=230946&x=0&y=0&cropw=100&croph=100&panox=0&panoy=0&panow=100&panoh=100&width=70&height=60\" alt=\"\">\n                        </a>\n                    </figure>\n                    <div class=\"text kicker-position-hideKicker paywall-position-hidePaywallLabel\">\n                        <a href=\"/security/2026/08/27/nuisance-call-blocker-fined-190k-for-being-a-nuisance-caller/5292888\">\n                            <div class=\"kicker-paywall-container\">\n                                <span class=\"kicker\">Legal</span>\n                            </div>\n                            <h4>Nuisance-call blocker fined £190k for being a nuisance caller</h4>\n                            \n                        </a>\n                    </div>\n                </li>\n                <li\n                data-section=\"ai and ml\"\n                data-tags=\"ai and ml,ai inference,apple,apple silicon,mac mini,mac studio\"\n                data-hostname=\"www.theregister.com\"\n                data-source-display-name=\"www.theregister.com\" \n                data-tab-content=\"\">\n                    <figure class=\"media paywall-position-hidePaywallLabel\">\n                        <a href=\"/ai-and-ml/2026/08/25/apple-defies-memory-shortage-with-new-mac-minis/5292406\">\n                            <img src=\"//image.theregister.com/5292415.jpg?imageId=5292415&x=0&y=0&cropw=100&croph=71.67&panox=0&panoy=0&panow=100&panoh=71.67&width=70&height=60\" alt=\"\">\n                        </a>\n                    </figure>\n                    <div class=\"text kicker-position-hideKicker paywall-position-hidePaywallLabel\">\n                        <a href=\"/ai-and-ml/2026/08/25/apple-defies-memory-shortage-with-new-mac-minis/5292406\">\n                            <div class=\"kicker-paywall-container\">\n                                <span class=\"kicker\">AI and ml</span>\n                            </div>\n                            <h4>Apple defies memory shortage with new Mac minis</h4>\n                            \n                        </a>\n                    </div>\n                </li>\n        </ul>\n    </div>\n</div>\n\n<script type=\"text/javascript\">\n    (function() {\n        function initializeToplistTabs_5248931() {\n            const container = document.getElementById('toplist_5248931');\n            if (!container) return;\n\n            const nav = container.querySelector('.tab-navigation');\n            const contentItems = container.querySelectorAll('ul > li:not(.no-results)');\n            const firstTab = nav ? nav.querySelector('.tab') : null;\n\n            const activeTab = nav ? nav.querySelector('.tab.active') : null;\n            if (nav && !activeTab) {\n                handleTabClick(firstTab);\n            }\n\n            if (!firstTab || contentItems.length === 0) {\n                // If there are no tabs, make sure all content is visible.\n                contentItems.forEach(item => item.style.display = '');\n                return;\n            }\n\n            // This function handles the filtering logic.\n            function handleTabClick(clickedTab) {\n                if (!clickedTab) return;\n                const targetDomain = clickedTab.getAttribute('data-domain');\n                const allTabs = nav.querySelectorAll('.tab');\n                allTabs.forEach(tab => tab.classList.remove('active'));\n                clickedTab.classList.add('active');\n\n                // Show or hide content items based on the selected tab\n                contentItems.forEach(item => {\n                    const tabMode = 'default';\n                    const itemTabContent = item.getAttribute('data-tab-content');\n\n                    if (tabMode === 'hostname' || tabMode === 'tags') {\n                        if (itemTabContent && itemTabContent.trim().toLowerCase() === targetDomain.trim().toLowerCase()) {\n                            item.style.display = '';\n                        } else {\n                            item.style.display = 'none';\n                        }\n                    } else {\n                        item.style.display = '';\n                    }\n                });\n            }\n\n            // Use a single event listener on the navigation container.\n            if (nav) {\n                nav.addEventListener('click', function(event) {\n                    event.preventDefault();\n                    const clickedTab = event.target.closest('.tab');\n                    if (clickedTab) {\n                        handleTabClick(clickedTab);\n                    }\n                });\n            }\n        }\n\n        // Make function globally accessible for editor\n        window.initializeToplistTabs_5248931 = initializeToplistTabs_5248931;\n\n        // Initialize on load\n        if (document.readyState === 'loading') {\n            document.addEventListener('DOMContentLoaded', initializeToplistTabs_5248931);\n        } else {\n            initializeToplistTabs_5248931();\n        }\n    })();\n</script>\n\n</div>\n<div data-element-guid=\"ea3e891d-a254-4fa5-9e86-0042e6799ec6\" class=\"row small-12 large-12 desktop-space-outsideTop-medium mobile-space-outsideTop-medium\" style=\"\">\n\t\n<!-- placeholder(#1) -->\n<div data-element-guid=\"5867f2f9-d789-4ebd-ac97-87265a1e9759\" class=\"column articlesByTag toplist small-12 large-4 small-abs-12 large-abs-4\">\n    \n    <div class=\"content \" style=\"\">\n                <h3 itemprop=\"headline\" class=\"t30 tm27 font-weight-bold m-font-weight-bold bg-black color_mobile_bg-black font-Roboto underline hasTextPadding mobile-hasTextPadding\" style=\"\"><a href=\"https://beta.theregister.com/tag/ai\" aria-label=\"AI\">AI</a></h3>\n            <ul>\n                    <li>\n                        <a href=\"/systems/2026/08/31/nvidia-is-building-an-ip-licensing-empire-on-the-back-of-nvlink/5293530\">\n                            <div class=\"text-container\">                    \n                                    <p class=\"abt-kicker\">SYSTEMS</p>\n                                    <h4 class=\"abt-title\">Nvidia is building an IP licensing empire on the back of NVLink</h4>\n                                    <p class=\"abt-subtitle\">Even when you think you're not buying Nvidia, you might still be buying Nvidia</p>\n                            </div>\n                        </a>\n                    </li>\n                    <li>\n                        <a href=\"/ai-and-ml/2026/08/31/energy-biz-sse-smacked-around-in-court-by-a-guy-and-ai/5293391\">\n                            <div class=\"text-container\">                    \n                                    <p class=\"abt-kicker\">ai and ml</p>\n                                    <h4 class=\"abt-title\">Energy biz SSE smacked around in court by a guy and AI</h4>\n                                    <p class=\"abt-subtitle\">Company's three year pursuit of debt from non-existent address ended by Oxford judge</p>\n                            </div>\n                        </a>\n                    </li>\n                    <li>\n                        <a href=\"/security/2026/08/28/industry-that-built-the-problem-offers-to-sell-you-the-solution/5293207\">\n                            <div class=\"text-container\">                    \n                                    <p class=\"abt-kicker\">security</p>\n                                    <h4 class=\"abt-title\">Industry that built the problem offers to sell you the solution</h4>\n                                    <p class=\"abt-subtitle\">100+ tech giants warn AI attacks are coming, skip the part where they pay for defenses</p>\n                            </div>\n                        </a>\n                    </li>\n                    <li>\n                        <a href=\"/systems/2026/08/27/nvidia-and-cerebras-are-selling-performance-their-customers-will-probably-never-see/5293117\">\n                            <div class=\"text-container\">                    \n                                    <p class=\"abt-kicker\">SYSTEMS</p>\n                                    <h4 class=\"abt-title\">Nvidia and Cerebras are selling performance their customers will (probably) never see</h4>\n                                    <p class=\"abt-subtitle\">Touting batch 1 token generation is a bit like boasting about the top speed of your car</p>\n                            </div>\n                        </a>\n                    </li>\n                    <li>\n                        <a href=\"/software/2026/08/27/google-forces-android-apps-to-use-memory-more-wisely-as-rampocalypse-rages/5293071\">\n                            <div class=\"text-container\">                    \n                                    <p class=\"abt-kicker\">software</p>\n                                    <h4 class=\"abt-title\">Google forces Android apps to use memory more wisely as RAMpocalypse rages</h4>\n                                    <p class=\"abt-subtitle\">No one can afford RAM anymore, so we're requiring devs to mind memory usage</p>\n                            </div>\n                        </a>\n                    </li>\n            </ul>\n    </div>\n</div>\n\n\n<!-- placeholder(#2) -->\n<div data-element-guid=\"e5d90dd5-e92e-472a-9948-b2389698e07e\" class=\"column articlesByTag toplist small-12 large-4 small-abs-12 large-abs-4\">\n    \n    <div class=\"content \" style=\"\">\n                <h3 itemprop=\"headline\" class=\"t30 tm27 font-weight-bold m-font-weight-bold bg-black color_mobile_bg-black font-Roboto underline hasTextPadding mobile-hasTextPadding\" style=\"\"><a href=\"https://beta.theregister.com/security\" aria-label=\"InfoSec\">Infosec</a></h3>\n            <ul>\n                    <li>\n                        <a href=\"/security/2026/03/22/russians-posing-as-signal-support-to-launch-phishing-raids/5221189\">\n                            <div class=\"text-container\">                    \n                                    <p class=\"abt-kicker\">Security</p>\n                                    <h4 class=\"abt-title\">Russians are posing as Signal support to launch phishing attacks</h4>\n                                    <p class=\"abt-subtitle\">PLUS: US takes down Iranian propaganda sites; Marketing company asks 'Why Do We Have Your Information?' And more!</p>\n                            </div>\n                        </a>\n                    </li>\n                    <li>\n                        <a href=\"/security/2025/07/21/microsoft-warns-on-prem-sharepoint-users-of-a-zero-day/550805\">\n                            <div class=\"text-container\">                    \n                                    <p class=\"abt-kicker\">Security</p>\n                                    <h4 class=\"abt-title\">Microsoft patches failed to fix on-prem SharePoint, which is now under zero-day attack</h4>\n                                    <p class=\"abt-subtitle\">PLUS: China upgrades smartphone surveillance tools; Ring eases anti-snooping stance; and more</p>\n                            </div>\n                        </a>\n                    </li>\n                    <li>\n                        <a href=\"/special-features/2024/08/12/def-con-launches-public-policy-report-volunteer-program/408600\">\n                            <div class=\"text-container\">                    \n                                    <p class=\"abt-kicker\">Black Hat and DEF CON</p>\n                                    <h4 class=\"abt-title\">DEF CON Franklin project enlists hackers to harden critical infrastructure</h4>\n                                    <p class=\"abt-subtitle\">Voting village reports have been so successful, says Jeff Moss, that the whole of DEF CON will now be included</p>\n                            </div>\n                        </a>\n                    </li>\n                    <li>\n                        <a href=\"/security/2024/08/07/eqt-buys-majority-share-in-cybersecurity-outfit-acronis/853853\">\n                            <div class=\"text-container\">                    \n                                    <p class=\"abt-kicker\">Security</p>\n                                    <h4 class=\"abt-title\">EQT buys majority share in Swiss cybersecurity biz Acronis</h4>\n                                    <p class=\"abt-subtitle\">Went at equivalent of $3.5B+ valuation for entire firm, though portion sold not specified</p>\n                            </div>\n                        </a>\n                    </li>\n                    <li>\n                        <a href=\"/special-features/2024/05/08/10-years-since-the-first-corp-ransomware-and-no-end-in-sight/1259096\">\n                            <div class=\"text-container\">                    \n                                    <p class=\"abt-kicker\">Malware Month</p>\n                                    <h4 class=\"abt-title\">Ten years since the first corp ransomware, Mikko Hyppönen sees no end in sight</h4>\n                                    <p class=\"abt-subtitle\">On the plus side, infosec's a good bet for a long, stable career</p>\n                            </div>\n                        </a>\n                    </li>\n            </ul>\n    </div>\n</div>\n\n\n<!-- placeholder(#3) -->\n<div data-element-guid=\"83da923f-416e-4549-8d8f-1b9302e80c05\" class=\"column articlesByTag toplist small-12 large-4 small-abs-12 large-abs-4\">\n    \n    <div class=\"content \" style=\"\">\n                <h3 itemprop=\"headline\" class=\"t30 tm27 font-weight-bold m-font-weight-bold bg-black color_mobile_bg-black underline hasTextPadding mobile-hasTextPadding\" style=\"\"><a href=\"https://beta.theregister.com/tag/FOSS\">FOSS</a></h3>\n            <ul>\n                    <li>\n                        <a href=\"/ai-and-ml/2026/08/30/debian-votes-to-let-contributors-code-with-ai/5293421\">\n                            <div class=\"text-container\">                    \n                                    <h4 class=\"abt-title\">Debian votes to let contributors code with AI </h4>\n                                    <p class=\"abt-subtitle\">Disclosure optional, quality mandatory</p>\n                            </div>\n                        </a>\n                    </li>\n                    <li>\n                        <a href=\"/applications/2026/08/28/libreoffice-268-is-out-local-first-and-with-no-ai/5293301\">\n                            <div class=\"text-container\">                    \n                                    <h4 class=\"abt-title\">LibreOffice 26.8 is out – local first, and with no AI</h4>\n                                    <p class=\"abt-subtitle\">It looks a bit clunky, but it does the job – and on your own computer</p>\n                            </div>\n                        </a>\n                    </li>\n                    <li>\n                        <a href=\"/os-platforms/2026/08/28/keepers-of-noble-numbats-to-be-offered-a-resolute-racoon-ubuntu-26041-is-coming/5293277\">\n                            <div class=\"text-container\">                    \n                                    <h4 class=\"abt-title\">Keepers of Noble Numbats to be offered a Resolute Racoon: Ubuntu 26.04.1 is coming</h4>\n                                    <p class=\"abt-subtitle\">GRUB's up for furry new update</p>\n                            </div>\n                        </a>\n                    </li>\n                    <li>\n                        <a href=\"/os-platforms/2026/08/27/aros-the-foss-recreation-of-amigaos-comes-to-raspberry-pi/5292523\">\n                            <div class=\"text-container\">                    \n                                    <h4 class=\"abt-title\">AROS, the FOSS recreation of AmigaOS, comes to Raspberry Pi</h4>\n                                    <p class=\"abt-subtitle\">Plus: new official Amiga-branded hardware is coming</p>\n                            </div>\n                        </a>\n                    </li>\n                    <li>\n                        <a href=\"/os-platforms/2026/08/24/linus-torvalds-banishes-linux-bug-with-a-bot/5291784\">\n                            <div class=\"text-container\">                    \n                                    <h4 class=\"abt-title\">Emperor Penguin Linus Torvalds banishes a bug – with a bot</h4>\n                                    <p class=\"abt-subtitle\">The lad himself finds and fixes a tricky one… or does he?</p>\n                            </div>\n                        </a>\n                    </li>\n                    <li>\n                        <a href=\"/columnists/2026/07/27/foss-smashed-one-microsoft-monopoly-after-20-years-of-failure-its-time-to-smash-another/5278040\">\n                            <div class=\"text-container\">                    \n                                    <h4 class=\"abt-title\">FOSS smashed one Microsoft monopoly. After 20 years of failure, it's time to smash another</h4>\n                                    <p class=\"abt-subtitle\">Word up</p>\n                            </div>\n                        </a>\n                    </li>\n            </ul>\n    </div>\n</div>\n\n</div>\n\n    </div>\n</div>\n\n</div>\n</div>\n\n                </section>\n            </main>\n            \n            \n        </section>\n\n            <template class=\"definitionTemplate\">\n                <div class=\"definitionPopup\">\n                    <div class=\"definitionInfo\">\n                        <p></p>\n                        <span></span>\n                        <button class=\"definitionClose\">&#10005;</button>\n                    </div>\n                </div>\n            </template>\n\n\n        <script>\n                (function() {\n                    const audioPlayers = document.querySelectorAll('.dacInlineAudio');\n                    for (const audioPlayer of audioPlayers) {\n                        window.dachserData.push('audioInline', audioPlayer);\n                    }\n\n                    window.addEventListener('load', function() {\n                        if (window.Dac && window.Dac.Definition) {\n                            const definition = new Dac.Definition();\n                            definition.setup();   \n                        }\n                    });\n                })();\n        </script>\n            <script>\n                window.lab_article_data = window.lab_article_data || {};\n                if (lab_article_data[5247539]) {\n                    lab_article_data[5247539].tagsString = 'cloudflare,ai agents,ai + ml,ai,linux foundation,domain name system,dns-aid';\n                    lab_article_data[5247539].section = 'ai + ml';\n                    lab_article_data[5247539].pageType = 'article';\n                } else {\n                    lab_article_data[5247539] = {\n                        tagsString: 'cloudflare,ai agents,ai + ml,ai,linux foundation,domain name system,dns-aid'\n                        , section: 'ai + ml'\n                        , pageType: 'article'\n                    };\n                    \n                }\n            </script>\n\n        \n\n<footer class=\"page\">\n    <div data-element-guid=\"1b2aade5-2711-4202-83e0-c1ee17a28b9b\" class=\"row-section desktop-space-outsideBottom-none mobile-space-outsideBottom-none bg-quaternary color_mobile_bg-quaternary hasContentPadding mobile-hasContentPadding\" style=\"\">\n<div class=\"row small-12 large-12 desktop-space-outsideBottom-none mobile-space-outsideBottom-none desktop-space-insideTop-none mobile-space-insideTop-none bg-quaternary color_mobile_bg-quaternary hasContentPadding mobile-hasContentPadding\" style=\"\">\n\t<div data-element-guid=\"342e5400-b668-48dd-b811-7f53040cac1f\" id=\"markup_102602\" class=\"markupbox column small-12 large-12 small-abs-12 large-abs-12 desktop-fullWidth mobile-fullWidth\">\n    <style></style>\n    <div class=\"content fullwidthTarget bg-quaternary color_mobile_bg-quaternary hasContentPadding mobile-hasContentPadding\" style=\"\">\n\n        \n\n        \n\n            <div style=\"display: flex; justify-content: center; margin-top: -0.5rem; margin-bottom: -0.5rem;\">\n    <img src=\"https://www.theregister.com/files/2025/10/15/The_register_full_icon_white.svg\" alt=\"Logo\" width=\"120\" style=\"margin-bottom: 0.25rem;\"> \n    <p style=\"font-family: Roboto; font-size: 14px; margin-bottom: 0.25rem; margin-left: 0.5rem; font-weight: 700;\">Biting the hand that feeds IT</p>\n</div>\n\n        \n        \n    </div>\n</div>\n</div>\n</div>\n<div data-element-guid=\"652fb46f-93f4-42cd-8110-7307542d326a\" class=\"row-section desktop-space-outsideTop-none mobile-space-outsideTop-none bg-quinary color_mobile_bg-quinary hasContentPadding mobile-hasContentPadding\" style=\"\">\n<div class=\"row small-12 large-12 desktop-space-outsideTop-none mobile-space-outsideTop-none bg-quinary color_mobile_bg-quinary hasContentPadding mobile-hasContentPadding\" style=\"\">\n\t<article data-element-guid=\"eb364ced-8795-41d6-ac71-8c68f9bb5aa7\" class=\"column small-12 large-2 small-abs-12 large-abs-2 \" data-site-alias=\"\" data-section=\"\" data-instance=\"100744\" itemscope>\n    <style></style>\n    <div class=\"content\" style=\"\">\n        \n\n\n        <div class=\"media \">\n\n            <div class=\"floatingText\">\n\n                <div class=\"labels\">\n                </div>\n            </div>\n            \n\n        </div>\n\n\n        \n                <h2 itemprop=\"headline\" \n    class=\"headline t16 tm16 font-Roboto\"\n    style=\"\"\n    >About Us\n</h2>\n                <p itemprop=\"description\" \n    class=\"subtitle t14 tm14 font-Roboto\"\n    style=\"\"\n    >\n    <a href=\"https://www.theregister.com/profile/contact\" aria-label=\"Contact our reporters securely and safely\" data-lab-underline=\"\" class=\"\">Contact us</a><br><a href=\"https://situationpublishing.com/contact/\" target=\"_blank\">Advertise with us</a><br><a href=\"https://www.theregister.com/profile/about_the_register\">Who we are</a><br><a href=\"https://account.theregister.com/register/?product=reg_weekly\">Newsletter</a>\n</p>\n\n\n        \n\n\n\n\n        \n\n        <time itemprop=\"datePublished\" datetime=\"\"></time>\n    </div>\n</article>\n<article data-element-guid=\"93b271a3-0687-4bc8-8aa0-f8608675b096\" class=\"column small-12 large-2 small-abs-12 large-abs-2 \" data-site-alias=\"\" data-section=\"\" data-instance=\"100745\" itemscope>\n    <style></style>\n    <div class=\"content\" style=\"\">\n        \n\n\n        <div class=\"media \">\n\n            <div class=\"floatingText\">\n\n                <div class=\"labels\">\n                </div>\n            </div>\n            \n\n        </div>\n\n\n        \n                <h2 itemprop=\"headline\" \n    class=\"headline t16 tm16 font-Roboto\"\n    style=\"\"\n    >Our Websites\n</h2>\n                <p itemprop=\"description\" \n    class=\"subtitle t14 tm14 font-Roboto\"\n    style=\"\"\n    >\n    <a href=\"https://www.nextplatform.com/\" target=\"_blank\">The Next Platform</a><br><a href=\"https://devclass.com/\" target=\"_blank\">DevClass</a><br><a href=\"https://blocksandfiles.com/\" target=\"_blank\">Blocks and Files</a><br><a href=\"https://situationpublishing.com/\" target=\"_blank\">Situation Publishing</a>\n</p>\n\n\n        \n\n\n\n\n        \n\n        <time itemprop=\"datePublished\" datetime=\"\"></time>\n    </div>\n</article>\n<article data-element-guid=\"95965a77-7ca7-4314-ad6b-45263a326748\" class=\"column small-12 large-2 small-abs-12 large-abs-2 \" data-site-alias=\"\" data-section=\"\" data-instance=\"100746\" itemscope>\n    <style></style>\n    <div class=\"content mobile_no_border_color mobile_no_border_side\" style=\"\">\n        \n\n\n        <div class=\"media \">\n\n            <div class=\"floatingText\">\n\n                <div class=\"labels\">\n                </div>\n            </div>\n            \n\n        </div>\n\n\n        \n                <h2 itemprop=\"headline\" \n    class=\"headline t16 tm16\"\n    style=\"\"\n    >Your Privacy\n</h2>\n                <p itemprop=\"description\" \n    class=\"subtitle t14 tm14 font-Roboto\"\n    style=\"\"\n    >\n    <a href=\"https://www.theregister.com/Profile/cookies\">Cookies Policy</a><br><a href=\"https://www.theregister.com/profile/privacy\" aria-label=\"Privacy Policy\">Privacy Policy</a><br><a href=\"https://www.theregister.com/profile/terms_and_conditions_of_use\">Ts &amp; Cs</a><br><a href=\"https://www.theregister.com/Profile/privacy_policy_california_residents/\">Do not share my personal information</a><br><a href=\"https://www.theregister.com/profile/terms_and_conditions_of_use\" aria-label=\"Your Consent Options\">Your Consent Options</a>\n</p>\n\n\n        \n\n\n\n\n        \n\n        <time itemprop=\"datePublished\" datetime=\"\"></time>\n    </div>\n</article>\n<article data-element-guid=\"cf683f5c-2c72-45ed-adc7-1d2b49035294\" class=\"column small-12 large-4 small-abs-12 large-abs-4 \" data-site-alias=\"\" data-section=\"\" data-instance=\"102499\" itemscope>\n    <style></style>\n    <div class=\"content mobile_no_border_color mobile_no_border_side\" style=\"\">\n        \n\n\n        <div class=\"media \">\n\n            <div class=\"floatingText\">\n\n                <div class=\"labels\">\n                </div>\n            </div>\n            \n\n        </div>\n\n\n        \n                <h2 itemprop=\"headline\" \n    class=\"headline t16 tm14\"\n    style=\"\"\n    >Archives<br class=\"newline newline-mobile\"><br class=\"newline newline-desktop\"><span data-lab-font_weight_desktop=\"font-weight-normal\" class=\"font-weight-normal m-font-weight-normal t14\" data-lab-text_size_desktop=\"14\"><a href=\"https://www.theregister.com/archive\" aria-label=\"Archives\" target=\"_blank\">27 years of articles</a></span>\n</h2>\n\n        \n\n\n\n\n        \n\n        <time itemprop=\"datePublished\" datetime=\"\"></time>\n    </div>\n</article>\n<article data-element-guid=\"181414e4-8d1d-4724-9997-6e1172b8476c\" class=\"column small-12 large-2 small-abs-12 large-abs-2 \" data-site-alias=\"\" data-section=\"\" data-instance=\"2918009\" itemscope>\n    <style>@media (max-width: 1023px) { [data-element-guid=\"181414e4-8d1d-4724-9997-6e1172b8476c\"] .content { margin-right:14% !important; margin-left:12% !important; } }</style>\n    <div class=\"content color_mobile_no_bg_color border-side-left mobile_border-side-top border_width_2 border_width_mobile_2\" style=\"\">\n        \n\n\n        <div class=\"media \">\n                \n                \n                \n                \n                \n                \n                <div data-element-guid=\"2f5fde96-d7da-483d-abd8-5991a1502f25\" id=\"markup_2918010\" class=\"markupbox column small-12 large-12 small-abs-12 large-abs-2\">\n    <style></style>\n    <div class=\"content fullwidthTarget\" style=\"\">\n\n        \n\n        \n\n            <div>\n<img src=\"https://beta.theregister.com/files/2025/10/09/SituationPublishing_Logo_Evolution_Twolines-White-Barlow (1).svg\" alt=\"Situation Publishing Logo\" style=\"max-width: 200px; height: auto; display: block; margin: 0 auto 0.5rem;\">\n    <p style=\"font-family: Roboto, sans-serif; font-size: 12px; color: #FFFFFF; margin: 0;\">\n        Copyright. All rights reserved © 1998-2026.\n    </p>\n</div>\n\n        \n        \n    </div>\n</div>\n\n                \n                \n                \n\n            <div class=\"floatingText\">\n\n                <div class=\"labels\">\n                </div>\n            </div>\n            \n\n        </div>\n\n\n        \n\n        \n\n\n\n\n        \n\n        <time itemprop=\"datePublished\" datetime=\"\"></time>\n    </div>\n</article>\n</div>\n</div>\n\n</footer>\n\n\n\n<script src=\"/view-resources/baseview/public/common/build/baseview_dependencies_dom.js?v=1787211890-L4\" data-cookieconsent=\"ignore\"></script>\n\n        <script>\n            window.dachserData.handlers = {\n                parallax: function(item) {\n                    if (window.Dac && window.Dac.Parallax) {\n                        new Dac.Parallax(item);\n                    } else {\n                        console.warn('parallax: Missing required class Dac.Parallax. Content will not animate.');\n                    }\n                },\n                swipehelper: function(item) {\n                    if (window.Dac && window.Dac.SwipeHelper) {\n                        var element = document.querySelector(item.selector);\n                        if (!element) {\n                            console.warn('SwipeHelper: Missing element for selector: \"' + item.selector + '\".');\n                            return null;\n                        }\n                        return new Dac.SwipeHelper(element, item);\n                    } else {\n                        console.warn('SwipeHelper: Missing required function Dac.SwipeHelper.');\n                        return null;\n                    } \n                },\n                readprogress: function(item) {\n                    if (window.Dac && window.Dac.ReadProgress) {\n                        var element = document.querySelector(item.selector);\n                        if (!element) {\n                            console.warn('ReadProgress: Missing element for selector: \"' + item.selector + '\".');\n                            return;\n                        }\n                        new Dac.ReadProgress(element, item);\n                    } else {\n                        console.warn('ReadProgress: Missing required function Dac.ReadProgress.');\n                    } \n                },\n                tabnavigation: function(item) {\n                    if (window.Dac && window.Dac.TabNavigation) {\n                        new Dac.TabNavigation(item);\n                    } else {\n                        console.warn('TabNavigation: Missing required function Dac.Tabnavigation.');\n                    } \n                },\n                elementattributetoggler: function(item) {\n                    if (window.Dac && window.Dac.ElementAttributeToggler) {\n                        new Dac.ElementAttributeToggler(item);\n                    } else {\n                        console.warn('ElementAttributeToggler: Missing required class Dac.ElementAttributeToggler.');\n                    } \n                },\n                articlelists: (item) => {\n                    if (window.Dac && window.Dac.ArticleLists) {\n                        new Dac.ArticleLists(item);\n                    } else {\n                        console.warn('ElementAttributeToggler: Missing required class Dac.ArticleLists.');\n                    }\n                }\n            };\n\n            window.dachserData.execute = () => {\n            \n                // Parallax\n                // Register each element requiering js-animations\n                const parallaxQueue = window.dachserData.get('parallax') || [];\n                parallaxQueue.forEach(item => {\n                    window.dachserData.handlers.parallax(item);\n                });\n            \n                // SwipeHelper, used by several components like ArticleScroller etc.\n                // Register each element using SwipeHelper:\n                const swipehelperQueue = window.dachserData.get('swipehelper') || [];\n                swipehelperQueue.forEach(item => {\n                    window.dachserData.setInstance(\n                        'swipehelper',\n                        item.selector,\n                        window.dachserData.handlers.swipehelper(item)\n                    );\n                });\n\n                // ReadProgress\n                const readprogressQueue = window.dachserData.get('readprogress') || [];\n                readprogressQueue.forEach(item => {\n                    window.dachserData.handlers.readprogress(item);\n                });\n            \n                // Tab-navigation\n                const tabnavigationQueue = window.dachserData.get('tabnavigation') || [];\n                tabnavigationQueue.forEach(item => {\n                    window.dachserData.handlers.tabnavigation(item);\n                });\n\n                // ElementAttributeToggler\n                const elementAttributeTogglerQueue = window.dachserData.get('elementattributetoggler') || [];\n                elementAttributeTogglerQueue.forEach(item => {\n                    window.dachserData.handlers.elementattributetoggler(item);\n                });\n\n                const articlelistsQueue = window.dachserData.get('articlelists') || [];\n                articlelistsQueue.forEach(item => {\n                    window.dachserData.handlers.articlelists(item);\n                });\n            };\n\n            (function () {\n\n                window.dachserData.execute();\n            \n            }());\n        </script>\n\n\n\n        <script id=\"twitter-wjs\" type=\"text/javascript\" async defer src=\"//platform.twitter.com/widgets.js\"></script><script >document.addEventListener(\"DOMContentLoaded\", () => {\n    const link = document.querySelector('[aria-label=\"Your Consent Options\"]');\n    if (!link) return;\n\n    let ready = false;\n\n    link.addEventListener(\"click\", (e) => {\n        e.preventDefault();\n        if (ready) {\n            googlefc.callbackQueue.push(googlefc.showRevocationMessage);\n        }\n    });\n\n    let attempts = 0;\n    const check = setInterval(() => {\n        if (typeof googlefc !== \"undefined\" && googlefc.callbackQueue) {\n            clearInterval(check);\n            ready = true;\n        } else if (++attempts >= 6) {\n            clearInterval(check);\n            link.remove();\n        }\n    }, 1000);\n});</script>\n        \n    </body>\n</html>\n","snapshot_chars":165149,"live_check":"changed"},{"url":"https://www.ietf.org/archive/id/draft-mozleywilliams-dnsop-dnsaid-01.html","committed_hash":"sha256:aafe477b014c49433d76ab60b159959e3949058beda33c3dfb249f096789bb78","committed_hash_short":"sha256:aafe477b…6789bb78","mime_type":"text/html","committed_at":"2026-09-01T14:00:28.121043+00:00","content_snapshot":"<!DOCTYPE html>\n<html lang=\"en\" class=\"Internet-Draft\">\n<head>\n<meta charset=\"utf-8\">\n<meta content=\"Common,Latin\" name=\"scripts\">\n<meta content=\"initial-scale=1.0\" name=\"viewport\">\n<title>DNS for AI Discovery</title>\n<meta content=\"Jim Mozley\" name=\"author\">\n<meta content=\"Nic Williams\" name=\"author\">\n<meta content=\"Behcet Sarikaya\" name=\"author\">\n<meta content=\"Roland Schott\" name=\"author\">\n<meta content=\"\n       This document specifies a method for utilizing the Domain Name System (DNS) to facilitate scalable and interoperable discovery between AI agents. The proposed mechanism, referred to as &quot;DNS AI agent Discovery (DNS-AID)&quot;, defines a structured DNS namespace and record usage model to support metadata exchange and capability advertisement. \n       This will allow organisations to publish information about their AI agents on the Internet or internal networks using a well-known label within the organisation's own DNS namespace. This document does not define how the published agent information is accessed or the exact structure of that information. Instead, it specifies a mechanism for indicating which access protocol should be used and what format the agent information will be provided in. \n       This document proposes no change to the structure of DNS messages, and no new operation codes, response codes, resource record types, or any other new DNS protocol values. \n    \" name=\"description\">\n<meta content=\"xml2rfc 3.31.0\" name=\"generator\">\n<meta content=\"DNS\" name=\"keyword\">\n<meta content=\"AI\" name=\"keyword\">\n<meta content=\"Service Discovery\" name=\"keyword\">\n<meta content=\"agent-to-agent\" name=\"keyword\">\n<meta content=\"agent2agent\" name=\"keyword\">\n<meta content=\"draft-mozleywilliams-dnsop-dnsaid-01\" name=\"ietf.draft\">\n<!-- Generator version information:\n  xml2rfc 3.31.0\n    Python 3.12.12\n    ConfigArgParse 1.7.1\n    google-i18n-address 3.1.1\n    intervaltree 3.2.1\n    Jinja2 3.1.6\n    lxml 6.0.2\n    platformdirs 4.6.0\n    pycountry 24.6.1\n    PyYAML 6.0.3\n    requests 2.32.5\n    wcwidth 0.6.0\n    weasyprint 68.1\n-->\n<link href=\"draft-mozleywilliams-dnsop-dnsaid-01.xml\" rel=\"alternate\" type=\"application/rfc+xml\">\n<link href=\"#copyright\" rel=\"license\">\n<style type=\"text/css\">/*\n\n  NOTE: Changes at the bottom of this file overrides some earlier settings.\n\n  Once the style has stabilized and has been adopted as an official RFC style,\n  this can be consolidated so that style settings occur only in one place, but\n  for now the contents of this file consists first of the initial CSS work as\n  provided to the RFC Formatter (xml2rfc) work, followed by itemized and\n  commented changes found necessary during the development of the v3\n  formatters.\n\n*/\n\n/* fonts */\n@import url('https://static.ietf.org/fonts/noto-sans/import.css'); /* Sans-serif */\n@import url('https://static.ietf.org/fonts/noto-serif/import.css'); /* Serif (print) */\n@import url('https://static.ietf.org/fonts/roboto-mono/import.css'); /* Monospace */\n\n:root {\n  --font-sans: 'Noto Sans', Arial, Helvetica, sans-serif;\n  --font-serif: 'Noto Serif', 'Times', 'Times New Roman', serif;\n  --font-mono: 'Roboto Mono', Courier, 'Courier New', monospace;\n}\n\n@viewport {\n  zoom: 1.0;\n}\n@-ms-viewport {\n  width: extend-to-zoom;\n  zoom: 1.0;\n}\n/* general and mobile first */\nhtml {\n}\nbody {\n  max-width: 90%;\n  margin: 1.5em auto;\n  color: #222;\n  background-color: #fff;\n  font-size: 14px;\n  font-family: var(--font-sans);\n  line-height: 1.6;\n  scroll-behavior: smooth;\n  overflow-wrap: break-word;\n}\n.ears {\n  display: none;\n}\n\n/* headings */\n#title, h1, h2, h3, h4, h5, h6 {\n  margin: 1em 0 0.5em;\n  font-weight: bold;\n  line-height: 1.3;\n}\n#title {\n  clear: both;\n  border-bottom: 1px solid #ddd;\n  margin: 0 0 0.5em 0;\n  padding: 1em 0 0.5em;\n}\n.author {\n  padding-bottom: 4px;\n}\nh1 {\n  font-size: 26px;\n  margin: 1em 0;\n}\nh2 {\n  font-size: 22px;\n  margin-top: -20px;  /* provide offset for in-page anchors */\n  padding-top: 33px;\n}\nh3 {\n  font-size: 18px;\n  margin-top: -36px;  /* provide offset for in-page anchors */\n  padding-top: 42px;\n}\nh4 {\n  font-size: 16px;\n  margin-top: -36px;  /* provide offset for in-page anchors */\n  padding-top: 42px;\n}\nh5, h6 {\n  font-size: 14px;\n}\n#n-copyright-notice {\n  border-bottom: 1px solid #ddd;\n  padding-bottom: 1em;\n  margin-bottom: 1em;\n}\n/* general structure */\np {\n  padding: 0;\n  margin: 0 0 1em 0;\n  text-align: left;\n}\ndiv, span {\n  position: relative;\n}\ndiv {\n  margin: 0;\n}\n.alignRight.art-text {\n  background-color: #f9f9f9;\n  border: 1px solid #eee;\n  border-radius: 3px;\n  padding: 1em 1em 0;\n  margin-bottom: 1.5em;\n}\n.alignRight.art-text pre {\n  padding: 0;\n}\n.alignRight {\n  margin: 1em 0;\n}\n.alignRight > *:first-child {\n  border: none;\n  margin: 0;\n  float: right;\n  clear: both;\n}\n.alignRight > *:nth-child(2) {\n  clear: both;\n  display: block;\n  border: none;\n}\nsvg {\n  display: block;\n}\n@media print {\n  svg {\n    max-height: 850px;\n    max-width: 660px;\n  }\n}\nsvg[font-family~=\"serif\" i], svg [font-family~=\"serif\" i] {\n  font-family: var(--font-serif);\n}\nsvg[font-family~=\"sans-serif\" i], svg [font-family~=\"sans-serif\" i] {\n  font-family: var(--font-sans);\n}\nsvg[font-family~=\"monospace\" i], svg [font-family~=\"monospace\" i] {\n  font-family: var(--font-mono);\n}\n.alignCenter.art-text {\n  background-color: #f9f9f9;\n  border: 1px solid #eee;\n  border-radius: 3px;\n  padding: 1em 1em 0;\n  margin-bottom: 1.5em;\n}\n.alignCenter.art-text pre {\n  padding: 0;\n}\n.alignCenter {\n  margin: 1em 0;\n}\n.alignCenter > *:first-child {\n  display: table;\n  border: none;\n  margin: 0 auto;\n}\n\n/* lists */\nol, ul {\n  padding: 0;\n  margin: 0 0 1em 2em;\n}\nol ol, ul ul, ol ul, ul ol {\n  margin-left: 1em;\n}\nli {\n  margin: 0 0 0.25em 0;\n}\n.ulCompact li {\n  margin: 0;\n}\nul.empty, .ulEmpty {\n  list-style-type: none;\n}\nul.empty li, .ulEmpty li {\n  margin-top: 0.5em;\n}\nul.ulBare, li.ulBare {\n  margin-left: 0em !important;\n}\nul.compact, .ulCompact,\nol.compact, .olCompact {\n  line-height: 100%;\n  margin: 0 0 0 2em;\n}\n\n/* definition lists */\ndl {\n}\ndl > dt {\n  float: left;\n  margin-right: 1em;\n}\n/* \ndl.nohang > dt {\n  float: none;\n}\n*/\ndl > dd {\n  margin-bottom: .8em;\n  min-height: 1.3em;\n}\ndl.compact > dd, .dlCompact > dd {\n  margin-bottom: 0em;\n}\ndl > dd > dl {\n  margin-top: 0.5em;\n  margin-bottom: 0em;\n}\n\n/* links */\na {\n  text-decoration: none;\n}\na[href] {\n  color: #22e; /* Arlen: WCAG 2019 */\n}\na[href]:hover {\n  background-color: #f2f2f2;\n}\nfigcaption a[href],\na[href].selfRef {\n  color: #222;\n}\n/* XXX probably not this:\na.selfRef:hover {\n  background-color: transparent;\n  cursor: default;\n} */\n\n/* Figures */\ntt, code, pre {\n  background-color: #f9f9f9;\n  font-family: var(--font-mono);\n}\npre {\n  border: 1px solid #eee;\n  margin: 0;\n  padding: 1em;\n}\nimg {\n  max-width: 100%;\n}\nfigure {\n  margin: 0;\n}\nfigure blockquote {\n  margin: 0.8em 0.4em 0.4em;\n}\nfigcaption {\n  font-style: italic;\n  margin: 0 0 1em 0;\n}\n@media screen {\n  pre {\n    overflow-x: auto;\n    max-width: 100%;\n    max-width: calc(100% - 22px);\n  }\n}\n\n/* aside, blockquote */\naside, blockquote {\n  margin-left: 0;\n  padding: 1.2em 2em;\n}\nblockquote {\n  background-color: #f9f9f9;\n  color: #111; /* Arlen: WCAG 2019 */\n  border: 1px solid #ddd;\n  border-radius: 3px;\n  margin: 1em 0;\n}\nblockquote > *:last-child {\n  margin-bottom: 0;\n}\ncite {\n  display: block;\n  text-align: right;\n  font-style: italic;\n}\n.xref {\n  overflow-wrap: normal;\n}\n\n/* tables */\ntable {\n  width: 100%;\n  margin: 0 0 1em;\n  border-collapse: collapse;\n  border: 1px solid #eee;\n}\nth, td {\n  text-align: left;\n  vertical-align: top;\n  padding: 0.5em 0.75em;\n}\nth {\n  text-align: left;\n  background-color: #e9e9e9;\n}\ntr:nth-child(2n+1) > td {\n  background-color: #f5f5f5;\n}\ntable caption {\n  font-style: italic;\n  margin: 0;\n  padding: 0;\n  text-align: left;\n}\ntable p {\n  /* XXX to avoid bottom margin on table row signifiers. If paragraphs should\n     be allowed within tables more generally, it would be far better to select on a class. */\n  margin: 0;\n}\n\n/* pilcrow */\na.pilcrow {\n  color: #666; /* Arlen: AHDJ 2019 */\n  text-decoration: none;\n  visibility: hidden;\n  user-select: none;\n  -ms-user-select: none;\n  -o-user-select:none;\n  -moz-user-select: none;\n  -khtml-user-select: none;\n  -webkit-user-select: none;\n  -webkit-touch-callout: none;\n}\n@media screen {\n  aside:hover > a.pilcrow,\n  p:hover > a.pilcrow,\n  blockquote:hover > a.pilcrow,\n  div:hover > a.pilcrow,\n  li:hover > a.pilcrow,\n  pre:hover > a.pilcrow {\n    visibility: visible;\n  }\n  a.pilcrow:hover {\n    background-color: transparent;\n  }\n}\n\n/* misc */\nhr {\n  border: 0;\n  border-top: 1px solid #eee;\n}\n.bcp14 {\n  font-variant: small-caps;\n}\n\n.role {\n  font-variant: all-small-caps;\n}\n\n/* info block */\n#identifiers {\n  margin: 0;\n  font-size: 0.9em;\n}\n#identifiers dt {\n  width: 3em;\n  clear: left;\n}\n#identifiers dd {\n  float: left;\n  margin-bottom: 0;\n}\n/* Fix PDF info block run off issue */\n@media print {\n  #identifiers dd {\n    max-width: 100%;\n  }\n}\n#identifiers .authors .author {\n  display: inline-block;\n  margin-right: 1.5em;\n}\n#identifiers .authors .org {\n  font-style: italic;\n}\n\n/* The prepared/rendered info at the very bottom of the page */\n.docInfo {\n  color: #666; /* Arlen: WCAG 2019 */\n  font-size: 0.9em;\n  font-style: italic;\n  margin-top: 2em;\n}\n.docInfo .prepared {\n  float: left;\n}\n.docInfo .prepared {\n  float: right;\n}\n\n/* table of contents */\n#toc  {\n  padding: 0.75em 0 2em 0;\n  margin-bottom: 1em;\n}\nnav.toc ul {\n  margin: 0 0.5em 0 0;\n  padding: 0;\n  list-style: none;\n}\nnav.toc li {\n  line-height: 1.3em;\n  margin: 0.75em 0;\n  padding-left: 1.2em;\n  text-indent: -1.2em;\n}\n/* references */\n.references dt {\n  text-align: right;\n  font-weight: bold;\n  min-width: 7em;\n}\n.references dd {\n  margin-left: 8em;\n  overflow: auto;\n}\n\n.refInstance {\n  margin-bottom: 1.25em;\n}\n\n.refSubseries {\n  margin-bottom: 1.25em;\n}\n\n.references .ascii {\n  margin-bottom: 0.25em;\n}\n\n/* index */\n.index ul {\n  margin: 0 0 0 1em;\n  padding: 0;\n  list-style: none;\n}\n.index ul ul {\n  margin: 0;\n}\n.index li {\n  margin: 0;\n  text-indent: -2em;\n  padding-left: 2em;\n  padding-bottom: 5px;\n}\n.indexIndex {\n  margin: 0.5em 0 1em;\n}\n.index a {\n  font-weight: 700;\n}\n/* make the index two-column on all but the smallest screens */\n@media (min-width: 600px) {\n  .index ul {\n    -moz-column-count: 2;\n    -moz-column-gap: 20px;\n  }\n  .index ul ul {\n    -moz-column-count: 1;\n    -moz-column-gap: 0;\n  }\n}\n\n/* authors */\naddress.vcard {\n  font-style: normal;\n  margin: 1em 0;\n}\n\naddress.vcard .nameRole {\n  font-weight: 700;\n  margin-left: 0;\n}\naddress.vcard .label {\n  font-family: var(--font-sans);\n  margin: 0.5em 0;\n}\naddress.vcard .type {\n  display: none;\n}\n.alternative-contact {\n  margin: 1.5em 0 1em;\n}\nhr.addr {\n  border-top: 1px dashed;\n  margin: 0;\n  color: #ddd;\n  max-width: calc(100% - 16px);\n}\n\n/* temporary notes */\n.rfcEditorRemove::before {\n  position: absolute;\n  top: 0.2em;\n  right: 0.2em;\n  padding: 0.2em;\n  content: \"The RFC Editor will remove this note\";\n  color: #9e2a00; /* Arlen: WCAG 2019 */\n  background-color: #ffd; /* Arlen: WCAG 2019 */\n}\n.rfcEditorRemove {\n  position: relative;\n  padding-top: 1.8em;\n  background-color: #ffd; /* Arlen: WCAG 2019 */\n  border-radius: 3px;\n}\n.cref {\n  background-color: #ffd; /* Arlen: WCAG 2019 */\n  padding: 2px 4px;\n}\n.crefSource {\n  font-style: italic;\n}\n/* alternative layout for smaller screens */\n@media screen and (max-width: 1023px) {\n  body {\n    padding-top: 2em;\n  }\n  #title {\n    padding: 1em 0;\n  }\n  h1 {\n    font-size: 24px;\n  }\n  h2 {\n    font-size: 20px;\n    margin-top: -18px;  /* provide offset for in-page anchors */\n    padding-top: 38px;\n  }\n  #identifiers dd {\n    max-width: 60%;\n  }\n  #toc {\n    position: fixed;\n    z-index: 2;\n    top: 0;\n    right: 0;\n    padding: 0;\n    margin: 0;\n    background-color: inherit;\n    border-bottom: 1px solid #ccc;\n  }\n  #toc h2 {\n    margin: -1px 0 0 0;\n    padding: 4px 0 4px 6px;\n    padding-right: 1em;\n    min-width: 190px;\n    font-size: 1.1em;\n    text-align: right;\n    background-color: #444;\n    color: white;\n    cursor: pointer;\n  }\n  #toc h2::before { /* css hamburger */\n    float: right;\n    position: relative;\n    width: 1em;\n    height: 1px;\n    left: -164px;\n    margin: 6px 0 0 0;\n    background: white none repeat scroll 0 0;\n    box-shadow: 0 4px 0 0 white, 0 8px 0 0 white;\n    content: \"\";\n  }\n  #toc nav {\n    display: none;\n    padding: 0.5em 1em 1em;\n    overflow: auto;\n    height: calc(100vh - 48px);\n    border-left: 1px solid #ddd;\n  }\n}\n\n/* alternative layout for wide screens */\n@media screen and (min-width: 1024px) {\n  body {\n    max-width: 724px;\n    margin: 42px auto;\n    padding-left: 1.5em;\n    padding-right: 29em;\n  }\n  #toc {\n    position: fixed;\n    top: 42px;\n    right: 42px;\n    width: 25%;\n    margin: 0;\n    padding: 0 1em;\n    z-index: 1;\n  }\n  #toc h2 {\n    border-top: none;\n    border-bottom: 1px solid #ddd;\n    font-size: 1em;\n    font-weight: normal;\n    margin: 0;\n    padding: 0.25em 1em 1em 0;\n  }\n  #toc nav {\n    display: block;\n    height: calc(90vh - 84px);\n    bottom: 0;\n    padding: 0.5em 0 0;\n    overflow: auto;\n  }\n  img { /* future proofing */\n    max-width: 100%;\n    height: auto;\n  }\n}\n\n/* pagination */\n@media print {\n  body {\n    width: 100%;\n  }\n  p {\n    orphans: 3;\n    widows: 3;\n  }\n  #n-copyright-notice {\n    border-bottom: none;\n  }\n  #toc, #n-introduction {\n    page-break-before: always;\n  }\n  #toc {\n    border-top: none;\n    padding-top: 0;\n  }\n  figure, pre {\n    page-break-inside: avoid;\n  }\n  figure {\n    overflow: scroll;\n  }\n  .breakable pre {\n    break-inside: auto;\n  }\n  h1, h2, h3, h4, h5, h6 {\n    page-break-after: avoid;\n  }\n  h2+*, h3+*, h4+*, h5+*, h6+* {\n    page-break-before: avoid;\n  }\n  pre {\n    white-space: pre-wrap;\n    word-wrap: break-word;\n    font-size: 10pt;\n  }\n  table {\n    border: 1px solid #ddd;\n  }\n  td {\n    border-top: 1px solid #ddd;\n  }\n}\n\n/* This is commented out here, as the string-set: doesn't\n   pass W3C validation currently */\n/*\n.ears thead .left {\n  string-set: ears-top-left content();\n}\n\n.ears thead .center {\n  string-set: ears-top-center content();\n}\n\n.ears thead .right {\n  string-set: ears-top-right content();\n}\n\n.ears tfoot .left {\n  string-set: ears-bottom-left content();\n}\n\n.ears tfoot .center {\n  string-set: ears-bottom-center content();\n}\n\n.ears tfoot .right {\n  string-set: ears-bottom-right content();\n}\n*/\n\n@page :first {\n  padding-top: 0;\n  @top-left {\n    content: normal;\n    border: none;\n  }\n  @top-center {\n    content: normal;\n    border: none;\n  }\n  @top-right {\n    content: normal;\n    border: none;\n  }\n}\n\n@page {\n  size: A4;\n  margin-bottom: 45mm;\n  padding-top: 20px;\n  /* The following is commented out here, but set appropriately by in code, as\n     the content depends on the document */\n  /*\n  @top-left {\n    content: 'Internet-Draft';\n    vertical-align: bottom;\n    border-bottom: solid 1px #ccc;\n  }\n  @top-left {\n    content: string(ears-top-left);\n    vertical-align: bottom;\n    border-bottom: solid 1px #ccc;\n  }\n  @top-center {\n    content: string(ears-top-center);\n    vertical-align: bottom;\n    border-bottom: solid 1px #ccc;\n  }\n  @top-right {\n    content: string(ears-top-right);\n    vertical-align: bottom;\n    border-bottom: solid 1px #ccc;\n  }\n  @bottom-left {\n    content: string(ears-bottom-left);\n    vertical-align: top;\n    border-top: solid 1px #ccc;\n  }\n  @bottom-center {\n    content: string(ears-bottom-center);\n    vertical-align: top;\n    border-top: solid 1px #ccc;\n  }\n  @bottom-right {\n      content: '[Page ' counter(page) ']';\n      vertical-align: top;\n      border-top: solid 1px #ccc;\n  }\n  */\n\n}\n\n/* Changes introduced to fix issues found during implementation */\n/* Make sure links are clickable even if overlapped by following H* */\na {\n  z-index: 2;\n}\n/* Separate body from document info even without intervening H1 */\nsection {\n  clear: both;\n}\n\n\n/* Top align author divs, to avoid names without organization dropping level with org names */\n.author {\n  vertical-align: top;\n}\n\n/* Leave room in document info to show Internet-Draft on one line */\n#identifiers dt {\n  width: 8em;\n}\n\n/* Don't waste quite as much whitespace between label and value in doc info */\n#identifiers dd {\n  margin-left: 1em;\n}\n\n/* Give floating toc a background color (needed when it's a div inside section */\n#toc {\n  background-color: white;\n}\n\n/* Make the collapsed ToC header render white on gray also when it's a link */\n@media screen and (max-width: 1023px) {\n  #toc h2 a,\n  #toc h2 a:link,\n  #toc h2 a:focus,\n  #toc h2 a:hover,\n  #toc a.toplink,\n  #toc a.toplink:hover {\n    color: white;\n    background-color: #444;\n    text-decoration: none;\n  }\n}\n\n/* Give the bottom of the ToC some whitespace */\n@media screen and (min-width: 1024px) {\n  #toc {\n    padding: 0 0 1em 1em;\n  }\n}\n\n/* Style section numbers with more space between number and title */\n.section-number {\n  padding-right: 0.5em;\n}\n\n/* prevent monospace from becoming overly large */\ntt, code, pre {\n  font-size: 95%;\n}\n\n/* Fix the height/width aspect for ascii art*/\n.sourcecode pre,\n.art-text pre {\n  line-height: 1.12;\n}\n\n\n/* Add styling for a link in the ToC that points to the top of the document */\na.toplink {\n  float: right;\n  margin-right: 0.5em;\n}\n\n/* Fix the dl styling to match the RFC 7992 attributes */\ndl > dt,\ndl.dlParallel > dt {\n  float: left;\n  margin-right: 1em;\n}\ndl.dlNewline > dt {\n  float: none;\n}\n\n/* Provide styling for table cell text alignment */\ntable td.text-left,\ntable th.text-left {\n  text-align: left;\n}\ntable td.text-center,\ntable th.text-center {\n  text-align: center;\n}\ntable td.text-right,\ntable th.text-right {\n  text-align: right;\n}\n\n/* Make the alternative author contact information look less like just another\n   author, and group it closer with the primary author contact information */\n.alternative-contact {\n  margin: 0.5em 0 0.25em 0;\n}\naddress .non-ascii {\n  margin: 0 0 0 2em;\n}\n\n/* With it being possible to set tables with alignment\n  left, center, and right, { width: 100%; } does not make sense */\ntable {\n  width: auto;\n}\n\n/* Avoid reference text that sits in a block with very wide left margin,\n   because of a long floating dt label.*/\n.references dd {\n  overflow: visible;\n}\n\n/* Control caption placement */\ncaption {\n  caption-side: bottom;\n}\n\n/* Limit the width of the author address vcard, so names in right-to-left\n   script don't end up on the other side of the page. */\n\naddress.vcard {\n  max-width: 30em;\n  margin-right: auto;\n}\n\n/* For address alignment dependent on LTR or RTL scripts */\naddress div.left {\n  text-align: left;\n}\naddress div.right {\n  text-align: right;\n}\n\n/* Provide table alignment support.  We can't use the alignX classes above\n   since they do unwanted things with caption and other styling. */\ntable.right {\n margin-left: auto;\n margin-right: 0;\n}\ntable.center {\n margin-left: auto;\n margin-right: auto;\n}\ntable.left {\n margin-left: 0;\n margin-right: auto;\n}\n\n/* Give the table caption label the same styling as the figcaption */\ncaption a[href] {\n  color: #222;\n}\n\n@media print {\n  .toplink {\n    display: none;\n  }\n\n  /* avoid overwriting the top border line with the ToC header */\n  #toc {\n    padding-top: 1px;\n  }\n\n  /* Avoid page breaks inside dl and author address entries */\n  .vcard {\n    page-break-inside: avoid;\n  }\n\n}\n/* Tweak the bcp14 keyword presentation */\n.bcp14 {\n  font-variant: small-caps;\n  font-weight: bold;\n  font-size: 0.9em;\n}\n/* Tweak the invisible space above H* in order not to overlay links in text above */\n h2 {\n  margin-top: -18px;  /* provide offset for in-page anchors */\n  padding-top: 31px;\n }\n h3 {\n  margin-top: -18px;  /* provide offset for in-page anchors */\n  padding-top: 24px;\n }\n h4 {\n  margin-top: -18px;  /* provide offset for in-page anchors */\n  padding-top: 24px;\n }\n/* Float artwork pilcrow to the right */\n@media screen {\n  .artwork a.pilcrow {\n    display: block;\n    line-height: 0.7;\n    margin-top: 0.15em;\n  }\n}\n/* Make pilcrows on dd visible */\n@media screen {\n  dd:hover > a.pilcrow {\n    visibility: visible;\n  }\n}\n/* Make the placement of figcaption match that of a table's caption\n   by removing the figure's added bottom margin */\n.alignLeft.art-text,\n.alignCenter.art-text,\n.alignRight.art-text {\n   margin-bottom: 0;\n}\n.alignLeft,\n.alignCenter,\n.alignRight {\n  margin: 1em 0 0 0;\n}\n/* In print, the pilcrow won't show on hover, so prevent it from taking up space,\n   possibly even requiring a new line */\n@media print {\n  a.pilcrow {\n    display: none;\n  }\n}\n/* Styling for the external metadata */\ndiv#external-metadata {\n  background-color: #eee;\n  padding: 0.5em;\n  margin-bottom: 0.5em;\n  display: none;\n}\ndiv#internal-metadata {\n  padding: 0.5em;                       /* to match the external-metadata padding */\n}\n/* Styling for title RFC Number */\nh1#rfcnum {\n  clear: both;\n  margin: 0 0 -1em;\n  padding: 1em 0 0 0;\n}\n/* Make .olPercent look the same as <ol><li> */\ndl.olPercent > dd {\n  margin-bottom: 0.25em;\n  min-height: initial;\n}\n/* Give aside some styling to set it apart */\naside {\n  border-left: 1px solid #ddd;\n  margin: 1em 0 1em 2em;\n  padding: 0.2em 2em;\n}\naside > dl,\naside > ol,\naside > ul,\naside > table,\naside > p {\n  margin-bottom: 0.5em;\n}\n/* Additional page break settings */\n@media print {\n  figcaption, table caption {\n    page-break-before: avoid;\n  }\n}\n/* Font size adjustments for print */\n@media print {\n  body  { font-size: 10pt;      line-height: normal; max-width: 96%; }\n  h1    { font-size: 1.72em;    padding-top: 1.5em; } /* 1*1.2*1.2*1.2 */\n  h2    { font-size: 1.44em;    padding-top: 1.5em; } /* 1*1.2*1.2 */\n  h3    { font-size: 1.2em;     padding-top: 1.5em; } /* 1*1.2 */\n  h4    { font-size: 1em;       padding-top: 1.5em; }\n  h5, h6 { font-size: 1em;      margin: initial; padding: 0.5em 0 0.3em; }\n}\n/* Sourcecode margin in print, when there's no pilcrow */\n@media print {\n  .artwork,\n  .artwork > pre,\n  .sourcecode {\n    margin-bottom: 1em;\n  }\n}\n/* Avoid narrow tables forcing too narrow table captions, which may render badly */\ntable {\n  min-width: 20em;\n}\n/* ol type a */\nol.type-a { list-style-type: lower-alpha; }\nol.type-A { list-style-type: upper-alpha; }\nol.type-i { list-style-type: lower-roman; }\nol.type-I { list-style-type: upper-roman; }\n/* Apply the print table and row borders in general, on request from the RPC,\nand increase the contrast between border and odd row background slightly */\ntable {\n  border: 1px solid #ddd;\n}\ntd {\n  border-top: 1px solid #ddd;\n}\ntr {\n  break-inside: avoid;\n}\ntr:nth-child(2n+1) > td {\n  background-color: #f8f8f8;\n}\n/* Use style rules to govern display of the TOC. */\n@media screen and (max-width: 1023px) {\n  #toc nav { display: none; }\n  #toc.active nav { display: block; }\n}\n/* Add support for keepWithNext */\n.keepWithNext {\n  break-after: avoid-page;\n  break-after: avoid-page;\n}\n/* Add support for keepWithPrevious */\n.keepWithPrevious {\n  break-before: avoid-page;\n}\n/* Change the approach to avoiding breaks inside artwork etc. */\nfigure, pre, table, .artwork, .sourcecode  {\n  break-before: auto;\n  break-after: auto;\n}\n/* Avoid breaks between <dt> and <dd> */\ndl {\n  break-before: auto;\n  break-inside: auto;\n}\ndt {\n  break-before: auto;\n  break-after: avoid-page;\n}\ndd {\n  break-before: avoid-page;\n  break-after: auto;\n  orphans: 3;\n  widows: 3\n}\nspan.break, dd.break {\n  margin-bottom: 0;\n  min-height: 0;\n  break-before: auto;\n  break-inside: auto;\n  break-after: auto;\n}\n/* Undo break-before ToC */\n@media print {\n  #toc {\n    break-before: auto;\n  }\n}\n/* Text in compact lists should not get extra bottom margin space,\n   since that would makes the list not compact */\nul.compact p, .ulCompact p,\nol.compact p, .olCompact p {\n margin: 0;\n}\n/* But the list as a whole needs the extra space at the end */\nsection ul.compact,\nsection .ulCompact,\nsection ol.compact,\nsection .olCompact {\n  margin-bottom: 1em;                    /* same as p not within ul.compact etc. */\n}\n/* The tt and code background above interferes with for instance table cell\n   backgrounds.  Changed to something a bit more selective. */\ntt, code {\n  background-color: transparent;\n}\np tt, p code, li tt, li code, dt tt, dt code {\n  background-color: #f8f8f8;\n}\n/* Tweak the pre margin -- 0px doesn't come out well */\npre {\n   margin-top: 0.5px;\n}\n/* Tweak the compact list text */\nul.compact, .ulCompact,\nol.compact, .olCompact,\ndl.compact, .dlCompact {\n  line-height: normal;\n}\n/* Don't add top margin for nested lists */\nli > ul, li > ol, li > dl,\ndd > ul, dd > ol, dd > dl,\ndl > dd > dl {\n  margin-top: initial;\n}\n/* Elements that should not be rendered on the same line as a <dt> */\n/* This should match the element list in writer.text.TextWriter.render_dl() */\ndd > div.artwork:first-child,\ndd > aside:first-child,\ndd > blockquote:first-child,\ndd > figure:first-child,\ndd > ol:first-child,\ndd > div.sourcecode:first-child,\ndd > table:first-child,\ndd > ul:first-child {\n  clear: left;\n}\n/* fix for weird browser behaviour when <dd/> is empty */\ndt+dd:empty::before{\n  content: \"\\00a0\";\n}\n/* Make paragraph spacing inside <li> smaller than in body text, to fit better within the list */\nli > p {\n  margin-bottom: 0.5em\n}\n/* Don't let p margin spill out from inside list items */\nli > p:last-of-type:only-child {\n  margin-bottom: 0;\n}\n</style>\n<link href=\"rfc-local.css\" rel=\"stylesheet\" type=\"text/css\">\n<script type=\"application/javascript\">async function addMetadata(){try{const e=document.styleSheets[0].cssRules;for(let t=0;t<e.length;t++)if(/#identifiers/.exec(e[t].selectorText)){const a=e[t].cssText.replace(\"#identifiers\",\"#external-updates\");document.styleSheets[0].insertRule(a,document.styleSheets[0].cssRules.length)}}catch(e){console.log(e)}const e=document.getElementById(\"external-metadata\");if(e)try{var t,a=\"\",o=function(e){const t=document.getElementsByTagName(\"meta\");for(let a=0;a<t.length;a++)if(t[a].getAttribute(\"name\")===e)return t[a].getAttribute(\"content\");return\"\"}(\"rfc.number\");if(o){t=\"https://www.rfc-editor.org/rfc/rfc\"+o+\".json\";try{const e=await fetch(t);a=await e.json()}catch(e){t=document.URL.indexOf(\"html\")>=0?document.URL.replace(/html$/,\"json\"):document.URL+\".json\";const o=await fetch(t);a=await o.json()}}if(!a)return;e.style.display=\"block\";const s=\"\",d=\"https://datatracker.ietf.org/doc\",n=\"https://datatracker.ietf.org/ipr/search\",c=\"https://www.rfc-editor.org/info\",l=a.doc_id.toLowerCase(),i=a.doc_id.slice(0,3).toLowerCase(),f=a.doc_id.slice(3).replace(/^0+/,\"\"),u={status:\"Status\",obsoletes:\"Obsoletes\",obsoleted_by:\"Obsoleted By\",updates:\"Updates\",updated_by:\"Updated By\",see_also:\"See Also\",errata_url:\"Errata\"};let h=\"<dl style='overflow:hidden' id='external-updates'>\";[\"status\",\"obsoletes\",\"obsoleted_by\",\"updates\",\"updated_by\",\"see_also\",\"errata_url\"].forEach(e=>{if(\"status\"==e){a[e]=a[e].toLowerCase();var t=a[e].split(\" \"),o=t.length,w=\"\",p=1;for(let e=0;e<o;e++)p<o?w=w+r(t[e])+\" \":w+=r(t[e]),p++;a[e]=w}else if(\"obsoletes\"==e||\"obsoleted_by\"==e||\"updates\"==e||\"updated_by\"==e){var g,m=\"\",b=1;g=a[e].length;for(let t=0;t<g;t++)a[e][t]&&(a[e][t]=String(a[e][t]).toLowerCase(),m=b<g?m+\"<a href='\"+s+\"/rfc/\".concat(a[e][t])+\"'>\"+a[e][t].slice(3)+\"</a>, \":m+\"<a href='\"+s+\"/rfc/\".concat(a[e][t])+\"'>\"+a[e][t].slice(3)+\"</a>\",b++);a[e]=m}else if(\"see_also\"==e){var y,L=\"\",C=1;y=a[e].length;for(let t=0;t<y;t++)if(a[e][t]){a[e][t]=String(a[e][t]);var _=a[e][t].slice(0,3),v=a[e][t].slice(3).replace(/^0+/,\"\");L=C<y?\"RFC\"!=_?L+\"<a href='\"+s+\"/info/\"+_.toLowerCase().concat(v.toLowerCase())+\"'>\"+_+\" \"+v+\"</a>, \":L+\"<a href='\"+s+\"/info/\"+_.toLowerCase().concat(v.toLowerCase())+\"'>\"+v+\"</a>, \":\"RFC\"!=_?L+\"<a href='\"+s+\"/info/\"+_.toLowerCase().concat(v.toLowerCase())+\"'>\"+_+\" \"+v+\"</a>\":L+\"<a href='\"+s+\"/info/\"+_.toLowerCase().concat(v.toLowerCase())+\"'>\"+v+\"</a>\",C++}a[e]=L}else if(\"errata_url\"==e){var R=\"\";R=a[e]?R+\"<a href='\"+a[e]+\"'>Errata exist</a> | <a href='\"+d+\"/\"+l+\"'>Datatracker</a>| <a href='\"+n+\"/?\"+i+\"=\"+f+\"&submit=\"+i+\"'>IPR</a> | <a href='\"+c+\"/\"+l+\"'>Info page</a>\":\"<a href='\"+d+\"/\"+l+\"'>Datatracker</a> | <a href='\"+n+\"/?\"+i+\"=\"+f+\"&submit=\"+i+\"'>IPR</a> | <a href='\"+c+\"/\"+l+\"'>Info page</a>\",a[e]=R}\"\"!=a[e]?\"Errata\"==u[e]?h+=`<dt>More info:</dt><dd>${a[e]}</dd>`:h+=`<dt>${u[e]}:</dt><dd>${a[e]}</dd>`:\"Errata\"==u[e]&&(h+=`<dt>More info:</dt><dd>${a[e]}</dd>`)}),h+=\"</dl>\",e.innerHTML=h}catch(e){console.log(e)}else console.log(\"Could not locate metadata <div> element\");function r(e){return e.charAt(0).toUpperCase()+e.slice(1)}}window.removeEventListener(\"load\",addMetadata),window.addEventListener(\"load\",addMetadata);</script>\n</head>\n<body class=\"xml2rfc\">\n<table class=\"ears\">\n<thead><tr>\n<td class=\"left\">Internet-Draft</td>\n<td class=\"center\">DNS-AID</td>\n<td class=\"right\">March 2026</td>\n</tr></thead>\n<tfoot><tr>\n<td class=\"left\">Mozley, et al.</td>\n<td class=\"center\">Expires 3 September 2026</td>\n<td class=\"right\">[Page]</td>\n</tr></tfoot>\n</table>\n<div id=\"external-metadata\" class=\"document-information\"></div>\n<div id=\"internal-metadata\" class=\"document-information\">\n<dl id=\"identifiers\">\n<dt class=\"label-workgroup\">Workgroup:</dt>\n<dd class=\"workgroup\">dnsop</dd>\n<dt class=\"label-internet-draft\">Internet-Draft:</dt>\n<dd class=\"internet-draft\">draft-mozleywilliams-dnsop-dnsaid-01</dd>\n<dt class=\"label-published\">Published:</dt>\n<dd class=\"published\">\n<time datetime=\"2026-03-02\" class=\"published\">2 March 2026</time>\n    </dd>\n<dt class=\"label-intended-status\">Intended Status:</dt>\n<dd class=\"intended-status\">Standards Track</dd>\n<dt class=\"label-expires\">Expires:</dt>\n<dd class=\"expires\"><time datetime=\"2026-09-03\">3 September 2026</time></dd>\n<dt class=\"label-authors\">Authors:</dt>\n<dd class=\"authors\">\n<div class=\"author\">\n      <div class=\"author-name\">J. Mozley</div>\n<div class=\"org\">Infoblox, Inc.</div>\n</div>\n<div class=\"author\">\n      <div class=\"author-name\">N. Williams</div>\n<div class=\"org\">Infoblox, Inc.</div>\n</div>\n<div class=\"author\">\n      <div class=\"author-name\">B. Sarikaya</div>\n<div class=\"org\">Unaffiliated</div>\n</div>\n<div class=\"author\">\n      <div class=\"author-name\">R. Schott</div>\n<div class=\"org\">Deutsche Telekom</div>\n</div>\n</dd>\n</dl>\n</div>\n<h1 id=\"title\">DNS for AI Discovery</h1>\n<section id=\"section-abstract\">\n      <h2 id=\"abstract\"><a href=\"#abstract\" class=\"selfRef\">Abstract</a></h2>\n<p id=\"section-abstract-1\">This document specifies a method for utilizing the Domain Name System (DNS) to facilitate scalable and interoperable discovery between AI agents. The proposed mechanism, referred to as \"DNS AI agent Discovery (DNS-AID)\", defines a structured DNS namespace and record usage model to support metadata exchange and capability advertisement.<a href=\"#section-abstract-1\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-abstract-2\">This will allow organisations to publish information about their AI agents on the Internet or internal networks using a well-known label within the organisation's own DNS namespace. This document does not define how the published agent information is accessed or the exact structure of that information. Instead, it specifies a mechanism for indicating which access protocol should be used and what format the agent information will be provided in.<a href=\"#section-abstract-2\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-abstract-3\">This document proposes no change to the structure of DNS messages, and no new operation codes, response codes, resource record types, or any other new DNS protocol values.<a href=\"#section-abstract-3\" class=\"pilcrow\">¶</a></p>\n</section>\n<section class=\"note rfcEditorRemove\" id=\"section-note.1\">\n      <h2 id=\"name-about-this-document\">\n<a href=\"#name-about-this-document\" class=\"section-name selfRef\">About This Document</a>\n      </h2>\n<p id=\"section-note.1-1\">This note is to be removed before publishing as an RFC.<a href=\"#section-note.1-1\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-note.1-2\">\n        The latest revision of this draft can be found at <span><a href=\"https://example.com/LATEST\">https://example.com/LATEST</a></span>.\n        Status information for this document may be found at <span><a href=\"https://datatracker.ietf.org/doc/draft-mozleywilliams-dnsop-dnsaid/\">https://datatracker.ietf.org/doc/draft-mozleywilliams-dnsop-dnsaid/</a></span>.<a href=\"#section-note.1-2\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-note.1-3\">\n        Discussion of this document takes place on the\n        WG Working Group mailing list (<span><a href=\"mailto:WG@example.com\">mailto:WG@example.com</a></span>),\n        which is archived at <span><a href=\"https://example.com/WG\">https://example.com/WG</a></span>.<a href=\"#section-note.1-3\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-note.1-4\">Source for this draft and an issue tracker can be found at\n        <span><a href=\"https://github.com/USER/REPO\">https://github.com/USER/REPO</a></span>.<a href=\"#section-note.1-4\" class=\"pilcrow\">¶</a></p>\n</section>\n<div id=\"status-of-memo\">\n<section id=\"section-boilerplate.1\">\n        <h2 id=\"name-status-of-this-memo\">\n<a href=\"#name-status-of-this-memo\" class=\"section-name selfRef\">Status of This Memo</a>\n        </h2>\n<p id=\"section-boilerplate.1-1\">\n        This Internet-Draft is submitted in full conformance with the\n        provisions of BCP 78 and BCP 79.<a href=\"#section-boilerplate.1-1\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-boilerplate.1-2\">\n        Internet-Drafts are working documents of the Internet Engineering Task\n        Force (IETF). Note that other groups may also distribute working\n        documents as Internet-Drafts. The list of current Internet-Drafts is\n        at <span><a href=\"https://datatracker.ietf.org/drafts/current/\">https://datatracker.ietf.org/drafts/current/</a></span>.<a href=\"#section-boilerplate.1-2\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-boilerplate.1-3\">\n        Internet-Drafts are draft documents valid for a maximum of six months\n        and may be updated, replaced, or obsoleted by other documents at any\n        time. It is inappropriate to use Internet-Drafts as reference\n        material or to cite them other than as \"work in progress.\"<a href=\"#section-boilerplate.1-3\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-boilerplate.1-4\">\n        This Internet-Draft will expire on 3 September 2026.<a href=\"#section-boilerplate.1-4\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"copyright\">\n<section id=\"section-boilerplate.2\">\n        <h2 id=\"name-copyright-notice\">\n<a href=\"#name-copyright-notice\" class=\"section-name selfRef\">Copyright Notice</a>\n        </h2>\n<p id=\"section-boilerplate.2-1\">\n            Copyright (c) 2026 IETF Trust and the persons identified as the\n            document authors. All rights reserved.<a href=\"#section-boilerplate.2-1\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-boilerplate.2-2\">\n            This document is subject to BCP 78 and the IETF Trust's Legal\n            Provisions Relating to IETF Documents\n            (<span><a href=\"https://trustee.ietf.org/license-info\">https://trustee.ietf.org/license-info</a></span>) in effect on the date of\n            publication of this document. Please review these documents\n            carefully, as they describe your rights and restrictions with\n            respect to this document. Code Components extracted from this\n            document must include Revised BSD License text as described in\n            Section 4.e of the Trust Legal Provisions and are provided without\n            warranty as described in the Revised BSD License.<a href=\"#section-boilerplate.2-2\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"toc\">\n<section id=\"section-toc.1\">\n        <a href=\"#\" onclick=\"scroll(0,0)\" class=\"toplink\">▲</a><h2 id=\"name-table-of-contents\">\n<a href=\"#name-table-of-contents\" class=\"section-name selfRef\">Table of Contents</a>\n        </h2>\n<nav class=\"toc\"><ul class=\"compact toc ulBare ulEmpty\">\n<li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.1\">\n            <p id=\"section-toc.1-1.1.1\" class=\"keepWithNext\"><a href=\"#section-1\" class=\"auto internal xref\">1</a>.  <a href=\"#name-introduction\" class=\"internal xref\">Introduction</a></p>\n</li>\n          <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.2\">\n            <p id=\"section-toc.1-1.2.1\" class=\"keepWithNext\"><a href=\"#section-2\" class=\"auto internal xref\">2</a>.  <a href=\"#name-conventions-and-definitions\" class=\"internal xref\">Conventions and Definitions</a></p>\n</li>\n          <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.3\">\n            <p id=\"section-toc.1-1.3.1\"><a href=\"#section-3\" class=\"auto internal xref\">3</a>.  <a href=\"#name-dns-mechanisms-for-agent-di\" class=\"internal xref\">DNS Mechanisms for Agent Discovery</a></p>\n<ul class=\"compact toc ulBare ulEmpty\">\n<li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.3.2.1\">\n                <p id=\"section-toc.1-1.3.2.1.1\" class=\"keepWithNext\"><a href=\"#section-3.1\" class=\"auto internal xref\">3.1</a>.  <a href=\"#name-use-of-service-binding-reco\" class=\"internal xref\">Use of Service Binding Records in Discovery</a></p>\n</li>\n              <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.3.2.2\">\n                <p id=\"section-toc.1-1.3.2.2.1\"><a href=\"#section-3.2\" class=\"auto internal xref\">3.2</a>.  <a href=\"#name-dns-based-service-discovery\" class=\"internal xref\">DNS-Based Service Discovery</a></p>\n</li>\n              <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.3.2.3\">\n                <p id=\"section-toc.1-1.3.2.3.1\"><a href=\"#section-3.3\" class=\"auto internal xref\">3.3</a>.  <a href=\"#name-domain-control-validation\" class=\"internal xref\">Domain Control Validation</a></p>\n</li>\n            </ul>\n</li>\n          <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.4\">\n            <p id=\"section-toc.1-1.4.1\"><a href=\"#section-4\" class=\"auto internal xref\">4</a>.  <a href=\"#name-architecture\" class=\"internal xref\">Architecture</a></p>\n<ul class=\"compact toc ulBare ulEmpty\">\n<li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.4.2.1\">\n                <p id=\"section-toc.1-1.4.2.1.1\"><a href=\"#section-4.1\" class=\"auto internal xref\">4.1</a>.  <a href=\"#name-example-communication\" class=\"internal xref\">Example Communication</a></p>\n</li>\n              <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.4.2.2\">\n                <p id=\"section-toc.1-1.4.2.2.1\"><a href=\"#section-4.2\" class=\"auto internal xref\">4.2</a>.  <a href=\"#name-example-record\" class=\"internal xref\">Example Record</a></p>\n</li>\n              <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.4.2.3\">\n                <p id=\"section-toc.1-1.4.2.3.1\"><a href=\"#section-4.3\" class=\"auto internal xref\">4.3</a>.  <a href=\"#name-example-use-cases\" class=\"internal xref\">Example Use Cases</a></p>\n</li>\n              <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.4.2.4\">\n                <p id=\"section-toc.1-1.4.2.4.1\"><a href=\"#section-4.4\" class=\"auto internal xref\">4.4</a>.  <a href=\"#name-zone-and-other-requirements\" class=\"internal xref\">Zone and Other Requirements</a></p>\n<ul class=\"compact toc ulBare ulEmpty\">\n<li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.4.2.4.2.1\">\n                    <p id=\"section-toc.1-1.4.2.4.2.1.1\"><a href=\"#section-4.4.1\" class=\"auto internal xref\">4.4.1</a>.  <a href=\"#name-delegation-and-chain-of-tru\" class=\"internal xref\">Delegation and Chain of Trust</a></p>\n</li>\n                  <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.4.2.4.2.2\">\n                    <p id=\"section-toc.1-1.4.2.4.2.2.1\"><a href=\"#section-4.4.2\" class=\"auto internal xref\">4.4.2</a>.  <a href=\"#name-performance-optimizations\" class=\"internal xref\">Performance Optimization(s)</a></p>\n</li>\n                  <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.4.2.4.2.3\">\n                    <p id=\"section-toc.1-1.4.2.4.2.3.1\"><a href=\"#section-4.4.3\" class=\"auto internal xref\">4.4.3</a>.  <a href=\"#name-customizations\" class=\"internal xref\">Customization(s)</a></p>\n</li>\n                </ul>\n</li>\n            </ul>\n</li>\n          <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.5\">\n            <p id=\"section-toc.1-1.5.1\"><a href=\"#section-5\" class=\"auto internal xref\">5</a>.  <a href=\"#name-implementation-guidance\" class=\"internal xref\">Implementation Guidance</a></p>\n<ul class=\"compact toc ulBare ulEmpty\">\n<li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.5.2.1\">\n                <p id=\"section-toc.1-1.5.2.1.1\"><a href=\"#section-5.1\" class=\"auto internal xref\">5.1</a>.  <a href=\"#name-discovery-usage-examples\" class=\"internal xref\">Discovery Usage Examples</a></p>\n<ul class=\"compact toc ulBare ulEmpty\">\n<li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.5.2.1.2.1\">\n                    <p id=\"section-toc.1-1.5.2.1.2.1.1\"><a href=\"#section-5.1.1\" class=\"auto internal xref\">5.1.1</a>.  <a href=\"#name-discovery-status-1-known-se\" class=\"internal xref\">Discovery Status 1 (Known Service and Domain)</a></p>\n</li>\n                  <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.5.2.1.2.2\">\n                    <p id=\"section-toc.1-1.5.2.1.2.2.1\"><a href=\"#section-5.1.2\" class=\"auto internal xref\">5.1.2</a>.  <a href=\"#name-discovery-status-2-known-se\" class=\"internal xref\">Discovery Status 2 (Known Service OR Domain, Trusted)</a></p>\n</li>\n                  <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.5.2.1.2.3\">\n                    <p id=\"section-toc.1-1.5.2.1.2.3.1\"><a href=\"#section-5.1.3\" class=\"auto internal xref\">5.1.3</a>.  <a href=\"#name-discovery-status-3-multi-do\" class=\"internal xref\">Discovery Status 3 (Multi-Domain Query for Known Service)</a></p>\n</li>\n                  <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.5.2.1.2.4\">\n                    <p id=\"section-toc.1-1.5.2.1.2.4.1\"><a href=\"#section-5.1.4\" class=\"auto internal xref\">5.1.4</a>.  <a href=\"#name-discovery-status-4-untruste\" class=\"internal xref\">Discovery Status 4 (Untrusted Domain / Consolidated Registry)</a></p>\n</li>\n                  <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.5.2.1.2.5\">\n                    <p id=\"section-toc.1-1.5.2.1.2.5.1\"><a href=\"#section-5.1.5\" class=\"auto internal xref\">5.1.5</a>.  <a href=\"#name-discovery-status-4-unknown-\" class=\"internal xref\">Discovery Status 4 (Unknown / Wildcard, or status 2 untrusted?)</a></p>\n</li>\n                </ul>\n</li>\n              <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.5.2.2\">\n                <p id=\"section-toc.1-1.5.2.2.1\"><a href=\"#section-5.2\" class=\"auto internal xref\">5.2</a>.  <a href=\"#name-ai-providers\" class=\"internal xref\">AI Providers</a></p>\n<ul class=\"compact toc ulBare ulEmpty\">\n<li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.5.2.2.2.1\">\n                    <p id=\"section-toc.1-1.5.2.2.2.1.1\"><a href=\"#section-5.2.1\" class=\"auto internal xref\">5.2.1</a>.  <a href=\"#name-publishing-schema\" class=\"internal xref\">Publishing Schema</a></p>\n</li>\n                  <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.5.2.2.2.2\">\n                    <p id=\"section-toc.1-1.5.2.2.2.2.1\"><a href=\"#section-5.2.2\" class=\"auto internal xref\">5.2.2</a>.  <a href=\"#name-ttls-update-agility\" class=\"internal xref\">TTLs, Update Agility</a></p>\n</li>\n                  <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.5.2.2.2.3\">\n                    <p id=\"section-toc.1-1.5.2.2.2.3.1\"><a href=\"#section-5.2.3\" class=\"auto internal xref\">5.2.3</a>.  <a href=\"#name-example-dns-aid-zonefile\" class=\"internal xref\">Example DNS-AID Zonefile</a></p>\n</li>\n                  <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.5.2.2.2.4\">\n                    <p id=\"section-toc.1-1.5.2.2.2.4.1\"><a href=\"#section-5.2.4\" class=\"auto internal xref\">5.2.4</a>.  <a href=\"#name-how-to-use-this-zonefile\" class=\"internal xref\">How to use this zonefile</a></p>\n</li>\n                </ul>\n</li>\n              <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.5.2.3\">\n                <p id=\"section-toc.1-1.5.2.3.1\"><a href=\"#section-5.3\" class=\"auto internal xref\">5.3</a>.  <a href=\"#name-why-these-records\" class=\"internal xref\">Why these records</a></p>\n</li>\n            </ul>\n</li>\n          <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.6\">\n            <p id=\"section-toc.1-1.6.1\"><a href=\"#section-6\" class=\"auto internal xref\">6</a>.  <a href=\"#name-future-work-unaddressed-por\" class=\"internal xref\">Future Work &amp; Unaddressed Portions</a></p>\n</li>\n          <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.7\">\n            <p id=\"section-toc.1-1.7.1\"><a href=\"#section-7\" class=\"auto internal xref\">7</a>.  <a href=\"#name-security-considerations\" class=\"internal xref\">Security Considerations</a></p>\n</li>\n          <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.8\">\n            <p id=\"section-toc.1-1.8.1\"><a href=\"#section-8\" class=\"auto internal xref\">8</a>.  <a href=\"#name-operational-considerations\" class=\"internal xref\">Operational Considerations</a></p>\n</li>\n          <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.9\">\n            <p id=\"section-toc.1-1.9.1\"><a href=\"#section-9\" class=\"auto internal xref\">9</a>.  <a href=\"#name-iana-considerations\" class=\"internal xref\">IANA Considerations</a></p>\n</li>\n          <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.10\">\n            <p id=\"section-toc.1-1.10.1\"><a href=\"#section-10\" class=\"auto internal xref\">10</a>. <a href=\"#name-references\" class=\"internal xref\">References</a></p>\n<ul class=\"compact toc ulBare ulEmpty\">\n<li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.10.2.1\">\n                <p id=\"section-toc.1-1.10.2.1.1\"><a href=\"#section-10.1\" class=\"auto internal xref\">10.1</a>.  <a href=\"#name-normative-references\" class=\"internal xref\">Normative References</a></p>\n</li>\n              <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.10.2.2\">\n                <p id=\"section-toc.1-1.10.2.2.1\"><a href=\"#section-10.2\" class=\"auto internal xref\">10.2</a>.  <a href=\"#name-informative-references\" class=\"internal xref\">Informative References</a></p>\n</li>\n            </ul>\n</li>\n          <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.11\">\n            <p id=\"section-toc.1-1.11.1\"><a href=\"#appendix-A\" class=\"auto internal xref\"></a><a href=\"#name-acknowledgments\" class=\"internal xref\">Acknowledgments</a></p>\n</li>\n          <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.12\">\n            <p id=\"section-toc.1-1.12.1\"><a href=\"#appendix-B\" class=\"auto internal xref\"></a><a href=\"#name-authors-addresses\" class=\"internal xref\">Authors' Addresses</a></p>\n</li>\n        </ul>\n</nav>\n</section>\n</div>\n<div id=\"introduction\">\n<section id=\"section-1\">\n      <h2 id=\"name-introduction\">\n<a href=\"#section-1\" class=\"section-number selfRef\">1. </a><a href=\"#name-introduction\" class=\"section-name selfRef\">Introduction</a>\n      </h2>\n<p id=\"section-1-1\">This document describes DNS for AI Agent Discovery (DNS-AID), a mechanism that enables agents to retrieve operational parameters prior to initiating a session. DNS-AID introduces a leaf zone convention (e.g., _agents.example.com) containing Service Binding (SVCB) records (e.g., chat._agents.example.com) that encode application-specific metadata. It is these records that enable agents to retrieve operational parameters prior to initiating a session, supporting both targeted lookups and capability-based discovery.<a href=\"#section-1-1\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-1-2\">The approach leverages existing DNS protocols and records, including DNS Service Discovery (DNS-SD), DNSSEC, and DANE, to provide integrity, authenticity, and automation without requiring human intervention and without requiring modification of the basic principles of DNS. Lastly DNS-AID leverages Domain Control Validation (DCV) described as a best current practice to prove an agent is authorized to act on behalf of a domain in <span>[<a href=\"#I-D.draft-ietf-dnsop-domain-verification-techniques\" class=\"cite xref\">I-D.draft-ietf-dnsop-domain-verification-techniques</a>]</span>.<a href=\"#section-1-2\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-1-3\">DNS-AID provides the bootstrap for discovering an organization's agents. An organization can publish it's own registry of agents and their capabilities at a well-known entry point in the DNS hierarchy. It is also possible to provide names for commonly used agents, so that no registry needs to be queried and the returned capabilities processed (e.g., on a model card or other schema) before the name of can be resolved. It is expected that other documents will develop the content of any registry, such as refining the model card concept to a more structure schema, and will specify the protocol used to interact with the registry. It is more performant and deterministic to receive the details of the IP, protocols and port from an SVCB record than it is to determine this from a model card. It also mitigates against the vulnerability of parsing this information from a model card.<a href=\"#section-1-3\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-1-4\">For example, a company may only have a few external agents available for use, and if the IETF standardizes 'types' of AI agents, then perhaps _chat._agents.example.com or _img2txt._agents.example.com etc are all different SVCB records. On the other hand a company may provide an index of all agents via a well know entry point in the DNS hierarchy e.g. _index._agents.example.com.<a href=\"#section-1-4\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-1-5\">For example, a company might have only a few external agents available for use, and if the 'types' of AI agent are standardized, then (for example) _chat._agents.example.com and _img2txt._agents.example.com would use different SVCB records.  On the other hand, a company may provide an index of all agents via a well-known entry point in the DNS hierarchy, e.g., _index._agents.example.com.<a href=\"#section-1-5\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-1-6\">The DNS-AID model is designed for incremental and non-disruptive deployment within existing DNS infrastructure. It introduces no new DNS message formats, opcodes, response codes, or resource record types. Instead, it defines a structured namespace convention and usage profile for existing record types (primarily SVCB, TXT, and TLSA) all within designated leaf zones (e.g., _a2a._agents.example.com).<a href=\"#section-1-6\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-1-7\">Organizations may adopt DNS-AID by publishing agent metadata under delegated subdomains, leveraging DNSSEC for integrity and authenticity, and optionally implementing Domain Control Validation (DCV) to signal delegated authority. These zones may be exposed selectively via split-horizon DNS or different zones, enabling differentiated discovery views for internal and external agents. No changes are required to recursive or authoritative DNS server implementations beyond standard support for DNSSEC and SVCB.<a href=\"#section-1-7\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-1-8\">This model supports opt-in adoption, allowing agent operators to publish discovery metadata without coordination with external registries or protocol maintainers. It is compatible with existing DNS tooling, including zone provisioning systems, monitoring platforms, and resolver configurations. DNS-AID is therefore suitable for deployment across enterprise, cloud, and federated environments, and may coexist with other discovery mechanisms without conflict.<a href=\"#section-1-8\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"conventions-and-definitions\">\n<section id=\"section-2\">\n      <h2 id=\"name-conventions-and-definitions\">\n<a href=\"#section-2\" class=\"section-number selfRef\">2. </a><a href=\"#name-conventions-and-definitions\" class=\"section-name selfRef\">Conventions and Definitions</a>\n      </h2>\n<p id=\"section-2-1\">The key words \"<span class=\"bcp14\">MUST</span>\", \"<span class=\"bcp14\">MUST NOT</span>\", \"<span class=\"bcp14\">REQUIRED</span>\", \"<span class=\"bcp14\">SHALL</span>\", \"<span class=\"bcp14\">SHALL NOT</span>\", \"<span class=\"bcp14\">SHOULD</span>\", \"<span class=\"bcp14\">SHOULD NOT</span>\", \"<span class=\"bcp14\">RECOMMENDED</span>\", \"<span class=\"bcp14\">NOT RECOMMENDED</span>\",\n\"<span class=\"bcp14\">MAY</span>\", and \"<span class=\"bcp14\">OPTIONAL</span>\" in this document are to be interpreted as\ndescribed in BCP 14 <span>[<a href=\"#RFC2119\" class=\"cite xref\">RFC2119</a>]</span> <span>[<a href=\"#RFC8174\" class=\"cite xref\">RFC8174</a>]</span> when, and only when, they\nappear in all capitals, as shown here.<a href=\"#section-2-1\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"dns-mechanisms-for-agent-discovery\">\n<section id=\"section-3\">\n      <h2 id=\"name-dns-mechanisms-for-agent-di\">\n<a href=\"#section-3\" class=\"section-number selfRef\">3. </a><a href=\"#name-dns-mechanisms-for-agent-di\" class=\"section-name selfRef\">DNS Mechanisms for Agent Discovery</a>\n      </h2>\n<p id=\"section-3-1\">AI agents that need to be discovered are currently being developed to support tasks such as travel planning, etc. See <a href=\"#agent-cap\" class=\"auto internal xref\">Figure 1</a>.<a href=\"#section-3-1\" class=\"pilcrow\">¶</a></p>\n<span id=\"name-ai-agent-capabilities\"></span><div id=\"agent-cap\">\n<figure id=\"figure-1\">\n        <div id=\"section-3-2.1\">\n          <div class=\"alignLeft art-svg artwork\" id=\"section-3-2.1.1\">\n<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" height=\"288\" width=\"440\" viewBox=\"0 0 440 288\" class=\"diagram\" text-anchor=\"middle\" font-family=\"monospace\" font-size=\"13px\" stroke-linecap=\"round\">\n              <path d=\"M 8,64 L 8,240\" fill=\"none\" stroke=\"black\"></path>\n              <path d=\"M 200,64 L 200,240\" fill=\"none\" stroke=\"black\"></path>\n              <path d=\"M 240,64 L 240,240\" fill=\"none\" stroke=\"black\"></path>\n              <path d=\"M 432,64 L 432,240\" fill=\"none\" stroke=\"black\"></path>\n              <path d=\"M 8,64 L 200,64\" fill=\"none\" stroke=\"black\"></path>\n              <path d=\"M 240,64 L 432,64\" fill=\"none\" stroke=\"black\"></path>\n              <path d=\"M 8,240 L 200,240\" fill=\"none\" stroke=\"black\"></path>\n              <path d=\"M 240,240 L 432,240\" fill=\"none\" stroke=\"black\"></path>\n              <g class=\"text\">\n                <text x=\"168\" y=\"36\">Agent</text>\n                <text x=\"244\" y=\"36\">Capabilities</text>\n                <text x=\"96\" y=\"84\">DISCOVERY</text>\n                <text x=\"328\" y=\"84\">APPLICATION</text>\n                <text x=\"32\" y=\"116\">-</text>\n                <text x=\"60\" y=\"116\">SVCB</text>\n                <text x=\"112\" y=\"116\">(INDEX)</text>\n                <text x=\"264\" y=\"116\">-</text>\n                <text x=\"300\" y=\"116\">TRAVEL</text>\n                <text x=\"68\" y=\"132\">IP</text>\n                <text x=\"264\" y=\"132\">-</text>\n                <text x=\"292\" y=\"132\">COST</text>\n                <text x=\"92\" y=\"148\">PROTOCOL</text>\n                <text x=\"264\" y=\"148\">-</text>\n                <text x=\"324\" y=\"148\">ATTESTATIONS</text>\n                <text x=\"76\" y=\"164\">PORT</text>\n                <text x=\"316\" y=\"164\">TRAINING</text>\n                <text x=\"372\" y=\"164\">DATA</text>\n                <text x=\"340\" y=\"180\">CERTIFICATIONS</text>\n                <text x=\"48\" y=\"196\">-WELL</text>\n                <text x=\"96\" y=\"196\">KNOWN</text>\n                <text x=\"148\" y=\"196\">AGENTS</text>\n                <text x=\"324\" y=\"196\">ACCEPTABLE</text>\n                <text x=\"384\" y=\"196\">USE</text>\n                <text x=\"68\" y=\"212\">SVCB</text>\n                <text x=\"104\" y=\"212\">RRs</text>\n                <text x=\"264\" y=\"212\">-</text>\n                <text x=\"284\" y=\"212\">TO</text>\n                <text x=\"308\" y=\"212\">BE</text>\n                <text x=\"372\" y=\"212\">SPECIFIED...</text>\n                <text x=\"76\" y=\"276\">This</text>\n                <text x=\"120\" y=\"276\">draft</text>\n                <text x=\"312\" y=\"276\">Other</text>\n                <text x=\"364\" y=\"276\">drafts</text>\n              </g>\n            </svg><a href=\"#section-3-2.1.1\" class=\"pilcrow\">¶</a>\n</div>\n</div>\n<figcaption><a href=\"#figure-1\" class=\"selfRef\">Figure 1</a>:\n<a href=\"#name-ai-agent-capabilities\" class=\"selfRef\">AI Agent Capabilities</a>\n        </figcaption></figure>\n</div>\n<div id=\"use-of-service-binding-records-in-discovery\">\n<section id=\"section-3.1\">\n        <h3 id=\"name-use-of-service-binding-reco\">\n<a href=\"#section-3.1\" class=\"section-number selfRef\">3.1. </a><a href=\"#name-use-of-service-binding-reco\" class=\"section-name selfRef\">Use of Service Binding Records in Discovery</a>\n        </h3>\n<p id=\"section-3.1-1\">Agents will use SVCB records as defined in <span>[<a href=\"#RFC9460\" class=\"cite xref\">RFC9460</a>]</span> to discover other agent endpoints under structured leaf zones (e.g., _chat._agents.example.com). These records allow querying agents to retrieve operational parameters prior to initiating a session, including supported protocols, privacy features (e.g., Encrypted Client Hello via ECH), and failover configurations.<a href=\"#section-3.1-1\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-3.1-2\">Agents may advertise support for QUIC, HTTP/3, or agent-to-agent protocols via ALPN declarations. Operators may specify alternate endpoints or migrate services across domains without relying on CNAME indirection, improving performance and reducing DNS resolution complexity.<a href=\"#section-3.1-2\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-3.1-3\">When paired with attribute leaf zones and custom SVCB parameters, this mechanism enables fine-grained discovery of agent capabilities. For instance, an agent querying _a2a._agents.example.com may receive an SVCB record indicating supported modalities (e.g., chat, image-to-text), expected input formats, and cost-related metadata (e.g., token pricing). This structured discovery model supports deterministic, cacheable, and semantically rich interactions between agents.<a href=\"#section-3.1-3\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-3.1-4\">SVCB records can indicate the protocol used to communicate with a given agent as in <a href=\"#svcb-ex\" class=\"auto internal xref\">Figure 2</a>:<a href=\"#section-3.1-4\" class=\"pilcrow\">¶</a></p>\n<span id=\"name-svcb-record-example\"></span><div id=\"svcb-ex\">\n<figure id=\"figure-2\">\n          <div id=\"section-3.1-5.1\">\n            <div class=\"alignLeft art-svg artwork\" id=\"section-3.1-5.1.1\">\n<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" height=\"128\" width=\"568\" viewBox=\"0 0 568 128\" class=\"diagram\" text-anchor=\"middle\" font-family=\"monospace\" font-size=\"13px\" stroke-linecap=\"round\">\n                <g class=\"text\">\n                  <text x=\"112\" y=\"36\">_index._agents.example.com.</text>\n                  <text x=\"244\" y=\"36\">3600</text>\n                  <text x=\"276\" y=\"36\">IN</text>\n                  <text x=\"308\" y=\"36\">SVCB</text>\n                  <text x=\"336\" y=\"36\">1</text>\n                  <text x=\"448\" y=\"36\">ai-index-svc.example.com.</text>\n                  <text x=\"560\" y=\"36\">(</text>\n                  <text x=\"76\" y=\"52\">alpn=\"a2a\"</text>\n                  <text x=\"68\" y=\"68\">port=443</text>\n                  <text x=\"108\" y=\"84\">ipv4hint=192.0.2.1</text>\n                  <text x=\"116\" y=\"100\">ipv6hint=2001:db8::1</text>\n                  <text x=\"8\" y=\"116\">)</text>\n                </g>\n              </svg><a href=\"#section-3.1-5.1.1\" class=\"pilcrow\">¶</a>\n</div>\n</div>\n<figcaption><a href=\"#figure-2\" class=\"selfRef\">Figure 2</a>:\n<a href=\"#name-svcb-record-example\" class=\"selfRef\">SVCB Record Example</a>\n          </figcaption></figure>\n</div>\n</section>\n</div>\n<div id=\"DNS-SD\">\n<section id=\"section-3.2\">\n        <h3 id=\"name-dns-based-service-discovery\">\n<a href=\"#section-3.2\" class=\"section-number selfRef\">3.2. </a><a href=\"#name-dns-based-service-discovery\" class=\"section-name selfRef\">DNS-Based Service Discovery</a>\n        </h3>\n<p id=\"section-3.2-1\">DNS-SD as defined in <span>[<a href=\"#RFC6763\" class=\"cite xref\">RFC6763</a>]</span>, extends the capabilities of the Domain Name System to support service-type-based discovery. Unlike previous DNS resolution, which requires prior knowledge of a specific hostname, DNS-SD enables clients to discover services based on their functional type (e.g., _http._tcp, _printer._udp) within a given domain.<a href=\"#section-3.2-1\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-3.2-2\">DNS-SD provides a mechanism for AI agents to discover other agents or services based on declared capabilities rather than explicit names. For example, an agent may issue a query for _data-cleaner._a2a._agents.example.com to locate services capable of performing data sanitization tasks. This type-based discovery model supports dynamic ecosystems where agent roles and capabilities may evolve over time.<a href=\"#section-3.2-2\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-3.2-3\">DNS-SD operates over both multicast DNS (mDNS) and unicast DNS, allowing for flexible deployment in local networks and globally scoped domains. In enterprise or cloud environments, unicast DNS-SD enables structured and policy-compliant discovery across organizational boundaries. When combined with SVCB records, DNS-SD allows agents to retrieve detailed service metadata, including transport preferences, protocol support, and operational parameters.<a href=\"#section-3.2-3\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-3.2-4\">This model supports federated agent architectures, where multiple agents may advertise similar capabilities under different domains. By leveraging DNS-SD, agents can perform capability-based queries and receive a list of candidate services, each accompanied by structured metadata for evaluation and selection.<a href=\"#section-3.2-4\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-3.2-5\">DNS-SD also supports extensibility through TXT records and custom service naming conventions, enabling organizations to encode additional attributes relevant to agent interaction (e.g., supported data formats, authentication requirements, or cost models). A TXT record with the same name as the SVCB record could be used to provide additional meta-data. These features make DNS-SD a suitable foundation for scalable, interoperable, and semantically rich agent discovery workflows.<a href=\"#section-3.2-5\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-3.2-6\">An index of agents by type of service can be provided via DNS-SD as a well known entry point to a more complete capability description via a common schema, e.g., _index._agents.example.com. This may be used in addition to or instead of querying for specific agent services such as _data-cleaner._a2a._agents.example.com. Querying specific services will shortcut communication compared to querying an index.<a href=\"#section-3.2-6\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"DCV\">\n<section id=\"section-3.3\">\n        <h3 id=\"name-domain-control-validation\">\n<a href=\"#section-3.3\" class=\"section-number selfRef\">3.3. </a><a href=\"#name-domain-control-validation\" class=\"section-name selfRef\">Domain Control Validation</a>\n        </h3>\n<p id=\"section-3.3-1\">DCV refers to the process by which an entity demonstrates authoritative control over a DNS domain. As described in <span>[<a href=\"#I-D.draft-ietf-dnsop-domain-verification-techniques\" class=\"cite xref\">I-D.draft-ietf-dnsop-domain-verification-techniques</a>]</span>, DNS-based DCV typically involves the placement of a DNS record, most commonly a TXT record, containing a challenge token or assertion at a designated location within the domain. This record is then queried by an Application Service Provider (ASP) to confirm control.<a href=\"#section-3.3-1\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-3.3-2\">Authorization should not solely exist solely within the discovery phase, however there may be use cases in which agents acting on behalf of domains, prior to application handshake, can prove they are acting on behalf of a domain (organization). This may be a preferable mechanism, especially for ephemeral agents, to prove they act on behalf of a domain, rather than manage many temporary security mechanisms across multiple information security pillars (firewalls, certs, etc.).<a href=\"#section-3.3-2\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-3.3-3\">In the context of DNS-AID, DCV provides a mechanism for agents to assert delegated authority on behalf of a domain. For example, an organization may publish a TXT record under a structured leaf zone (e.g., _agent-roles._a2a._agents.example.com) containing metadata such as:<a href=\"#section-3.3-3\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-3.3-4\">ai-role=data-cleaner; crm=dummyorg; access=readonly<a href=\"#section-3.3-4\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-3.3-5\">This record signals that a specific agent is authorized to perform scoped operations under the domain's authority. When protected by DNSSEC <span>[<a href=\"#RFC9364\" class=\"cite xref\">RFC9364</a>]</span>, such assertions become cryptographically verifiable, mitigating risks of spoofing or unauthorized delegation.<a href=\"#section-3.3-5\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-3.3-6\">DCV within DNS-AID supports both ephemeral and persistent validation models. Ephemeral validation may be used for short-lived agent credentials or session-based delegation, while persistent records enable long-term authorization signaling. TTL and expiration considerations, as discussed in the draft, are critical to ensuring that validation records do not persist beyond their intended scope.<a href=\"#section-3.3-6\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-3.3-7\">Furthermore, DNS-AID encourages the use of application-specific naming conventions and token formats to avoid service confusion and collision. Validation records should be scoped to the intended service and include unguessable tokens or structured metadata to prevent unauthorized reuse across federated agent ecosystems.<a href=\"#section-3.3-7\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n</section>\n</div>\n<div id=\"Architecture\">\n<section id=\"section-4\">\n      <h2 id=\"name-architecture\">\n<a href=\"#section-4\" class=\"section-number selfRef\">4. </a><a href=\"#name-architecture\" class=\"section-name selfRef\">Architecture</a>\n      </h2>\n<p id=\"section-4-1\">The DNS hierarchical namespace supports multi-tenant and federated discovery models. Organizations may delegate subdomains to tenants (e.g., customer1._agents.vendor.com) or publish agent metadata under federated zones (e.g., region1._a2a.example.org). This enables scoped discovery, policy enforcement, and operational isolation across tenants, departments, or geographic regions. Combined with DNSSEC and access controls, this model supports secure delegation and trust signaling in complex agent ecosystems, including SaaS platforms and cross-organizational collaborations.<a href=\"#section-4-1\" class=\"pilcrow\">¶</a></p>\n<div id=\"example-communication\">\n<section id=\"section-4.1\">\n        <h3 id=\"name-example-communication\">\n<a href=\"#section-4.1\" class=\"section-number selfRef\">4.1. </a><a href=\"#name-example-communication\" class=\"section-name selfRef\">Example Communication</a>\n        </h3>\n<p id=\"section-4.1-1\">Agent (org1) wants to find other agents provided by another entity (org2) and discover/verify capabilities <a href=\"#querying-ex\" class=\"auto internal xref\">Figure 3</a>:<a href=\"#section-4.1-1\" class=\"pilcrow\">¶</a></p>\n<span id=\"name-agent-org1-querying-org2\"></span><div id=\"querying-ex\">\n<figure id=\"figure-3\">\n          <div id=\"section-4.1-2.1\">\n            <div class=\"alignLeft art-svg artwork\" id=\"section-4.1-2.1.1\">\n<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" height=\"272\" width=\"528\" viewBox=\"0 0 528 272\" class=\"diagram\" text-anchor=\"middle\" font-family=\"monospace\" font-size=\"13px\" stroke-linecap=\"round\">\n                <path d=\"M 8,64 L 8,112\" fill=\"none\" stroke=\"black\"></path>\n                <path d=\"M 8,144 L 8,256\" fill=\"none\" stroke=\"black\"></path>\n                <path d=\"M 80,64 L 80,112\" fill=\"none\" stroke=\"black\"></path>\n                <path d=\"M 272,48 L 272,112\" fill=\"none\" stroke=\"black\"></path>\n                <path d=\"M 344,64 L 344,112\" fill=\"none\" stroke=\"black\"></path>\n                <path d=\"M 400,104 L 400,144\" fill=\"none\" stroke=\"black\"></path>\n                <path d=\"M 448,64 L 448,112\" fill=\"none\" stroke=\"black\"></path>\n                <path d=\"M 520,64 L 520,112\" fill=\"none\" stroke=\"black\"></path>\n                <path d=\"M 520,144 L 520,256\" fill=\"none\" stroke=\"black\"></path>\n                <path d=\"M 8,64 L 80,64\" fill=\"none\" stroke=\"black\"></path>\n                <path d=\"M 272,64 L 344,64\" fill=\"none\" stroke=\"black\"></path>\n                <path d=\"M 448,64 L 520,64\" fill=\"none\" stroke=\"black\"></path>\n                <path d=\"M 88,80 L 264,80\" fill=\"none\" stroke=\"black\"></path>\n                <path d=\"M 352,80 L 440,80\" fill=\"none\" stroke=\"black\"></path>\n                <path d=\"M 88,96 L 264,96\" fill=\"none\" stroke=\"black\"></path>\n                <path d=\"M 352,96 L 440,96\" fill=\"none\" stroke=\"black\"></path>\n                <path d=\"M 8,112 L 80,112\" fill=\"none\" stroke=\"black\"></path>\n                <path d=\"M 272,112 L 344,112\" fill=\"none\" stroke=\"black\"></path>\n                <path d=\"M 448,112 L 520,112\" fill=\"none\" stroke=\"black\"></path>\n                <path d=\"M 8,144 L 520,144\" fill=\"none\" stroke=\"black\"></path>\n                <path d=\"M 8,256 L 520,256\" fill=\"none\" stroke=\"black\"></path>\n                <polygon class=\"arrowhead\" points=\"448,80 436,74.4 436,85.6\" fill=\"black\" transform=\"rotate(0,440,80)\"></polygon>\n                <polygon class=\"arrowhead\" points=\"360,96 348,90.4 348,101.6\" fill=\"black\" transform=\"rotate(180,352,96)\"></polygon>\n                <polygon class=\"arrowhead\" points=\"272,80 260,74.4 260,85.6\" fill=\"black\" transform=\"rotate(0,264,80)\"></polygon>\n                <polygon class=\"arrowhead\" points=\"96,96 84,90.4 84,101.6\" fill=\"black\" transform=\"rotate(180,88,96)\"></polygon>\n                <g class=\"text\">\n                  <text x=\"152\" y=\"36\">DNS</text>\n                  <text x=\"188\" y=\"36\">SVCB</text>\n                  <text x=\"232\" y=\"36\">Query</text>\n                  <text x=\"188\" y=\"52\">_a2a._agents.example</text>\n                  <text x=\"288\" y=\"52\">com</text>\n                  <text x=\"20\" y=\"84\">AI</text>\n                  <text x=\"56\" y=\"84\">Agent</text>\n                  <text x=\"308\" y=\"84\">Resolver</text>\n                  <text x=\"468\" y=\"84\">Auth</text>\n                  <text x=\"504\" y=\"84\">DNS</text>\n                  <text x=\"44\" y=\"100\">(ORG1)</text>\n                  <text x=\"308\" y=\"100\">(ORG1)</text>\n                  <text x=\"484\" y=\"100\">(ORG2)</text>\n                  <text x=\"100\" y=\"164\">_a2a._agents.org2.com.</text>\n                  <text x=\"212\" y=\"164\">3600</text>\n                  <text x=\"244\" y=\"164\">IN</text>\n                  <text x=\"276\" y=\"164\">SVCB</text>\n                  <text x=\"304\" y=\"164\">1</text>\n                  <text x=\"404\" y=\"164\">ai-index-svc.org2.com.</text>\n                  <text x=\"504\" y=\"164\">(</text>\n                  <text x=\"84\" y=\"180\">alpn=\"a2a\"</text>\n                  <text x=\"76\" y=\"196\">port=443</text>\n                  <text x=\"116\" y=\"212\">ipv4hint=192.0.2.1</text>\n                  <text x=\"124\" y=\"228\">ipv6hint=2001:db8::1</text>\n                  <text x=\"16\" y=\"244\">)</text>\n                </g>\n              </svg><a href=\"#section-4.1-2.1.1\" class=\"pilcrow\">¶</a>\n</div>\n</div>\n<figcaption><a href=\"#figure-3\" class=\"selfRef\">Figure 3</a>:\n<a href=\"#name-agent-org1-querying-org2\" class=\"selfRef\">Agent ORG1 Querying Org2</a>\n          </figcaption></figure>\n</div>\n</section>\n</div>\n<div id=\"example-record\">\n<section id=\"section-4.2\">\n        <h3 id=\"name-example-record\">\n<a href=\"#section-4.2\" class=\"section-number selfRef\">4.2. </a><a href=\"#name-example-record\" class=\"section-name selfRef\">Example Record</a>\n        </h3>\n<span id=\"name-example-svcb-resource-recor\"></span><div id=\"exampleRR\">\n<figure id=\"figure-4\">\n          <div id=\"section-4.2-1.1\">\n            <div class=\"alignLeft art-svg artwork\" id=\"section-4.2-1.1.1\">\n<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" height=\"128\" width=\"504\" viewBox=\"0 0 504 128\" class=\"diagram\" text-anchor=\"middle\" font-family=\"monospace\" font-size=\"13px\" stroke-linecap=\"round\">\n                <g class=\"text\">\n                  <text x=\"92\" y=\"36\">_a2a._agents.org2.com.</text>\n                  <text x=\"204\" y=\"36\">3600</text>\n                  <text x=\"236\" y=\"36\">IN</text>\n                  <text x=\"268\" y=\"36\">SVCB</text>\n                  <text x=\"296\" y=\"36\">1</text>\n                  <text x=\"396\" y=\"36\">ai-index-svc.org2.com.</text>\n                  <text x=\"496\" y=\"36\">(</text>\n                  <text x=\"76\" y=\"52\">alpn=\"a2a\"</text>\n                  <text x=\"68\" y=\"68\">port=443</text>\n                  <text x=\"108\" y=\"84\">ipv4hint=192.0.2.1</text>\n                  <text x=\"116\" y=\"100\">ipv6hint=2001:db8::1</text>\n                  <text x=\"8\" y=\"116\">)</text>\n                </g>\n              </svg><a href=\"#section-4.2-1.1.1\" class=\"pilcrow\">¶</a>\n</div>\n</div>\n<figcaption><a href=\"#figure-4\" class=\"selfRef\">Figure 4</a>:\n<a href=\"#name-example-svcb-resource-recor\" class=\"selfRef\">Example SVCB Resource Record</a>\n          </figcaption></figure>\n</div>\n<ul class=\"normal\">\n<li class=\"normal\" id=\"section-4.2-2.1\">\n            <p id=\"section-4.2-2.1.1\">_a2a._agents.example.com.: The service name, following the SVCB naming convention (_service._agents.example.com).<a href=\"#section-4.2-2.1.1\" class=\"pilcrow\">¶</a></p>\n</li>\n          <li class=\"normal\" id=\"section-4.2-2.2\">\n            <p id=\"section-4.2-2.2.1\">3600: TTL (Time to Live) in seconds.<a href=\"#section-4.2-2.2.1\" class=\"pilcrow\">¶</a></p>\n</li>\n          <li class=\"normal\" id=\"section-4.2-2.3\">\n            <p id=\"section-4.2-2.3.1\">IN SVCB: The record type.<a href=\"#section-4.2-2.3.1\" class=\"pilcrow\">¶</a></p>\n</li>\n          <li class=\"normal\" id=\"section-4.2-2.4\">\n            <p id=\"section-4.2-2.4.1\">1: SVCB priority. 0 is for alias mode; 1+ is for service mode.<a href=\"#section-4.2-2.4.1\" class=\"pilcrow\">¶</a></p>\n</li>\n          <li class=\"normal\" id=\"section-4.2-2.5\">\n            <p id=\"section-4.2-2.5.1\">ai-index-svc.org2.com.: The target name of the service.<a href=\"#section-4.2-2.5.1\" class=\"pilcrow\">¶</a></p>\n</li>\n          <li class=\"normal\" id=\"section-4.2-2.6\">\n            <p id=\"section-4.2-2.6.1\">alpn=\"a2a\": Specifies the ALPN protocol identifier. This is where your custom protocol is declared.<a href=\"#section-4.2-2.6.1\" class=\"pilcrow\">¶</a></p>\n</li>\n          <li class=\"normal\" id=\"section-4.2-2.7\">\n            <p id=\"section-4.2-2.7.1\">port=443: The port on which the service is available.<a href=\"#section-4.2-2.7.1\" class=\"pilcrow\">¶</a></p>\n</li>\n          <li class=\"normal\" id=\"section-4.2-2.8\">\n            <p id=\"section-4.2-2.8.1\">ipv4hint and ipv6hint: Optional hints for clients to connect directly.<a href=\"#section-4.2-2.8.1\" class=\"pilcrow\">¶</a></p>\n</li>\n        </ul>\n</section>\n</div>\n<div id=\"example-use-cases\">\n<section id=\"section-4.3\">\n        <h3 id=\"name-example-use-cases\">\n<a href=\"#section-4.3\" class=\"section-number selfRef\">4.3. </a><a href=\"#name-example-use-cases\" class=\"section-name selfRef\">Example Use Cases</a>\n        </h3>\n<ol start=\"1\" type=\"1\" class=\"normal type-1\" id=\"section-4.3-1\">\n<li id=\"section-4.3-1.1\">\n            <p id=\"section-4.3-1.1.1\">A user instructs their internal agent to \"clean up DummyCorp contacts based on this email.\" The agent must discover DummyCorp's authorized agents, validate its own delegation to act on behalf of the enterprise, and initiate a secure session. DNS-AID enables this by publishing agent endpoints and roles under DNS zones controlled by each organization.<a href=\"#section-4.3-1.1.1\" class=\"pilcrow\">¶</a></p>\n</li>\n          <li id=\"section-4.3-1.2\">\n            <p id=\"section-4.3-1.2.1\">A research consortium deploys agents across multiple institutions. Each institution publishes its agents under its own domain (e.g., _a2a._agents.universityA.example.edu), allowing collaborators to discover services based on capability (e.g., _data-annotator._a2a.universityB.example.edu) while respecting institutional boundaries and trust models.<a href=\"#section-4.3-1.2.1\" class=\"pilcrow\">¶</a></p>\n</li>\n          <li id=\"section-4.3-1.3\">\n            <p id=\"section-4.3-1.3.1\">A SaaS provider hosts agents for multiple customers. Each customer's agents are published under tenant-specific zones (e.g., customer1._agents.saas.com), enabling scoped discovery and policy enforcement. DNS-AID supports this model through hierarchical zone delegation and metadata-rich SVCB records.<a href=\"#section-4.3-1.3.1\" class=\"pilcrow\">¶</a></p>\n</li>\n          <li id=\"section-4.3-1.4\">\n            <p id=\"section-4.3-1.4.1\">Lightweight agents deployed on mobile or edge devices require low-latency, cacheable discovery mechanisms. The DNS distributed architecture and support for SVCB hints (e.g., IP addresses, preferred protocols) enable efficient resolution and connection bootstrapping in constrained environments.<a href=\"#section-4.3-1.4.1\" class=\"pilcrow\">¶</a></p>\n</li>\n          <li id=\"section-4.3-1.5\">\n            <p id=\"section-4.3-1.5.1\">In regulated industries, agents must operate within jurisdictional boundaries and maintain audit trails of interactions. DNS supports geographic scoping via ccTLDs and split-horizon configurations, while query logging and DNSSEC provide observability and integrity guarantees.<a href=\"#section-4.3-1.5.1\" class=\"pilcrow\">¶</a></p>\n</li>\n        </ol>\n</section>\n</div>\n<div id=\"zone-and-other-requirements\">\n<section id=\"section-4.4\">\n        <h3 id=\"name-zone-and-other-requirements\">\n<a href=\"#section-4.4\" class=\"section-number selfRef\">4.4. </a><a href=\"#name-zone-and-other-requirements\" class=\"section-name selfRef\">Zone and Other Requirements</a>\n        </h3>\n<div id=\"delegation-and-chain-of-trust\">\n<section id=\"section-4.4.1\">\n          <h4 id=\"name-delegation-and-chain-of-tru\">\n<a href=\"#section-4.4.1\" class=\"section-number selfRef\">4.4.1. </a><a href=\"#name-delegation-and-chain-of-tru\" class=\"section-name selfRef\">Delegation and Chain of Trust</a>\n          </h4>\n<p id=\"section-4.4.1-1\">A public authoritative zone used for the purposes of agent discovery <span class=\"bcp14\">MUST</span> use DNSSEC <span>[<a href=\"#RFC4033\" class=\"cite xref\">RFC4033</a>]</span>. The zone <span class=\"bcp14\">MUST</span> establish a complete chain of trust to a publicly recognized trust anchor. AI agents <span class=\"bcp14\">MUST</span> use validating resolvers, or have the capability to validate records.<a href=\"#section-4.4.1-1\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-4.4.1-2\">All DNS-AID-specific discovery records (e.g. SVCB/HTTPS <span>[<a href=\"#RFC9460\" class=\"cite xref\">RFC9460</a>]</span>, TXT/URI <span>[<a href=\"#RFC7553\" class=\"cite xref\">RFC7553</a>]</span> used for capability descriptors, and any DNS-AID-defined RRTypes) <span class=\"bcp14\">MUST</span> be signed and published in the DNS-AID External Zone. Where DNS-AID endpoints rely on TLS, publication of DANE TLSA records <span class=\"bcp14\">MAY</span> be used to bind endpoint certificates to DNSSEC-validated names <span>[<a href=\"#RFC6698\" class=\"cite xref\">RFC6698</a>]</span><span>[<a href=\"#RFC7671\" class=\"cite xref\">RFC7671</a>]</span>. Resolver behavior consuming DNS-AID data <span class=\"bcp14\">MUST</span> treat DNSSEC-bogus responses as failures and <span class=\"bcp14\">MUST NOT</span> act on unsigned or invalidly signed discovery data.<a href=\"#section-4.4.1-2\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"performance-optimizations\">\n<section id=\"section-4.4.2\">\n          <h4 id=\"name-performance-optimizations\">\n<a href=\"#section-4.4.2\" class=\"section-number selfRef\">4.4.2. </a><a href=\"#name-performance-optimizations\" class=\"section-name selfRef\">Performance Optimization(s)</a>\n          </h4>\n<p id=\"section-4.4.2-1\">Each agent service endpoint that is specifically published as a DNS record <span class=\"bcp14\">SHOULD</span> be an SVCB record in ServiceMode (or HTTPS RR for HTTPS endpoints) to convey connection parameters and capability locators with a single lookup <span>[<a href=\"#RFC9460\" class=\"cite xref\">RFC9460</a>]</span>. SVCB \"address hints\" (ipv4hint, ipv6hint) <span class=\"bcp14\">SHOULD</span> be used to reduce A/AAAA follow-up queries; resolvers <span class=\"bcp14\">MAY</span> still validate final addresses via canonical resolution. Where human-friendly names are required, SVCB AliasMode (priority 0) <span class=\"bcp14\">MAY</span> be used to map from a stable alias name to a canonical name.<a href=\"#section-4.4.2-1\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-4.4.2-2\">Authoritative servers <span class=\"bcp14\">MUST</span> support EDNS(0) <span>[<a href=\"#RFC6891\" class=\"cite xref\">RFC6891</a>]</span> and TCP fallback <span>[<a href=\"#RFC7766\" class=\"cite xref\">RFC7766</a>]</span>. Operators <span class=\"bcp14\">SHOULD</span> target response sizes that avoid IP fragmentation on common paths (e.g., &lt;= 1232 bytes on IPv6), preferring compression and layered indirection over oversized RRsets. TTLs <span class=\"bcp14\">MUST</span> be chosen to reflect the volatility of capability data; index/indirection records may use longer TTLs than frequently changing endpoint or capability descriptors. Negative caching <span class=\"bcp14\">MUST</span> conform to <span>[<a href=\"#RFC2308\" class=\"cite xref\">RFC2308</a>]</span>.<a href=\"#section-4.4.2-2\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-4.4.2-3\">A representative naming pattern is shown below; the exact label order is deployment-specific, but the leaf per service, per agent rule applies:<a href=\"#section-4.4.2-3\" class=\"pilcrow\">¶</a></p>\n<div class=\"alignLeft art-text artwork\" id=\"section-4.4.2-4\">\n<pre>\n; Hashed, per-agent, per-service leaf\na4k2f9._mcp._agents.example.org.  600 IN SVCB 1 svc-a4k2f9.example.org.\n    alpn=\"map,h2,h3\" port=443 ipv6hint=2001:db8::5 ipv4hint=192.0.2.5\n\n; Optional alias for a friendlier owner name\nbilling._mcp._agents.example.org. 300 IN SVCB 0 a4k2f9._mcp._agents.example.org.\n</pre><a href=\"#section-4.4.2-4\" class=\"pilcrow\">¶</a>\n</div>\n</section>\n</div>\n<div id=\"customizations\">\n<section id=\"section-4.4.3\">\n          <h4 id=\"name-customizations\">\n<a href=\"#section-4.4.3\" class=\"section-number selfRef\">4.4.3. </a><a href=\"#name-customizations\" class=\"section-name selfRef\">Customization(s)</a>\n          </h4>\n<p id=\"section-4.4.3-1\">DNS-AID deployments <span class=\"bcp14\">MAY</span> define additional SVCB parameters (SvcParamKeys) to convey agent-specific capability metadata, provided that interoperability safeguards in <span>[<a href=\"#RFC9460\" class=\"cite xref\">RFC9460</a>]</span> are observed. During experimentation, unregistered keys <span class=\"bcp14\">MUST</span> use the numeric keyNNNNN presentation form, and any client behavior that depends on them <span class=\"bcp14\">MUST</span> be gated via the mandatory SvcParam to ensure downgrade safety.<a href=\"#section-4.4.3-1\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-4.4.3-2\">This specification defines the following provisional SvcParamKeys for DNS-AID (names are illustrative; production deployments <span class=\"bcp14\">MUST</span> register through IANA per <span>[<a href=\"#RFC9460\" class=\"cite xref\">RFC9460</a>]</span> or use keyNNNNN until standardized):<a href=\"#section-4.4.3-2\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-4.4.3-3\">The following are example use cases for additional params:<a href=\"#section-4.4.3-3\" class=\"pilcrow\">¶</a></p>\n<ul class=\"normal\">\n<li class=\"normal\" id=\"section-4.4.3-4.1\">\n              <p id=\"section-4.4.3-4.1.1\">cap - a capability descriptor locator or inline identifier (e.g., a URN or compact JSON-Ref) that identifies the agent's advertised capability schema/version.<a href=\"#section-4.4.3-4.1.1\" class=\"pilcrow\">¶</a></p>\n</li>\n            <li class=\"normal\" id=\"section-4.4.3-4.2\">\n              <p id=\"section-4.4.3-4.2.1\">cap-sha256 - a base64url-encoded SHA-256 digest of the canonical capability descriptor to support integrity checks and cache revalidation.<a href=\"#section-4.4.3-4.2.1\" class=\"pilcrow\">¶</a></p>\n</li>\n            <li class=\"normal\" id=\"section-4.4.3-4.3\">\n              <p id=\"section-4.4.3-4.3.1\">policy - a URI or URN identifying a policy bundle applicable to this agent (e.g., jurisdiction, data handling class) for client-side selection.<a href=\"#section-4.4.3-4.3.1\" class=\"pilcrow\">¶</a></p>\n</li>\n            <li class=\"normal\" id=\"section-4.4.3-4.4\">\n              <p id=\"section-4.4.3-4.4.1\">realm - an opaque token for multi-tenant scoping or authz realm selection during protocol bootstrapping.<a href=\"#section-4.4.3-4.4.1\" class=\"pilcrow\">¶</a></p>\n</li>\n          </ul>\n<p id=\"section-4.4.3-5\">Clients that require any of these parameters <span class=\"bcp14\">MUST</span> verify their presence via the mandatory key; otherwise, the SVCB record <span class=\"bcp14\">MUST</span> be ignored. Example:<a href=\"#section-4.4.3-5\" class=\"pilcrow\">¶</a></p>\n<div class=\"alignLeft art-text artwork\" id=\"section-4.4.3-6\">\n<pre>\nSingle-RRTYPE publication with custom params (experimental keys shown)\na4k2f9._mcp._agents.example.org. 600 IN SVCB 1 svc-a4k2f9.example.org.\n    alpn=\"h2\" port=443 ipv4hint=192.0.2.5\n    mandatory=alpn,port,key65001,key65002,key65010\n    key65001=\"cap=urn:cap:example:mcp:invoice.v1\"\n    key65002=\"cap-sha256=yvZ0n7q8bE2gYkz8m1j1s0yQG0mC2F6qj3b9pVb6Gk0\"\n    key65010=\"bap=a2a/1,mcp/1\"\n</pre><a href=\"#section-4.4.3-6\" class=\"pilcrow\">¶</a>\n</div>\n<p id=\"section-4.4.3-7\">Where endpoints are HTTPS, the HTTPS RR variant <span class=\"bcp14\">SHOULD</span> be used to co-locate transport parameters such as ECH with capability metadata; otherwise, generic SVCB <span class=\"bcp14\">MAY</span> be used. Future standardization <span class=\"bcp14\">SHOULD</span> define the exact syntax (e.g., ABNF) and registry policy for these keys, including error handling for malformed or conflicting parameters. Until registration is complete, deployments <span class=\"bcp14\">MUST</span> treat unknown keyNNNNN parameters as opaque and <span class=\"bcp14\">MUST NOT</span> infer semantics without out-of-band agreement.<a href=\"#section-4.4.3-7\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n</section>\n</div>\n</section>\n</div>\n<div id=\"implementation-guidance\">\n<section id=\"section-5\">\n      <h2 id=\"name-implementation-guidance\">\n<a href=\"#section-5\" class=\"section-number selfRef\">5. </a><a href=\"#name-implementation-guidance\" class=\"section-name selfRef\">Implementation Guidance</a>\n      </h2>\n<div id=\"discovery-usage-examples\">\n<section id=\"section-5.1\">\n        <h3 id=\"name-discovery-usage-examples\">\n<a href=\"#section-5.1\" class=\"section-number selfRef\">5.1. </a><a href=\"#name-discovery-usage-examples\" class=\"section-name selfRef\">Discovery Usage Examples</a>\n        </h3>\n<div id=\"discovery-status-1-known-service-and-domain\">\n<section id=\"section-5.1.1\">\n          <h4 id=\"name-discovery-status-1-known-se\">\n<a href=\"#section-5.1.1\" class=\"section-number selfRef\">5.1.1. </a><a href=\"#name-discovery-status-1-known-se\" class=\"section-name selfRef\">Discovery Status 1 (Known Service and Domain)</a>\n          </h4>\n<p id=\"section-5.1.1-1\">Query foobar._mcp._agents.example.com <a href=\"#discovery-ex\" class=\"auto internal xref\">Figure 5</a>:<a href=\"#section-5.1.1-1\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-5.1.1-2\">In this scenario, the AI Agent Client knows both the service type (mcp) and the\nauthoritative domain (example.com) and performs a direct SVCB query.<a href=\"#section-5.1.1-2\" class=\"pilcrow\">¶</a></p>\n<span id=\"name-discovery-status-1-svcb-que\"></span><div id=\"discovery-ex\">\n<figure id=\"figure-5\">\n            <div id=\"section-5.1.1-3.1\">\n              <div class=\"alignLeft art-svg artwork\" id=\"section-5.1.1-3.1.1\">\n<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" height=\"816\" width=\"584\" viewBox=\"0 0 584 816\" class=\"diagram\" text-anchor=\"middle\" font-family=\"monospace\" font-size=\"13px\" stroke-linecap=\"round\">\n                  <path d=\"M 72,112 L 72,784\" fill=\"none\" stroke=\"black\"></path>\n                  <path d=\"M 296,112 L 296,784\" fill=\"none\" stroke=\"black\"></path>\n                  <path d=\"M 512,112 L 512,784\" fill=\"none\" stroke=\"black\"></path>\n                  <path d=\"M 80,160 L 288,160\" fill=\"none\" stroke=\"black\"></path>\n                  <path d=\"M 304,208 L 504,208\" fill=\"none\" stroke=\"black\"></path>\n                  <path d=\"M 304,256 L 504,256\" fill=\"none\" stroke=\"black\"></path>\n                  <path d=\"M 304,304 L 504,304\" fill=\"none\" stroke=\"black\"></path>\n                  <path d=\"M 304,352 L 504,352\" fill=\"none\" stroke=\"black\"></path>\n                  <path d=\"M 304,416 L 504,416\" fill=\"none\" stroke=\"black\"></path>\n                  <path d=\"M 304,480 L 504,480\" fill=\"none\" stroke=\"black\"></path>\n                  <path d=\"M 80,544 L 288,544\" fill=\"none\" stroke=\"black\"></path>\n                  <path d=\"M 80,736 L 288,736\" fill=\"none\" stroke=\"black\"></path>\n                  <polygon class=\"arrowhead\" points=\"512,416 500,410.4 500,421.6\" fill=\"black\" transform=\"rotate(0,504,416)\"></polygon>\n                  <polygon class=\"arrowhead\" points=\"512,304 500,298.4 500,309.6\" fill=\"black\" transform=\"rotate(0,504,304)\"></polygon>\n                  <polygon class=\"arrowhead\" points=\"512,208 500,202.4 500,213.6\" fill=\"black\" transform=\"rotate(0,504,208)\"></polygon>\n                  <polygon class=\"arrowhead\" points=\"312,480 300,474.4 300,485.6\" fill=\"black\" transform=\"rotate(180,304,480)\"></polygon>\n                  <polygon class=\"arrowhead\" points=\"312,352 300,346.4 300,357.6\" fill=\"black\" transform=\"rotate(180,304,352)\"></polygon>\n                  <polygon class=\"arrowhead\" points=\"312,256 300,250.4 300,261.6\" fill=\"black\" transform=\"rotate(180,304,256)\"></polygon>\n                  <polygon class=\"arrowhead\" points=\"296,736 284,730.4 284,741.6\" fill=\"black\" transform=\"rotate(0,288,736)\"></polygon>\n                  <polygon class=\"arrowhead\" points=\"296,160 284,154.4 284,165.6\" fill=\"black\" transform=\"rotate(0,288,160)\"></polygon>\n                  <polygon class=\"arrowhead\" points=\"88,544 76,538.4 76,549.6\" fill=\"black\" transform=\"rotate(180,80,544)\"></polygon>\n                  <g class=\"text\">\n                    <text x=\"12\" y=\"36\">AI</text>\n                    <text x=\"48\" y=\"36\">Agent</text>\n                    <text x=\"100\" y=\"36\">Client</text>\n                    <text x=\"24\" y=\"52\">wants</text>\n                    <text x=\"60\" y=\"52\">to</text>\n                    <text x=\"112\" y=\"52\">discover:</text>\n                    <text x=\"296\" y=\"52\">foobar._mcp._agents.example.com</text>\n                    <text x=\"20\" y=\"68\">(mcp</text>\n                    <text x=\"48\" y=\"68\">=</text>\n                    <text x=\"92\" y=\"68\">service,</text>\n                    <text x=\"156\" y=\"68\">foobar</text>\n                    <text x=\"192\" y=\"68\">=</text>\n                    <text x=\"272\" y=\"68\">agent/capability,</text>\n                    <text x=\"392\" y=\"68\">example.com</text>\n                    <text x=\"448\" y=\"68\">=</text>\n                    <text x=\"488\" y=\"68\">trusted</text>\n                    <text x=\"552\" y=\"68\">domain)</text>\n                    <text x=\"40\" y=\"100\">Agent</text>\n                    <text x=\"92\" y=\"100\">Client</text>\n                    <text x=\"260\" y=\"100\">Resolver</text>\n                    <text x=\"304\" y=\"100\">/</text>\n                    <text x=\"336\" y=\"100\">Cache</text>\n                    <text x=\"480\" y=\"100\">Root/TLD/Auth</text>\n                    <text x=\"552\" y=\"100\">DNS</text>\n                    <text x=\"108\" y=\"132\">1.</text>\n                    <text x=\"140\" y=\"132\">SVCB</text>\n                    <text x=\"184\" y=\"132\">Query</text>\n                    <text x=\"144\" y=\"148\">(Recursive)</text>\n                    <text x=\"316\" y=\"196\">2.</text>\n                    <text x=\"352\" y=\"196\">Query</text>\n                    <text x=\"396\" y=\"196\">Root</text>\n                    <text x=\"316\" y=\"244\">3.</text>\n                    <text x=\"364\" y=\"244\">Referral</text>\n                    <text x=\"412\" y=\"244\">to</text>\n                    <text x=\"444\" y=\"244\">.com</text>\n                    <text x=\"476\" y=\"244\">NS</text>\n                    <text x=\"316\" y=\"292\">4.</text>\n                    <text x=\"352\" y=\"292\">Query</text>\n                    <text x=\"396\" y=\"292\">.com</text>\n                    <text x=\"432\" y=\"292\">TLD</text>\n                    <text x=\"316\" y=\"340\">5.</text>\n                    <text x=\"364\" y=\"340\">Referral</text>\n                    <text x=\"412\" y=\"340\">to</text>\n                    <text x=\"444\" y=\"340\">auth</text>\n                    <text x=\"476\" y=\"340\">NS</text>\n                    <text x=\"316\" y=\"388\">6.</text>\n                    <text x=\"352\" y=\"388\">Query</text>\n                    <text x=\"396\" y=\"388\">Auth</text>\n                    <text x=\"428\" y=\"388\">NS</text>\n                    <text x=\"456\" y=\"388\">for</text>\n                    <text x=\"408\" y=\"404\">foobar._mcp._agents</text>\n                    <text x=\"316\" y=\"452\">7.</text>\n                    <text x=\"348\" y=\"452\">SVCB</text>\n                    <text x=\"392\" y=\"452\">RRSet</text>\n                    <text x=\"452\" y=\"452\">Response</text>\n                    <text x=\"392\" y=\"468\">(DNSSEC-signed)</text>\n                    <text x=\"108\" y=\"516\">8.</text>\n                    <text x=\"140\" y=\"516\">SVCB</text>\n                    <text x=\"196\" y=\"516\">Response</text>\n                    <text x=\"128\" y=\"532\">(cached</text>\n                    <text x=\"168\" y=\"532\">+</text>\n                    <text x=\"220\" y=\"532\">validated)</text>\n                    <text x=\"132\" y=\"580\">Response</text>\n                    <text x=\"208\" y=\"580\">includes:</text>\n                    <text x=\"104\" y=\"596\">-</text>\n                    <text x=\"144\" y=\"596\">Service</text>\n                    <text x=\"204\" y=\"596\">target</text>\n                    <text x=\"104\" y=\"612\">-</text>\n                    <text x=\"132\" y=\"612\">ALPN</text>\n                    <text x=\"200\" y=\"612\">protocol(s)</text>\n                    <text x=\"104\" y=\"628\">-</text>\n                    <text x=\"132\" y=\"628\">Port</text>\n                    <text x=\"180\" y=\"628\">number</text>\n                    <text x=\"104\" y=\"644\">-</text>\n                    <text x=\"152\" y=\"644\">IPv4/IPv6</text>\n                    <text x=\"216\" y=\"644\">hints</text>\n                    <text x=\"104\" y=\"660\">-</text>\n                    <text x=\"140\" y=\"660\">DNSSEC</text>\n                    <text x=\"212\" y=\"660\">signatures</text>\n                    <text x=\"104\" y=\"676\">-</text>\n                    <text x=\"164\" y=\"676\">Capabilities</text>\n                    <text x=\"244\" y=\"676\">(cost,</text>\n                    <text x=\"168\" y=\"692\">modalities,</text>\n                    <text x=\"236\" y=\"692\">etc)</text>\n                    <text x=\"108\" y=\"724\">9.</text>\n                    <text x=\"140\" y=\"724\">A2A,</text>\n                    <text x=\"180\" y=\"724\">MCP,</text>\n                    <text x=\"220\" y=\"724\">etc.</text>\n                    <text x=\"160\" y=\"756\">(Agent-to-Agent</text>\n                    <text x=\"160\" y=\"772\">communication</text>\n                    <text x=\"248\" y=\"772\">begins)</text>\n                  </g>\n                </svg><a href=\"#section-5.1.1-3.1.1\" class=\"pilcrow\">¶</a>\n</div>\n</div>\n<figcaption><a href=\"#figure-5\" class=\"selfRef\">Figure 5</a>:\n<a href=\"#name-discovery-status-1-svcb-que\" class=\"selfRef\">Discovery Status 1: SVCB Query with Full Chain Traversal</a>\n            </figcaption></figure>\n</div>\n</section>\n</div>\n<div id=\"discovery-status-2-known-service-or-domain-trusted\">\n<section id=\"section-5.1.2\">\n          <h4 id=\"name-discovery-status-2-known-se\">\n<a href=\"#section-5.1.2\" class=\"section-number selfRef\">5.1.2. </a><a href=\"#name-discovery-status-2-known-se\" class=\"section-name selfRef\">Discovery Status 2 (Known Service OR Domain, Trusted)</a>\n          </h4>\n<p id=\"section-5.1.2-1\">Query of the known organisation's index if service is unknown <a href=\"#discovery-ex2\" class=\"auto internal xref\">Figure 6</a>:<a href=\"#section-5.1.2-1\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-5.1.2-2\">In this scenario, the Agent Client knows the trusted domain (example.com) but the\nspecific agent service type is unknown. The client queries a well-known index entry\npoint to discover available agent capabilities. The index query is not DNS.<a href=\"#section-5.1.2-2\" class=\"pilcrow\">¶</a></p>\n<span id=\"name-discovery-status-2-index-ba\"></span><div id=\"discovery-ex2\">\n<figure id=\"figure-6\">\n            <div id=\"section-5.1.2-3.1\">\n              <div class=\"alignLeft art-svg artwork\" id=\"section-5.1.2-3.1.1\">\n<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" height=\"1024\" width=\"568\" viewBox=\"0 0 568 1024\" class=\"diagram\" text-anchor=\"middle\" font-family=\"monospace\" font-size=\"13px\" stroke-linecap=\"round\">\n                  <path d=\"M 72,128 L 72,992\" fill=\"none\" stroke=\"black\"></path>\n                  <path d=\"M 296,128 L 296,992\" fill=\"none\" stroke=\"black\"></path>\n                  <path d=\"M 512,128 L 512,992\" fill=\"none\" stroke=\"black\"></path>\n                  <path d=\"M 80,192 L 288,192\" fill=\"none\" stroke=\"black\"></path>\n                  <path d=\"M 304,240 L 504,240\" fill=\"none\" stroke=\"black\"></path>\n                  <path d=\"M 304,288 L 504,288\" fill=\"none\" stroke=\"black\"></path>\n                  <path d=\"M 304,336 L 504,336\" fill=\"none\" stroke=\"black\"></path>\n                  <path d=\"M 304,384 L 504,384\" fill=\"none\" stroke=\"black\"></path>\n                  <path d=\"M 304,448 L 504,448\" fill=\"none\" stroke=\"black\"></path>\n                  <path d=\"M 304,528 L 504,528\" fill=\"none\" stroke=\"black\"></path>\n                  <path d=\"M 80,592 L 288,592\" fill=\"none\" stroke=\"black\"></path>\n                  <path d=\"M 304,832 L 504,832\" fill=\"none\" stroke=\"black\"></path>\n                  <path d=\"M 80,896 L 288,896\" fill=\"none\" stroke=\"black\"></path>\n                  <path d=\"M 304,896 L 504,896\" fill=\"none\" stroke=\"black\"></path>\n                  <path d=\"M 80,944 L 288,944\" fill=\"none\" stroke=\"black\"></path>\n                  <polygon class=\"arrowhead\" points=\"512,832 500,826.4 500,837.6\" fill=\"black\" transform=\"rotate(0,504,832)\"></polygon>\n                  <polygon class=\"arrowhead\" points=\"512,448 500,442.4 500,453.6\" fill=\"black\" transform=\"rotate(0,504,448)\"></polygon>\n                  <polygon class=\"arrowhead\" points=\"512,336 500,330.4 500,341.6\" fill=\"black\" transform=\"rotate(0,504,336)\"></polygon>\n                  <polygon class=\"arrowhead\" points=\"512,240 500,234.4 500,245.6\" fill=\"black\" transform=\"rotate(0,504,240)\"></polygon>\n                  <polygon class=\"arrowhead\" points=\"312,896 300,890.4 300,901.6\" fill=\"black\" transform=\"rotate(180,304,896)\"></polygon>\n                  <polygon class=\"arrowhead\" points=\"312,528 300,522.4 300,533.6\" fill=\"black\" transform=\"rotate(180,304,528)\"></polygon>\n                  <polygon class=\"arrowhead\" points=\"312,384 300,378.4 300,389.6\" fill=\"black\" transform=\"rotate(180,304,384)\"></polygon>\n                  <polygon class=\"arrowhead\" points=\"312,288 300,282.4 300,293.6\" fill=\"black\" transform=\"rotate(180,304,288)\"></polygon>\n                  <polygon class=\"arrowhead\" points=\"296,944 284,938.4 284,949.6\" fill=\"black\" transform=\"rotate(0,288,944)\"></polygon>\n                  <polygon class=\"arrowhead\" points=\"296,192 284,186.4 284,197.6\" fill=\"black\" transform=\"rotate(0,288,192)\"></polygon>\n                  <polygon class=\"arrowhead\" points=\"88,896 76,890.4 76,901.6\" fill=\"black\" transform=\"rotate(180,80,896)\"></polygon>\n                  <polygon class=\"arrowhead\" points=\"88,592 76,586.4 76,597.6\" fill=\"black\" transform=\"rotate(180,80,592)\"></polygon>\n                  <g class=\"text\">\n                    <text x=\"12\" y=\"36\">AI</text>\n                    <text x=\"48\" y=\"36\">Agent</text>\n                    <text x=\"100\" y=\"36\">Client</text>\n                    <text x=\"28\" y=\"52\">knows:</text>\n                    <text x=\"192\" y=\"52\">example.com</text>\n                    <text x=\"252\" y=\"52\">is</text>\n                    <text x=\"296\" y=\"52\">trusted</text>\n                    <text x=\"24\" y=\"68\">wants</text>\n                    <text x=\"60\" y=\"68\">to</text>\n                    <text x=\"112\" y=\"68\">discover:</text>\n                    <text x=\"192\" y=\"68\">available</text>\n                    <text x=\"260\" y=\"68\">agents</text>\n                    <text x=\"304\" y=\"68\">and</text>\n                    <text x=\"356\" y=\"68\">services</text>\n                    <text x=\"36\" y=\"84\">queries:</text>\n                    <text x=\"252\" y=\"84\">_index._agents.example.com</text>\n                    <text x=\"408\" y=\"84\">(well-known</text>\n                    <text x=\"480\" y=\"84\">entry</text>\n                    <text x=\"532\" y=\"84\">point)</text>\n                    <text x=\"40\" y=\"116\">Agent</text>\n                    <text x=\"92\" y=\"116\">Client</text>\n                    <text x=\"260\" y=\"116\">Resolver</text>\n                    <text x=\"304\" y=\"116\">/</text>\n                    <text x=\"336\" y=\"116\">Cache</text>\n                    <text x=\"480\" y=\"116\">Root/TLD/Auth</text>\n                    <text x=\"552\" y=\"116\">DNS</text>\n                    <text x=\"108\" y=\"148\">1.</text>\n                    <text x=\"140\" y=\"148\">SVCB</text>\n                    <text x=\"184\" y=\"148\">Query</text>\n                    <text x=\"156\" y=\"164\">_index._agents</text>\n                    <text x=\"144\" y=\"180\">(Recursive)</text>\n                    <text x=\"316\" y=\"228\">2.</text>\n                    <text x=\"352\" y=\"228\">Query</text>\n                    <text x=\"396\" y=\"228\">Root</text>\n                    <text x=\"316\" y=\"276\">3.</text>\n                    <text x=\"364\" y=\"276\">Referral</text>\n                    <text x=\"412\" y=\"276\">to</text>\n                    <text x=\"444\" y=\"276\">.com</text>\n                    <text x=\"476\" y=\"276\">NS</text>\n                    <text x=\"316\" y=\"324\">4.</text>\n                    <text x=\"352\" y=\"324\">Query</text>\n                    <text x=\"396\" y=\"324\">.com</text>\n                    <text x=\"432\" y=\"324\">TLD</text>\n                    <text x=\"316\" y=\"372\">5.</text>\n                    <text x=\"364\" y=\"372\">Referral</text>\n                    <text x=\"412\" y=\"372\">to</text>\n                    <text x=\"444\" y=\"372\">auth</text>\n                    <text x=\"476\" y=\"372\">NS</text>\n                    <text x=\"316\" y=\"420\">6.</text>\n                    <text x=\"352\" y=\"420\">Query</text>\n                    <text x=\"396\" y=\"420\">Auth</text>\n                    <text x=\"428\" y=\"420\">NS</text>\n                    <text x=\"456\" y=\"420\">for</text>\n                    <text x=\"388\" y=\"436\">_index._agents</text>\n                    <text x=\"316\" y=\"484\">7.</text>\n                    <text x=\"352\" y=\"484\">Index</text>\n                    <text x=\"392\" y=\"484\">DNS</text>\n                    <text x=\"444\" y=\"484\">Response</text>\n                    <text x=\"352\" y=\"500\">(SVCB</text>\n                    <text x=\"400\" y=\"500\">RRSet</text>\n                    <text x=\"436\" y=\"500\">or</text>\n                    <text x=\"404\" y=\"516\">CNAME/AliasMode)</text>\n                    <text x=\"108\" y=\"564\">8.</text>\n                    <text x=\"144\" y=\"564\">Index</text>\n                    <text x=\"192\" y=\"564\">Agent</text>\n                    <text x=\"252\" y=\"564\">Response</text>\n                    <text x=\"128\" y=\"580\">(cached</text>\n                    <text x=\"168\" y=\"580\">+</text>\n                    <text x=\"220\" y=\"580\">validated)</text>\n                    <text x=\"132\" y=\"628\">Response</text>\n                    <text x=\"208\" y=\"628\">includes:</text>\n                    <text x=\"104\" y=\"644\">-</text>\n                    <text x=\"132\" y=\"644\">List</text>\n                    <text x=\"164\" y=\"644\">of</text>\n                    <text x=\"200\" y=\"644\">agent</text>\n                    <text x=\"248\" y=\"644\">types</text>\n                    <text x=\"136\" y=\"660\">(mcp,</text>\n                    <text x=\"180\" y=\"660\">a2a,</text>\n                    <text x=\"224\" y=\"660\">etc.)</text>\n                    <text x=\"104\" y=\"676\">-</text>\n                    <text x=\"144\" y=\"676\">Service</text>\n                    <text x=\"216\" y=\"676\">endpoints</text>\n                    <text x=\"104\" y=\"692\">-</text>\n                    <text x=\"156\" y=\"692\">Capability</text>\n                    <text x=\"236\" y=\"692\">metadata</text>\n                    <text x=\"104\" y=\"708\">-</text>\n                    <text x=\"140\" y=\"708\">DNSSEC</text>\n                    <text x=\"212\" y=\"708\">signatures</text>\n                    <text x=\"108\" y=\"740\">9.</text>\n                    <text x=\"144\" y=\"740\">Parse</text>\n                    <text x=\"196\" y=\"740\">index,</text>\n                    <text x=\"252\" y=\"740\">select</text>\n                    <text x=\"152\" y=\"756\">desired</text>\n                    <text x=\"208\" y=\"756\">agent</text>\n                    <text x=\"252\" y=\"756\">type</text>\n                    <text x=\"148\" y=\"772\">(e.g.,</text>\n                    <text x=\"196\" y=\"772\">mcp)</text>\n                    <text x=\"112\" y=\"804\">10.</text>\n                    <text x=\"152\" y=\"804\">Query</text>\n                    <text x=\"212\" y=\"804\">specific</text>\n                    <text x=\"152\" y=\"820\">agent</text>\n                    <text x=\"208\" y=\"820\">service</text>\n                    <text x=\"212\" y=\"836\">foobar._mcp._aiag...</text>\n                    <text x=\"320\" y=\"868\">11.</text>\n                    <text x=\"364\" y=\"868\">Return</text>\n                    <text x=\"424\" y=\"868\">service</text>\n                    <text x=\"368\" y=\"884\">details</text>\n                    <text x=\"112\" y=\"932\">12.</text>\n                    <text x=\"148\" y=\"932\">A2A,</text>\n                    <text x=\"188\" y=\"932\">MCP,</text>\n                    <text x=\"228\" y=\"932\">etc.</text>\n                    <text x=\"160\" y=\"964\">(Agent-to-Agent</text>\n                    <text x=\"160\" y=\"980\">communication</text>\n                    <text x=\"248\" y=\"980\">begins)</text>\n                  </g>\n                </svg><a href=\"#section-5.1.2-3.1.1\" class=\"pilcrow\">¶</a>\n</div>\n</div>\n<figcaption><a href=\"#figure-6\" class=\"selfRef\">Figure 6</a>:\n<a href=\"#name-discovery-status-2-index-ba\" class=\"selfRef\">Discovery Status 2: Index-Based Discovery with Service Selection</a>\n            </figcaption></figure>\n</div>\n</section>\n</div>\n<div id=\"discovery-status-3-multi-domain-query-for-known-service\">\n<section id=\"section-5.1.3\">\n          <h4 id=\"name-discovery-status-3-multi-do\">\n<a href=\"#section-5.1.3\" class=\"section-number selfRef\">5.1.3. </a><a href=\"#name-discovery-status-3-multi-do\" class=\"section-name selfRef\">Discovery Status 3 (Multi-Domain Query for Known Service)</a>\n          </h4>\n<p id=\"section-5.1.3-1\">Query the same well-known agent name across multiple known domains (potential for this discovery case to be met by the registry described in Discovery Status 4):<a href=\"#section-5.1.3-1\" class=\"pilcrow\">¶</a></p>\n<span id=\"name-discovery-status-3-parallel\"></span><div id=\"discovery-ex3\">\n<figure id=\"figure-7\">\n            <div id=\"section-5.1.3-2.1\">\n              <div class=\"alignLeft art-svg artwork\" id=\"section-5.1.3-2.1.1\">\n<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" height=\"912\" width=\"536\" viewBox=\"0 0 536 912\" class=\"diagram\" text-anchor=\"middle\" font-family=\"monospace\" font-size=\"13px\" stroke-linecap=\"round\">\n                  <path d=\"M 72,128 L 72,880\" fill=\"none\" stroke=\"black\"></path>\n                  <path d=\"M 296,128 L 296,880\" fill=\"none\" stroke=\"black\"></path>\n                  <path d=\"M 512,144 L 512,880\" fill=\"none\" stroke=\"black\"></path>\n                  <path d=\"M 80,224 L 288,224\" fill=\"none\" stroke=\"black\"></path>\n                  <path d=\"M 304,272 L 504,272\" fill=\"none\" stroke=\"black\"></path>\n                  <path d=\"M 304,320 L 504,320\" fill=\"none\" stroke=\"black\"></path>\n                  <path d=\"M 80,400 L 288,400\" fill=\"none\" stroke=\"black\"></path>\n                  <path d=\"M 80,480 L 288,480\" fill=\"none\" stroke=\"black\"></path>\n                  <path d=\"M 304,528 L 504,528\" fill=\"none\" stroke=\"black\"></path>\n                  <path d=\"M 304,576 L 504,576\" fill=\"none\" stroke=\"black\"></path>\n                  <path d=\"M 80,656 L 288,656\" fill=\"none\" stroke=\"black\"></path>\n                  <path d=\"M 80,832 L 288,832\" fill=\"none\" stroke=\"black\"></path>\n                  <polygon class=\"arrowhead\" points=\"512,528 500,522.4 500,533.6\" fill=\"black\" transform=\"rotate(0,504,528)\"></polygon>\n                  <polygon class=\"arrowhead\" points=\"512,272 500,266.4 500,277.6\" fill=\"black\" transform=\"rotate(0,504,272)\"></polygon>\n                  <polygon class=\"arrowhead\" points=\"312,576 300,570.4 300,581.6\" fill=\"black\" transform=\"rotate(180,304,576)\"></polygon>\n                  <polygon class=\"arrowhead\" points=\"312,320 300,314.4 300,325.6\" fill=\"black\" transform=\"rotate(180,304,320)\"></polygon>\n                  <polygon class=\"arrowhead\" points=\"296,832 284,826.4 284,837.6\" fill=\"black\" transform=\"rotate(0,288,832)\"></polygon>\n                  <polygon class=\"arrowhead\" points=\"296,480 284,474.4 284,485.6\" fill=\"black\" transform=\"rotate(0,288,480)\"></polygon>\n                  <polygon class=\"arrowhead\" points=\"296,224 284,218.4 284,229.6\" fill=\"black\" transform=\"rotate(0,288,224)\"></polygon>\n                  <polygon class=\"arrowhead\" points=\"88,656 76,650.4 76,661.6\" fill=\"black\" transform=\"rotate(180,80,656)\"></polygon>\n                  <polygon class=\"arrowhead\" points=\"88,400 76,394.4 76,405.6\" fill=\"black\" transform=\"rotate(180,80,400)\"></polygon>\n                  <g class=\"text\">\n                    <text x=\"12\" y=\"36\">AI</text>\n                    <text x=\"48\" y=\"36\">Agent</text>\n                    <text x=\"100\" y=\"36\">Client</text>\n                    <text x=\"28\" y=\"52\">knows:</text>\n                    <text x=\"176\" y=\"52\">img2txt</text>\n                    <text x=\"220\" y=\"52\">is</text>\n                    <text x=\"240\" y=\"52\">a</text>\n                    <text x=\"292\" y=\"52\">well-known</text>\n                    <text x=\"360\" y=\"52\">agent</text>\n                    <text x=\"404\" y=\"52\">type</text>\n                    <text x=\"28\" y=\"68\">knows:</text>\n                    <text x=\"180\" y=\"68\">org1.com</text>\n                    <text x=\"232\" y=\"68\">and</text>\n                    <text x=\"284\" y=\"68\">org2.com</text>\n                    <text x=\"336\" y=\"68\">are</text>\n                    <text x=\"384\" y=\"68\">trusted</text>\n                    <text x=\"448\" y=\"68\">domains</text>\n                    <text x=\"24\" y=\"84\">wants</text>\n                    <text x=\"60\" y=\"84\">to</text>\n                    <text x=\"112\" y=\"84\">discover:</text>\n                    <text x=\"176\" y=\"84\">which</text>\n                    <text x=\"220\" y=\"84\">orgs</text>\n                    <text x=\"260\" y=\"84\">have</text>\n                    <text x=\"312\" y=\"84\">img2txt</text>\n                    <text x=\"372\" y=\"84\">agents</text>\n                    <text x=\"440\" y=\"84\">available</text>\n                    <text x=\"40\" y=\"116\">Agent</text>\n                    <text x=\"92\" y=\"116\">Client</text>\n                    <text x=\"260\" y=\"116\">Resolver</text>\n                    <text x=\"304\" y=\"116\">/</text>\n                    <text x=\"336\" y=\"116\">Cache</text>\n                    <text x=\"448\" y=\"116\">Root/TLD/Auth</text>\n                    <text x=\"520\" y=\"116\">DNS</text>\n                    <text x=\"432\" y=\"132\">(ORG1</text>\n                    <text x=\"472\" y=\"132\">and</text>\n                    <text x=\"512\" y=\"132\">ORG2)</text>\n                    <text x=\"108\" y=\"164\">1.</text>\n                    <text x=\"140\" y=\"164\">SVCB</text>\n                    <text x=\"184\" y=\"164\">Query</text>\n                    <text x=\"180\" y=\"180\">img2txt._a2a._agents</text>\n                    <text x=\"136\" y=\"196\">.org1.com</text>\n                    <text x=\"144\" y=\"212\">(Recursive)</text>\n                    <text x=\"316\" y=\"260\">2.</text>\n                    <text x=\"360\" y=\"260\">Resolve</text>\n                    <text x=\"416\" y=\"260\">.org1</text>\n                    <text x=\"464\" y=\"260\">chain</text>\n                    <text x=\"316\" y=\"308\">3.</text>\n                    <text x=\"352\" y=\"308\">Auth.</text>\n                    <text x=\"392\" y=\"308\">DNS</text>\n                    <text x=\"428\" y=\"308\">org1</text>\n                    <text x=\"360\" y=\"340\">returns</text>\n                    <text x=\"424\" y=\"340\">service</text>\n                    <text x=\"476\" y=\"340\">info</text>\n                    <text x=\"108\" y=\"372\">4.</text>\n                    <text x=\"156\" y=\"372\">Response</text>\n                    <text x=\"220\" y=\"372\">(org1)</text>\n                    <text x=\"128\" y=\"388\">(cached</text>\n                    <text x=\"168\" y=\"388\">+</text>\n                    <text x=\"220\" y=\"388\">validated)</text>\n                    <text x=\"108\" y=\"436\">5.</text>\n                    <text x=\"140\" y=\"436\">SVCB</text>\n                    <text x=\"184\" y=\"436\">Query</text>\n                    <text x=\"180\" y=\"452\">img2txt._a2a._agents</text>\n                    <text x=\"136\" y=\"468\">.org2.com</text>\n                    <text x=\"316\" y=\"516\">6.</text>\n                    <text x=\"360\" y=\"516\">Resolve</text>\n                    <text x=\"416\" y=\"516\">.org2</text>\n                    <text x=\"464\" y=\"516\">chain</text>\n                    <text x=\"316\" y=\"564\">7.</text>\n                    <text x=\"352\" y=\"564\">Auth.</text>\n                    <text x=\"392\" y=\"564\">DNS</text>\n                    <text x=\"428\" y=\"564\">org2</text>\n                    <text x=\"360\" y=\"596\">returns</text>\n                    <text x=\"424\" y=\"596\">service</text>\n                    <text x=\"476\" y=\"596\">info</text>\n                    <text x=\"108\" y=\"628\">8.</text>\n                    <text x=\"156\" y=\"628\">Response</text>\n                    <text x=\"220\" y=\"628\">(org2)</text>\n                    <text x=\"128\" y=\"644\">(cached</text>\n                    <text x=\"168\" y=\"644\">+</text>\n                    <text x=\"220\" y=\"644\">validated)</text>\n                    <text x=\"108\" y=\"692\">9.</text>\n                    <text x=\"148\" y=\"692\">Client</text>\n                    <text x=\"220\" y=\"692\">evaluates:</text>\n                    <text x=\"104\" y=\"708\">-</text>\n                    <text x=\"144\" y=\"708\">Service</text>\n                    <text x=\"228\" y=\"708\">capabilities</text>\n                    <text x=\"132\" y=\"724\">from</text>\n                    <text x=\"172\" y=\"724\">both</text>\n                    <text x=\"232\" y=\"724\">responses</text>\n                    <text x=\"104\" y=\"740\">-</text>\n                    <text x=\"136\" y=\"740\">Trust</text>\n                    <text x=\"188\" y=\"740\">levels</text>\n                    <text x=\"252\" y=\"740\">(DNSSEC)</text>\n                    <text x=\"104\" y=\"756\">-</text>\n                    <text x=\"136\" y=\"756\">Cost,</text>\n                    <text x=\"196\" y=\"756\">latency,</text>\n                    <text x=\"252\" y=\"756\">etc.</text>\n                    <text x=\"112\" y=\"788\">10.</text>\n                    <text x=\"156\" y=\"788\">Select</text>\n                    <text x=\"220\" y=\"788\">endpoint</text>\n                    <text x=\"264\" y=\"788\">&amp;</text>\n                    <text x=\"180\" y=\"804\">A2A/protocol</text>\n                    <text x=\"252\" y=\"804\">with</text>\n                    <text x=\"156\" y=\"820\">chosen</text>\n                    <text x=\"220\" y=\"820\">provider</text>\n                    <text x=\"160\" y=\"852\">(Agent-to-Agent</text>\n                    <text x=\"160\" y=\"868\">communication</text>\n                    <text x=\"248\" y=\"868\">begins)</text>\n                  </g>\n                </svg><a href=\"#section-5.1.3-2.1.1\" class=\"pilcrow\">¶</a>\n</div>\n</div>\n<figcaption><a href=\"#figure-7\" class=\"selfRef\">Figure 7</a>:\n<a href=\"#name-discovery-status-3-parallel\" class=\"selfRef\">Discovery Status 3: Parallel Multi-Domain Service Discovery</a>\n            </figcaption></figure>\n</div>\n</section>\n</div>\n<div id=\"discovery-status-4-untrusted-domain-consolidated-registry\">\n<section id=\"section-5.1.4\">\n          <h4 id=\"name-discovery-status-4-untruste\">\n<a href=\"#section-5.1.4\" class=\"section-number selfRef\">5.1.4. </a><a href=\"#name-discovery-status-4-untruste\" class=\"section-name selfRef\">Discovery Status 4 (Untrusted Domain / Consolidated Registry)</a>\n          </h4>\n<p id=\"section-5.1.4-1\">Query a consolidated (reputable) registry (not DNS) when neither domain nor comprehensive service list is known:<a href=\"#section-5.1.4-1\" class=\"pilcrow\">¶</a></p>\n<span id=\"name-discovery-status-4-registry\"></span><div id=\"discovery-ex4\">\n<figure id=\"figure-8\">\n            <div id=\"section-5.1.4-2.1\">\n              <div class=\"alignLeft art-svg artwork\" id=\"section-5.1.4-2.1.1\">\n<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" height=\"976\" width=\"616\" viewBox=\"0 0 616 976\" class=\"diagram\" text-anchor=\"middle\" font-family=\"monospace\" font-size=\"13px\" stroke-linecap=\"round\">\n                  <path d=\"M 72,128 L 72,944\" fill=\"none\" stroke=\"black\"></path>\n                  <path d=\"M 296,128 L 296,944\" fill=\"none\" stroke=\"black\"></path>\n                  <path d=\"M 512,128 L 512,944\" fill=\"none\" stroke=\"black\"></path>\n                  <path d=\"M 80,208 L 288,208\" fill=\"none\" stroke=\"black\"></path>\n                  <path d=\"M 304,272 L 504,272\" fill=\"none\" stroke=\"black\"></path>\n                  <path d=\"M 304,320 L 504,320\" fill=\"none\" stroke=\"black\"></path>\n                  <path d=\"M 80,400 L 288,400\" fill=\"none\" stroke=\"black\"></path>\n                  <path d=\"M 304,448 L 504,448\" fill=\"none\" stroke=\"black\"></path>\n                  <path d=\"M 80,816 L 288,816\" fill=\"none\" stroke=\"black\"></path>\n                  <path d=\"M 80,896 L 288,896\" fill=\"none\" stroke=\"black\"></path>\n                  <polygon class=\"arrowhead\" points=\"512,272 500,266.4 500,277.6\" fill=\"black\" transform=\"rotate(0,504,272)\"></polygon>\n                  <polygon class=\"arrowhead\" points=\"312,448 300,442.4 300,453.6\" fill=\"black\" transform=\"rotate(180,304,448)\"></polygon>\n                  <polygon class=\"arrowhead\" points=\"312,320 300,314.4 300,325.6\" fill=\"black\" transform=\"rotate(180,304,320)\"></polygon>\n                  <polygon class=\"arrowhead\" points=\"296,896 284,890.4 284,901.6\" fill=\"black\" transform=\"rotate(0,288,896)\"></polygon>\n                  <polygon class=\"arrowhead\" points=\"296,816 284,810.4 284,821.6\" fill=\"black\" transform=\"rotate(0,288,816)\"></polygon>\n                  <polygon class=\"arrowhead\" points=\"296,400 284,394.4 284,405.6\" fill=\"black\" transform=\"rotate(0,288,400)\"></polygon>\n                  <polygon class=\"arrowhead\" points=\"296,208 284,202.4 284,213.6\" fill=\"black\" transform=\"rotate(0,288,208)\"></polygon>\n                  <g class=\"text\">\n                    <text x=\"12\" y=\"36\">AI</text>\n                    <text x=\"48\" y=\"36\">Agent</text>\n                    <text x=\"100\" y=\"36\">Client</text>\n                    <text x=\"28\" y=\"52\">knows:</text>\n                    <text x=\"152\" y=\"52\">a</text>\n                    <text x=\"192\" y=\"52\">trusted</text>\n                    <text x=\"260\" y=\"52\">registry</text>\n                    <text x=\"324\" y=\"52\">(e.g.,</text>\n                    <text x=\"484\" y=\"52\">registry.ai-trust-community.org)</text>\n                    <text x=\"24\" y=\"68\">wants</text>\n                    <text x=\"60\" y=\"68\">to</text>\n                    <text x=\"112\" y=\"68\">discover:</text>\n                    <text x=\"168\" y=\"68\">all</text>\n                    <text x=\"212\" y=\"68\">viable</text>\n                    <text x=\"272\" y=\"68\">img2txt</text>\n                    <text x=\"332\" y=\"68\">agents</text>\n                    <text x=\"400\" y=\"68\">available</text>\n                    <text x=\"460\" y=\"68\">(any</text>\n                    <text x=\"500\" y=\"68\">org)</text>\n                    <text x=\"40\" y=\"84\">scenario:</text>\n                    <text x=\"168\" y=\"84\">agent</text>\n                    <text x=\"220\" y=\"84\">choice</text>\n                    <text x=\"276\" y=\"84\">driven</text>\n                    <text x=\"316\" y=\"84\">by</text>\n                    <text x=\"376\" y=\"84\">capability,</text>\n                    <text x=\"440\" y=\"84\">not</text>\n                    <text x=\"484\" y=\"84\">domain</text>\n                    <text x=\"548\" y=\"84\">affinity</text>\n                    <text x=\"40\" y=\"116\">Agent</text>\n                    <text x=\"92\" y=\"116\">Client</text>\n                    <text x=\"260\" y=\"116\">Resolver</text>\n                    <text x=\"304\" y=\"116\">/</text>\n                    <text x=\"336\" y=\"116\">Cache</text>\n                    <text x=\"460\" y=\"116\">Registry</text>\n                    <text x=\"504\" y=\"116\">/</text>\n                    <text x=\"532\" y=\"116\">Auth</text>\n                    <text x=\"568\" y=\"116\">DNS</text>\n                    <text x=\"108\" y=\"148\">1.</text>\n                    <text x=\"140\" y=\"148\">SVCB</text>\n                    <text x=\"184\" y=\"148\">Query</text>\n                    <text x=\"156\" y=\"164\">_index._agents</text>\n                    <text x=\"184\" y=\"180\">.registry.ai-trust...</text>\n                    <text x=\"144\" y=\"196\">(Recursive)</text>\n                    <text x=\"316\" y=\"244\">2.</text>\n                    <text x=\"360\" y=\"244\">Resolve</text>\n                    <text x=\"428\" y=\"244\">registry</text>\n                    <text x=\"356\" y=\"260\">domain</text>\n                    <text x=\"408\" y=\"260\">chain</text>\n                    <text x=\"316\" y=\"308\">3.</text>\n                    <text x=\"356\" y=\"308\">Return</text>\n                    <text x=\"420\" y=\"308\">registry</text>\n                    <text x=\"384\" y=\"340\">index/catalog</text>\n                    <text x=\"460\" y=\"340\">SVCB</text>\n                    <text x=\"108\" y=\"372\">4.</text>\n                    <text x=\"156\" y=\"372\">Registry</text>\n                    <text x=\"216\" y=\"372\">Index</text>\n                    <text x=\"124\" y=\"388\">(HTTP,</text>\n                    <text x=\"176\" y=\"388\">JSON,</text>\n                    <text x=\"220\" y=\"388\">etc)</text>\n                    <text x=\"324\" y=\"436\">5.</text>\n                    <text x=\"372\" y=\"436\">Registry</text>\n                    <text x=\"444\" y=\"436\">Response</text>\n                    <text x=\"356\" y=\"484\">Response</text>\n                    <text x=\"432\" y=\"484\">contains:</text>\n                    <text x=\"328\" y=\"500\">-</text>\n                    <text x=\"352\" y=\"500\">Ref</text>\n                    <text x=\"392\" y=\"500\">list:</text>\n                    <text x=\"448\" y=\"500\">img2txt</text>\n                    <text x=\"364\" y=\"516\">agents</text>\n                    <text x=\"412\" y=\"516\">from</text>\n                    <text x=\"468\" y=\"516\">multiple</text>\n                    <text x=\"368\" y=\"532\">trusted</text>\n                    <text x=\"420\" y=\"532\">orgs</text>\n                    <text x=\"328\" y=\"548\">-</text>\n                    <text x=\"368\" y=\"548\">Domains</text>\n                    <text x=\"408\" y=\"548\">+</text>\n                    <text x=\"456\" y=\"548\">endpoints</text>\n                    <text x=\"328\" y=\"564\">-</text>\n                    <text x=\"376\" y=\"564\">Aggregate</text>\n                    <text x=\"452\" y=\"564\">ratings,</text>\n                    <text x=\"352\" y=\"580\">SLA</text>\n                    <text x=\"392\" y=\"580\">info,</text>\n                    <text x=\"436\" y=\"580\">cost</text>\n                    <text x=\"328\" y=\"596\">-</text>\n                    <text x=\"364\" y=\"596\">DNSSEC</text>\n                    <text x=\"436\" y=\"596\">provenance</text>\n                    <text x=\"328\" y=\"612\">-</text>\n                    <text x=\"388\" y=\"612\">Capabilities</text>\n                    <text x=\"468\" y=\"612\">(cost,</text>\n                    <text x=\"384\" y=\"628\">modalities,</text>\n                    <text x=\"452\" y=\"628\">etc)</text>\n                    <text x=\"108\" y=\"660\">6.</text>\n                    <text x=\"148\" y=\"660\">Client</text>\n                    <text x=\"216\" y=\"660\">evaluates</text>\n                    <text x=\"132\" y=\"676\">registry</text>\n                    <text x=\"200\" y=\"676\">results</text>\n                    <text x=\"116\" y=\"692\">(may</text>\n                    <text x=\"168\" y=\"692\">include</text>\n                    <text x=\"216\" y=\"692\">one</text>\n                    <text x=\"244\" y=\"692\">or</text>\n                    <text x=\"124\" y=\"708\">more</text>\n                    <text x=\"180\" y=\"708\">followup</text>\n                    <text x=\"248\" y=\"708\">queries</text>\n                    <text x=\"120\" y=\"724\">per</text>\n                    <text x=\"176\" y=\"724\">Discovery</text>\n                    <text x=\"244\" y=\"724\">Status</text>\n                    <text x=\"280\" y=\"724\">1</text>\n                    <text x=\"120\" y=\"740\">for</text>\n                    <text x=\"180\" y=\"740\">additional</text>\n                    <text x=\"256\" y=\"740\">detail)</text>\n                    <text x=\"108\" y=\"772\">7.</text>\n                    <text x=\"144\" y=\"772\">Query</text>\n                    <text x=\"196\" y=\"772\">chosen</text>\n                    <text x=\"152\" y=\"788\">agent's</text>\n                    <text x=\"204\" y=\"788\">auth</text>\n                    <text x=\"240\" y=\"788\">DNS</text>\n                    <text x=\"136\" y=\"804\">for</text>\n                    <text x=\"176\" y=\"804\">final</text>\n                    <text x=\"232\" y=\"804\">details</text>\n                    <text x=\"108\" y=\"852\">8.</text>\n                    <text x=\"172\" y=\"852\">A2A/protocol</text>\n                    <text x=\"244\" y=\"852\">with</text>\n                    <text x=\"192\" y=\"868\">registry-selected</text>\n                    <text x=\"156\" y=\"884\">endpoint</text>\n                    <text x=\"160\" y=\"916\">(Agent-to-Agent</text>\n                    <text x=\"160\" y=\"932\">communication</text>\n                    <text x=\"248\" y=\"932\">begins)</text>\n                  </g>\n                </svg><a href=\"#section-5.1.4-2.1.1\" class=\"pilcrow\">¶</a>\n</div>\n</div>\n<figcaption><a href=\"#figure-8\" class=\"selfRef\">Figure 8</a>:\n<a href=\"#name-discovery-status-4-registry\" class=\"selfRef\">Discovery Status 4: Registry-Based Discovery Across Multiple Providers</a>\n            </figcaption></figure>\n</div>\n</section>\n</div>\n<div id=\"discovery-status-4-unknown-wildcard-or-status-2-untrusted\">\n<section id=\"section-5.1.5\">\n          <h4 id=\"name-discovery-status-4-unknown-\">\n<a href=\"#section-5.1.5\" class=\"section-number selfRef\">5.1.5. </a><a href=\"#name-discovery-status-4-unknown-\" class=\"section-name selfRef\">Discovery Status 4 (Unknown / Wildcard, or status 2 untrusted?)</a>\n          </h4>\n<p id=\"section-5.1.5-1\">This case is out of scope.<a href=\"#section-5.1.5-1\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n</section>\n</div>\n<div id=\"ai-providers\">\n<section id=\"section-5.2\">\n        <h3 id=\"name-ai-providers\">\n<a href=\"#section-5.2\" class=\"section-number selfRef\">5.2. </a><a href=\"#name-ai-providers\" class=\"section-name selfRef\">AI Providers</a>\n        </h3>\n<div id=\"publishing-schema\">\n<section id=\"section-5.2.1\">\n          <h4 id=\"name-publishing-schema\">\n<a href=\"#section-5.2.1\" class=\"section-number selfRef\">5.2.1. </a><a href=\"#name-publishing-schema\" class=\"section-name selfRef\">Publishing Schema</a>\n          </h4>\n<p id=\"section-5.2.1-1\">Publishers <span class=\"bcp14\">SHOULD</span> expose per-service discovery records using SVCB (or HTTPS for HTTP origins) at stable, well-scoped owner names (e.g., agent-id._mcp._agents.example.org.). SVCB ServiceMode conveys connection parameters and capability locators in a single round trip; AliasMode <span class=\"bcp14\">MAY</span> be used to map a friendly name to a hashed leaf for sharding without duplicating RRSets. Initial connection parameter keys (alpn, port, address hints) and the mandatory key <span class=\"bcp14\">MUST</span> be honored by clients. <span>[<a href=\"#RFC9460\" class=\"cite xref\">RFC9460</a>]</span><a href=\"#section-5.2.1-1\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-5.2.1-2\">Minimal example:<a href=\"#section-5.2.1-2\" class=\"pilcrow\">¶</a></p>\n<div class=\"alignLeft art-text artwork\" id=\"section-5.2.1-3\">\n<pre>\n; ServiceMode SVCB for an MCP-capable agent\na4k2f9._mcp._agents.example.org.  600 IN SVCB 1 svc-a4k2f9.example.net.\n    alpn=\"h2,h3\" port=443 ipv6hint=2001:db8::5 ipv4hint=192.0.2.5\n    mandatory=alpn,port\n</pre><a href=\"#section-5.2.1-3\" class=\"pilcrow\">¶</a>\n</div>\n<p id=\"section-5.2.1-4\">SVCB/HTTPS semantics and SvcParam processing <span class=\"bcp14\">MUST</span> follow <span>[<a href=\"#RFC9460\" class=\"cite xref\">RFC9460</a>]</span> to ensure interop and correct fallback.<a href=\"#section-5.2.1-4\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"ttls-update-agility\">\n<section id=\"section-5.2.2\">\n          <h4 id=\"name-ttls-update-agility\">\n<a href=\"#section-5.2.2\" class=\"section-number selfRef\">5.2.2. </a><a href=\"#name-ttls-update-agility\" class=\"section-name selfRef\">TTLs, Update Agility</a>\n          </h4>\n<p id=\"section-5.2.2-1\">Publishers <span class=\"bcp14\">SHOULD</span> assign longer TTLs to relatively static indirection records (aliases, stable service labels) and shorter TTLs to volatile endpoint/capability records to balance cache efficiency with rollout safety. Consumers will apply negative caching per <span>[<a href=\"#RFC2308\" class=\"cite xref\">RFC2308</a>]</span>, so publishers <span class=\"bcp14\">SHOULD</span> avoid unnecessary NXDOMAIN flaps during deployments (e.g., prefer blue/green leaves over in-place deletions).<a href=\"#section-5.2.2-1\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"example-dns-aid-zonefile\">\n<section id=\"section-5.2.3\">\n          <h4 id=\"name-example-dns-aid-zonefile\">\n<a href=\"#section-5.2.3\" class=\"section-number selfRef\">5.2.3. </a><a href=\"#name-example-dns-aid-zonefile\" class=\"section-name selfRef\">Example DNS-AID Zonefile</a>\n          </h4>\n<div class=\"alignLeft art-text artwork\" id=\"section-5.2.3-1\">\n<pre>\n$ORIGIN example.org.\n$TTL 3600\n\n; ---------------------------------------------------------------------\n; SOA / NS\n; ---------------------------------------------------------------------\n@               IN SOA  ns1.example.org. hostmaster.example.org. (\n                        2025091901 ; serial (YYYYMMDDnn)\n                        7200       ; refresh\n                        1800       ; retry\n                        1209600    ; expire\n                        3600 )     ; minimum\n                IN NS    ns1.example.org.\n                IN NS    ns2.example.org.\n\nns1             IN A     192.0.2.53\nns1             IN AAAA  2001:db8::53\nns2             IN A     192.0.2.54\nns2             IN AAAA  2001:db8::54\n\n; ---------------------------------------------------------------------\n; DNS-AID discovery (MCP example): per-service, per-agent leaf\n; - Leaf is a stable mapping from AgentID -&gt; label (e.g. hashed).\n; - Use SVCB ServiceMode (priority &gt; 0) to bind connection parameters.\n; ---------------------------------------------------------------------\n\n; AliasMode to keep a friendly name stable even if the leaf changes\nbilling._mcp._agents    300 IN SVCB 0 a4k2f9._mcp._agents.example.org.\n\n; Leaf per agent/service (ServiceMode). Shorter TTL for agility.\na4k2f9._mcp._agents     600 IN SVCB 1 svc-a4k2f9.example.net. \\\n                            alpn=\"h2,h3\" \\\n                            port=443 \\\n                            ipv4hint=192.0.2.5 \\\n                            ipv6hint=2001:db8::5 \\\n                            mandatory=alpn,port\n\n; (Optional) Another service face for the same agent (A2A)\na4k2f9._a2a._agents     600 IN SVCB 1 svc-a4k2f9.example.net. \\\n                            alpn=\"h2\" port=8443 \\\n                            mandatory=alpn,port\n\n; (Optional) HTTPS RR at apex for web-style consumers of DNS-AID\n; metadata\n@                        900 IN HTTPS 1 web-gw.example.net. \\\n                            alpn=\"h2,h3\" port=443\n\n; ---------------------------------------------------------------------\n; Capability / policy signaling via SVCB custom keys (experimental)\n; Use numeric keyNNNNN until you register IANA SvcParamKeys.\n; Gate client requirements with \"mandatory\".\n; ---------------------------------------------------------------------\n; Example: reference a capability descriptor and advertise supported\n; app protocols.\n; NOTE: Values and key numbers are illustrative.\n\na4k2f9._mcp._agents 600 IN SVCB 1 svc-a4k2f9.example.net. \\\n                        alpn=\"h2,h3\" port=443 \\\n                        mandatory=alpn,port,key65001,key65010 \\\n                        key65001=\"cap=urn:cap:example:mcp:invoice.v1\" \\\n                        key65010=\"bap=a2a/1,mcp/1\"\n\n; ---------------------------------------------------------------------\n; Domain Control Validation (DCV) for DNS-AID authorization\n; Publish a short-lived token to prove control over example.org.\n; Remove after successful validation. Resolver MUST DNSSEC-validate.\n; ---------------------------------------------------------------------\n_agents-challenge 300 IN TXT \"bnd-req=svc:crm-sync@vendor.example;nonce=3Qz6l8pA;exp=2025-09-19T06:00:00Z\"\n\n; ---------------------------------------------------------------------\n; Optional DANE TLSA for the service endpoint used above.\n; Owner: _`&lt;port&gt;`._tcp.`&lt;endpoint-FQDN&gt;`\n; Usage 3 (DANE-EE), Selector 1 (SPKI), Match 1 (SHA-256)\n; Replace the hash with the actual SPKI hash of the leaf certificate.\n; ---------------------------------------------------------------------\n_443._tcp.svc-a4k2f9.example.net.  1800 IN TLSA 3 1 1 (\n    0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789AB )\n\n; ---------------------------------------------------------------------\n; (Optional) Address records for the service endpoint, if in-zone.\n; If hosted out-of-zone (example.net), these will live there instead.\n; ---------------------------------------------------------------------\nsvc-a4k2f9               900 IN A     192.0.2.5\nsvc-a4k2f9               900 IN AAAA  2001:db8::5\nweb-gw                   900 IN A     192.0.2.80\nweb-gw                   900 IN AAAA  2001:db8::80\n</pre><a href=\"#section-5.2.3-1\" class=\"pilcrow\">¶</a>\n</div>\n</section>\n</div>\n<div id=\"how-to-use-this-zonefile\">\n<section id=\"section-5.2.4\">\n          <h4 id=\"name-how-to-use-this-zonefile\">\n<a href=\"#section-5.2.4\" class=\"section-number selfRef\">5.2.4. </a><a href=\"#name-how-to-use-this-zonefile\" class=\"section-name selfRef\">How to use this zonefile</a>\n          </h4>\n<ul class=\"normal\">\n<li class=\"normal\" id=\"section-5.2.4-1.1\">\n              <p id=\"section-5.2.4-1.1.1\">Adjust TTLs for agility vs. cache efficiency. Use longer TTLs on indirection (aliases), shorter TTLs on volatile leaves and DCV. This aligns with DNS caching behavior and negative caching rules <span>[<a href=\"#RFC2308\" class=\"cite xref\">RFC2308</a>]</span>.<a href=\"#section-5.2.4-1.1.1\" class=\"pilcrow\">¶</a></p>\n</li>\n            <li class=\"normal\" id=\"section-5.2.4-1.2\">\n              <p id=\"section-5.2.4-1.2.1\">Follow SVCB/HTTPS semantics. Clients must honor SvcPriority, AliasMode (priority 0), and ServiceMode parameters, including mandatory, alpn, port, and address hints per <span>[<a href=\"#RFC9460\" class=\"cite xref\">RFC9460</a>]</span>.<a href=\"#section-5.2.4-1.2.1\" class=\"pilcrow\">¶</a></p>\n</li>\n            <li class=\"normal\" id=\"section-5.2.4-1.3\">\n              <p id=\"section-5.2.4-1.3.1\">DCV token flow. Issue a time-bounded token at _agents-challenge.domain and require DNSSEC-validated retrieval (pattern analogous to ACME's DNS-01 in <span>[<a href=\"#RFC8555\" class=\"cite xref\">RFC8555</a>]</span>). Remove on success.<a href=\"#section-5.2.4-1.3.1\" class=\"pilcrow\">¶</a></p>\n</li>\n            <li class=\"normal\" id=\"section-5.2.4-1.4\">\n              <p id=\"section-5.2.4-1.4.1\">Bind transport to DNS with DANE (optional). If your relying parties validate DNSSEC, publish TLSA to bind the endpoint's cert/key, using the operational guidance in <span>[<a href=\"#RFC7671\" class=\"cite xref\">RFC7671</a>]</span> (TLSA record format in <span>[<a href=\"#RFC6698\" class=\"cite xref\">RFC6698</a>]</span>).<a href=\"#section-5.2.4-1.4.1\" class=\"pilcrow\">¶</a></p>\n</li>\n            <li class=\"normal\" id=\"section-5.2.4-1.5\">\n              <p id=\"section-5.2.4-1.5.1\">Sign the zone. This file is pre-signing. Sign with DNSSEC (DNSKEY/DS/RRSIG, etc.) before deployment; validators must treat unsigned/bogus discovery data as a failure (per your earlier spec). See DNSSEC core specs <span>[<a href=\"#RFC4033\" class=\"cite xref\">RFC4033</a>]</span>, <span>[<a href=\"#RFC4034\" class=\"cite xref\">RFC4034</a>]</span>, <span>[<a href=\"#RFC4035\" class=\"cite xref\">RFC4035</a>]</span> and operational guidance.<a href=\"#section-5.2.4-1.5.1\" class=\"pilcrow\">¶</a></p>\n</li>\n          </ul>\n</section>\n</div>\n</section>\n</div>\n<div id=\"why-these-records\">\n<section id=\"section-5.3\">\n        <h3 id=\"name-why-these-records\">\n<a href=\"#section-5.3\" class=\"section-number selfRef\">5.3. </a><a href=\"#name-why-these-records\" class=\"section-name selfRef\">Why these records</a>\n        </h3>\n<ul class=\"normal\">\n<li class=\"normal\" id=\"section-5.3-1.1\">\n            <p id=\"section-5.3-1.1.1\">SVCB/HTTPS concentrate connection metadata and allow aliasing at apex and service labels, reducing round trips and enabling policy-gated parameters via mandatory.<a href=\"#section-5.3-1.1.1\" class=\"pilcrow\">¶</a></p>\n</li>\n          <li class=\"normal\" id=\"section-5.3-1.2\">\n            <p id=\"section-5.3-1.2.1\">Per-service, per-agent leaves avoid oversized RRsets and allow parallel administration/sharding while keeping alias names stable. This follows performance guidance in SVCB and your DNS-AID perf section.<a href=\"#section-5.3-1.2.1\" class=\"pilcrow\">¶</a></p>\n</li>\n          <li class=\"normal\" id=\"section-5.3-1.3\">\n            <p id=\"section-5.3-1.3.1\">DCV via TXT mirrors a well-understood, automated control-proof pattern <span>[<a href=\"#RFC8555\" class=\"cite xref\">RFC8555</a>]</span> that fits DNS-AID authorization workflows.<a href=\"#section-5.3-1.3.1\" class=\"pilcrow\">¶</a></p>\n</li>\n          <li class=\"normal\" id=\"section-5.3-1.4\">\n            <p id=\"section-5.3-1.4.1\">DANE TLSA optionally removes reliance on external PKI anchors for endpoint auth where DNSSEC is deployed <span>[<a href=\"#RFC6698\" class=\"cite xref\">RFC6698</a>]</span>, with deployment rules in <span>[<a href=\"#RFC7671\" class=\"cite xref\">RFC7671</a>]</span>.<a href=\"#section-5.3-1.4.1\" class=\"pilcrow\">¶</a></p>\n</li>\n        </ul>\n</section>\n</div>\n</section>\n</div>\n<div id=\"future-work-unaddressed-portions\">\n<section id=\"section-6\">\n      <h2 id=\"name-future-work-unaddressed-por\">\n<a href=\"#section-6\" class=\"section-number selfRef\">6. </a><a href=\"#name-future-work-unaddressed-por\" class=\"section-name selfRef\">Future Work &amp; Unaddressed Portions</a>\n      </h2>\n<p id=\"section-6-1\">How a consolidated registry would operate? Would it gather and publish information from individual organisations (scraping), would those organisations registery attest to security and be verified?<a href=\"#section-6-1\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"security-considerations\">\n<section id=\"section-7\">\n      <h2 id=\"name-security-considerations\">\n<a href=\"#section-7\" class=\"section-number selfRef\">7. </a><a href=\"#name-security-considerations\" class=\"section-name selfRef\">Security Considerations</a>\n      </h2>\n<p id=\"section-7-1\">DNSSEC and other security considerations apply. More work is needed to expand on this.<a href=\"#section-7-1\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"operational-considerations\">\n<section id=\"section-8\">\n      <h2 id=\"name-operational-considerations\">\n<a href=\"#section-8\" class=\"section-number selfRef\">8. </a><a href=\"#name-operational-considerations\" class=\"section-name selfRef\">Operational Considerations</a>\n      </h2>\n<p id=\"section-8-1\">Work is needed to expand on operational considerations.<a href=\"#section-8-1\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"iana-considerations\">\n<section id=\"section-9\">\n      <h2 id=\"name-iana-considerations\">\n<a href=\"#section-9\" class=\"section-number selfRef\">9. </a><a href=\"#name-iana-considerations\" class=\"section-name selfRef\">IANA Considerations</a>\n      </h2>\n<p id=\"section-9-1\">IANA maintains a registry of \"Underscored and Globally Scoped DNS Node Names\" per <span>[<a href=\"#RFC8552\" class=\"cite xref\">RFC8552</a>]</span>.  IANA is is requested to register an underscored attribute leaf for AI agents. _agent is suggested.<a href=\"#section-9-1\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-9-2\">IANA maintains a registry of \"DNS SVCB Service Parameter Keys (SvcParamKeys)\" per <span>[<a href=\"#RFC9460\" class=\"cite xref\">RFC9460</a>]</span>.  IANA is requested to designate custom key-value pairs for SVCB parameters to facilitate agent-to-agent application discovery and cost optimization.  The following parameters are requested:<a href=\"#section-9-2\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-9-3\">Name       | Meaning\n-----------+---------------------------------------------------------\ncap        | capability descriptor locator or inline identifier\n           | (e.g., a URN or compact JSON-Ref)\ncap-sha256 | capability base64url-encoded SHA-256 digest of the\n           | canonical capability descriptor\npolicy     | URI or URN identifying a policy bundle applicable to an\n           | agent\nrealm      | opaque token for multi-tenant scoping or authz realm\n           | selection during protocol bootstrapping<a href=\"#section-9-3\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"sec-combined-references\">\n<section id=\"section-10\">\n      <h2 id=\"name-references\">\n<a href=\"#section-10\" class=\"section-number selfRef\">10. </a><a href=\"#name-references\" class=\"section-name selfRef\">References</a>\n      </h2>\n<div id=\"sec-normative-references\">\n<section id=\"section-10.1\">\n        <h3 id=\"name-normative-references\">\n<a href=\"#section-10.1\" class=\"section-number selfRef\">10.1. </a><a href=\"#name-normative-references\" class=\"section-name selfRef\">Normative References</a>\n        </h3>\n<dl class=\"references\">\n<dt id=\"RFC2119\">[RFC2119]</dt>\n        <dd>\n<span class=\"refAuthor\">Bradner, S.</span>, <span class=\"refTitle\">\"Key words for use in RFCs to Indicate Requirement Levels\"</span>, <span class=\"seriesInfo\">BCP 14</span>, <span class=\"seriesInfo\">RFC 2119</span>, <span class=\"seriesInfo\">DOI 10.17487/RFC2119</span>, <time datetime=\"1997-03\" class=\"refDate\">March 1997</time>, <span>&lt;<a href=\"https://www.rfc-editor.org/rfc/rfc2119\">https://www.rfc-editor.org/rfc/rfc2119</a>&gt;</span>. </dd>\n<dd class=\"break\"></dd>\n<dt id=\"RFC2308\">[RFC2308]</dt>\n        <dd>\n<span class=\"refAuthor\">Andrews, M.</span>, <span class=\"refTitle\">\"Negative Caching of DNS Queries (DNS NCACHE)\"</span>, <span class=\"seriesInfo\">RFC 2308</span>, <span class=\"seriesInfo\">DOI 10.17487/RFC2308</span>, <time datetime=\"1998-03\" class=\"refDate\">March 1998</time>, <span>&lt;<a href=\"https://www.rfc-editor.org/rfc/rfc2308\">https://www.rfc-editor.org/rfc/rfc2308</a>&gt;</span>. </dd>\n<dd class=\"break\"></dd>\n<dt id=\"RFC4033\">[RFC4033]</dt>\n        <dd>\n<span class=\"refAuthor\">Arends, R.</span>, <span class=\"refAuthor\">Austein, R.</span>, <span class=\"refAuthor\">Larson, M.</span>, <span class=\"refAuthor\">Massey, D.</span>, and <span class=\"refAuthor\">S. Rose</span>, <span class=\"refTitle\">\"DNS Security Introduction and Requirements\"</span>, <span class=\"seriesInfo\">RFC 4033</span>, <span class=\"seriesInfo\">DOI 10.17487/RFC4033</span>, <time datetime=\"2005-03\" class=\"refDate\">March 2005</time>, <span>&lt;<a href=\"https://www.rfc-editor.org/rfc/rfc4033\">https://www.rfc-editor.org/rfc/rfc4033</a>&gt;</span>. </dd>\n<dd class=\"break\"></dd>\n<dt id=\"RFC6891\">[RFC6891]</dt>\n        <dd>\n<span class=\"refAuthor\">Damas, J.</span>, <span class=\"refAuthor\">Graff, M.</span>, and <span class=\"refAuthor\">P. Vixie</span>, <span class=\"refTitle\">\"Extension Mechanisms for DNS (EDNS(0))\"</span>, <span class=\"seriesInfo\">STD 75</span>, <span class=\"seriesInfo\">RFC 6891</span>, <span class=\"seriesInfo\">DOI 10.17487/RFC6891</span>, <time datetime=\"2013-04\" class=\"refDate\">April 2013</time>, <span>&lt;<a href=\"https://www.rfc-editor.org/rfc/rfc6891\">https://www.rfc-editor.org/rfc/rfc6891</a>&gt;</span>. </dd>\n<dd class=\"break\"></dd>\n<dt id=\"RFC7766\">[RFC7766]</dt>\n        <dd>\n<span class=\"refAuthor\">Dickinson, J.</span>, <span class=\"refAuthor\">Dickinson, S.</span>, <span class=\"refAuthor\">Bellis, R.</span>, <span class=\"refAuthor\">Mankin, A.</span>, and <span class=\"refAuthor\">D. Wessels</span>, <span class=\"refTitle\">\"DNS Transport over TCP - Implementation Requirements\"</span>, <span class=\"seriesInfo\">RFC 7766</span>, <span class=\"seriesInfo\">DOI 10.17487/RFC7766</span>, <time datetime=\"2016-03\" class=\"refDate\">March 2016</time>, <span>&lt;<a href=\"https://www.rfc-editor.org/rfc/rfc7766\">https://www.rfc-editor.org/rfc/rfc7766</a>&gt;</span>. </dd>\n<dd class=\"break\"></dd>\n<dt id=\"RFC8174\">[RFC8174]</dt>\n        <dd>\n<span class=\"refAuthor\">Leiba, B.</span>, <span class=\"refTitle\">\"Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words\"</span>, <span class=\"seriesInfo\">BCP 14</span>, <span class=\"seriesInfo\">RFC 8174</span>, <span class=\"seriesInfo\">DOI 10.17487/RFC8174</span>, <time datetime=\"2017-05\" class=\"refDate\">May 2017</time>, <span>&lt;<a href=\"https://www.rfc-editor.org/rfc/rfc8174\">https://www.rfc-editor.org/rfc/rfc8174</a>&gt;</span>. </dd>\n<dd class=\"break\"></dd>\n<dt id=\"RFC9460\">[RFC9460]</dt>\n      <dd>\n<span class=\"refAuthor\">Schwartz, B.</span>, <span class=\"refAuthor\">Bishop, M.</span>, and <span class=\"refAuthor\">E. Nygren</span>, <span class=\"refTitle\">\"Service Binding and Parameter Specification via the DNS (SVCB and HTTPS Resource Records)\"</span>, <span class=\"seriesInfo\">RFC 9460</span>, <span class=\"seriesInfo\">DOI 10.17487/RFC9460</span>, <time datetime=\"2023-11\" class=\"refDate\">November 2023</time>, <span>&lt;<a href=\"https://www.rfc-editor.org/rfc/rfc9460\">https://www.rfc-editor.org/rfc/rfc9460</a>&gt;</span>. </dd>\n<dd class=\"break\"></dd>\n</dl>\n</section>\n</div>\n<div id=\"sec-informative-references\">\n<section id=\"section-10.2\">\n        <h3 id=\"name-informative-references\">\n<a href=\"#section-10.2\" class=\"section-number selfRef\">10.2. </a><a href=\"#name-informative-references\" class=\"section-name selfRef\">Informative References</a>\n        </h3>\n<dl class=\"references\">\n<dt id=\"I-D.draft-ietf-dnsop-domain-verification-techniques\">[I-D.draft-ietf-dnsop-domain-verification-techniques]</dt>\n        <dd>\n<span class=\"refAuthor\">Sahib, S. K.</span>, <span class=\"refAuthor\">Huque, S.</span>, <span class=\"refAuthor\">Wouters, P.</span>, <span class=\"refAuthor\">Nygren, E.</span>, and <span class=\"refAuthor\">T. Wicinski</span>, <span class=\"refTitle\">\"Domain Control Validation using DNS\"</span>, <span class=\"refContent\">Work in Progress</span>, <span class=\"seriesInfo\">Internet-Draft, draft-ietf-dnsop-domain-verification-techniques-11</span>, <time datetime=\"2026-02-01\" class=\"refDate\">1 February 2026</time>, <span>&lt;<a href=\"https://datatracker.ietf.org/doc/html/draft-ietf-dnsop-domain-verification-techniques-11\">https://datatracker.ietf.org/doc/html/draft-ietf-dnsop-domain-verification-techniques-11</a>&gt;</span>. </dd>\n<dd class=\"break\"></dd>\n<dt id=\"RFC4034\">[RFC4034]</dt>\n        <dd>\n<span class=\"refAuthor\">Arends, R.</span>, <span class=\"refAuthor\">Austein, R.</span>, <span class=\"refAuthor\">Larson, M.</span>, <span class=\"refAuthor\">Massey, D.</span>, and <span class=\"refAuthor\">S. Rose</span>, <span class=\"refTitle\">\"Resource Records for the DNS Security Extensions\"</span>, <span class=\"seriesInfo\">RFC 4034</span>, <span class=\"seriesInfo\">DOI 10.17487/RFC4034</span>, <time datetime=\"2005-03\" class=\"refDate\">March 2005</time>, <span>&lt;<a href=\"https://www.rfc-editor.org/rfc/rfc4034\">https://www.rfc-editor.org/rfc/rfc4034</a>&gt;</span>. </dd>\n<dd class=\"break\"></dd>\n<dt id=\"RFC4035\">[RFC4035]</dt>\n        <dd>\n<span class=\"refAuthor\">Arends, R.</span>, <span class=\"refAuthor\">Austein, R.</span>, <span class=\"refAuthor\">Larson, M.</span>, <span class=\"refAuthor\">Massey, D.</span>, and <span class=\"refAuthor\">S. Rose</span>, <span class=\"refTitle\">\"Protocol Modifications for the DNS Security Extensions\"</span>, <span class=\"seriesInfo\">RFC 4035</span>, <span class=\"seriesInfo\">DOI 10.17487/RFC4035</span>, <time datetime=\"2005-03\" class=\"refDate\">March 2005</time>, <span>&lt;<a href=\"https://www.rfc-editor.org/rfc/rfc4035\">https://www.rfc-editor.org/rfc/rfc4035</a>&gt;</span>. </dd>\n<dd class=\"break\"></dd>\n<dt id=\"RFC6698\">[RFC6698]</dt>\n        <dd>\n<span class=\"refAuthor\">Hoffman, P.</span> and <span class=\"refAuthor\">J. Schlyter</span>, <span class=\"refTitle\">\"The DNS-Based Authentication of Named Entities (DANE) Transport Layer Security (TLS) Protocol: TLSA\"</span>, <span class=\"seriesInfo\">RFC 6698</span>, <span class=\"seriesInfo\">DOI 10.17487/RFC6698</span>, <time datetime=\"2012-08\" class=\"refDate\">August 2012</time>, <span>&lt;<a href=\"https://www.rfc-editor.org/rfc/rfc6698\">https://www.rfc-editor.org/rfc/rfc6698</a>&gt;</span>. </dd>\n<dd class=\"break\"></dd>\n<dt id=\"RFC6763\">[RFC6763]</dt>\n        <dd>\n<span class=\"refAuthor\">Cheshire, S.</span> and <span class=\"refAuthor\">M. Krochmal</span>, <span class=\"refTitle\">\"DNS-Based Service Discovery\"</span>, <span class=\"seriesInfo\">RFC 6763</span>, <span class=\"seriesInfo\">DOI 10.17487/RFC6763</span>, <time datetime=\"2013-02\" class=\"refDate\">February 2013</time>, <span>&lt;<a href=\"https://www.rfc-editor.org/rfc/rfc6763\">https://www.rfc-editor.org/rfc/rfc6763</a>&gt;</span>. </dd>\n<dd class=\"break\"></dd>\n<dt id=\"RFC7553\">[RFC7553]</dt>\n        <dd>\n<span class=\"refAuthor\">Faltstrom, P.</span> and <span class=\"refAuthor\">O. Kolkman</span>, <span class=\"refTitle\">\"The Uniform Resource Identifier (URI) DNS Resource Record\"</span>, <span class=\"seriesInfo\">RFC 7553</span>, <span class=\"seriesInfo\">DOI 10.17487/RFC7553</span>, <time datetime=\"2015-06\" class=\"refDate\">June 2015</time>, <span>&lt;<a href=\"https://www.rfc-editor.org/rfc/rfc7553\">https://www.rfc-editor.org/rfc/rfc7553</a>&gt;</span>. </dd>\n<dd class=\"break\"></dd>\n<dt id=\"RFC7671\">[RFC7671]</dt>\n        <dd>\n<span class=\"refAuthor\">Dukhovni, V.</span> and <span class=\"refAuthor\">W. Hardaker</span>, <span class=\"refTitle\">\"The DNS-Based Authentication of Named Entities (DANE) Protocol: Updates and Operational Guidance\"</span>, <span class=\"seriesInfo\">RFC 7671</span>, <span class=\"seriesInfo\">DOI 10.17487/RFC7671</span>, <time datetime=\"2015-10\" class=\"refDate\">October 2015</time>, <span>&lt;<a href=\"https://www.rfc-editor.org/rfc/rfc7671\">https://www.rfc-editor.org/rfc/rfc7671</a>&gt;</span>. </dd>\n<dd class=\"break\"></dd>\n<dt id=\"RFC8552\">[RFC8552]</dt>\n        <dd>\n<span class=\"refAuthor\">Crocker, D.</span>, <span class=\"refTitle\">\"Scoped Interpretation of DNS Resource Records through \"Underscored\" Naming of Attribute Leaves\"</span>, <span class=\"seriesInfo\">BCP 222</span>, <span class=\"seriesInfo\">RFC 8552</span>, <span class=\"seriesInfo\">DOI 10.17487/RFC8552</span>, <time datetime=\"2019-03\" class=\"refDate\">March 2019</time>, <span>&lt;<a href=\"https://www.rfc-editor.org/rfc/rfc8552\">https://www.rfc-editor.org/rfc/rfc8552</a>&gt;</span>. </dd>\n<dd class=\"break\"></dd>\n<dt id=\"RFC8555\">[RFC8555]</dt>\n        <dd>\n<span class=\"refAuthor\">Barnes, R.</span>, <span class=\"refAuthor\">Hoffman-Andrews, J.</span>, <span class=\"refAuthor\">McCarney, D.</span>, and <span class=\"refAuthor\">J. Kasten</span>, <span class=\"refTitle\">\"Automatic Certificate Management Environment (ACME)\"</span>, <span class=\"seriesInfo\">RFC 8555</span>, <span class=\"seriesInfo\">DOI 10.17487/RFC8555</span>, <time datetime=\"2019-03\" class=\"refDate\">March 2019</time>, <span>&lt;<a href=\"https://www.rfc-editor.org/rfc/rfc8555\">https://www.rfc-editor.org/rfc/rfc8555</a>&gt;</span>. </dd>\n<dd class=\"break\"></dd>\n<dt id=\"RFC9364\">[RFC9364]</dt>\n      <dd>\n<span class=\"refAuthor\">Hoffman, P.</span>, <span class=\"refTitle\">\"DNS Security Extensions (DNSSEC)\"</span>, <span class=\"seriesInfo\">BCP 237</span>, <span class=\"seriesInfo\">RFC 9364</span>, <span class=\"seriesInfo\">DOI 10.17487/RFC9364</span>, <time datetime=\"2023-02\" class=\"refDate\">February 2023</time>, <span>&lt;<a href=\"https://www.rfc-editor.org/rfc/rfc9364\">https://www.rfc-editor.org/rfc/rfc9364</a>&gt;</span>. </dd>\n<dd class=\"break\"></dd>\n</dl>\n</section>\n</div>\n</section>\n</div>\n<div id=\"acknowledgments\">\n<section id=\"appendix-A\">\n      <h2 id=\"name-acknowledgments\">\n<a href=\"#name-acknowledgments\" class=\"section-name selfRef\">Acknowledgments</a>\n      </h2>\n<p id=\"appendix-A-1\">The authors thank Aijun Wang, Ben Schwartz and Ross Gibson for their contributions, questions, and comments.<a href=\"#appendix-A-1\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"authors-addresses\">\n<section id=\"appendix-B\">\n      <h2 id=\"name-authors-addresses\">\n<a href=\"#name-authors-addresses\" class=\"section-name selfRef\">Authors' Addresses</a>\n      </h2>\n<address class=\"vcard\">\n        <div dir=\"auto\" class=\"left\"><span class=\"fn nameRole\">Jim Mozley</span></div>\n<div dir=\"auto\" class=\"left\"><span class=\"org\">Infoblox, Inc.</span></div>\n<div class=\"email\">\n<span>Email:</span>\n<a href=\"mailto:jmozley@infoblox.com\" class=\"email\">jmozley@infoblox.com</a>\n</div>\n</address>\n<address class=\"vcard\">\n        <div dir=\"auto\" class=\"left\"><span class=\"fn nameRole\">Nic Williams</span></div>\n<div dir=\"auto\" class=\"left\"><span class=\"org\">Infoblox, Inc.</span></div>\n<div class=\"email\">\n<span>Email:</span>\n<a href=\"mailto:nic@infoblox.com\" class=\"email\">nic@infoblox.com</a>\n</div>\n</address>\n<address class=\"vcard\">\n        <div dir=\"auto\" class=\"left\"><span class=\"fn nameRole\">Behcet Sarikaya</span></div>\n<div dir=\"auto\" class=\"left\"><span class=\"org\">Unaffiliated</span></div>\n<div class=\"email\">\n<span>Email:</span>\n<a href=\"mailto:sarikaya@ieee.org\" class=\"email\">sarikaya@ieee.org</a>\n</div>\n</address>\n<address class=\"vcard\">\n        <div dir=\"auto\" class=\"left\"><span class=\"fn nameRole\">Roland Schott</span></div>\n<div dir=\"auto\" class=\"left\"><span class=\"org\">Deutsche Telekom</span></div>\n<div class=\"email\">\n<span>Email:</span>\n<a href=\"mailto:roland.schott@telekom.de\" class=\"email\">roland.schott@telekom.de</a>\n</div>\n</address>\n</section>\n</div>\n<script>const toc = document.getElementById(\"toc\");\ntoc.querySelector(\"h2\").addEventListener(\"click\", e => {\n  toc.classList.toggle(\"active\");\n});\ntoc.querySelector(\"nav\").addEventListener(\"click\", e => {\n  toc.classList.remove(\"active\");\n});\n</script>\n<script>(function(){function c(){var b=a.contentDocument||(a.contentWindow&&a.contentWindow.document);if(b){var d=b.createElement('script');d.innerHTML=\"window.__CF$cv$params={r:'a344cd279f931990',t:'MTc4ODI3MTIyOA=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);\";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script></body>\n</html>\n","snapshot_chars":156015,"live_check":"changed"}]}