<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <id>https://vulnerability.circl.lu/sightings/feed</id>
  <title>Most recent sightings.</title>
  <updated>2026-06-23T14:50:33.489098+00:00</updated>
  <author>
    <name>Vulnerability-Lookup</name>
    <email>info@circl.lu</email>
  </author>
  <link href="https://vulnerability.circl.lu" rel="alternate"/>
  <generator uri="https://lkiesow.github.io/python-feedgen" version="1.0.0">python-feedgen</generator>
  <subtitle>Contains only the most 10 recent sightings.</subtitle>
  <entry>
    <id>https://vulnerability.circl.lu/sighting/746c7b51-dc4e-4925-9bdb-cc79326a54db/export</id>
    <title>746c7b51-dc4e-4925-9bdb-cc79326a54db</title>
    <updated>2026-06-23T14:50:33.508595+00:00</updated>
    <author>
      <name>Joseph Lee</name>
      <uri>https://cve.circl.lu/user/syspect</uri>
    </author>
    <content>{"uuid": "746c7b51-dc4e-4925-9bdb-cc79326a54db", "vulnerability_lookup_origin": "1a89b78e-f703-45f3-bb86-59eb712668bd", "author": "86ecb4e1-bb32-44d5-9f39-8a4673af8385", "vulnerability": "CVE-2026-10012", "type": "seen", "source": "https://www.hkcert.org/security-bulletin/google-chrome-multiple-vulnerabilities_20260529", "content": "", "creation_timestamp": "2026-05-28T18:00:00.000000Z"}</content>
    <link href="https://vulnerability.circl.lu/sighting/746c7b51-dc4e-4925-9bdb-cc79326a54db/export"/>
    <published>2026-05-28T18:00:00+00:00</published>
  </entry>
  <entry>
    <id>https://vulnerability.circl.lu/sighting/0da131e9-5407-4301-8a0d-768ddb722a14/export</id>
    <title>0da131e9-5407-4301-8a0d-768ddb722a14</title>
    <updated>2026-06-23T14:50:33.508513+00:00</updated>
    <author>
      <name>Joseph Lee</name>
      <uri>https://cve.circl.lu/user/syspect</uri>
    </author>
    <content>{"uuid": "0da131e9-5407-4301-8a0d-768ddb722a14", "vulnerability_lookup_origin": "1a89b78e-f703-45f3-bb86-59eb712668bd", "author": "86ecb4e1-bb32-44d5-9f39-8a4673af8385", "vulnerability": "CVE-2026-10013", "type": "seen", "source": "https://www.hkcert.org/security-bulletin/google-chrome-multiple-vulnerabilities_20260529", "content": "", "creation_timestamp": "2026-05-28T18:00:00.000000Z"}</content>
    <link href="https://vulnerability.circl.lu/sighting/0da131e9-5407-4301-8a0d-768ddb722a14/export"/>
    <published>2026-05-28T18:00:00+00:00</published>
  </entry>
  <entry>
    <id>https://vulnerability.circl.lu/sighting/bb754141-ede7-4307-9b18-84cf1b7c5757/export</id>
    <title>bb754141-ede7-4307-9b18-84cf1b7c5757</title>
    <updated>2026-06-23T14:50:33.508431+00:00</updated>
    <author>
      <name>Joseph Lee</name>
      <uri>https://cve.circl.lu/user/syspect</uri>
    </author>
    <content>{"uuid": "bb754141-ede7-4307-9b18-84cf1b7c5757", "vulnerability_lookup_origin": "1a89b78e-f703-45f3-bb86-59eb712668bd", "author": "86ecb4e1-bb32-44d5-9f39-8a4673af8385", "vulnerability": "CVE-2026-10014", "type": "seen", "source": "https://www.acn.gov.it/portale/w/risolte-vulnerabilita-in-google-chrome-52", "content": "", "creation_timestamp": "2026-05-29T02:21:42.000000Z"}</content>
    <link href="https://vulnerability.circl.lu/sighting/bb754141-ede7-4307-9b18-84cf1b7c5757/export"/>
    <published>2026-05-29T02:21:42+00:00</published>
  </entry>
  <entry>
    <id>https://vulnerability.circl.lu/sighting/372241de-5e0a-4825-8a6f-bf577aea363b/export</id>
    <title>372241de-5e0a-4825-8a6f-bf577aea363b</title>
    <updated>2026-06-23T14:50:33.508355+00:00</updated>
    <author>
      <name>Joseph Lee</name>
      <uri>https://cve.circl.lu/user/syspect</uri>
    </author>
    <content>{"uuid": "372241de-5e0a-4825-8a6f-bf577aea363b", "vulnerability_lookup_origin": "1a89b78e-f703-45f3-bb86-59eb712668bd", "author": "86ecb4e1-bb32-44d5-9f39-8a4673af8385", "vulnerability": "CVE-2026-10016", "type": "seen", "source": "https://www.acn.gov.it/portale/w/risolte-vulnerabilita-in-google-chrome-52", "content": "", "creation_timestamp": "2026-05-29T02:21:42.000000Z"}</content>
    <link href="https://vulnerability.circl.lu/sighting/372241de-5e0a-4825-8a6f-bf577aea363b/export"/>
    <published>2026-05-29T02:21:42+00:00</published>
  </entry>
  <entry>
    <id>https://vulnerability.circl.lu/sighting/34eb1b34-c913-437c-a9fd-45f8bf4c1460/export</id>
    <title>34eb1b34-c913-437c-a9fd-45f8bf4c1460</title>
    <updated>2026-06-23T14:50:33.508281+00:00</updated>
    <author>
      <name>Joseph Lee</name>
      <uri>https://cve.circl.lu/user/syspect</uri>
    </author>
    <content>{"uuid": "34eb1b34-c913-437c-a9fd-45f8bf4c1460", "vulnerability_lookup_origin": "1a89b78e-f703-45f3-bb86-59eb712668bd", "author": "86ecb4e1-bb32-44d5-9f39-8a4673af8385", "vulnerability": "CVE-2026-10013", "type": "seen", "source": "https://www.acn.gov.it/portale/w/risolte-vulnerabilita-in-google-chrome-52", "content": "", "creation_timestamp": "2026-05-29T02:21:42.000000Z"}</content>
    <link href="https://vulnerability.circl.lu/sighting/34eb1b34-c913-437c-a9fd-45f8bf4c1460/export"/>
    <published>2026-05-29T02:21:42+00:00</published>
  </entry>
  <entry>
    <id>https://vulnerability.circl.lu/sighting/3bc4c924-80c3-4d2a-884c-ae32fd4b8b0a/export</id>
    <title>3bc4c924-80c3-4d2a-884c-ae32fd4b8b0a</title>
    <updated>2026-06-23T14:50:33.508204+00:00</updated>
    <author>
      <name>Joseph Lee</name>
      <uri>https://cve.circl.lu/user/syspect</uri>
    </author>
    <content>{"uuid": "3bc4c924-80c3-4d2a-884c-ae32fd4b8b0a", "vulnerability_lookup_origin": "1a89b78e-f703-45f3-bb86-59eb712668bd", "author": "86ecb4e1-bb32-44d5-9f39-8a4673af8385", "vulnerability": "CVE-2026-10015", "type": "seen", "source": "https://www.acn.gov.it/portale/w/risolte-vulnerabilita-in-google-chrome-52", "content": "", "creation_timestamp": "2026-05-29T02:21:42.000000Z"}</content>
    <link href="https://vulnerability.circl.lu/sighting/3bc4c924-80c3-4d2a-884c-ae32fd4b8b0a/export"/>
    <published>2026-05-29T02:21:42+00:00</published>
  </entry>
  <entry>
    <id>https://vulnerability.circl.lu/sighting/5146de7d-0141-4551-b573-ed86a611f7d4/export</id>
    <title>5146de7d-0141-4551-b573-ed86a611f7d4</title>
    <updated>2026-06-23T14:50:33.508116+00:00</updated>
    <author>
      <name>Joseph Lee</name>
      <uri>https://cve.circl.lu/user/syspect</uri>
    </author>
    <content>{"uuid": "5146de7d-0141-4551-b573-ed86a611f7d4", "vulnerability_lookup_origin": "1a89b78e-f703-45f3-bb86-59eb712668bd", "author": "86ecb4e1-bb32-44d5-9f39-8a4673af8385", "vulnerability": "CVE-2026-10012", "type": "seen", "source": "https://www.acn.gov.it/portale/w/risolte-vulnerabilita-in-google-chrome-52", "content": "", "creation_timestamp": "2026-05-29T02:21:42.000000Z"}</content>
    <link href="https://vulnerability.circl.lu/sighting/5146de7d-0141-4551-b573-ed86a611f7d4/export"/>
    <published>2026-05-29T02:21:42+00:00</published>
  </entry>
  <entry>
    <id>https://vulnerability.circl.lu/sighting/befa01a9-c01d-4061-909d-583122b8b4bb/export</id>
    <title>befa01a9-c01d-4061-909d-583122b8b4bb</title>
    <updated>2026-06-23T14:50:33.508017+00:00</updated>
    <author>
      <name>Joseph Lee</name>
      <uri>https://cve.circl.lu/user/syspect</uri>
    </author>
    <content>{"uuid": "befa01a9-c01d-4061-909d-583122b8b4bb", "vulnerability_lookup_origin": "1a89b78e-f703-45f3-bb86-59eb712668bd", "author": "86ecb4e1-bb32-44d5-9f39-8a4673af8385", "vulnerability": "CVE-2026-10010", "type": "seen", "source": "https://www.acn.gov.it/portale/w/risolte-vulnerabilita-in-google-chrome-52", "content": "", "creation_timestamp": "2026-05-29T02:21:42.000000Z"}</content>
    <link href="https://vulnerability.circl.lu/sighting/befa01a9-c01d-4061-909d-583122b8b4bb/export"/>
    <published>2026-05-29T02:21:42+00:00</published>
  </entry>
  <entry>
    <id>https://vulnerability.circl.lu/sighting/06d48ebb-c0fa-4c4d-b6d2-b44b471eec1d/export</id>
    <title>06d48ebb-c0fa-4c4d-b6d2-b44b471eec1d</title>
    <updated>2026-06-23T14:50:33.507059+00:00</updated>
    <author>
      <name>Joseph Lee</name>
      <uri>https://cve.circl.lu/user/syspect</uri>
    </author>
    <content>{"uuid": "06d48ebb-c0fa-4c4d-b6d2-b44b471eec1d", "vulnerability_lookup_origin": "1a89b78e-f703-45f3-bb86-59eb712668bd", "author": "86ecb4e1-bb32-44d5-9f39-8a4673af8385", "vulnerability": "CVE-2026-10011", "type": "seen", "source": "https://www.acn.gov.it/portale/w/risolte-vulnerabilita-in-google-chrome-52", "content": "", "creation_timestamp": "2026-05-29T02:21:42.000000Z"}</content>
    <link href="https://vulnerability.circl.lu/sighting/06d48ebb-c0fa-4c4d-b6d2-b44b471eec1d/export"/>
    <published>2026-05-29T02:21:42+00:00</published>
  </entry>
  <entry>
    <id>https://vulnerability.circl.lu/sighting/f678b395-f1da-4293-bd95-6e4070831354/export</id>
    <title>f678b395-f1da-4293-bd95-6e4070831354</title>
    <updated>2026-06-23T14:50:33.503607+00:00</updated>
    <author>
      <name>Automation user</name>
      <uri>https://cve.circl.lu/user/automation</uri>
    </author>
    <content>{"uuid": "f678b395-f1da-4293-bd95-6e4070831354", "vulnerability_lookup_origin": "1a89b78e-f703-45f3-bb86-59eb712668bd", "author": "9f56dd64-161d-43a6-b9c3-555944290a09", "vulnerability": "CVE-2026-1001", "type": "seen", "source": "https://gist.github.com/zanetworker/1c2f8d6638917ee25ed7da3865900455", "content": "\n\n\n\n\nAgent Registry v2\n\n\n*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}\n:root{--bg:#000;--p:#0a0a0a;--p2:#111;--bd:#292929;--tx:#E0E0E0;--mu:#A3A3A3;--dm:#4D4D4D;--ac:#EE0000;--ah:#A60000;--pu:#5E40BE;--pd:#21134D;--tl:#37A3A3;--tll:#9AD8D8;--td:#004D4D;--gn:#22c55e;--gd:#22c55e20;--am:#f59e0b;--ad:#f59e0b20;--rl:#F56E6E;--fd:'Red Hat Display',Arial,sans-serif;--ft:'Red Hat Text',Arial,sans-serif;--fm:'Red Hat Mono','Courier New',monospace}\nbody{font-family:var(--ft);background:var(--bg);color:var(--tx);line-height:1.5;padding-bottom:56px}\nh1,h2,h3{font-family:var(--fd);font-weight:700}\n.app{max-width:1540px;margin:0 auto;padding:1.5rem}\n/* Header */\n.hd{display:flex;align-items:center;justify-content:space-between;padding-bottom:1.2rem;border-bottom:2px solid var(--ac);margin-bottom:.6rem;flex-wrap:wrap;gap:.5rem}\n.hd h1{font-size:1.45rem;letter-spacing:-.02em}.hd h1 span{color:var(--ac)}\n.hd-r{display:flex;align-items:center;gap:.8rem}\n.hd-m{font-size:.78rem;color:var(--mu);font-family:var(--fm)}\n.cls{background:var(--p);border:1px solid var(--bd);color:var(--mu);padding:.35rem .7rem;border-radius:5px;font-size:.78rem;font-family:var(--ft);cursor:pointer}.cls:focus{outline:none;border-color:var(--ac)}\n/* Problem overlay */\n.po{background:var(--p);border:1px solid var(--bd);border-radius:8px;margin-bottom:1rem;overflow:hidden}\n.po-h{display:flex;align-items:center;justify-content:space-between;padding:.55rem 1rem;cursor:pointer;user-select:none}.po-h:hover{background:var(--p2)}\n.po-h h3{font-size:.75rem;text-transform:uppercase;letter-spacing:.08em;color:var(--mu);font-weight:600}\n.po-h .arr{color:var(--dm);font-size:.8rem;transition:transform .2s}.po.open .arr{transform:rotate(180deg)}\n.po-b{display:none;padding:.5rem 1rem .8rem;border-top:1px solid var(--bd)}.po.open .po-b{display:block}\n.po-g{margin-bottom:.6rem}.po-g h4{font-size:.65rem;text-transform:uppercase;letter-spacing:.1em;margin-bottom:.35rem;font-weight:700}\n.po-g.t1 h4{color:var(--ac)}.po-g.t2 h4{color:var(--am)}.po-g.t3 h4{color:var(--dm)}\n.pi{display:inline-flex;align-items:center;gap:.3rem;padding:.2rem .55rem;border-radius:4px;font-size:.7rem;margin:2px;border:1px solid var(--bd);background:var(--p2);color:var(--mu);cursor:default;position:relative}\n.pi.on{border-color:var(--gn);color:var(--gn);background:#22c55e08}.pi.off{border-color:var(--bd);color:var(--dm);opacity:.5;text-decoration:line-through}\n.pi .num{font-weight:700;font-family:var(--fm);font-size:.63rem;min-width:14px;text-align:center}\n.pi .num.t1{color:var(--ac)}.pi .num.t2{color:var(--am)}.pi .num.t3{color:var(--dm)}\n/* Callouts */\n.co{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;font-size:.55rem;font-weight:700;font-family:var(--fm);cursor:help;vertical-align:middle;margin-left:4px;position:relative}\n.co.t1{background:var(--ac);color:#fff}.co.t2{background:var(--am);color:#000}.co.t3{background:var(--dm);color:#fff}\n.co .tip{display:none;position:absolute;bottom:calc(100% + 6px);left:50%;transform:translateX(-50%);background:#1a1a1a;border:1px solid var(--bd);padding:.35rem .55rem;border-radius:5px;font-size:.68rem;font-weight:400;color:var(--tx);white-space:nowrap;z-index:300;pointer-events:none}\n.co:hover .tip{display:block}\n.co-hide .co{display:none}\n/* Nav */\n.nv{display:flex;gap:.35rem;margin-bottom:1.2rem;flex-wrap:wrap}\n.nv button{background:var(--p);border:1px solid var(--bd);color:var(--mu);padding:.48rem 1.1rem;border-radius:6px;cursor:pointer;font-size:.82rem;font-family:var(--ft);font-weight:500;transition:all .2s;position:relative}\n.nv button:hover{border-color:#444;color:var(--tx)}.nv button.on{border-color:var(--ac);color:#fff;background:#1a0000}\n.nv .bg{position:absolute;top:-6px;right:-6px;font-size:.63rem;padding:1px 5px;border-radius:8px;font-weight:700;color:#fff}\n.bg-r{background:var(--ac)}.bg-a{background:var(--am)}.bg-g{background:var(--gn)}.bg-p{background:var(--pu)}\n.vw{display:none;animation:fi .22s ease}.vw.on{display:block}\n@keyframes fi{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}\n/* Stats */\n.sts{display:flex;gap:.65rem;margin-bottom:1.2rem;flex-wrap:wrap}\n.st{background:var(--p);border:1px solid var(--bd);border-radius:8px;padding:.55rem .9rem;flex:1;min-width:85px}\n.sv{font-size:1.35rem;font-weight:700;font-family:var(--fd)}.sl{font-size:.63rem;color:var(--mu);text-transform:uppercase;letter-spacing:.08em;margin-top:1px}\n.sv.g{color:var(--gn)}.sv.a{color:var(--am)}.sv.r{color:var(--rl)}.sv.t{color:var(--tl)}.sv.y{color:#fbbf24}.sv.p{color:var(--pu)}\n/* Filter bar */\n.fb{display:flex;gap:.45rem;margin-bottom:1rem;flex-wrap:wrap;align-items:center}\n.fb input[type=text]{background:var(--p);border:1px solid var(--bd);color:var(--tx);padding:.48rem .7rem;border-radius:6px;font-size:.84rem;flex:1;min-width:160px;font-family:var(--ft)}\n.fb input::placeholder{color:var(--dm)}\n.fb select{background:var(--p);border:1px solid var(--bd);color:var(--mu);padding:.48rem .6rem;border-radius:6px;font-size:.78rem;font-family:var(--ft);cursor:pointer}\n.fb select:focus,.fb input:focus{outline:none;border-color:var(--ac)}\n/* Table */\ntable{width:100%;border-collapse:collapse;font-size:.82rem}\nthead th{text-align:left;padding:.5rem .55rem;border-bottom:2px solid var(--ac);font-size:.65rem;text-transform:uppercase;letter-spacing:.08em;color:var(--mu);font-weight:600;white-space:nowrap}\ntbody tr{border-bottom:1px solid var(--bd);cursor:pointer;transition:background .12s}tbody tr:hover{background:#111}\ntd{padding:.5rem .55rem;vertical-align:middle}\n.an{font-weight:600;color:#fff;font-size:.82rem}.asb{font-size:.68rem;color:var(--dm)}\n/* Pills */\n.pl{display:inline-block;padding:1px 7px;border-radius:10px;font-size:.66rem;font-weight:600;text-transform:uppercase;letter-spacing:.03em}\n.pl-a{background:#22c55e20;color:#22c55e;border:1px solid #22c55e40}.pl-d{background:#5E40BE20;color:#a78bfa;border:1px solid #5E40BE40}.pl-x{background:#6b728020;color:#9ca3af;border:1px solid #6b728040}\n.pl-h{background:var(--gd);color:var(--gn);border:1px solid #22c55e40}.pl-s{background:var(--ad);color:var(--am);border:1px solid #f59e0b40}.pl-w{background:#EE000020;color:var(--rl);border:1px solid #EE000040}\n.pl-sb{background:var(--td);color:var(--tll);border:1px solid #00666640;font-size:.63rem}.pl-us{background:#3d240620;color:#fbbf24;border:1px solid #f59e0b30;font-size:.63rem}\n.pr{display:inline-block;padding:1px 5px;border-radius:3px;font-size:.61rem;font-family:var(--fm);font-weight:500;margin-right:2px}\n.pr-m{background:var(--td);color:var(--tll)}.pr-a{background:var(--pd);color:#c4b5fd}\n.cp{display:inline-block;padding:1px 5px;border-radius:3px;font-size:.66rem;background:var(--p2);border:1px solid var(--bd);color:var(--mu);margin:1px 1px}\n.mc{font-family:var(--fm);color:var(--tl);font-size:.78rem}\n/* CVE pill */\n.cve{display:inline-flex;align-items:center;gap:3px;padding:1px 6px;border-radius:3px;font-size:.63rem;font-family:var(--fm);font-weight:600}\n.cve-c{background:#EE000030;color:var(--rl);border:1px solid #EE000050}.cve-h{background:#f59e0b20;color:var(--am);border:1px solid #f59e0b40}.cve-m{background:#3b82f620;color:#60a5fa;border:1px solid #3b82f640}.cve-n{background:#22c55e10;color:var(--gn);border:1px solid #22c55e30}\n/* Token pill */\n.tk{font-family:var(--fm);font-size:.72rem;color:var(--mu)}\n/* Detail panel */\n.dp{position:fixed;top:0;right:0;width:580px;height:100vh;background:var(--p);border-left:1px solid var(--bd);z-index:100;overflow-y:auto;padding:1.5rem;transform:translateX(100%);transition:transform .22s ease}.dp.open{transform:translateX(0)}\n.dp .x{position:absolute;top:1rem;right:1rem;background:none;border:none;color:var(--mu);cursor:pointer;font-size:1.2rem}.dp .x:hover{color:#fff}\n.ds{margin-bottom:1.1rem}.ds h3{font-size:.66rem;text-transform:uppercase;letter-spacing:.1em;color:var(--mu);margin-bottom:.4rem;font-weight:600}\n.df{display:flex;justify-content:space-between;padding:.22rem 0;border-bottom:1px solid #1a1a1a}.df .l{color:var(--mu);font-size:.78rem}.df .v{color:#fff;font-size:.78rem;font-family:var(--fm);text-align:right;max-width:280px;word-break:break-all}\n.sm{display:flex;align-items:center;gap:.4rem;margin:.6rem 0}.sn{padding:.22rem .55rem;border-radius:5px;font-size:.7rem;font-weight:600;border:1px solid var(--bd);color:var(--mu);background:var(--p2)}\n.sn.cur{border-color:var(--gn);color:var(--gn);background:#22c55e12}.sn.cur-d{border-color:var(--pu);color:#a78bfa;background:#5E40BE12}.sn.cur-x{border-color:#6b7280;color:#9ca3af;background:#6b728012}\n.sa{color:var(--dm);font-size:.76rem}\n.mcc{background:var(--p2);border:1px solid var(--bd);border-radius:7px;padding:.55rem;margin-bottom:.4rem}\n.mcc h4{font-size:.8rem;color:var(--tl);font-weight:600;margin-bottom:.3rem}\n.mt{display:inline-block;padding:1px 5px;border-radius:3px;font-size:.66rem;font-family:var(--fm);background:#111;border:1px solid var(--bd);color:var(--mu);margin:1px}\n.spk{display:flex;align-items:end;gap:1px;height:28px;margin:.35rem 0}.spk .b{width:4px;border-radius:1px;min-height:2px}.b.up{background:var(--gn)}.b.dn{background:var(--am)}.b.z{background:var(--dm)}\n.ai{padding:.3rem 0;border-bottom:1px solid #1a1a1a;font-size:.76rem}.ai .tm{color:var(--dm);font-size:.68rem;font-family:var(--fm)}.ai .ac{color:var(--tll)}\n.acts{display:flex;gap:.4rem;margin-top:.8rem;flex-wrap:wrap}\n.btn{padding:.35rem .8rem;border-radius:5px;font-size:.76rem;cursor:pointer;font-family:var(--ft);font-weight:500;transition:all .2s;border:1px solid var(--bd)}\n.btn-p{background:var(--ac);border-color:var(--ac);color:#fff}.btn-p:hover{background:var(--ah)}\n.btn-s{background:var(--p2);color:var(--tx)}.btn-s:hover{border-color:#444}\n.btn-d{background:#7f1d1d;border-color:#991b1b;color:#fca5a5}.btn-d:hover{background:#991b1b}\n.btn-g{background:#14532d;border-color:#166534;color:#86efac}.btn-g:hover{background:#166534}\n/* Policy card */\n.pol{background:var(--p2);border:1px solid var(--bd);border-radius:5px;padding:.4rem .6rem;margin-bottom:.35rem;display:flex;align-items:center;justify-content:space-between}\n.pol .pn{font-size:.78rem;font-weight:500}.pol .pt{font-size:.65rem;color:var(--mu);font-family:var(--fm)}\n/* Identity chain */\n.ic{display:flex;align-items:center;gap:.3rem;flex-wrap:wrap;margin:.4rem 0}\n.ic .node{padding:.2rem .5rem;border-radius:4px;font-size:.72rem;font-weight:500;border:1px solid var(--bd);background:var(--p2)}\n.ic .node.usr{border-color:var(--tl);color:var(--tll)}.ic .node.agt{border-color:var(--pu);color:#c4b5fd}.ic .arr{color:var(--dm);font-size:.7rem}\n/* Search */\n.sh{text-align:center;padding:1.5rem 0}.sh h2{font-size:1.3rem;margin-bottom:.35rem}.sh p{color:var(--mu);margin-bottom:1rem}\n.siw{max-width:560px;margin:0 auto}.siw input{width:100%;background:var(--p);border:1px solid var(--bd);color:var(--tx);padding:.65rem .85rem;border-radius:7px;font-size:.9rem;font-family:var(--ft)}.siw input:focus{outline:none;border-color:var(--ac)}\n.ssg{display:flex;gap:.35rem;justify-content:center;margin-top:.6rem;flex-wrap:wrap}\n.ssg span{padding:.22rem .55rem;border-radius:14px;font-size:.7rem;cursor:pointer;background:var(--p2);border:1px solid var(--bd);color:var(--mu);transition:all .2s}.ssg span:hover{border-color:var(--ac);color:var(--tx)}\n.sr{margin-top:1.2rem}\n.src{background:var(--p);border:1px solid var(--bd);border-radius:9px;padding:.85rem 1rem;margin-bottom:.55rem;cursor:pointer;transition:all .15s}.src:hover{border-color:#444}\n.src .rh{display:flex;justify-content:space-between;align-items:center}.src .rn{font-weight:600;color:#fff;font-size:.88rem}.src .rd{color:var(--mu);font-size:.78rem;margin:.2rem 0}\n.rel{display:inline-block;padding:1px 7px;border-radius:3px;font-size:.66rem;font-weight:600;font-family:var(--fm)}\n.rel-h{background:#22c55e20;color:#22c55e}.rel-m{background:#f59e0b20;color:#f59e0b}\n/* Register */\n.rf{background:var(--p);border:1px solid var(--bd);border-radius:9px;padding:1.2rem;margin-top:.8rem}\n.fg{margin-bottom:.75rem}.fg label{display:block;font-size:.7rem;text-transform:uppercase;letter-spacing:.08em;color:var(--mu);margin-bottom:.25rem;font-weight:600}\n.fg input,.fg select{width:100%;background:var(--p2);border:1px solid var(--bd);color:var(--tx);padding:.45rem .65rem;border-radius:5px;font-size:.82rem;font-family:var(--ft)}.fg input:focus{outline:none;border-color:var(--ac)}\n/* Catalog */\n.cc{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:.8rem;margin-top:.8rem}\n.ccard{background:var(--p);border:1px solid var(--bd);border-radius:9px;padding:1rem;transition:border-color .15s;cursor:pointer}.ccard:hover{border-color:#444}\n.ccard h3{font-size:.92rem;margin-bottom:.3rem}.ccard p{font-size:.78rem;color:var(--mu);margin-bottom:.5rem}\n.ccard .meta{font-size:.7rem;color:var(--dm);font-family:var(--fm)}\n.ccard .dbtn{margin-top:.6rem;display:inline-block;padding:.3rem .7rem;border-radius:5px;font-size:.72rem;background:var(--pu);color:#fff;border:none;cursor:pointer;font-family:var(--ft);font-weight:500}.ccard .dbtn:hover{background:#7c5ee6}\n/* Topology */\n.topo{background:var(--p);border:1px solid var(--bd);border-radius:9px;padding:1.2rem;margin-top:.8rem}\n.topo svg{width:100%;height:420px}\n.topo text{font-family:var(--ft);font-size:11px;fill:var(--tx)}\n.topo .edge{stroke:var(--bd);stroke-width:1.5;fill:none;marker-end:url(#arrowhead)}\n.topo .node-r{fill:var(--p2);stroke:var(--bd);stroke-width:1;rx:6}\n/* Tier labels */\n.tier{display:inline-flex;align-items:center;gap:.25rem;padding:.16rem .45rem;border-radius:3px;font-size:.58rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;margin-bottom:.4rem}\n.t1{background:#22c55e10;color:var(--gn);border:1px solid #22c55e30}.t2{background:#f59e0b10;color:var(--am);border:1px solid #f59e0b30}.t3{background:#6b728010;color:#9ca3af;border:1px solid #6b728030}\n.toast{position:fixed;bottom:72px;right:2rem;background:var(--gn);color:#000;padding:.5rem 1rem;border-radius:7px;font-weight:600;font-size:.8rem;transform:translateY(90px);opacity:0;transition:all .25s;z-index:200}.toast.show{transform:translateY(0);opacity:1}\n.ebar{position:fixed;bottom:0;left:0;right:0;background:var(--p);border-top:1px solid var(--bd);padding:.6rem 1.5rem;display:flex;align-items:center;justify-content:space-between;z-index:50}\n.ebar .et{font-size:.78rem;color:var(--mu);flex:1;margin-right:.8rem;font-family:var(--fm);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n.ebar button{background:var(--ac);border:none;color:#fff;padding:.4rem 1rem;border-radius:5px;cursor:pointer;font-family:var(--ft);font-weight:600;font-size:.78rem}.ebar button:hover{background:var(--ah)}\n.alert-row{background:#1a0505!important;border-left:3px solid var(--ac)!important}\n.warn-row{background:#1a1005!important;border-left:3px solid var(--am)!important}\n.cve-row{border-left:3px solid var(--am)!important}\n/* Toggle */\n.tgl{display:flex;align-items:center;gap:.4rem;font-size:.72rem;color:var(--mu);cursor:pointer;user-select:none}\n.tgl input{accent-color:var(--ac)}\n\n\n\n\n\n\n\n  \nAgent Registry v2\n  \n\n    \n      All clusters (4)\n      ocp1 / workload\n      ocp2 / gpu\n      aws-eks / prod\n      edge-fleet / retail\n    \n     Annotations\n    \n21 agents across 4 clusters\n  \n\n\n\n\n\n  \n\n    \nProblems solved by this mock&amp;#9660;\n  \n  \n\n    \n\nTier 1: Core (highest priority)\n      P1 Duplicate agents across teams\n      P2 What's running where?\n      P3 Is it safe? (sandbox + health)\n      P4 Shadow IT for agents\n      P5 Where do I route?\n    \n    \n\nTier 2: Governance (new in v2)\n      P6 Vulnerability blast radius\n      P7 Who gets fired? (accountability)\n      P8 What's allowed? (policy)\n      P9 Cross-cluster blind spots\n      P10 Token burn / cost\n    \n    \n\nTier 3: Scale (partially addressed)\n      P11 Catalog vs Registry confusion\n      P12 Agent sprawl (topology)\n      P13 CMDB integration\n      P14 API-first (programmatic)\n    \n  \n\n\n\n\n  Registry21\n  Catalog6\n  Search\n  Topology\n  Register\n\n\n\n\n\n\nTier 1 + Tier 2: Runtime inventory with governance P2: What's running where? + P9: Cross-cluster2\n\n\n\n\n  \n  All statusHealthyStaleShadow\n  All sandboxSandboxedUnsandboxed\n  All CVE severityCriticalHighMediumNone\n  All ownersAI TeamPlatform TeamDevOpsRetail EngUnknown\n\n\n\n\n\n  Agent P2: What's running where?2\n  Cluster P9: Cross-cluster visibility9\n  Status\n  Sandbox P3: Is it safe?3\n  CVEs P6: Vulnerability blast radius6\n  Owner P7: Accountability7\n  Capabilities\n  Tokens/d P10: Token burn / cost10\n  Protocol\n  Last seen\n\n\n\n\n\n\n\n\n\nTier 3: Pre-deployment catalog P11: Catalog vs Registry separation11\n\nAgent Catalog\n\nCurated, deployable agent templates. Deploy to promote into the registry.\n\n\n\n\n\n\n\n\nTier 1: Capability discovery P1: Duplicate agents across teams1\n\n\n  \nFind agents by capability\n  \nSearch before you build. Discover what already exists across all clusters.\n  \n\n  \n\n    process invoices\n    review code\n    customer support\n    vulnerability scan\n    summarize\n    compliance\n  \n\n\n\n\n\n\n\n\n\nTier 3: Agent relationships P12: Agent sprawl / topology12\n\nAgent Topology\n\nDelegation and dependency relationships across agents.\n\n\n\n\n\n\n\n\nTier 2: Registration P4: Shadow IT detection4\n\nRegister an agent\n\nBring an existing agent under governance. Attach identity and policies at registration.\n\n\n  \n\n    \nAgent name\n    \nEndpoint URL\n    \nCluster / Namespaceocp1 / agentsocp2 / inferenceaws-eks / prodedge-fleet / retail\n    \nOwnerAI TeamPlatform TeamDevOpsRetail Eng\n    \nProtocolA2AMCPBoth\n    \nSandbox stateSandboxed (OpenShell)Unsandboxed\n    \nIdentity provider P7: Accountability chain7OIDC (Keycloak)mTLS (SPIFFE)Entra Agent IDAPI Key (legacy)\n    \nDelegation sponsor P7: Who gets fired?7\n  \n  \nDescription\n  \nCapabilities (comma separated)\n  \nPolicies to attach P8: What's allowed?8network-egress-denyfs-readonlyno-pii-exfilrate-limit-1000\n  \nRegister as Draft\n\n\n\n\n\n&amp;times;\n\n\n\n\nCopy summary\n\n\nconst A=[\n{id:1,n:\"Invoice Processing Agent\",v:\"2.1.0\",cl:\"ocp1\",clns:\"agents\",dp:\"healthy\",sb:\"sandboxed\",ow:\"AI Team\",ok:\"ai\",caps:[\"invoice-extraction\",\"pdf-parsing\",\"data-validation\"],pr:[\"a2a\",\"mcp\"],ls:\"2m ago\",ep:\"https://invoice-agent.apps.ocp1.example.com/a2a\",desc:\"Extracts structured data from invoice PDFs, validates against schema, writes to accounting system.\",auth:\"OIDC (Keycloak)\",fw:\"LangGraph\",model:\"Granite 3.3 8B\",cves:[],tokD:145000,costD:0.42,policies:[\"network-egress-deny\",\"fs-readonly\"],delegatedBy:\"sarah.chen\",delegationType:\"oidc-exchange\",connAgents:[{id:5,rel:\"validated-by\"}],mcps:[{n:\"PostgreSQL MCP\",tools:[\"query\",\"insert\",\"update\"],sc:[\"invoices_db:rw\"]},{n:\"DocExtract MCP\",tools:[\"extract_pdf\",\"ocr\"],sc:[\"documents:read\"]}],hp:[8,9,7,10,9,8,10,9,8,7,9,10,8,9,10,8,7,9,10,9,8,10,9,8,7,9,10,8,9,10],act:[{t:\"2h ago\",x:\"Health check passed\",a:\"system\"},{t:\"1d ago\",x:\"Version 2.0.3 \u2192 2.1.0\",a:\"sarah.chen\"}],lc:\"active\"},\n{id:2,n:\"Sales Research Agent\",v:\"2.0.1\",cl:\"ocp1\",clns:\"agents\",dp:\"healthy\",sb:\"sandboxed\",ow:\"AI Team\",ok:\"ai\",caps:[\"lead-research\",\"company-analysis\",\"market-intel\"],pr:[\"a2a\",\"mcp\"],ls:\"5m ago\",ep:\"https://sales-research.apps.ocp1.example.com/a2a\",desc:\"Researches prospects from web data and CRM history. Produces briefing documents.\",auth:\"OIDC (Keycloak)\",fw:\"CrewAI\",model:\"Llama 3.3 70B\",cves:[],tokD:312000,costD:1.85,policies:[\"network-egress-deny\",\"no-pii-exfil\"],delegatedBy:\"sarah.chen\",delegationType:\"oidc-exchange\",connAgents:[],mcps:[{n:\"Web Search MCP\",tools:[\"search\",\"fetch_page\"],sc:[\"web:read\"]},{n:\"CRM MCP\",tools:[\"get_contact\",\"get_company\"],sc:[\"crm:read\"]}],hp:[9,10,8,9,10,9,8,10,9,10,8,9,10,9,8,10,9,10,8,9,10,9,8,10,9,10,8,9,10,9],act:[{t:\"5m ago\",x:\"Task: lead briefing complete\",a:\"system\"}],lc:\"active\"},\n{id:3,n:\"Customer Support Agent\",v:\"1.3.0\",cl:\"ocp1\",clns:\"agents\",dp:\"healthy\",sb:\"sandboxed\",ow:\"AI Team\",ok:\"ai\",caps:[\"ticket-triage\",\"sentiment-analysis\",\"escalation\"],pr:[\"a2a\"],ls:\"1m ago\",ep:\"https://support-agent.apps.ocp1.example.com/a2a\",desc:\"L1 support triage with multi-turn conversation and automatic escalation.\",auth:\"OIDC (Keycloak)\",fw:\"ADK\",model:\"Granite 3.3 8B\",cves:[],tokD:890000,costD:2.58,policies:[\"no-pii-exfil\",\"rate-limit-1000\"],delegatedBy:\"mike.ross\",delegationType:\"oidc-exchange\",connAgents:[{id:5,rel:\"audited-by\"}],mcps:[{n:\"Jira MCP\",tools:[\"create_issue\",\"update_issue\",\"add_comment\"],sc:[\"jira:rw\"]},{n:\"Slack MCP\",tools:[\"post_message\",\"get_thread\"],sc:[\"slack:rw\"]}],hp:[10,10,9,10,10,9,10,10,9,10,10,9,10,10,9,10,10,9,10,10,9,10,10,9,10,10,9,10,10,10],act:[{t:\"1m ago\",x:\"Ticket resolved SUPPORT-4521\",a:\"system\"}],lc:\"active\"},\n{id:4,n:\"Data Pipeline Monitor\",v:\"1.0.2\",cl:\"ocp1\",clns:\"monitoring\",dp:\"healthy\",sb:\"sandboxed\",ow:\"DevOps\",ok:\"devops\",caps:[\"pipeline-monitoring\",\"anomaly-detection\",\"alerting\"],pr:[\"mcp\"],ls:\"30s ago\",ep:\"mcp://pipeline-monitor.agents.svc:8080\",desc:\"Monitors ETL pipelines for anomalies, routes alerts.\",auth:\"mTLS (SPIFFE)\",fw:\"Custom\",model:\"Granite 3.3 2B\",cves:[],tokD:45000,costD:0.09,policies:[\"network-egress-deny\",\"fs-readonly\"],delegatedBy:\"ops-service\",delegationType:\"spiffe-exchange\",connAgents:[],mcps:[{n:\"Kafka MCP\",tools:[\"list_topics\",\"get_consumer_lag\"],sc:[\"kafka:read\"]}],hp:[10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10],act:[{t:\"30s ago\",x:\"Health check passed\",a:\"system\"}],lc:\"active\"},\n{id:5,n:\"Compliance Checker\",v:\"3.1.0\",cl:\"ocp1\",clns:\"platform\",dp:\"healthy\",sb:\"sandboxed\",ow:\"Platform Team\",ok:\"plat\",caps:[\"policy-validation\",\"audit-logging\",\"compliance-reporting\"],pr:[\"a2a\",\"mcp\"],ls:\"3m ago\",ep:\"https://compliance.apps.ocp1.example.com/a2a\",desc:\"Validates agent configs against org policies. Generates compliance reports.\",auth:\"OIDC (Keycloak)\",fw:\"LangGraph\",model:\"Granite 3.3 8B\",cves:[],tokD:78000,costD:0.23,policies:[\"fs-readonly\"],delegatedBy:\"platform-admin\",delegationType:\"oidc-exchange\",connAgents:[{id:1,rel:\"validates\"},{id:3,rel:\"audits\"}],mcps:[{n:\"PostgreSQL MCP\",tools:[\"query\"],sc:[\"audit_db:read\"]}],hp:[9,10,10,9,10,10,9,10,10,9,10,10,9,10,10,9,10,10,9,10,10,9,10,10,9,10,10,9,10,10],act:[{t:\"3m ago\",x:\"Scan: 21 agents, 0 violations\",a:\"system\"}],lc:\"active\"},\n{id:6,n:\"Meeting Summarizer\",v:\"1.1.0\",cl:\"ocp2\",clns:\"ai-tools\",dp:\"healthy\",sb:\"sandboxed\",ow:\"AI Team\",ok:\"ai\",caps:[\"transcription\",\"summarization\",\"action-items\"],pr:[\"mcp\"],ls:\"20m ago\",ep:\"mcp://meeting-sum.ocp2.svc:8080\",desc:\"Processes recordings, generates summaries with action items. GPU cluster for whisper inference.\",auth:\"mTLS (SPIFFE)\",fw:\"Custom\",model:\"Granite 3.3 8B\",cves:[],tokD:220000,costD:0.64,policies:[\"no-pii-exfil\",\"fs-readonly\"],delegatedBy:\"sarah.chen\",delegationType:\"spiffe-exchange\",connAgents:[],mcps:[{n:\"S3 MCP\",tools:[\"get_object\",\"put_object\"],sc:[\"recordings:read\",\"summaries:write\"]}],hp:[8,9,10,8,9,10,8,9,10,8,9,10,8,9,10,8,9,10,8,9,10,8,9,10,8,9,10,8,9,10],act:[{t:\"20m ago\",x:\"Summarized Q3 Planning Sync\",a:\"system\"}],lc:\"active\"},\n{id:7,n:\"Doc QA Agent\",v:\"1.5.2\",cl:\"ocp2\",clns:\"ai-tools\",dp:\"healthy\",sb:\"sandboxed\",ow:\"AI Team\",ok:\"ai\",caps:[\"document-qa\",\"rag\",\"source-citation\"],pr:[\"a2a\",\"mcp\"],ls:\"8m ago\",ep:\"https://doc-qa.apps.ocp2.example.com/a2a\",desc:\"RAG question answering over internal docs with source citations. GPU for embedding.\",auth:\"OIDC (Keycloak)\",fw:\"LangGraph\",model:\"Llama 3.3 70B\",cves:[{id:\"CVE-2026-3821\",sev:\"medium\",comp:\"langchain 0.3.1\",fix:\"Upgrade to 0.3.2\"}],tokD:510000,costD:3.02,policies:[\"network-egress-deny\",\"no-pii-exfil\"],delegatedBy:\"sarah.chen\",delegationType:\"oidc-exchange\",connAgents:[],mcps:[{n:\"PostgreSQL MCP\",tools:[\"query\",\"vector_search\"],sc:[\"docs_db:read\"]},{n:\"S3 MCP\",tools:[\"get_object\"],sc:[\"documents:read\"]}],hp:[10,9,10,10,9,10,10,9,10,10,9,10,10,9,10,10,9,10,10,9,10,10,9,10,10,9,10,10,9,10],act:[{t:\"8m ago\",x:\"Query: 'How do I configure mTLS?'\",a:\"system\"}],lc:\"active\"},\n{id:8,n:\"Deployment Validator\",v:\"0.9.1\",cl:\"ocp1\",clns:\"platform\",dp:\"healthy\",sb:\"unsandboxed\",ow:\"Platform Team\",ok:\"plat\",caps:[\"manifest-validation\",\"image-scanning\",\"resource-checks\"],pr:[\"mcp\"],ls:\"1m ago\",ep:\"mcp://deploy-val.platform.svc:8080\",desc:\"Pre-deploy validation. Needs cluster-wide read. Unsandboxed: requires broad K8s API access.\",auth:\"mTLS (SPIFFE)\",fw:\"Custom\",model:\"Granite Code 3B\",cves:[{id:\"CVE-2026-4102\",sev:\"high\",comp:\"go-yaml v3.0.0\",fix:\"Upgrade to v3.0.1\"}],tokD:62000,costD:0.12,policies:[\"rate-limit-1000\"],delegatedBy:\"platform-admin\",delegationType:\"spiffe-exchange\",connAgents:[{id:5,rel:\"validated-by\"}],mcps:[{n:\"GitHub MCP\",tools:[\"get_file\",\"get_pr\",\"get_diff\"],sc:[\"repos:read\"]}],hp:[10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10],act:[{t:\"1m ago\",x:\"Validated: orders-service v2.3.1\",a:\"system\"}],lc:\"active\"},\n{id:9,n:\"Code Review Agent\",v:\"1.2.0\",cl:\"ocp1\",clns:\"agents\",dp:\"stale\",sb:\"sandboxed\",ow:\"AI Team\",ok:\"ai\",caps:[\"code-review\",\"security-analysis\",\"style-checking\"],pr:[\"a2a\",\"mcp\"],ls:\"14d ago\",ep:\"https://code-review.apps.ocp1.example.com/a2a\",desc:\"Automated PR review. Not responding since 14 days.\",auth:\"OIDC (Keycloak)\",fw:\"LangGraph\",model:\"Granite Code 3B\",cves:[{id:\"CVE-2026-3821\",sev:\"medium\",comp:\"langchain 0.3.1\",fix:\"Upgrade to 0.3.2\"},{id:\"CVE-2026-2910\",sev:\"high\",comp:\"base-image ubi9\",fix:\"Rebuild\"}],tokD:0,costD:0,policies:[\"network-egress-deny\",\"fs-readonly\"],delegatedBy:\"sarah.chen\",delegationType:\"oidc-exchange\",connAgents:[],mcps:[{n:\"GitHub MCP\",tools:[\"get_pr\",\"get_diff\",\"post_review\"],sc:[\"repos:rw\"]}],hp:[10,9,10,8,9,7,5,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],act:[{t:\"14d ago\",x:\"Last health check passed\",a:\"system\"}],lc:\"active\"},\n{id:10,n:\"Legacy Report Generator\",v:\"0.5.0\",cl:\"ocp1\",clns:\"reporting\",dp:\"stale\",sb:\"unsandboxed\",ow:\"DevOps\",ok:\"devops\",caps:[\"report-generation\",\"data-aggregation\"],pr:[\"mcp\"],ls:\"45d ago\",ep:\"mcp://legacy-reports.agents.svc:8080\",desc:\"Deprecated. Replaced by Data Pipeline Monitor.\",auth:\"API Key\",fw:\"Custom\",model:\"GPT-4o (external)\",cves:[{id:\"CVE-2026-1001\",sev:\"critical\",comp:\"requests 2.28\",fix:\"Upgrade to 2.32\"}],tokD:0,costD:0,policies:[],delegatedBy:\"unknown\",delegationType:\"api-key\",connAgents:[],mcps:[{n:\"PostgreSQL MCP\",tools:[\"query\"],sc:[\"reports_db:read\"]}],hp:[5,4,3,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],act:[{t:\"45d ago\",x:\"Deprecated by admin\",a:\"admin\"}],lc:\"deprecated\"},\n{id:11,n:\"HR Onboarding Bot\",v:\"0.1.0\",cl:\"ocp1\",clns:\"hr\",dp:\"stale\",sb:\"sandboxed\",ow:\"AI Team\",ok:\"ai\",caps:[\"onboarding-workflow\",\"document-collection\"],pr:[\"a2a\"],ls:\"never\",ep:\"https://hr-onboard.staging.example.com/a2a\",desc:\"Onboarding checklist for new hires. In review, not deployed.\",auth:\"OIDC (Keycloak)\",fw:\"ADK\",model:\"Granite 3.3 8B\",cves:[],tokD:0,costD:0,policies:[\"no-pii-exfil\",\"fs-readonly\"],delegatedBy:\"priya.patel\",delegationType:\"oidc-exchange\",connAgents:[],mcps:[{n:\"Jira MCP\",tools:[\"create_issue\",\"assign_issue\"],sc:[\"hr:write\"]}],hp:[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],act:[{t:\"3d ago\",x:\"Created in Draft\",a:\"priya.patel\"}],lc:\"draft\"},\n{id:12,n:\"Unknown Slack Agent\",v:\"?\",cl:\"ocp1\",clns:\"marketing\",dp:\"shadow\",sb:\"unsandboxed\",ow:\"Unknown\",ok:\"unk\",caps:[\"messaging\"],pr:[\"mcp\"],ls:\"10m ago\",ep:\"mcp://10.244.3.17:9090\",desc:\"Discovered by runtime scan. No registration. No sandbox. No identity sponsor.\",auth:\"Unknown\",fw:\"Unknown\",model:\"Unknown\",cves:[],tokD:0,costD:0,policies:[],delegatedBy:\"none\",delegationType:\"none\",connAgents:[],mcps:[{n:\"Slack MCP (unverified)\",tools:[\"post_message\",\"search_messages\"],sc:[\"unknown\"]}],hp:[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,7,8,8,9,9],act:[{t:\"10m ago\",x:\"Discovered by runtime scan\",a:\"system\"},{t:\"10m ago\",x:\"WARNING: No sandbox, no registration, no identity\",a:\"system\"}],lc:\"none\"},\n{id:13,n:\"Security Scanner\",v:\"?\",cl:\"ocp1\",clns:\"security-tools\",dp:\"shadow\",sb:\"unsandboxed\",ow:\"Unknown\",ok:\"unk\",caps:[\"vulnerability-scanning\",\"port-scanning\"],pr:[\"a2a\"],ls:\"3m ago\",ep:\"https://10.244.5.22:8443/a2a\",desc:\"Discovered by runtime scan. No registration. Elevated network permissions. No sandbox. No identity.\",auth:\"Unknown\",fw:\"Unknown\",model:\"Unknown\",cves:[],tokD:0,costD:0,policies:[],delegatedBy:\"none\",delegationType:\"none\",connAgents:[],mcps:[],hp:[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,9,10,10],act:[{t:\"3m ago\",x:\"Discovered by runtime scan\",a:\"system\"},{t:\"3m ago\",x:\"ALERT: Elevated permissions + no sandbox + no identity\",a:\"system\"}],lc:\"none\"},\n{id:14,n:\"Fraud Detection Agent\",v:\"3.2.0\",cl:\"aws\",clns:\"fsi-prod\",dp:\"healthy\",sb:\"sandboxed\",ow:\"AI Team\",ok:\"ai\",caps:[\"fraud-detection\",\"transaction-analysis\",\"risk-scoring\"],pr:[\"a2a\"],ls:\"15s ago\",ep:\"https://fraud-agent.eks.example.com/a2a\",desc:\"Real-time transaction scoring with multi-model ensemble. FSI-grade compliance.\",auth:\"OIDC (Cognito)\",fw:\"LangGraph\",model:\"Granite 3.3 8B\",cves:[],tokD:2100000,costD:6.09,policies:[\"network-egress-deny\",\"no-pii-exfil\",\"audit-all-calls\",\"rate-limit-5000\"],delegatedBy:\"compliance-officer\",delegationType:\"oidc-exchange\",connAgents:[{id:5,rel:\"audited-by\"}],mcps:[{n:\"PostgreSQL MCP\",tools:[\"query\"],sc:[\"transactions_db:read\"]},{n:\"Risk Engine MCP\",tools:[\"score\",\"explain\"],sc:[\"risk:read\"]}],hp:[10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10],act:[{t:\"15s ago\",x:\"Scored 12,400 transactions\",a:\"system\"},{t:\"2h ago\",x:\"Model swap: Granite 3.2 \u2192 3.3\",a:\"ops-pipeline\"}],lc:\"active\"},\n{id:15,n:\"KYC Document Agent\",v:\"1.0.0\",cl:\"aws\",clns:\"fsi-prod\",dp:\"healthy\",sb:\"sandboxed\",ow:\"AI Team\",ok:\"ai\",caps:[\"kyc-extraction\",\"identity-verification\",\"document-validation\"],pr:[\"a2a\",\"mcp\"],ls:\"2m ago\",ep:\"https://kyc-agent.eks.example.com/a2a\",desc:\"Extracts and validates KYC documents. PII handling with redaction.\",auth:\"OIDC (Cognito)\",fw:\"ADK\",model:\"Granite 3.3 8B\",cves:[{id:\"CVE-2026-5501\",sev:\"high\",comp:\"pdf-lib 2.1\",fix:\"Upgrade to 2.3\"}],tokD:680000,costD:1.97,policies:[\"no-pii-exfil\",\"audit-all-calls\",\"fs-readonly\",\"network-egress-deny\"],delegatedBy:\"compliance-officer\",delegationType:\"oidc-exchange\",connAgents:[{id:14,rel:\"feeds-into\"}],mcps:[{n:\"S3 MCP\",tools:[\"get_object\",\"put_object\"],sc:[\"kyc-docs:rw\"]},{n:\"ID Verify MCP\",tools:[\"verify_identity\",\"check_sanctions\"],sc:[\"identity:read\"]}],hp:[10,10,9,10,10,10,9,10,10,10,10,9,10,10,10,9,10,10,10,10,9,10,10,10,9,10,10,10,10,9],act:[{t:\"2m ago\",x:\"Verified 340 documents\",a:\"system\"}],lc:\"active\"},\n{id:16,n:\"Inventory Tracker\",v:\"1.1.0\",cl:\"edge\",clns:\"store-42\",dp:\"healthy\",sb:\"sandboxed\",ow:\"Retail Eng\",ok:\"retail\",caps:[\"inventory-tracking\",\"stock-alerts\",\"reorder-automation\"],pr:[\"mcp\"],ls:\"45s ago\",ep:\"mcp://inventory.edge-42.local:8080\",desc:\"Edge-deployed inventory agent. Runs on store hardware with local inference.\",auth:\"mTLS (SPIFFE)\",fw:\"Custom\",model:\"Granite 3.3 2B\",cves:[],tokD:32000,costD:0.06,policies:[\"network-egress-deny\",\"fs-readonly\"],delegatedBy:\"store-ops\",delegationType:\"spiffe-exchange\",connAgents:[{id:17,rel:\"reports-to\"}],mcps:[{n:\"POS MCP\",tools:[\"get_inventory\",\"update_stock\"],sc:[\"pos:rw\"]}],hp:[10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10],act:[{t:\"45s ago\",x:\"Stock alert: SKU-4821 below threshold\",a:\"system\"}],lc:\"active\"},\n{id:17,n:\"Supply Chain Coordinator\",v:\"2.0.0\",cl:\"aws\",clns:\"logistics\",dp:\"healthy\",sb:\"sandboxed\",ow:\"Retail Eng\",ok:\"retail\",caps:[\"supply-chain\",\"logistics\",\"demand-forecasting\"],pr:[\"a2a\",\"mcp\"],ls:\"5m ago\",ep:\"https://supply-chain.eks.example.com/a2a\",desc:\"Aggregates inventory signals from edge fleet, coordinates reorders.\",auth:\"OIDC (Cognito)\",fw:\"LangGraph\",model:\"Llama 3.3 70B\",cves:[],tokD:420000,costD:2.49,policies:[\"network-egress-deny\",\"rate-limit-1000\"],delegatedBy:\"logistics-lead\",delegationType:\"oidc-exchange\",connAgents:[{id:16,rel:\"aggregates\"}],mcps:[{n:\"ERP MCP\",tools:[\"create_po\",\"get_inventory_report\"],sc:[\"erp:rw\"]}],hp:[10,9,10,10,10,9,10,10,10,9,10,10,10,9,10,10,10,9,10,10,10,9,10,10,10,9,10,10,10,9],act:[{t:\"5m ago\",x:\"Reorder: 3 POs created\",a:\"system\"}],lc:\"active\"},\n{id:18,n:\"Price Optimizer\",v:\"0.8.0\",cl:\"edge\",clns:\"store-42\",dp:\"stale\",sb:\"sandboxed\",ow:\"Retail Eng\",ok:\"retail\",caps:[\"price-optimization\",\"competitor-analysis\"],pr:[\"mcp\"],ls:\"7d ago\",ep:\"mcp://price-opt.edge-42.local:8080\",desc:\"Dynamic pricing based on demand and competitor data. Offline since firmware update.\",auth:\"mTLS (SPIFFE)\",fw:\"Custom\",model:\"Granite 3.3 2B\",cves:[],tokD:0,costD:0,policies:[\"fs-readonly\"],delegatedBy:\"store-ops\",delegationType:\"spiffe-exchange\",connAgents:[],mcps:[],hp:[8,9,8,9,8,9,8,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],act:[{t:\"7d ago\",x:\"Lost connectivity after firmware update\",a:\"system\"}],lc:\"active\"},\n{id:19,n:\"Rogue Trading Bot\",v:\"?\",cl:\"aws\",clns:\"default\",dp:\"shadow\",sb:\"unsandboxed\",ow:\"Unknown\",ok:\"unk\",caps:[\"trading\",\"market-data\"],pr:[\"a2a\"],ls:\"1m ago\",ep:\"https://10.0.5.99:9443/a2a\",desc:\"Discovered by runtime scan in AWS default namespace. Active trading capabilities. No registration, no sandbox, no identity. CRITICAL.\",auth:\"Unknown\",fw:\"Unknown\",model:\"Unknown\",cves:[],tokD:0,costD:0,policies:[],delegatedBy:\"none\",delegationType:\"none\",connAgents:[],mcps:[],hp:[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,10],act:[{t:\"1m ago\",x:\"CRITICAL: Trading capabilities + no identity + no sandbox\",a:\"system\"},{t:\"1m ago\",x:\"Discovered by runtime scan\",a:\"system\"}],lc:\"none\"},\n{id:20,n:\"Email Drafter\",v:\"1.0.0\",cl:\"ocp2\",clns:\"ai-tools\",dp:\"healthy\",sb:\"sandboxed\",ow:\"AI Team\",ok:\"ai\",caps:[\"email-drafting\",\"tone-analysis\",\"scheduling\"],pr:[\"mcp\"],ls:\"12m ago\",ep:\"mcp://email-drafter.ocp2.svc:8080\",desc:\"Drafts contextual emails based on meeting summaries and CRM data.\",auth:\"OIDC (Keycloak)\",fw:\"Custom\",model:\"Granite 3.3 8B\",cves:[],tokD:95000,costD:0.28,policies:[\"no-pii-exfil\"],delegatedBy:\"sarah.chen\",delegationType:\"oidc-exchange\",connAgents:[{id:6,rel:\"consumes-from\"}],mcps:[{n:\"Gmail MCP\",tools:[\"draft_email\",\"get_thread\"],sc:[\"gmail:rw\"]}],hp:[9,10,9,10,9,10,9,10,9,10,9,10,9,10,9,10,9,10,9,10,9,10,9,10,9,10,9,10,9,10],act:[{t:\"12m ago\",x:\"Drafted 4 follow-up emails\",a:\"system\"}],lc:\"active\"},\n{id:21,n:\"Checkout Assistant\",v:\"1.2.0\",cl:\"edge\",clns:\"store-42\",dp:\"healthy\",sb:\"sandboxed\",ow:\"Retail Eng\",ok:\"retail\",caps:[\"customer-assist\",\"product-lookup\",\"returns\"],pr:[\"a2a\"],ls:\"30s ago\",ep:\"https://checkout.edge-42.local/a2a\",desc:\"In-store customer assist kiosk. Runs on edge with local model.\",auth:\"mTLS (SPIFFE)\",fw:\"ADK\",model:\"Granite 3.3 2B\",cves:[],tokD:18000,costD:0.04,policies:[\"network-egress-deny\",\"no-pii-exfil\",\"fs-readonly\"],delegatedBy:\"store-ops\",delegationType:\"spiffe-exchange\",connAgents:[{id:16,rel:\"queries\"}],mcps:[{n:\"POS MCP\",tools:[\"product_lookup\",\"check_return_policy\"],sc:[\"pos:read\"]}],hp:[10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10],act:[{t:\"30s ago\",x:\"Assisted: return policy lookup\",a:\"system\"}],lc:\"active\"}\n];\n\nconst CAT=[\n{n:\"Invoice Processing Starter\",desc:\"Extract structured data from invoice PDFs. Pre-configured with DocExtract MCP.\",fw:\"LangGraph\",model:\"Granite 3.3 8B\",pr:[\"a2a\",\"mcp\"],caps:[\"invoice-extraction\",\"pdf-parsing\"],ver:\"2.1.0\"},\n{n:\"RAG Q&amp;amp;A Template\",desc:\"Question answering over documents with source citations and vector search.\",fw:\"LangGraph\",model:\"Llama 3.3 70B\",pr:[\"a2a\",\"mcp\"],caps:[\"document-qa\",\"rag\",\"citation\"],ver:\"1.5.0\"},\n{n:\"Customer Support Starter\",desc:\"L1 ticket triage with sentiment analysis, escalation, and Jira integration.\",fw:\"ADK\",model:\"Granite 3.3 8B\",pr:[\"a2a\"],caps:[\"ticket-triage\",\"escalation\"],ver:\"1.3.0\"},\n{n:\"Security Scanner Agent\",desc:\"Automated vulnerability scanning and CVE triage with SBOM generation.\",fw:\"Custom\",model:\"Granite Code 3B\",pr:[\"mcp\"],caps:[\"vulnerability-scanning\",\"sbom\"],ver:\"0.9.0\"},\n{n:\"Data Pipeline Monitor\",desc:\"ETL pipeline anomaly detection with Kafka and PostgreSQL integration.\",fw:\"Custom\",model:\"Granite 3.3 2B\",pr:[\"mcp\"],caps:[\"anomaly-detection\",\"alerting\"],ver:\"1.0.0\"},\n{n:\"Compliance Auditor\",desc:\"Validates agent configurations against org policies. Pre-wired to audit DB.\",fw:\"LangGraph\",model:\"Granite 3.3 8B\",pr:[\"a2a\",\"mcp\"],caps:[\"policy-validation\",\"compliance\"],ver:\"3.0.0\"}\n];\n\nconst CLU={all:\"All clusters\",ocp1:\"ocp1 / workload\",ocp2:\"ocp2 / gpu\",aws:\"aws-eks / prod\",edge:\"edge-fleet / retail\"};\n\nfunction go(id,el){document.querySelectorAll('.vw').forEach(v=&amp;gt;v.classList.remove('on'));document.querySelectorAll('.nv button').forEach(b=&amp;gt;b.classList.remove('on'));document.getElementById('v-'+id).classList.add('on');el.classList.add('on');cd()}\n\nfunction getFiltered(){const cv=document.getElementById('clsel').value;return cv==='all'?A:A.filter(a=&amp;gt;a.cl===cv)}\nfunction switchCluster(){filt();updateStats();updateBar()}\n\nfunction lbl(s){const m={active:'pl-a',draft:'pl-d',deprecated:'pl-x',none:'pl-x'};return`${s==='none'?'unreg':s}`}\nfunction dbl(s){return`${s}`}\nfunction sbl(s){return s==='sandboxed'?'sandboxed':'unsandboxed'}\nfunction cvePill(cves){if(!cves||!cves.length)return'0';const mx=cves.reduce((a,c)=&amp;gt;({critical:4,high:3,medium:2,low:1}[c.sev]||0)&amp;gt;a.v?{v:({critical:4,high:3,medium:2,low:1}[c.sev]||0),s:c.sev}:a,{v:0,s:'none'});return`${cves.length} (${mx.s})`}\nfunction tokFmt(t){if(!t)return'-';if(t&amp;gt;=1e6)return`${(t/1e6).toFixed(1)}M`;return`${(t/1e3).toFixed(0)}k`}\n\nfunction ren(list){document.getElementById('tb').innerHTML=list.map(a=&amp;gt;{\n  const rc=a.dp==='shadow'?' alert-row':a.dp==='stale'&amp;amp;&amp;amp;a.lc==='active'?' warn-row':a.cves&amp;amp;&amp;amp;a.cves.some(c=&amp;gt;c.sev==='critical')?' cve-row':'';\n  return`\n${a.n}${a.v!=='?'?a.v:'unknown'} &amp;middot; ${a.clns}\n${a.cl}\n${dbl(a.dp)} ${a.lc!=='none'?lbl(a.lc):''}\n${sbl(a.sb)}\n${cvePill(a.cves)}\n${a.ow}\n${a.caps.slice(0,2).map(c=&amp;gt;`${c}`).join('')}${a.caps.length&amp;gt;2?`+${a.caps.length-2}`:''}\n${tokFmt(a.tokD)}\n${a.pr.map(p=&amp;gt;`${p.toUpperCase()}`).join('')}\n${a.ls}`}).join('')}\n\nfunction updateStats(){const list=getFiltered();const h=list.filter(a=&amp;gt;a.dp==='healthy').length,s=list.filter(a=&amp;gt;a.dp==='stale').length,sh=list.filter(a=&amp;gt;a.dp==='shadow').length,sb=list.filter(a=&amp;gt;a.sb==='sandboxed').length,us=list.filter(a=&amp;gt;a.sb!=='sandboxed').length;\nconst cveCt=list.reduce((a,x)=&amp;gt;a+x.cves.length,0),critCve=list.reduce((a,x)=&amp;gt;a+x.cves.filter(c=&amp;gt;c.sev==='critical').length,0);\nconst tokTotal=list.reduce((a,x)=&amp;gt;a+x.tokD,0),costTotal=list.reduce((a,x)=&amp;gt;a+x.costD,0);\ndocument.getElementById('statsbar').innerHTML=`\n\n\n${list.length}\nTotal\n\n\n${h}\nHealthy\n\n\n${s}\nStale\n\n\n${sh}\nShadow\n\n\n${sb}\nSandboxed\n\n\n${us}\nUnsandboxed\n\n\n${cveCt}\nCVEs${critCve?' ('+critCve+' crit)':''}\n\n\n$${costTotal.toFixed(0)}\nCost/day`;\ndocument.getElementById('regct').textContent=list.length}\n\nfunction updateBar(){const list=getFiltered();const h=list.filter(a=&amp;gt;a.dp==='healthy').length,s=list.filter(a=&amp;gt;a.dp==='stale').length,sh=list.filter(a=&amp;gt;a.dp==='shadow').length,sb=list.filter(a=&amp;gt;a.sb==='sandboxed').length;\nconst cv=document.getElementById('clsel').value;\ndocument.getElementById('et').textContent=`${list.length} agents ${cv==='all'?'across 4 clusters':'on '+CLU[cv]} \u00b7 ${h} healthy, ${s} stale, ${sh} shadow \u00b7 ${sb} sandboxed`;\ndocument.getElementById('hdsync').textContent=`${list.length} agents ${cv==='all'?'across 4 clusters':'on '+CLU[cv]}`}\n\nfunction filt(){const q=document.getElementById('q').value.toLowerCase(),fd=document.getElementById('fd').value,fs=document.getElementById('fs').value,fc=document.getElementById('fc').value,fo=document.getElementById('fo').value;\nconst base=getFiltered();\nren(base.filter(a=&amp;gt;{if(q&amp;amp;&amp;amp;!a.n.toLowerCase().includes(q)&amp;amp;&amp;amp;!a.caps.some(c=&amp;gt;c.includes(q))&amp;amp;&amp;amp;!a.desc.toLowerCase().includes(q)&amp;amp;&amp;amp;!a.cves.some(c=&amp;gt;c.id.toLowerCase().includes(q)))return false;if(fd!=='a'&amp;amp;&amp;amp;a.dp!==fd)return false;if(fs!=='a'&amp;amp;&amp;amp;a.sb!==fs)return false;if(fo!=='a'&amp;amp;&amp;amp;a.ok!==fo)return false;if(fc!=='a'){if(fc==='none'&amp;amp;&amp;amp;a.cves.length&amp;gt;0)return false;if(fc!=='none'&amp;amp;&amp;amp;!a.cves.some(c=&amp;gt;c.sev===fc))return false}return true}))}\n\nfunction od(id){const a=A.find(x=&amp;gt;x.id===id);if(!a)return;\nconst sn=['draft','active','deprecated'].map(s=&amp;gt;{let c='sn';if(a.lc===s)c+=s==='draft'?' cur-d':s==='deprecated'?' cur-x':' cur';return`${s}`}).join('&amp;#8594;');\ndocument.getElementById('dc').innerHTML=`\n\n\n${a.n}\n\n${dbl(a.dp)} ${sbl(a.sb)} ${a.lc!=='none'?lbl(a.lc):''}\n\n\nDetails\n\n${a.desc}\n\nEndpoint${a.ep}\n\nCluster / NS${a.cl} / ${a.clns}\n\nOwner${a.ow}\n\nProtocol${a.pr.map(p=&amp;gt;`${p.toUpperCase()}`).join(' ')}\n\nAuth${a.auth}\n\nFramework${a.fw}\n\nModel${a.model}\n\nVersion${a.v}\n\n${a.lc!=='none'?`\n\nLifecycle\n${sn}`:''}\n\n\nIdentity &amp;amp; accountability P7: Who gets fired?7\n\n\n  ${a.delegatedBy==='none'?'No sponsor':'&amp;#128100; '+a.delegatedBy}\n  &amp;#8594; delegates to &amp;#8594;\n  &amp;#129302; ${a.n}\n\n\nDelegation type${a.delegationType}\n\nToken scope${a.delegationType==='none'?'NONE':'scoped to MCP tools'}\n${a.delegatedBy==='none'?'\nNo identity sponsor. Cannot trace accountability.':''}\n\n\n\nPolicies (${a.policies.length}) P8: What\\'s allowed?8\n${a.policies.length===0?'\nNo policies attached':a.policies.map(p=&amp;gt;`\n${p}enforced`).join('')}\n\n\n\nCVEs (${a.cves.length}) P6: Vulnerability blast radius6\n${a.cves.length===0?'\nNo known vulnerabilities':a.cves.map(c=&amp;gt;`\n\n${c.id}${c.comp}${c.fix}`).join('')}\n\n\n\nToken usage P10: Token burn / cost10\n\nTokens/day${a.tokD?a.tokD.toLocaleString():'0'}\n\nCost/day$${a.costD.toFixed(2)}\n\nEst. monthly$${(a.costD*30).toFixed(0)}\n\n\n\nMCP servers (${a.mcps.length})\n${a.mcps.length===0?'\nNone':a.mcps.map(m=&amp;gt;`\n\n${m.n}\n${m.tools.map(t=&amp;gt;`${t}`).join('')}\nScopes: ${m.sc.join(', ')}`).join('')}\n\n${a.connAgents.length?`\n\nConnected agents P12: Agent topology12${a.connAgents.map(c=&amp;gt;{const t=A.find(x=&amp;gt;x.id===c.id);return t?`\n${t.n}${c.rel}`:''}).join('')}`:''}\n\n\nHealth (30d)\n${a.hp.map(h=&amp;gt;`\n`).join('')}\n\n\nActivity${a.act.map(e=&amp;gt;`\n${e.t} &amp;middot; ${e.x}${e.a!=='system'?' @'+e.a+'':''}`).join('')}\n\n\n${a.dp==='shadow'?'RegisterFlag for reviewApply sandbox':''}\n${a.lc==='active'&amp;amp;&amp;amp;a.dp!=='shadow'?'TransferDeprecate':''}\n${a.lc==='draft'?'Approve':''}\n${a.sb==='unsandboxed'&amp;amp;&amp;amp;a.lc!=='none'?'Apply sandbox':''}\n${a.dp==='stale'&amp;amp;&amp;amp;a.lc==='active'?'Investigate':''}\n${a.cves.length?'Create CVE ticket':''}\n`;\ndocument.getElementById('dp').classList.add('open')}\nfunction cd(){document.getElementById('dp').classList.remove('open')}\n\nfunction sf(t){document.getElementById('sq').value=t;doS()}\nfunction doS(){const q=document.getElementById('sq').value.toLowerCase();if(!q){document.getElementById('sres').innerHTML='';return}\nlet r=A.filter(a=&amp;gt;a.lc==='active'&amp;amp;&amp;amp;[a.n,a.desc,...a.caps,...a.mcps.map(m=&amp;gt;m.n),...a.mcps.flatMap(m=&amp;gt;m.tools)].join(' ').toLowerCase().includes(q));\nr=r.map(a=&amp;gt;{const sc=(a.n.toLowerCase().includes(q)?3:0)+(a.caps.some(c=&amp;gt;c.includes(q))?2:0)+(a.dp==='healthy'?1:0);return{...a,sc}}).sort((x,y)=&amp;gt;y.sc-x.sc);\ndocument.getElementById('sres').innerHTML=r.length===0?'\nNo active agents match across any cluster. Consider registering one.':r.map(a=&amp;gt;`\n\n\n${a.n} ${a.cl} ${dbl(a.dp)} ${sbl(a.sb)} ${a.pr.map(p=&amp;gt;`${p.toUpperCase()}`).join('')}${a.sc&amp;gt;=4?'HIGH':'MED'}\n${a.desc}\n${a.caps.map(c=&amp;gt;`${c}`).join('')}${a.mcps.length?`\nMCP: ${a.mcps.map(m=&amp;gt;m.n).join(', ')}`:''}\n${a.ep} &amp;middot; ${a.cl}/${a.clns}`).join('')}\n\nfunction renderCatalog(){document.getElementById('catgrid').innerHTML=CAT.map(c=&amp;gt;`\n\n\n${c.n}\n${c.desc}\n\n${c.caps.map(x=&amp;gt;`${x}`).join('')}\n\n${c.fw} &amp;middot; ${c.model} &amp;middot; v${c.ver} &amp;middot; ${c.pr.map(p=&amp;gt;p.toUpperCase()).join(', ')}\nDeploy\n`).join('')}\n\nfunction renderTopology(){\nconst nodes=[\n{id:5,n:\"Compliance Checker\",x:400,y:40,cl:\"ocp1\"},\n{id:1,n:\"Invoice Agent\",x:150,y:140,cl:\"ocp1\"},\n{id:3,n:\"Support Agent\",x:400,y:140,cl:\"ocp1\"},\n{id:8,n:\"Deploy Validator\",x:650,y:140,cl:\"ocp1\"},\n{id:14,n:\"Fraud Detection\",x:150,y:260,cl:\"aws\"},\n{id:15,n:\"KYC Document\",x:400,y:260,cl:\"aws\"},\n{id:17,n:\"Supply Chain\",x:650,y:260,cl:\"aws\"},\n{id:16,n:\"Inventory Tracker\",x:400,y:370,cl:\"edge\"},\n{id:21,n:\"Checkout Assist\",x:650,y:370,cl:\"edge\"},\n{id:6,n:\"Meeting Summarizer\",x:150,y:370,cl:\"ocp2\"},\n{id:20,n:\"Email Drafter\",x:150,y:450,cl:\"ocp2\"}\n];\nconst edges=[\n{from:5,to:1,label:\"validates\"},{from:5,to:3,label:\"audits\"},{from:5,to:14,label:\"audits\"},\n{from:8,to:5,label:\"validated-by\"},{from:15,to:14,label:\"feeds-into\"},\n{from:16,to:17,label:\"reports-to\"},{from:21,to:16,label:\"queries\"},{from:20,to:6,label:\"consumes\"}\n];\nconst clColors={ocp1:'#37A3A3',ocp2:'#5E40BE',aws:'#f59e0b',edge:'#22c55e'};\nlet svg=`\n`;\nedges.forEach(e=&amp;gt;{const f=nodes.find(n=&amp;gt;n.id===e.from),t=nodes.find(n=&amp;gt;n.id===e.to);if(f&amp;amp;&amp;amp;t)svg+=`${e.label}`});\nnodes.forEach(n=&amp;gt;{svg+=`${n.n}${n.cl}`});\nsvg+=`Cluster: `;\nObject.entries(clColors).forEach(([k,v],i)=&amp;gt;{svg+=`${k}`});\nsvg+='';\ndocument.getElementById('topobox').innerHTML=svg}\n\nfunction toggleAnn(){document.querySelector('.app').classList.toggle('co-hide',!document.getElementById('annot').checked)}\n\nfunction toast(m){const t=document.getElementById('tt');t.textContent=m;t.classList.add('show');setTimeout(()=&amp;gt;t.classList.remove('show'),3200)}\nfunction ce(){const list=getFiltered();navigator.clipboard.writeText(`Agent Registry v2\\nCluster: ${document.getElementById('clsel').value}\\nTotal: ${list.length}\\nHealthy: ${list.filter(a=&amp;gt;a.dp==='healthy').length} | Stale: ${list.filter(a=&amp;gt;a.dp==='stale').length} | Shadow: ${list.filter(a=&amp;gt;a.dp==='shadow').length}\\nSandboxed: ${list.filter(a=&amp;gt;a.sb==='sandboxed').length} | Unsandboxed: ${list.filter(a=&amp;gt;a.sb!=='sandboxed').length}\\nCVEs: ${list.reduce((a,x)=&amp;gt;a+x.cves.length,0)} | Cost/day: $${list.reduce((a,x)=&amp;gt;a+x.costD,0).toFixed(2)}\\n\\n${list.map(a=&amp;gt;`- ${a.n} [${a.cl}/${a.dp}/${a.sb}] owner:${a.ow} cves:${a.cves.length} tok:${a.tokD} ep:${a.ep}`).join('\\n')}`).then(()=&amp;gt;toast('Copied'))}\n\nupdateStats();updateBar();ren(A);renderCatalog();renderTopology();\n\n\n\n", "creation_timestamp": "2026-06-23T08:23:37.000000Z"}</content>
    <link href="https://vulnerability.circl.lu/sighting/f678b395-f1da-4293-bd95-6e4070831354/export"/>
    <published>2026-06-23T08:23:37+00:00</published>
  </entry>
</feed>
