From c5e5c63bd67569954d474442193c404f0c9663fa Mon Sep 17 00:00:00 2001 From: Sebastian Maniak Date: Wed, 2 Sep 2026 16:24:39 -0400 Subject: [PATCH 1/2] Redesign the front page on the Solo.io design system Replace the standalone landing (custom CSS, light-first, orbit/FAQ sections) with the "Agentregistry Landing" design: pill nav, hero with Helm install snippet and divider, four scroll-driven sections (MCP servers, skills, agents, prompts) with a sticky arctl terminal that plays only once the section is in view, a real UI screenshot in a browser frame, a quickstart with copyable commands, CTA and footer. - Styling is Tailwind utilities compiled by the existing css.html pipeline; `ar-*` tokens in assets/css/main.css carry light and dark palettes and are flipped by the `.dark` class Hextra already manages, so the nav toggle and the docs share the "color-theme" preference. - Terminal copy uses real arctl commands (get/init/apply/pull/build/ wait) and resource names from the sample catalog; the quickstart uses the chart path, service and ports from the docs. - New logo, mark and UI screenshot assets; old landing CSS/JS and unused uploads removed. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_013qU6E15XJdNYcgg6koZjM6 Signed-off-by: Sebastian Maniak --- assets/css/main.css | 94 + hugo.yaml | 2 +- hugo_stats.json | 429 +++- layouts/index.html | 1134 ++++----- .../assets/agentgateway-logo-light.png | Bin 1037887 -> 0 bytes static/landing/assets/agentregistry-icon.png | Bin 190336 -> 0 bytes .../landing/assets/agentregistry-lockup.png | Bin 970489 -> 0 bytes .../assets/agentregistry-logo-color.png | Bin 0 -> 56249 bytes .../assets/agentregistry-logo-dark.png | Bin 0 -> 85076 bytes .../assets/agentregistry-mark-color.png | Bin 0 -> 10528 bytes static/landing/assets/agentregistry-mark.png | Bin 198786 -> 0 bytes static/landing/assets/agentregistry-mark.svg | 12 - static/landing/assets/catalog-diagram.svg | 132 - static/landing/assets/claude-icon.png | Bin 9337 -> 0 bytes static/landing/assets/discord.svg | 4 +- static/landing/assets/solo-mark.svg | 3 +- static/landing/assets/ui-add-agent-dark.png | Bin 0 -> 104101 bytes static/landing/assets/ui-add-agent-light.png | Bin 0 -> 100603 bytes static/landing/assets/ui-add-menu-dark.png | Bin 0 -> 105958 bytes static/landing/assets/ui-add-menu-light.png | Bin 0 -> 105255 bytes static/landing/assets/ui-add-prompt-dark.png | Bin 0 -> 109736 bytes static/landing/assets/ui-add-prompt-light.png | Bin 0 -> 106459 bytes static/landing/assets/ui-add-server-dark.png | Bin 0 -> 89024 bytes static/landing/assets/ui-add-server-light.png | Bin 0 -> 86469 bytes .../assets/ui-add-server-package-dark.png | Bin 0 -> 94233 bytes .../assets/ui-add-server-package-light.png | Bin 0 -> 92804 bytes static/landing/assets/ui-add-skill-dark.png | Bin 0 -> 115068 bytes static/landing/assets/ui-add-skill-light.png | Bin 0 -> 111232 bytes static/landing/assets/ui-agents-dark.png | Bin 0 -> 86228 bytes .../landing/assets/ui-agents-detail-dark.png | Bin 0 -> 90204 bytes .../landing/assets/ui-agents-detail-light.png | Bin 0 -> 88250 bytes static/landing/assets/ui-agents-light.png | Bin 0 -> 85322 bytes .../landing/assets/ui-deploy-agents-dark.png | Bin 0 -> 86651 bytes .../landing/assets/ui-deploy-agents-light.png | Bin 0 -> 82355 bytes .../assets/ui-deploy-agents-target-dark.png | Bin 0 -> 86216 bytes .../assets/ui-deploy-agents-target-light.png | Bin 0 -> 82186 bytes static/landing/assets/ui-deploy-dark.png | Bin 0 -> 101435 bytes .../landing/assets/ui-deploy-servers-dark.png | Bin 0 -> 101435 bytes .../assets/ui-deploy-servers-light.png | Bin 0 -> 95789 bytes .../assets/ui-deploy-servers-target-dark.png | Bin 0 -> 101017 bytes .../assets/ui-deploy-servers-target-light.png | Bin 0 -> 95643 bytes static/landing/assets/ui-deployed-dark.png | Bin 0 -> 82611 bytes static/landing/assets/ui-deployed-light.png | Bin 0 -> 81601 bytes static/landing/assets/ui-details-dark.png | Bin 0 -> 100789 bytes static/landing/assets/ui-details-light.png | Bin 0 -> 99023 bytes static/landing/assets/ui-prompts-dark.png | Bin 0 -> 95937 bytes .../landing/assets/ui-prompts-detail-dark.png | Bin 0 -> 121079 bytes .../assets/ui-prompts-detail-light.png | Bin 0 -> 119417 bytes static/landing/assets/ui-prompts-light.png | Bin 0 -> 94724 bytes static/landing/assets/ui-servers-dark.png | Bin 0 -> 103260 bytes static/landing/assets/ui-servers-light.png | Bin 0 -> 102526 bytes static/landing/assets/ui-skills-dark.png | Bin 0 -> 99180 bytes .../landing/assets/ui-skills-detail-dark.png | Bin 0 -> 96473 bytes .../landing/assets/ui-skills-detail-light.png | Bin 0 -> 94691 bytes static/landing/assets/ui-skills-light.png | Bin 0 -> 97898 bytes static/landing/assets/up-right.svg | 3 - static/landing/catalog.js | 396 --- static/landing/design-tokens.css | 352 --- static/landing/image-slot.js | 641 ----- static/landing/styles.css | 2136 ----------------- static/landing/terminal.js | 271 --- ...Logo - Color on Transparent Background.png | Bin 508190 -> 0 bytes .../Logo - Dark on Transparent Background.png | Bin 573091 -> 0 bytes ...Logo - Light on Transparent Background.png | Bin 527581 -> 0 bytes ...shot 2026-05-22 at 3.06.46 PM-7afd4fe8.png | Bin 337802 -> 0 bytes .../Screenshot 2026-05-22 at 3.06.46 PM.png | Bin 337802 -> 0 bytes ...shot 2026-05-22 at 3.06.52 PM-73f0a035.png | Bin 423463 -> 0 bytes .../Screenshot 2026-05-22 at 3.06.52 PM.png | Bin 423463 -> 0 bytes ...shot 2026-05-22 at 3.07.17 PM-77c19546.png | Bin 433477 -> 0 bytes .../Screenshot 2026-05-22 at 3.07.17 PM.png | Bin 433477 -> 0 bytes ...shot 2026-05-22 at 3.07.28 PM-cc84957e.png | Bin 379419 -> 0 bytes .../Screenshot 2026-05-22 at 3.07.28 PM.png | Bin 379419 -> 0 bytes ...shot 2026-05-22 at 3.07.37 PM-e26fb277.png | Bin 363063 -> 0 bytes .../Screenshot 2026-05-22 at 3.07.37 PM.png | Bin 363063 -> 0 bytes ...shot 2026-05-22 at 3.07.49 PM-335bbf95.png | Bin 397707 -> 0 bytes .../Screenshot 2026-05-22 at 3.07.49 PM.png | Bin 397707 -> 0 bytes ...shot 2026-05-22 at 3.08.06 PM-02dd493c.png | Bin 368748 -> 0 bytes .../Screenshot 2026-05-22 at 3.08.06 PM.png | Bin 368748 -> 0 bytes ...shot 2026-05-22 at 3.08.12 PM-2a101a61.png | Bin 416058 -> 0 bytes .../Screenshot 2026-05-22 at 3.08.12 PM.png | Bin 416058 -> 0 bytes ...shot 2026-05-22 at 3.08.17 PM-c8e06c95.png | Bin 423608 -> 0 bytes .../Screenshot 2026-05-22 at 3.08.17 PM.png | Bin 423608 -> 0 bytes ...shot 2026-05-22 at 3.08.24 PM-691353e8.png | Bin 371721 -> 0 bytes .../Screenshot 2026-05-22 at 3.08.24 PM.png | Bin 371721 -> 0 bytes .../Screenshot 2026-05-22 at 3.10.12 PM.png | Bin 523605 -> 0 bytes .../Screenshot 2026-05-22 at 3.10.23 PM.png | Bin 212243 -> 0 bytes .../Screenshot 2026-05-22 at 3.41.45 PM.png | Bin 222170 -> 0 bytes .../Screenshot 2026-05-22 at 3.42.03 PM.png | Bin 117839 -> 0 bytes ...shot 2026-05-22 at 4.16.33 PM-7e8a16fa.png | Bin 445490 -> 0 bytes .../Screenshot 2026-05-22 at 4.16.33 PM.png | Bin 445490 -> 0 bytes .../Screenshot 2026-05-22 at 4.27.46 PM.png | Bin 399810 -> 0 bytes .../Screenshot 2026-05-22 at 4.31.18 PM.png | Bin 3608817 -> 0 bytes .../Screenshot 2026-05-22 at 4.47.11 PM.png | Bin 24063 -> 0 bytes .../Screenshot 2026-05-22 at 5.06.22 PM.png | Bin 361400 -> 0 bytes .../Screenshot 2026-05-22 at 5.14.57 PM.png | Bin 38524 -> 0 bytes static/landing/uploads/arlogo.png | Bin 136790 -> 0 bytes static/landing/uploads/claude-color.png | Bin 9337 -> 0 bytes static/landing/uploads/mcp.svg | 1 - .../uploads/pasted-1779484729661-0.png | Bin 50827 -> 0 bytes .../uploads/pasted-1779485226813-0.png | Bin 73007 -> 0 bytes .../uploads/pasted-1779485246479-0.png | Bin 112761 -> 0 bytes 101 files changed, 983 insertions(+), 4627 deletions(-) delete mode 100644 static/landing/assets/agentgateway-logo-light.png delete mode 100644 static/landing/assets/agentregistry-icon.png delete mode 100644 static/landing/assets/agentregistry-lockup.png create mode 100644 static/landing/assets/agentregistry-logo-color.png create mode 100644 static/landing/assets/agentregistry-logo-dark.png create mode 100644 static/landing/assets/agentregistry-mark-color.png delete mode 100644 static/landing/assets/agentregistry-mark.png delete mode 100644 static/landing/assets/agentregistry-mark.svg delete mode 100644 static/landing/assets/catalog-diagram.svg delete mode 100644 static/landing/assets/claude-icon.png create mode 100644 static/landing/assets/ui-add-agent-dark.png create mode 100644 static/landing/assets/ui-add-agent-light.png create mode 100644 static/landing/assets/ui-add-menu-dark.png create mode 100644 static/landing/assets/ui-add-menu-light.png create mode 100644 static/landing/assets/ui-add-prompt-dark.png create mode 100644 static/landing/assets/ui-add-prompt-light.png create mode 100644 static/landing/assets/ui-add-server-dark.png create mode 100644 static/landing/assets/ui-add-server-light.png create mode 100644 static/landing/assets/ui-add-server-package-dark.png create mode 100644 static/landing/assets/ui-add-server-package-light.png create mode 100644 static/landing/assets/ui-add-skill-dark.png create mode 100644 static/landing/assets/ui-add-skill-light.png create mode 100644 static/landing/assets/ui-agents-dark.png create mode 100644 static/landing/assets/ui-agents-detail-dark.png create mode 100644 static/landing/assets/ui-agents-detail-light.png create mode 100644 static/landing/assets/ui-agents-light.png create mode 100644 static/landing/assets/ui-deploy-agents-dark.png create mode 100644 static/landing/assets/ui-deploy-agents-light.png create mode 100644 static/landing/assets/ui-deploy-agents-target-dark.png create mode 100644 static/landing/assets/ui-deploy-agents-target-light.png create mode 100644 static/landing/assets/ui-deploy-dark.png create mode 100644 static/landing/assets/ui-deploy-servers-dark.png create mode 100644 static/landing/assets/ui-deploy-servers-light.png create mode 100644 static/landing/assets/ui-deploy-servers-target-dark.png create mode 100644 static/landing/assets/ui-deploy-servers-target-light.png create mode 100644 static/landing/assets/ui-deployed-dark.png create mode 100644 static/landing/assets/ui-deployed-light.png create mode 100644 static/landing/assets/ui-details-dark.png create mode 100644 static/landing/assets/ui-details-light.png create mode 100644 static/landing/assets/ui-prompts-dark.png create mode 100644 static/landing/assets/ui-prompts-detail-dark.png create mode 100644 static/landing/assets/ui-prompts-detail-light.png create mode 100644 static/landing/assets/ui-prompts-light.png create mode 100644 static/landing/assets/ui-servers-dark.png create mode 100644 static/landing/assets/ui-servers-light.png create mode 100644 static/landing/assets/ui-skills-dark.png create mode 100644 static/landing/assets/ui-skills-detail-dark.png create mode 100644 static/landing/assets/ui-skills-detail-light.png create mode 100644 static/landing/assets/ui-skills-light.png delete mode 100644 static/landing/assets/up-right.svg delete mode 100644 static/landing/catalog.js delete mode 100644 static/landing/design-tokens.css delete mode 100644 static/landing/image-slot.js delete mode 100644 static/landing/styles.css delete mode 100644 static/landing/terminal.js delete mode 100644 static/landing/uploads/Logo - Color on Transparent Background.png delete mode 100644 static/landing/uploads/Logo - Dark on Transparent Background.png delete mode 100644 static/landing/uploads/Logo - Light on Transparent Background.png delete mode 100644 static/landing/uploads/Screenshot 2026-05-22 at 3.06.46 PM-7afd4fe8.png delete mode 100644 static/landing/uploads/Screenshot 2026-05-22 at 3.06.46 PM.png delete mode 100644 static/landing/uploads/Screenshot 2026-05-22 at 3.06.52 PM-73f0a035.png delete mode 100644 static/landing/uploads/Screenshot 2026-05-22 at 3.06.52 PM.png delete mode 100644 static/landing/uploads/Screenshot 2026-05-22 at 3.07.17 PM-77c19546.png delete mode 100644 static/landing/uploads/Screenshot 2026-05-22 at 3.07.17 PM.png delete mode 100644 static/landing/uploads/Screenshot 2026-05-22 at 3.07.28 PM-cc84957e.png delete mode 100644 static/landing/uploads/Screenshot 2026-05-22 at 3.07.28 PM.png delete mode 100644 static/landing/uploads/Screenshot 2026-05-22 at 3.07.37 PM-e26fb277.png delete mode 100644 static/landing/uploads/Screenshot 2026-05-22 at 3.07.37 PM.png delete mode 100644 static/landing/uploads/Screenshot 2026-05-22 at 3.07.49 PM-335bbf95.png delete mode 100644 static/landing/uploads/Screenshot 2026-05-22 at 3.07.49 PM.png delete mode 100644 static/landing/uploads/Screenshot 2026-05-22 at 3.08.06 PM-02dd493c.png delete mode 100644 static/landing/uploads/Screenshot 2026-05-22 at 3.08.06 PM.png delete mode 100644 static/landing/uploads/Screenshot 2026-05-22 at 3.08.12 PM-2a101a61.png delete mode 100644 static/landing/uploads/Screenshot 2026-05-22 at 3.08.12 PM.png delete mode 100644 static/landing/uploads/Screenshot 2026-05-22 at 3.08.17 PM-c8e06c95.png delete mode 100644 static/landing/uploads/Screenshot 2026-05-22 at 3.08.17 PM.png delete mode 100644 static/landing/uploads/Screenshot 2026-05-22 at 3.08.24 PM-691353e8.png delete mode 100644 static/landing/uploads/Screenshot 2026-05-22 at 3.08.24 PM.png delete mode 100644 static/landing/uploads/Screenshot 2026-05-22 at 3.10.12 PM.png delete mode 100644 static/landing/uploads/Screenshot 2026-05-22 at 3.10.23 PM.png delete mode 100644 static/landing/uploads/Screenshot 2026-05-22 at 3.41.45 PM.png delete mode 100644 static/landing/uploads/Screenshot 2026-05-22 at 3.42.03 PM.png delete mode 100644 static/landing/uploads/Screenshot 2026-05-22 at 4.16.33 PM-7e8a16fa.png delete mode 100644 static/landing/uploads/Screenshot 2026-05-22 at 4.16.33 PM.png delete mode 100644 static/landing/uploads/Screenshot 2026-05-22 at 4.27.46 PM.png delete mode 100644 static/landing/uploads/Screenshot 2026-05-22 at 4.31.18 PM.png delete mode 100644 static/landing/uploads/Screenshot 2026-05-22 at 4.47.11 PM.png delete mode 100644 static/landing/uploads/Screenshot 2026-05-22 at 5.06.22 PM.png delete mode 100644 static/landing/uploads/Screenshot 2026-05-22 at 5.14.57 PM.png delete mode 100644 static/landing/uploads/arlogo.png delete mode 100644 static/landing/uploads/claude-color.png delete mode 100644 static/landing/uploads/mcp.svg delete mode 100644 static/landing/uploads/pasted-1779484729661-0.png delete mode 100644 static/landing/uploads/pasted-1779485226813-0.png delete mode 100644 static/landing/uploads/pasted-1779485246479-0.png diff --git a/assets/css/main.css b/assets/css/main.css index 01bee26..838a966 100644 --- a/assets/css/main.css +++ b/assets/css/main.css @@ -58,3 +58,97 @@ no longer lined up with the nav). The reuse-image rules were also dead — the extras `reuse-image` shortcode toggles `.toggle-dark`/`.toggle-light`, not `.reuse-image-wrapper`. The theme aligns the navbar and sidebar itself. */ + +/* --------------------------------------------------------------------------- + Landing page (layouts/index.html) — Solo.io design system. + Namespaced `ar-*` so nothing collides with Hextra / docs-theme-extras. + + Theme-aware tokens are plain CSS variables flipped by the `.dark` class that + Hextra's theme toggle already puts on , and exposed to Tailwind via + `@theme inline` so `bg-ar-bg`, `text-ar-fg-2`, `border-ar-line` … follow the + active theme at runtime. Terminal tokens (`ar-term-*`) are fixed: terminals + stay dark in both themes. + --------------------------------------------------------------------------- */ +@custom-variant dark (&:where(.dark, .dark *)); + +@layer base { + :root { + --ar-bg: #FFFFFF; + --ar-bg-alt: #F6F7FB; + --ar-footer: #EDEEF7; + --ar-fg: #151927; + --ar-fg-2: #3B4258; + --ar-fg-3: #6B7289; + --ar-fg-4: #9AA0B5; + --ar-line: rgba(21, 25, 39, .08); + --ar-line-2: rgba(21, 25, 39, .14); + --ar-fill: rgba(21, 25, 39, .04); + --ar-fill-2: rgba(21, 25, 39, .08); + --ar-nav: rgba(255, 255, 255, .80); + --ar-btn: #151927; + --ar-btn-fg: #FFFFFF; + --ar-glow: rgba(138, 63, 252, .16); + --ar-hero-glow: rgba(138, 63, 252, .18); + --ar-ui-gradient: linear-gradient(180deg, #FFFFFF, #F3EEFC 55%, #FFFFFF); + } + .dark { + --ar-bg: #0B0E18; + --ar-bg-alt: #0A0D17; + --ar-footer: #090C14; + --ar-fg: #FFFFFF; + --ar-fg-2: #C8CCDB; + --ar-fg-3: #8289A3; + --ar-fg-4: #5A6078; + --ar-line: rgba(255, 255, 255, .08); + --ar-line-2: rgba(255, 255, 255, .12); + --ar-fill: rgba(255, 255, 255, .04); + --ar-fill-2: rgba(255, 255, 255, .08); + --ar-nav: rgba(11, 14, 24, .72); + --ar-btn: #FFFFFF; + --ar-btn-fg: #0B0E18; + --ar-glow: rgba(138, 63, 252, .12); + --ar-hero-glow: rgba(138, 63, 252, .30); + --ar-ui-gradient: linear-gradient(180deg, #0B0E18, #110B20 55%, #0B0E18); + } +} + +@theme inline { + --color-ar-bg: var(--ar-bg); + --color-ar-bg-alt: var(--ar-bg-alt); + --color-ar-footer: var(--ar-footer); + --color-ar-fg: var(--ar-fg); + --color-ar-fg-2: var(--ar-fg-2); + --color-ar-fg-3: var(--ar-fg-3); + --color-ar-fg-4: var(--ar-fg-4); + --color-ar-line: var(--ar-line); + --color-ar-line-2: var(--ar-line-2); + --color-ar-fill: var(--ar-fill); + --color-ar-fill-2: var(--ar-fill-2); + --color-ar-nav: var(--ar-nav); + --color-ar-btn: var(--ar-btn); + --color-ar-btn-fg: var(--ar-btn-fg); +} + +@theme { + /* Fixed palette */ + --color-ar-purple: #8A3FFC; + --color-ar-purple-hover: #9C55FF; + --color-ar-lilac: #C4A6FF; + --color-ar-success: #22C55E; + --color-ar-warning: #F59E0B; + --color-ar-danger: #EF4444; + /* Terminal (always dark) */ + --color-ar-term: #0A0D17; + --color-ar-term-fg: #E6E8F0; + --color-ar-term-2: #C8CCDB; + --color-ar-term-3: #8289A3; + --color-ar-term-4: #5A6078; + --color-ar-dot: #2A3044; + --font-ar-sans: 'Figtree', ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif; + --font-ar-mono: 'DM Mono', ui-monospace, 'SF Mono', Menlo, Consolas, monospace; + --ease-ar: cubic-bezier(.16, 1, .3, 1); + --animate-ar-blink: ar-blink 1.1s steps(1) infinite; + --animate-ar-breathe: ar-breathe 6s cubic-bezier(.2, .6, .2, 1) infinite; + @keyframes ar-blink { 0%, 49% { opacity: 1 } 50%, 100% { opacity: 0 } } + @keyframes ar-breathe { 0%, 100% { opacity: .5 } 50% { opacity: .85 } } +} diff --git a/hugo.yaml b/hugo.yaml index 3920b17..9e74bed 100644 --- a/hugo.yaml +++ b/hugo.yaml @@ -39,7 +39,7 @@ params: prodHost: "https://aregistry.ai" theme: - default: dark + default: system displayToggle: true navbar: diff --git a/hugo_stats.json b/hugo_stats.json index dcf7711..656e8e1 100644 --- a/hugo_stats.json +++ b/hugo_stats.json @@ -11,7 +11,6 @@ "code", "dialog", "div", - "em", "figcaption", "figure", "footer", @@ -20,7 +19,6 @@ "h2", "h3", "h4", - "h5", "head", "html", "iframe", @@ -28,7 +26,6 @@ "input", "kbd", "li", - "line", "link", "main", "meta", @@ -38,7 +35,6 @@ "p", "path", "polygon", - "polyline", "pre", "rect", "script", @@ -57,38 +53,59 @@ "ul" ], "classes": [ + "-mb-[2px]", + "-translate-x-1/2", + "[&>div]:whitespace-pre", + "[&>svg]:h-4", + "[&>svg]:h-[15px]", + "[&>svg]:h-[22px]", + "[&>svg]:opacity-70", + "[&>svg]:w-4", + "[&>svg]:w-[15px]", + "[&>svg]:w-[22px]", "[word-break:break-word]", - "accent", - "active", - "ar", - "ar-orbit", - "ar-orbit-center", - "ar-orbit-dot", - "ar-orbit-node", - "ar-orbit-ring", - "arg", - "badge", - "bb-panel", - "bb-panel-desc", - "bb-panel-link", - "bb-panel-title", - "bb-split", - "bottom", - "btn", - "btn-dark", - "btn-primary", - "btn-secondary", - "btns", - "by-solo", - "chev", + "absolute", + "animate-ar-blink", + "animate-ar-breathe", + "antialiased", + "ar-term", + "aria-selected:[&>svg]:opacity-100", + "aria-selected:[&>svg]:text-ar-purple", + "aria-selected:bg-ar-purple/10", + "aria-selected:border-ar-purple", + "aria-selected:border-ar-purple/40", + "aria-selected:text-ar-fg", + "backdrop-blur-[18px]", + "bg-(image:--ar-ui-gradient)", + "bg-[#28C840]/80", + "bg-[#FEBC2E]/80", + "bg-[#FF5F57]/80", + "bg-[radial-gradient(120%_80%_at_50%_-10%,var(--ar-hero-glow),transparent_60%)]", + "bg-ar-bg", + "bg-ar-bg-alt", + "bg-ar-btn", + "bg-ar-fill", + "bg-ar-footer", + "bg-ar-nav", + "bg-ar-purple", + "bg-ar-purple/10", + "bg-ar-term", + "bg-linear-to-r", + "bg-white/3", + "block", + "border", + "border-ar-line", + "border-ar-line-2", + "border-ar-purple/25", + "border-b", + "border-b-2", + "border-t", + "border-transparent", + "border-white/10", + "border-white/8", "chroma", - "cmd", - "code-block", - "comment", - "container", - "container-narrow", + "col-start-1", "content", - "copy", "copy-md-btn", "copy-md-chevron", "copy-md-dialog", @@ -109,48 +126,67 @@ "copy-md-split", "copy-md-toggle", "copy-md-wrapper", - "cta-banner", - "cta-banner-inner", - "cta-snippet", - "dots", - "eyebrow", - "faq-a", - "faq-item", - "faq-list", - "faq-q", - "flow", - "flow-arrow", - "flow-block", - "flow-block-icon", - "flow-blocks", - "flow-card", - "flow-card-head", - "flow-card-sub", - "flow-gateway", - "flow-gateway-logo", - "flow-gateway-sub", - "flow-gateway-title", - "flow-infra", - "flow-link", - "flow-logo", - "flow-muted", - "flow-pair", - "flow-pill", - "flow-registry", - "flow-row", - "footer", - "footer-bottom", - "footer-brand", - "footer-col", - "footer-grid", - "hero", - "hero-bg", - "hero-ctas", - "hero-grid", - "hero-inner", - "hero-lockup", - "hero-sub", - "hero-tagline", + "cursor-pointer", + "dark:block", + "dark:hidden", + "duration-[400ms]", + "ease-ar", + "fixed", + "flex", + "flex-1", + "flex-col", + "flex-none", + "flex-wrap", + "focus-visible:ring-2", + "focus-visible:ring-ar-purple", + "font-ar-mono", + "font-ar-sans", + "font-medium", + "from-transparent", + "gap-1", + "gap-1.5", + "gap-10", + "gap-11", + "gap-12", + "gap-16", + "gap-2", + "gap-2.5", + "gap-3", + "gap-3.5", + "gap-4", + "gap-5", + "gap-6", + "gap-7", + "gap-8", + "gap-[18px]", + "gap-[22px]", + "gap-[26px]", + "gap-[3px]", + "gap-[7px]", + "gap-[9px]", + "gap-x-[22px]", + "gap-y-3", + "grid", + "grid-cols-[minmax(0,1fr)]", + "group", + "h-10", + "h-11", + "h-16", + "h-3.5", + "h-4", + "h-6", + "h-7", + "h-9", + "h-[1000px]", + "h-[1400px]", + "h-[15px]", + "h-[17px]", + "h-[18px]", + "h-[660px]", + "h-[9px]", + "h-auto", + "h-full", + "h-px", "hextra-code-block", "hextra-code-copy-btn", "hextra-code-copy-btn-container", @@ -173,7 +209,19 @@ "hextra-theme-toggle", "hextra-theme-toggle-options", "hextra-toc", + "hidden", "highlight", + "hover:bg-ar-fill", + "hover:bg-ar-fill-2", + "hover:bg-ar-purple-hover", + "hover:bg-ar-purple/10", + "hover:bg-white/6", + "hover:opacity-90", + "hover:ring-1", + "hover:ring-ar-purple/40", + "hover:text-ar-fg", + "hover:text-white", + "hover:underline", "hx:-mb-0.5", "hx:-ml-2", "hx:-mr-2", @@ -442,46 +490,113 @@ "hx:z-20", "hx:z-50", "hx:z-[-1]", - "icon-moon", - "icon-sun", - "left", - "link-arrow", - "mf-label", - "mf-num", - "mf-step", - "mini-flow", - "nav", - "nav-brand", - "nav-inner", - "nav-link", - "nav-link-kbd", - "nav-links", + "inline-block", + "inline-flex", + "inset-0", + "inset-x-0", + "items-center", + "items-start", + "justify-center", + "leading-[1.02]", + "leading-[1.12]", + "leading-[1.15]", + "leading-[1.1]", + "leading-[1.55]", + "leading-[1.6]", + "leading-[1.75]", + "leading-[1.9]", + "left-1/2", + "lg:gap-0", + "lg:gap-16", + "lg:grid", + "lg:grid-cols-[minmax(0,.92fr)_minmax(0,1.08fr)]", + "lg:grid-cols-[minmax(0,.9fr)_minmax(0,1.1fr)]", + "lg:hidden", + "lg:justify-center", + "lg:min-h-[80vh]", + "lg:py-10", + "list-none", + "m-0", + "max-w-[1200px]", + "max-w-[600px]", + "max-w-[660px]", + "max-w-[680px]", + "max-w-[720px]", + "max-w-[820px]", + "max-w-[900px]", + "max-w-full", + "md:flex", + "md:grid-cols-3", + "md:ml-0", + "min-w-0", + "ml-2", + "ml-auto", + "mr-1", + "mt-1", + "mt-2", + "mt-6", + "mx-auto", + "opacity-0", + "opacity-100", + "opacity-80", "openapi-container", + "overflow-hidden", + "overflow-x-auto", + "p-0", + "p-5", + "p-[22px]", "page-description", + "pb-18", + "pb-2.5", + "pb-20", + "pb-28", + "pb-5", + "pb-[104px]", + "pl-5", "pnf-code", - "preview-appbar", - "preview-appbar-brand", - "preview-appbar-right", - "preview-appbar-tab", - "preview-appbar-tabs", - "preview-scroll", - "preview-window-chrome", - "product-preview", - "prompt", - "qs-step", - "qs-step-num", - "quickstart", - "quickstart-steps", + "pointer-events-none", + "pr-2", + "pt-1.5", + "pt-2", + "pt-24", + "pt-4", + "pt-[120px]", + "pt-[3px]", + "px-2", + "px-3", + "px-3.5", + "px-4", + "px-5", + "px-6", + "px-[18px]", + "px-[22px]", + "py-1", + "py-1.5", + "py-11", + "py-2", + "py-24", + "py-3", + "py-6", + "py-[5px]", + "py-[9px]", + "relative", "reuse-image-nodark", - "right", - "section", + "rounded-[14px]", + "rounded-full", + "rounded-md", + "rounded-xl", + "row-start-1", + "scroll-smooth", "section-card", "section-card-body", "section-card-desc", "section-card-title", "section-cards", - "section-head", - "section-pad-sm", + "shadow-[0_24px_80px_-20px_rgba(11,14,24,.55),0_0_80px_var(--ar-glow)]", + "shadow-[0_24px_80px_-20px_rgba(11,14,24,.55)]", + "shadow-[0_30px_100px_-30px_rgba(11,14,24,.45),0_0_120px_var(--ar-glow)]", + "shadow-[0_8px_30px_-12px_rgba(11,14,24,.25)]", + "shrink-0", "sidebar-active-item", "sidebar-children", "sidebar-container", @@ -497,7 +612,12 @@ "sidebar-nav", "sidebar-nav-wrapper", "sidebar-toggle", - "socials", + "sm:h-[92px]", + "sm:inline", + "sm:inline-flex", + "sm:ml-auto", + "sm:text-[38px]", + "sm:text-[44px]", "solo-breadcrumb", "solo-breadcrumb-back", "solo-breadcrumb-home", @@ -516,25 +636,73 @@ "solo-toc-item", "solo-toc-link", "solo-toc-sublist", - "split", - "split-card", - "split-card-eyebrow", + "sticky", "subheading-anchor", "table-capped", "table-wrapper", - "terminal", - "terminal-badges", - "terminal-body", - "terminal-chrome", - "terminal-dots", - "terminal-stage", - "terminal-title", - "theme-toggle", - "tick", + "text-[11px]", + "text-[13.5px]", + "text-[13px]", + "text-[15px]", + "text-[17px]", + "text-[19px]", + "text-[32px]", + "text-[36px]", + "text-[clamp(28px,3.4vw,46px)]", + "text-[clamp(32px,3.6vw,46px)]", + "text-[clamp(34px,4.2vw,58px)]", + "text-[clamp(34px,4vw,52px)]", + "text-ar-btn-fg", + "text-ar-fg", + "text-ar-fg-2", + "text-ar-fg-3", + "text-ar-fg-4", + "text-ar-purple", + "text-ar-success", + "text-ar-term-2", + "text-ar-term-3", + "text-ar-term-4", + "text-ar-term-fg", + "text-balance", + "text-base", + "text-center", + "text-left", + "text-lg", + "text-pretty", + "text-sm", + "text-white", + "text-xs", + "to-transparent", "toggle-dark", "toggle-light", - "top", - "url" + "top-5", + "top-[-190px]", + "top-[-300px]", + "top-[-420px]", + "top-[112px]", + "tracking-[-.025em]", + "tracking-[-.02em]", + "tracking-[-.03em]", + "transition-colors", + "transition-opacity", + "truncate", + "via-ar-line-2", + "w-11", + "w-2", + "w-3.5", + "w-4", + "w-9", + "w-[1000px]", + "w-[1400px]", + "w-[15px]", + "w-[17px]", + "w-[18px]", + "w-[660px]", + "w-[9px]", + "w-auto", + "w-full", + "whitespace-nowrap", + "z-50" ], "ids": [ "about-prompts", @@ -544,21 +712,16 @@ "add-a-tool", "add-an-mcp-server-to-the-agent", "agents", - "ar-orbit", + "ar-stack", "arctl-cli", "artifact-registry-infrastructure", "artifacts", "backToTop", - "bb-panel", - "bb-panel-desc", - "bb-panel-link", - "bb-panel-title", "before-you-begin", "build-package-and-deploy", "build-the-agent-image", "build-the-image", "catalog", - "catalog-preview", "centralized-governance-and-curation", "challenges-with-ai-artifacts", "cleanup", @@ -578,10 +741,7 @@ "discovery-across-environments", "evaluation", "explore-the-ui", - "faqs", "favicon-svg", - "features", - "gateway", "get-started", "global-flags", "how-agentregistry-fills-the-gaps", @@ -603,7 +763,6 @@ "pnf-suggestion-list", "pnf-suggestions", "postgresql", - "preview-appbar", "prompts", "public-disclosure", "publish-the-agent", @@ -611,6 +770,8 @@ "publish-the-server", "publish-the-skill", "pull-a-skill-from-the-registry", + "qs-copy", + "qs-term", "quickstart", "register-the-remote-mcp-server", "registry-server", @@ -645,11 +806,13 @@ "tabs-tab-tabs-01-1", "tabs-tab-tabs-02-0", "tabs-tab-tabs-02-1", - "terminal", - "terminal-body", "test-the-deployed-server", "theme-toggle", + "top", "tribal-knowledge-and-informal-sharing", + "ui", + "ui-preview", + "ui-url", "updates-and-questions", "usage", "verify-the-agent", diff --git a/layouts/index.html b/layouts/index.html index 7d9b65b..108ba1f 100644 --- a/layouts/index.html +++ b/layouts/index.html @@ -1,17 +1,16 @@ - + agentregistry — Build. Deploy. Discover. -{{- /* This is a standalone landing template that does NOT call the theme's - head.html, so the SEO metadata head.html normally emits is added here by - hand: description (from front matter), canonical, robots, OpenGraph, - schema.org JSON-LD, and the Twitter/X card. opengraph.html ships with - Hextra and works today; schema.html and twitter_cards.html are provided by - docs-theme-extras and start emitting once the extras pin is bumped (before - that they resolve to Hextra's empty stubs and emit nothing). Without this, - sharing the site root produced no social card despite the OG image. */ -}} +{{- /* Standalone landing template (does NOT go through the theme's head.html), + so the SEO metadata head.html normally emits is added here by hand: + description (from front matter), canonical, robots, OpenGraph, schema.org + JSON-LD and the Twitter/X card. Styling is Tailwind utilities compiled by + the same css.html pipeline the docs use; the `ar-*` design tokens (light + and dark palettes) live in assets/css/main.css. Layout follows the Solo.io + design-system landing ("Agentregistry Landing" in Claude Design). */ -}} {{- with .Params.canonical }} @@ -22,610 +21,655 @@ {{- partial "opengraph.html" . -}} {{- partial "schema.html" . -}} {{- partial "twitter_cards.html" . -}} - - + + + + +{{ with (templates.Defer (dict "key" "global")) }} + {{ partial "css.html" . }} +{{ end }} + - + +{{- /* ------------------------------------------------------------------ + Content data for the four scroll-driven "areas". Each area renders a + text block on the left and a terminal pane on the right (sticky on + desktop, inline on mobile) from this single source. Commands mirror + the real arctl CLI (`arctl get|init|apply|pull|build|wait`) and the + resource names are from the sample catalog. + ------------------------------------------------------------------ */ -}} +{{- $P := ` ` -}} +{{- $OK := ` ` -}} +{{- $cursor := `` -}} +{{- $muted := `%s` -}} +{{- $cmd := `%s` -}} +{{- $areas := slice + (dict + "id" "servers" + "icon" `` + "title" "MCP Tools & Servers" + "desc" "Pull servers from npm, PyPI, OCI, or a remote URL into a catalog your platform team controls, then deploy them as Kubernetes workloads." + "bullets" (slice + "Search the registry by name, publisher, or tool" + "Enrichment scores and verified-publisher signals on every entry" + "Deployed through kagent as native Kubernetes resources") + "termTitle" "~/registry — arctl" + "termMeta" "registry: registry.acme.dev" + "lines" (slice + (printf `%s%s` $P (printf $cmd "arctl get mcps")) + (printf $muted "NAME TAG DESCRIPTION") + `k8s-cluster-inspector latest Query live cluster state — pods, deployments...` + `k8s-helm-release-mgr latest List, diff, rollback, and explain Helm releases...` + ` ` + (printf `%s%s` $P (printf $cmd "arctl apply -f k8s-cluster-inspector/deployment.yaml")) + (printf `%sDeployment/k8s-cluster-inspector created` $OK) + ` ` + (printf `%s%s` $P (printf $cmd "arctl wait deployment k8s-cluster-inspector")) + (printf `%sdeployment k8s-cluster-inspector reached deployed on kubernetes-default` $OK) + ` ` + (printf `%s%s` $P $cursor))) + (dict + "id" "skills" + "icon" `` + "title" "Skills" + "desc" "Skills are versioned artifacts in the same catalog as everything else. Scaffold one, publish it, and anyone can pull it by name." + "bullets" (slice + `Scaffold with arctl init skill` + `Publish with a single arctl apply` + "Pull into a repo, or bundle into an agent blueprint") + "termTitle" "~/team-skills — arctl" + "termMeta" "registry: registry.acme.dev" + "lines" (slice + (printf `%s%s` $P (printf $cmd "arctl init skill k8s-runbook")) + (printf `%sCreated skill: k8s-runbook` $OK) + ` ` + (printf `%s%s` $P (printf $cmd "arctl apply -f k8s-runbook/skill.yaml")) + (printf `%sSkill/k8s-runbook (latest) created` $OK) + ` ` + (printf `%s%s` $P (printf $cmd "arctl get skills")) + (printf $muted "NAME TAG DESCRIPTION") + `k8s-runbook latest Playbook for CrashLoopBackOff, ImagePullBackOff...` + `k8s-yaml-review latest Review Deployments, HPA, PDB, and NetworkPolicy...` + ` ` + (printf `%s%s` $P (printf $cmd "arctl pull skill k8s-yaml-review ./.claude/skills")) + (printf `%spulled skill/k8s-yaml-review (latest) into ./.claude/skills` $OK) + ` ` + (printf `%s%s` $P $cursor))) + (dict + "id" "agents" + "icon" `` + "title" "Agents" + "desc" "A blueprint records what an agent is — its identity, model, servers, skills, and prompts. Deploy it and kagent materialises it as native Kubernetes resources." + "bullets" (slice + `Build, push, and version blueprints with arctl` + "One registry, many connected clusters" + "Approve before deploy, with publisher and trust signals") + "termTitle" "~/agents — arctl" + "termMeta" "runtime: kubernetes-default" + "lines" (slice + (printf `%s%s` $P (printf $cmd "arctl init agent k8sops --framework adk --language python")) + (printf `%sCreated agent: k8sops (framework: adk, language: python)` $OK) + ` ` + (printf `%s%s` $P (printf $cmd "arctl build ./k8sops --push")) + (printf `%spushed ghcr.io/acme/k8sops:latest` $OK) + ` ` + (printf `%s%s` $P (printf $cmd "arctl apply -f k8sops/agent.yaml -f k8sops/deployment.yaml")) + (printf `%sAgent/k8sops (latest) created` $OK) + (printf `%sDeployment/k8sops-agent created` $OK) + ` ` + (printf `%s%s` $P (printf $cmd "arctl get deployments")) + (printf $muted "NAME TARGET VERSION TYPE RUNTIME STATUS") + `default/k8sops-agent k8sops latest agent kubernetes-default deployed` + ` ` + (printf `%s%s` $P $cursor))) + (dict + "id" "prompts" + "icon" `` + "title" "Prompts" + "desc" "Publish a prompt once and every agent referencing it picks up the pinned tag. Review the change before it ships." + "bullets" (slice + "Tagged versions, pinned per agent" + "See which agents consume each version" + "Served to clients through the registry MCP server") + "termTitle" "~/prompts — arctl" + "termMeta" "registry: registry.acme.dev" + "lines" (slice + (printf `%s%s` $P (printf $cmd `arctl init prompt k8s-sre-operator --description "Careful Kubernetes operator"`)) + (printf `%sCreated prompt: k8s-sre-operator` $OK) + ` ` + (printf `%s%s` $P (printf $cmd "arctl apply -f k8s-sre-operator.yaml")) + (printf `%sPrompt/k8s-sre-operator (latest) created` $OK) + ` ` + (printf `%s%s` $P (printf $cmd "arctl get prompts")) + (printf $muted "NAME TAG DESCRIPTION") + `k8s-sre-operator latest System prompt for a careful Kubernetes operator...` + `k8s-platform-engineer latest System prompt for Helm, GitOps, and golden-path...` + ` ` + (printf `%s%s` $P (printf $cmd "arctl get prompt k8s-sre-operator -o yaml")) + (printf $muted "apiVersion: ar.dev/v1alpha1") + (printf $muted "kind: Prompt") + ` ` + (printf `%s%s` $P $cursor))) +-}} + +{{- /* Terminal pane: chrome bar + monospace body. `.` is an area dict. */ -}} +{{- define "partials/ar-terminal.html" }} +
+
+ + + + {{ .termTitle }} + +
+
+ {{- range .lines -}}
{{ . | safeHTML }}
{{- end }} +
+
+{{- end }} + + - + + +
-
-
-
-
-
- agentregistry -

Build. Deploy. Discover.

-

- One registry for MCP servers, agents, skills, and prompts. Curate the AI building blocks your team trusts, deploy them with one command, and wire them into every IDE. -

- +
+
+
+
+
+ +
+ agentregistry + +

Build. Deploy. Discover.

+

One Kubernetes-native registry for MCP servers, agents, skills, and prompts. Curate the AI building blocks your team trusts, then deploy them into your cluster through kagent with one command.

+
+ $ + helm install agentregistry oci://ghcr.io/agentregistry-dev/agentregistry/charts/agentregistry +
- - -
-
-
-
- ~/registry — arctl -
- Open source -
-
-
-
+ +
- -
-
-
-

One source for every AI building block.

-

Agents, MCP tools, skills, and prompts — all curated in one registry your team can search, version, and deploy with a single command.

-
- -
- -
- - agentregistry - - - - -
- - -
-

Agents

-

Identity, servers, skills, and prompts bundled into one deployable unit. Build, push, and version with arctl.

- - Read the docs - - + +
+
+ {{- range $i, $a := $areas }} +
+
+

+ + {{ $a.title | safeHTML }} +

+

{{ $a.desc }}

+
    + {{- range $a.bullets }} +
  • + + {{ . | safeHTML }} +
  • + {{- end }} +
+
+ {{- /* Inline pane for narrow screens; the sticky stack takes over on lg+. */}} +
{{ partial "ar-terminal.html" $a }}
+ {{- end }} +
+ {{- /* Sticky terminal stack. Panes share one grid cell so the stack is as + tall as the tallest pane — no fixed height, no empty space. */}} +
- -
-
-
-

A catalog your developers want to browse.

-

A built-in web UI to build, deploy, and create agents, servers, skills, and prompts — search the registry, kick off deployments, and track what's running, all without leaving the browser.

+ +
+
+
+

A catalog your developers want to browse.

+

Browse and search the catalog, manage artifacts, and deploy agents and MCP servers into a connected cluster — without leaving the browser.

-
-
-
-
localhost:12121 / catalog
-
+ {{- $views := slice + (dict "id" "servers" "label" "Servers" "icon" (index $areas 0).icon) + (dict "id" "skills" "label" "Skills" "icon" (index $areas 1).icon) + (dict "id" "agents" "label" "Agents" "icon" (index $areas 2).icon) + (dict "id" "prompts" "label" "Prompts" "icon" (index $areas 3).icon) + (dict "id" "deployed" "label" "Deployed" "icon" ``) + (dict "id" "details" "label" "Server details" "hidden" true) + (dict "id" "skills-detail" "label" "Skill details" "hidden" true) + (dict "id" "agents-detail" "label" "Agent details" "hidden" true) + (dict "id" "prompts-detail" "label" "Prompt details" "hidden" true) + (dict "id" "deploy-servers" "label" "Deploy a server" "hidden" true) + (dict "id" "deploy-servers-target" "label" "Deploy a server — choose target" "hidden" true) + (dict "id" "deploy-agents" "label" "Deploy an agent" "hidden" true) + (dict "id" "deploy-agents-target" "label" "Deploy an agent — choose target" "hidden" true) + (dict "id" "add-menu" "label" "Add menu" "hidden" true) + (dict "id" "add-server" "label" "Add a server" "hidden" true) + (dict "id" "add-server-package" "label" "Add a server — package" "hidden" true) + (dict "id" "add-skill" "label" "Add a skill" "hidden" true) + (dict "id" "add-agent" "label" "Add an agent" "hidden" true) + (dict "id" "add-prompt" "label" "Add a prompt" "hidden" true) + -}} + {{- /* Clickable regions on each screenshot, as % of the 1440x900 capture, + measured from the live UI. Clicking one swaps to the target view, so + the frame behaves like the real app. */ -}} + {{- $hot := dict + "servers" (slice + (dict "go" "servers" "label" "Servers tab" "l" 3.06 "t" 8.11 "w" 10.12 "h" 5.28) + (dict "go" "skills" "label" "Skills tab" "l" 13.45 "t" 8.11 "w" 8.89 "h" 5.28) + (dict "go" "agents" "label" "Agents tab" "l" 22.62 "t" 8.11 "w" 9.92 "h" 5.28) + (dict "go" "prompts" "label" "Prompts tab" "l" 32.81 "t" 8.11 "w" 10.66 "h" 5.28) + (dict "go" "deployed" "label" "Deployed" "l" 25.7 "t" 1.19 "w" 6.59 "h" 3.83) + (dict "go" "add-menu" "label" "Add" "l" 87.93 "t" 8.53 "w" 6.24 "h" 3.56) + (dict "go" "details" "label" "Open Kubernetes Cluster Inspector" "l" 3.0 "t" 71.6 "w" 86 "h" 8.0) + (dict "go" "deploy-servers" "label" "Deploy Knowledge Search" "l" 91.29 "t" 23.28 "w" 5.66 "h" 3.11)) + "skills" (slice + (dict "go" "servers" "label" "Servers tab" "l" 3.06 "t" 8.11 "w" 10.12 "h" 5.28) + (dict "go" "skills" "label" "Skills tab" "l" 13.45 "t" 8.11 "w" 8.89 "h" 5.28) + (dict "go" "agents" "label" "Agents tab" "l" 22.62 "t" 8.11 "w" 9.92 "h" 5.28) + (dict "go" "prompts" "label" "Prompts tab" "l" 32.81 "t" 8.11 "w" 10.66 "h" 5.28) + (dict "go" "deployed" "label" "Deployed" "l" 25.7 "t" 1.19 "w" 6.59 "h" 3.83) + (dict "go" "add-menu" "label" "Add" "l" 87.93 "t" 8.53 "w" 6.24 "h" 3.56) + (dict "go" "skills-detail" "label" "Open RFC Writer" "l" 3 "t" 29.5 "w" 90 "h" 9.5)) + "agents" (slice + (dict "go" "servers" "label" "Servers tab" "l" 3.06 "t" 8.11 "w" 10.12 "h" 5.28) + (dict "go" "skills" "label" "Skills tab" "l" 13.45 "t" 8.11 "w" 8.89 "h" 5.28) + (dict "go" "agents" "label" "Agents tab" "l" 22.62 "t" 8.11 "w" 9.92 "h" 5.28) + (dict "go" "prompts" "label" "Prompts tab" "l" 32.81 "t" 8.11 "w" 10.66 "h" 5.28) + (dict "go" "deployed" "label" "Deployed" "l" 25.7 "t" 1.19 "w" 6.59 "h" 3.83) + (dict "go" "add-menu" "label" "Add" "l" 87.93 "t" 8.53 "w" 6.24 "h" 3.56) + (dict "go" "agents-detail" "label" "Open costops" "l" 3 "t" 29.5 "w" 86 "h" 9.5) + (dict "go" "deploy-agents" "label" "Deploy costops" "l" 91.29 "t" 23.28 "w" 5.66 "h" 3.11)) + "prompts" (slice + (dict "go" "servers" "label" "Servers tab" "l" 3.06 "t" 8.11 "w" 10.12 "h" 5.28) + (dict "go" "skills" "label" "Skills tab" "l" 13.45 "t" 8.11 "w" 8.89 "h" 5.28) + (dict "go" "agents" "label" "Agents tab" "l" 22.62 "t" 8.11 "w" 9.92 "h" 5.28) + (dict "go" "prompts" "label" "Prompts tab" "l" 32.81 "t" 8.11 "w" 10.66 "h" 5.28) + (dict "go" "deployed" "label" "Deployed" "l" 25.7 "t" 1.19 "w" 6.59 "h" 3.83) + (dict "go" "add-menu" "label" "Add" "l" 87.93 "t" 8.53 "w" 6.24 "h" 3.56) + (dict "go" "prompts-detail" "label" "Open docs-technical-writer" "l" 3 "t" 29.5 "w" 90 "h" 9.5)) + "deployed" (slice + (dict "go" "servers" "label" "Catalog" "l" 19.75 "t" 1.19 "w" 5.67 "h" 3.83)) + "details" (slice + (dict "go" "servers" "label" "Close" "l" 94.2 "t" 0.8 "w" 3.4 "h" 4.6)) + "skills-detail" (slice + (dict "go" "skills" "label" "Close" "l" 94.2 "t" 0.8 "w" 3.4 "h" 4.6)) + "agents-detail" (slice + (dict "go" "agents" "label" "Close" "l" 94.2 "t" 0.8 "w" 3.4 "h" 4.6)) + "prompts-detail" (slice + (dict "go" "prompts" "label" "Close" "l" 94.2 "t" 0.8 "w" 3.4 "h" 4.6)) + "deploy-servers" (slice + (dict "go" "deploy-servers-target" "label" "Select target" "l" 36.81 "t" 43.56 "w" 26.38 "h" 4) + (dict "go" "servers" "label" "Cancel" "l" 46.98 "t" 63.33 "w" 5.51 "h" 4.44)) + "deploy-servers-target" (slice + (dict "go" "deploy-servers" "label" "Kubernetes" "l" 37.15 "t" 48.56 "w" 25.83 "h" 3.56) + (dict "go" "servers" "label" "Cancel" "l" 46.98 "t" 63.33 "w" 5.51 "h" 4.44)) + "deploy-agents" (slice + (dict "go" "deploy-agents-target" "label" "Select target" "l" 37.78 "t" 43.56 "w" 24.44 "h" 4) + (dict "go" "agents" "label" "Cancel" "l" 46.2 "t" 63.33 "w" 5.51 "h" 4.44)) + "deploy-agents-target" (slice + (dict "go" "deploy-agents" "label" "Kubernetes" "l" 38.13 "t" 48.56 "w" 23.89 "h" 3.56) + (dict "go" "agents" "label" "Cancel" "l" 46.2 "t" 63.33 "w" 5.51 "h" 4.44)) + "add-menu" (slice + (dict "go" "add-server" "label" "Add server" "l" 85.63 "t" 13.11 "w" 8.19 "h" 3.56) + (dict "go" "add-skill" "label" "Add skill" "l" 85.63 "t" 16.67 "w" 8.19 "h" 3.56) + (dict "go" "add-agent" "label" "Add agent" "l" 85.63 "t" 20.22 "w" 8.19 "h" 3.56) + (dict "go" "add-prompt" "label" "Add prompt" "l" 85.63 "t" 23.78 "w" 8.19 "h" 3.56) + (dict "go" "servers" "label" "Close menu" "l" 87.93 "t" 8.53 "w" 6.24 "h" 3.56)) + "add-server" (slice + (dict "go" "add-server-package" "label" "Add package" "l" 77.16 "t" 65.44 "w" 9.37 "h" 4) + (dict "go" "servers" "label" "Cancel" "l" 72.9 "t" 78.89 "w" 5.64 "h" 4.44)) + "add-server-package" (slice + (dict "go" "servers" "label" "Cancel" "l" 72.9 "t" 87.28 "w" 5.64 "h" 4.44)) + "add-skill" (slice + (dict "go" "servers" "label" "Cancel" "l" 59.21 "t" 77.89 "w" 5.64 "h" 4.44)) + "add-agent" (slice + (dict "go" "servers" "label" "Cancel" "l" 48.04 "t" 74.78 "w" 5.64 "h" 4.44)) + "add-prompt" (slice + (dict "go" "servers" "label" "Cancel" "l" 57.56 "t" 83 "w" 5.64 "h" 4.44)) + -}} + +
+
+ {{- range $i, $v := $views }}{{ if not $v.hidden }} + + {{- end }}{{ end }}
- -
-
- agentregistry +
+
+ + + +
registry.acme.dev / catalog / servers
-
- - -
-
- + {{- range $i, $v := $views }} +
+ The agentregistry web UI — {{ $v.label }} + + {{- range (index $hot $v.id) }} + + {{- end }}
+ {{- end }}
- -
-
-
-
- - -
-
-
-

Curate centrally. Ship locally.

-

Platform teams stay in control of what's approved; developers get one place to discover and deploy. The same registry powers both.

+

Click around the window — tabs, rows, Deploy, and Add all work like the real UI.

-
-
-
FOR ORGANIZATIONS
-

Curate & deploy.

-

Package, collect, and enrich AI artifacts from any source — into a single registry your whole company can trust.

-
    -
  • Approve agents, servers, and skills before company-wide deployment
  • -
  • Add metadata that helps assess trustworthiness and security
  • -
  • Same source of truth across local dev and Kubernetes
  • -
  • Verified-org and verified-publisher signals built in
  • -
-
-
1Import
-
2Enrich
-
3Curate
-
4Publish
-
5Deploy
-
- Read the platform guide → +
+
+ Registry UI + Browse the catalog, manage artifacts, deploy agents and MCP servers.
- -
-
FOR DEVELOPERS
-

Build & publish.

-

Scaffold, test, publish, and deploy AI artifacts with minimal dependencies and no manual IDE wiring.

-
    -
  • Scaffold with arctl init agent or arctl init skill
  • -
  • Publish with a single arctl apply
  • -
  • Pull and run anywhere — laptop, kind cluster, or prod
  • -
  • Auto-configure Claude Desktop, Cursor, and VS Code
  • -
-
-
1Build
-
2Push
-
3Pull
-
4Run
-
- Read the developer guide → -
-
-
-
- - -
-
-
-
-
-
1
-
-

Install the CLI

-

One-line install. arctl drops into your $PATH and starts the local daemon on first run.

-
-
-
-
2
-
-

Start the daemon

-

Any arctl command boots the registry. The web UI is exposed automatically.

-
-
-
-
3
-
-

Open the UI & deploy

-

Visit localhost:12121 and deploy any approved server or agent. Your IDE picks it up through the gateway.

-
-
-
-
-
-

Configure your IDE

-

Run arctl configure cursor (or vscode, claude) and you're done. New deployments are picked up automatically.

-
-
+
+ arctl CLI + Scaffold, build, publish, pull, deploy — and script it all in CI/CD.
- -
-
- - # 1. Install the CLI
- curl -fsSL https://raw.githubusercontent.com/agentregistry-dev/agentregistry/main/scripts/get-arctl | bash
-
- # 2. Start the daemon
- arctl daemon start
- ✓ daemon running · http://localhost:12121
-
- # 3. Verify it's up
- arctl version
-
- # 4. Open the UI
- open http://localhost:12121
-
- # 5. Wire it into your IDE
- arctl configure cursor
- ✓ Cursor configured · 7 servers, 3 agents available -
+
+ REST API + The same capabilities as the UI and CLI, for your own portals.
- -
-
-
-

One secure endpoint for every approved server.

-

Instead of exposing each MCP server, agentregistry routes everything through agentgateway — an AI-native reverse proxy. Your clients connect to one URL, gateway enforces auth, and new deployments are picked up automatically.

-
- -
- -
- - - Cursor - - - - VS Code - - - - Claude Code - - - - OpenCode - - - - arctl CLI - - - - Any MCP client - -
- -
- - -
- -
Secure AI endpoint
-
Single MCP endpoint · LLM Gateway · Tool routing · Auth
-
- -
- - -
-
-
- - agentregistry -
-
Registry server · Web UI
Enrichment · Governance
-
- -
-
-
- -
- Agents + +
+
+
+

Ship your first agent in five minutes.

+

Install the control plane with Helm, connect kagent as a runtime, then deploy an approved MCP server from the UI. Your IDE picks it up through the registry MCP server.

+
    +
  1. + 01 +
    + Install on Kubernetes + Helm installs the registry server and PostgreSQL into the agentregistry namespace.
    -
    -
    - -
    - Skills +
  2. +
  3. + 02 +
    + Connect a runtime + Install kagent in the cluster. The built-in kubernetes-default runtime deploys agents and MCP servers through it.
    -
    -
    - -
    - MCP servers +
  4. +
  5. + 03 +
    + Open the UI and deploy + Port-forward 12121, browse the catalog, deploy anything approved.
    -
    -
    - -
    - Prompts +
  6. +
  7. + 04 +
    + Configure your IDE + Run arctl configure cursor --port 31313 — or vscode, claude-code, kiro.
    -
-
- -
- - -
- Docker - Kubernetes - Any cloud -
+ + + Read the full quickstart
- -
-
- - -
-
-
-

Frequently asked questions

-
- -
-
- -

An open-source platform that gives your team one place to find, manage, and run MCP servers, AI agents, skills, and prompts. You import or publish artifacts once, and anyone on the team can discover them, deploy them with one command, and have their IDE configured automatically.

-
- -
- -

agentregistry doesn't replace those — it sits on top of them. It pulls MCP servers from npm, PyPI, OCI, or remote endpoints into a single curated catalog with versioning, enrichment scores, verified publishers, and a one-command deploy path. Plus it ships with the agentgateway integration that makes those artifacts actually usable from Claude, Cursor, and VS Code.

+
+
+ + + + ~ — arctl +
- -
- -

Both — the workflow is identical. Locally, arctl brings up the daemon, web UI, and gateway via Docker Compose. For shared environments, deploy the same components into Kubernetes with the Helm chart. The same registry data and deployment YAML work in both places.

-
- -
- -

A blueprint is the versioned record of what an agent is — its identity, the MCP servers it needs, the skills it uses, and how it should be configured. A deployment is a running instance of that blueprint, scheduled into a specific environment with credentials and gateway routing wired up.

-
- -
- -

Yes. You can register servers from any internal OCI registry, npm proxy, private repo, or HTTP endpoint. The same governance and gateway flow applies — no public publishing required.

-
- -
- -

Yes — Apache 2.0. The CLI, daemon, web UI, and Helm chart are all in the agentregistry-dev/agentregistry repo. Contributions, issues, and feature requests are welcome.

+
+
# 1. Install the control plane
+
{{ $P | safeHTML }}helm install agentregistry \
+
oci://ghcr.io/agentregistry-dev/agentregistry/charts/agentregistry \
+
--namespace agentregistry --create-namespace
+
{{ $OK | safeHTML }}registry server ready · postgres ready
+
+
# 2. Verify the kagent-backed runtime
+
{{ $P | safeHTML }}arctl get runtimes
+
NAME TYPE
+
kubernetes-default Kubernetes
+
+
# 3. Open the UI and the registry MCP server
+
{{ $P | safeHTML }}kubectl port-forward -n agentregistry svc/agentregistry 12121 31313
+
ui: http://localhost:12121
+
mcp: http://localhost:31313
+
+
# 4. Wire it into your IDE
+
{{ $P | safeHTML }}arctl configure cursor --port 31313
+
{{ $OK | safeHTML }}cursor configured for http://localhost:31313/mcp
+
+
{{ $P | safeHTML }}{{ $cursor | safeHTML }}
- -
-
-
-
-
- Get started -

Ship your first agent in five minutes.

-

Install the CLI, open the web UI, deploy an approved MCP server. Your IDE is wired up automatically through the gateway.

- -
-
- curl -fsSL aregistry.ai/install | bash
- arctl version
- agentregistry v0.9.0 · daemon running
- web ui: http://localhost:12121
- arctl configure cursor
- ✓ 7 servers, 3 agents available -
-
+ +
+
+

One control plane for every AI building block.

+

Install once, connect your clusters, and give every developer one place to discover and deploy.

+
+
-