Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions community/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,9 @@
<meta property="og:url" content="https://agentrust-io.com/community/">
<meta property="og:locale" content="en_US">
<meta property="og:image" content="https://agentrust-io.com/og.png">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<meta property="og:image:alt" content="AgenTrust: open specifications for verifiable AI">

<!-- Twitter -->
<meta name="twitter:card" content="summary_large_image">
Expand Down
8 changes: 5 additions & 3 deletions demos/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ <h2>Start with one demo</h2>

<p><strong>What to look for:</strong> demo 1 routes calls through the local gateway and closes the session into a signed record. Software mode does not pass hardware-attestation verification. To explore weight custody, run <code>python demo.py 6</code>; to run the full set without pauses, use <code>python demo.py --no-pause</code>.</p>
<p><strong>Individual commands below:</strong> run them from the <code>demos</code> folder with the environment activated. For demos that start cMCP, set <code>export CMCP_BEARER_TOKEN=demo-token</code> first. The <code>demo.py</code> launcher handles this setup for you.</p>
<p class="meta" style="margin-top:2.25rem;">What demo 6 actually prints, verbatim from a run on <code>weight-custody-manifest 0.25.0</code></p>
<p class="meta" style="margin-top:2.25rem;">What demo 6 prints on <code>weight-custody-manifest 0.28.2</code></p>
<div class="term">
<div class="term-bar"><span class="dot"></span><span class="dot"></span><span class="dot"></span><span class="term-title">python demo-06-weight-custody/run.py</span></div>
<div class="term-body">
Expand All @@ -87,10 +87,12 @@ <h2>Start with one demo</h2>
<div class="dim">no human reads 2.8T parameters; the hash does the reading.</div>
<div style="margin-top:0.9rem;">4. The fine-tune is the real IP: lineage back to the signed base</div>
<div>lineage verified&nbsp;&nbsp; : <span class="ok">True</span>&nbsp; depth 1&nbsp; root is a base: <span class="ok">True</span></div>
<div class="dim" style="margin-top:0.9rem;">honest scope&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : accountability-grade against an operator who physically<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; owns the silicon (see TEE.fail), not silicon-proof custody.</div>
<div style="margin-top:0.9rem;">What this is, and is not</div>
<div class="dim">custody active&nbsp;&nbsp;&nbsp;&nbsp; : key held under a 1h cadence, wiped on lapse (time_floor sound)</div>
<div class="dim">honest scope&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : accountability-grade against an operator who physically<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; owns the silicon (see TEE.fail), not silicon-proof<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; custody. It IS the provenance the download never gave you.</div>
</div>
</div>
<p class="meta">Hashes are truncated here for width; the run prints them in full. Every demo ends with a scope statement like that last one.</p>
<p class="meta">Shortened for width: hashes are truncated, and the section rules, the gate's <code>enforced:</code> note and the derivative hash are left out. The run prints them all. Every demo ends with a scope statement like that last one.</p>
</section>

<section id="weights">
Expand Down
2 changes: 1 addition & 1 deletion index.html
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
<meta property="og:image" content="https://agentrust-io.com/og.png">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<meta property="og:image:alt" content="AgenTrust: an open ecosystem for verifiable AI agents">
<meta property="og:image:alt" content="AgenTrust: open specifications for verifiable AI">

<!-- Twitter -->
<meta name="twitter:card" content="summary_large_image">
Expand Down
3 changes: 3 additions & 0 deletions llms.txt
Original file line number Diff line number Diff line change
Expand Up @@ -46,4 +46,7 @@ AgenTrust is the ecosystem at https://agentrust-io.com and the GitHub organizati
- [Agent Manifest summary](https://manifest.agentrust-io.com/llms.txt)
- [cMCP summary](https://cmcp.agentrust-io.com/llms.txt)
- [cA2A summary](https://ca2a.agentrust-io.com/llms.txt)
- [Weight Custody Manifest summary](https://wcm.agentrust-io.com/llms.txt)
- [TRACE conformance suite summary](https://tests.agentrust-io.com/llms.txt)
- [Governance resource directory summary](https://governance.agentrust-io.com/llms.txt)
- [Sitemap](https://agentrust-io.com/sitemap.xml): Canonical public pages on this host.
2 changes: 1 addition & 1 deletion marketplace/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<meta name="description" content="Discover open integrations, adapters, plugins, policy tools, and evidence exporters across the AgenTrust chain of open specifications.">
<link rel="canonical" href="https://agentrust-io.com/marketplace/"><meta name="robots" content="index,follow">
<link rel="icon" href="/favicon.ico" sizes="any"><link rel="apple-touch-icon" href="/apple-touch-icon.png">
<meta property="og:type" content="website"><meta property="og:site_name" content="AgenTrust"><meta property="og:title" content="AgenTrust Marketplace"><meta property="og:description" content="Build on the open ecosystem for verifiable AI agents."><meta property="og:url" content="https://agentrust-io.com/marketplace/"><meta property="og:image" content="https://agentrust-io.com/og.png">
<meta property="og:type" content="website"><meta property="og:site_name" content="AgenTrust"><meta property="og:title" content="AgenTrust Marketplace"><meta property="og:description" content="Build on the open ecosystem for verifiable AI agents."><meta property="og:url" content="https://agentrust-io.com/marketplace/"><meta property="og:image" content="https://agentrust-io.com/og.png"><meta property="og:image:width" content="1200"><meta property="og:image:height" content="630"><meta property="og:image:alt" content="AgenTrust: open specifications for verifiable AI">
<meta name="twitter:card" content="summary_large_image"><meta name="twitter:title" content="AgenTrust Marketplace"><meta name="twitter:description" content="Discover integrations across the AgenTrust chain of open specifications."><meta name="twitter:image" content="https://agentrust-io.com/og.png">
<link rel="stylesheet" href="/design-system.css?v=19">
</head>
Expand Down
Binary file modified og.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions registry/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@
<meta property="og:url" content="https://agentrust-io.com/registry/">
<meta property="og:locale" content="en_US">
<meta property="og:image" content="https://agentrust-io.com/og.png">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<meta property="og:image:alt" content="AgenTrust: open specifications for verifiable AI">

<!-- Twitter -->
<meta name="twitter:card" content="summary_large_image">
Expand Down
2 changes: 1 addition & 1 deletion tools/DISCOVERY.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ This fetches both catalogs at one public `agentrust-io/integrations` commit, rec

## Availability checks

After merging, the Public site availability workflow runs every six hours and can be dispatched manually. It reads the deployed sitemap, checks its pages, checks the home/robots/sitemap/AI-guide endpoints of all seven public hosts, and verifies that an unknown URL returns 404. Individual probes retry once. Results are retained as a workflow artifact for 14 days. Maintainers can use GitHub Actions failure notifications to investigate.
After merging, the Public site availability workflow runs every six hours and can be dispatched manually. It reads the deployed sitemap, checks its pages, checks the home/robots/sitemap/AI-guide endpoints of all eight public hosts, and verifies that an unknown URL returns 404. Individual probes retry once. Results are retained as a workflow artifact for 14 days. Maintainers can use GitHub Actions failure notifications to investigate.

```sh
python tools/check-availability.py
Expand Down
2 changes: 1 addition & 1 deletion tools/check-availability.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ def main():
urls = {node.text for node in sitemap.findall('.//{http://www.sitemaps.org/schemas/sitemap/0.9}loc')}
if not urls or any(not url.startswith(BASE + '/') for url in urls):
raise ValueError('Unexpected live sitemap')
for prefix in ['', 'trace.', 'manifest.', 'cmcp.', 'ca2a.', 'governance.', 'tests.']:
for prefix in ['', 'trace.', 'manifest.', 'cmcp.', 'ca2a.', 'governance.', 'tests.', 'wcm.']:
urls.update('https://' + prefix + 'agentrust-io.com' + path for path in ['/', '/robots.txt', '/sitemap.xml', '/llms.txt'])
targets = [(url, 200) for url in sorted(urls)] + [(BASE + '/missing-availability-probe-404/', 404)]
with ThreadPoolExecutor(max_workers=4) as pool:
Expand Down
90 changes: 90 additions & 0 deletions tools/render-og-card.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
"""Render /og.png, the 1200x630 social card for agentrust-io.com, with headless Chrome.

python tools/render-og-card.py # writes og.png
CHROME=/path/to/chrome python tools/render-og-card.py

The card is HTML so its words can change with an edit, not a lost design file.
It lives here rather than as a page because every *.html in the repository is a
published page to check-site.py and the sitemap. Keep the words in step with the
homepage hero and with the og:image:alt text the pages use; colours are the brand
navy and red from brand/BRAND.md.

No --check: a PNG rendered on another machine differs in font hinting, so commit
the rendered file and review it by eye.
"""
import os
from pathlib import Path
import shutil
import subprocess
import sys
import tempfile

ROOT = Path(__file__).resolve().parents[1]

EYEBROW = 'Open specifications for verifiable AI'
TITLE = 'AgenTrust'
LEAD = 'Prove what your AI ran, and what it did.'
CHAIN = ['Weights', 'Agent', 'Actions', 'Evidence']
DOMAIN = 'agentrust-io.com'

CARD = """<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<style>
html, body {{ margin: 0; width: 1200px; height: 630px; overflow: hidden; }}
body {{ background: #15294B; color: #FFFEFA; position: relative; font-family: Inter, "Segoe UI", ui-sans-serif, sans-serif; }}
.wrap {{ position: absolute; left: 90px; right: 90px; top: 84px; }}
.eyebrow {{ font-size: 25px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: #9FB3D1; }}
h1 {{ font-size: 118px; font-weight: 700; margin: 26px 0 0; letter-spacing: -.01em; line-height: 1; }}
.bar {{ width: 120px; height: 9px; background: #B91C1C; margin: 38px 0 34px; }}
.lead {{ font-size: 44px; line-height: 1.2; color: #E9E4D8; margin: 0; }}
.chain {{ margin-top: 30px; font-size: 27px; color: #9FB3D1; letter-spacing: .01em; }}
.chain b {{ color: #FFFEFA; font-weight: 600; }}
.domain {{ position: absolute; left: 90px; bottom: 46px; font-size: 27px; font-weight: 700; color: #9FB3D1; }}
.foot {{ position: absolute; left: 0; right: 0; bottom: 0; height: 14px; background: #B91C1C; }}
</style>
</head>
<body>
<div class="wrap">
<div class="eyebrow">{eyebrow}</div>
<h1>{title}</h1>
<div class="bar"></div>
<p class="lead">{lead}</p>
<div class="chain">{chain}</div>
</div>
<div class="domain">{domain}</div>
<div class="foot"></div>
</body>
</html>
"""

CHROME_PATHS = [
r'C:\Program Files\Google\Chrome\Application\chrome.exe',
'/Applications/Google Chrome.app/Contents/MacOS/Google Chrome',
'google-chrome', 'chromium', 'chromium-browser',
]


def chrome():
for candidate in [os.environ.get('CHROME')] + CHROME_PATHS:
if candidate and (Path(candidate).is_file() or shutil.which(candidate)):
return candidate
raise SystemExit('Chrome not found. Set CHROME to its path.')


def main():
chain = ' &nbsp;·&nbsp; '.join(f'<b>{i:02d}</b> {step}' for i, step in enumerate(CHAIN, 1))
html = CARD.format(eyebrow=EYEBROW, title=TITLE, lead=LEAD, chain=chain, domain=DOMAIN)
with tempfile.TemporaryDirectory() as tmp:
card = Path(tmp) / 'og-card.html'
card.write_text(html, encoding='utf-8')
out = ROOT / 'og.png'
subprocess.run([chrome(), '--headless=new', '--disable-gpu', '--hide-scrollbars',
'--force-device-scale-factor=1', '--window-size=1200,630',
f'--screenshot={out}', card.as_uri()], check=True, capture_output=True)
print(f'wrote {out.relative_to(ROOT)}')


if __name__ == '__main__':
sys.exit(main())
3 changes: 3 additions & 0 deletions verify/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@
<meta property="og:url" content="https://agentrust-io.com/verify/">
<meta property="og:locale" content="en_US">
<meta property="og:image" content="https://agentrust-io.com/og.png">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<meta property="og:image:alt" content="AgenTrust: open specifications for verifiable AI">

<!-- Twitter -->
<meta name="twitter:card" content="summary_large_image">
Expand Down
Loading