From 83c46ce0eb3128dd928669c1da99506e09b219d6 Mon Sep 17 00:00:00 2001 From: Mariusz Sabath Date: Fri, 30 Oct 2026 11:18:15 -0400 Subject: [PATCH 1/5] Feat: pivot the landing page to the project directory Replace the 'Platform primitives / RossoCortex data plane' narrative with a project-focused landing page: an org-level intro plus three groups of project cards (core projects, research collaborations, automation & repo maintenance). Each card carries only the essence of the project and links to its repository, where the details, instructions, and examples live. The earlier platform direction stays on the page as a 'Past activities' section: the data-plane functions and services cards return as a historical record (shipped through v0.8), each pointing at the repository where that work lives today (RossoCortex is renamed to cortex throughout). The old landing page is additionally archived as a draft backup (welcome-platform-story.mdx), and the site tagline is updated to match the new focus. Assisted-By: Claude (Anthropic AI) Signed-off-by: Mariusz Sabath --- docusaurus.config.ts | 2 +- ecosystem/welcome-platform-story.mdx | 148 ++++++++++++++ ecosystem/welcome.mdx | 182 +++++++++++++++--- src/components/Accordion/index.tsx | 19 ++ src/components/Accordion/styles.module.css | 28 +++ src/components/ProjectCards/index.tsx | 54 ++++++ src/components/ProjectCards/styles.module.css | 61 ++++++ 7 files changed, 465 insertions(+), 29 deletions(-) create mode 100644 ecosystem/welcome-platform-story.mdx create mode 100644 src/components/ProjectCards/index.tsx create mode 100644 src/components/ProjectCards/styles.module.css diff --git a/docusaurus.config.ts b/docusaurus.config.ts index f7f49ba..13d4ffa 100644 --- a/docusaurus.config.ts +++ b/docusaurus.config.ts @@ -26,7 +26,7 @@ const LATEST_VERSION = releasedVersions[0]; const config: Config = { title: 'rossoctl', tagline: - 'A framework-neutral, scalable, secure platform for deploying, securing, and governing AI agents.', + 'Open source infrastructure for running, connecting, and benchmarking AI agents.', favicon: 'img/favicon.svg', // Note: the `future.v4`/`experimental_faster` (Rspack) bundler is intentionally diff --git a/ecosystem/welcome-platform-story.mdx b/ecosystem/welcome-platform-story.mdx new file mode 100644 index 0000000..47f59c5 --- /dev/null +++ b/ecosystem/welcome-platform-story.mdx @@ -0,0 +1,148 @@ +--- +draft: true +sidebar_label: Welcome (platform narrative, archived) +--- + + + +import Link from '@docusaurus/Link'; +import Accordion from '@site/src/components/Accordion'; +import ArchitectureDiagram from '@site/src/components/ArchitectureDiagram'; + +export const cortexFunctions = [ + { + number: '01', + status: 'Ready', + title: 'Agent identity', + description: + 'Every agent carries a verifiable identity, so the platform knows who is acting before it decides what they may do.', + }, + { + number: '02', + status: 'Ready', + title: 'Authorization and access', + description: + 'Agents run with least privilege and act by delegation, never with more authority than the user and the agent both hold.', + }, + { + number: '03', + status: 'beta in 0.7', + title: 'Intent-based access', + description: + "Access is tied to what the user actually asked for, so an agent that drifts off task can't quietly reuse its access for something else.", + }, + { + number: '04', + status: 'beta in 0.7', + title: 'Tool semantic validation', + description: + "Tool calls are checked for correctness and meaning before they run, catching calls that are malformed or don't match the task.", + }, + { + number: '05', + status: 'alpha in 0.7', + title: 'Context compaction', + description: + "The platform assembles and trims what goes into the model's context, keeping it relevant and lowering token cost.", + }, + { + number: '06', + status: 'alpha in 0.7', + title: 'Data-flow analysis', + description: + 'The platform tracks where the data behind a decision came from, so its provenance can gate what the agent does next.', + }, + { + number: '07', + status: 'beta in 0.7', + title: 'Failure recovery', + description: + 'The platform detects when an agent stalls or fails and returns it to a known state instead of leaving work half-finished.', + }, + { + number: '08', + status: 'beta in 0.7', + title: 'User interaction', + description: + 'For high-stakes steps, a person stays in the loop and approves before the agent acts.', + }, +]; + +export const rossoctlServices = [ + { + number: '01', + title: 'Skills', + description: + 'Reusable, governed capabilities an agent can draw on, versioned and controlled rather than pasted in.', + }, + { + number: '02', + title: 'Platform Tools', + description: + 'Standalone tools the platform provides to strengthen agent and platform governance, security, resilience, reliability and efficiency, so each concern is handled once by the platform instead of rebuilt in every agent.', + }, + { + number: '03', + title: 'Memory', + description: + "Durable memory that survives sessions and restarts, so an agent doesn't start from nothing each time.", + }, + { + number: '04', + title: 'Knowledge base', + description: + 'Shared, queryable knowledge agents use to ground their work in your own data.', + }, + { + number: '05', + title: 'Sandboxes', + description: + 'Isolated environments to run untrusted or self-modifying agents without risking the host or other tenants.', + }, +]; + +
+ +# Platform primitives for trustworthy AI agents + +
+ +rossoctl is a set of platform primitives for agent security, resilience, reliability and efficiency that +platform owners can build on. It comes in three parts: RossoCortex, a data plane that mediates +what agents do, a set of services agents can call and a set of tools and frameworks for observability, +security, governance and administration. It's open source, framework-neutral, +and built on open standards, supporting A2A and MCP. + +
+ +
+ {/* Primary CTAs point at the project repos (docs hidden pre-launch). */} + Get started +
+ + + +## The problem + +AI agents don't behave like the cloud applications we know how to run. They decide which tools to call while they run, they don't cleanly separate data from instructions, their goals drift as context changes, and they can't reliably report what they did. Those traits make the ordinary demands of production hard to meet: failure recovery, admission control, security, and resource management. + +Agent systems fail in ways enterprise architecture wasn't built for, so they need a platform to supply the guarantees they can't supply themselves. Kubernetes solved the same kind of problem for cloud software by separating application logic from placement, scaling, and recovery. An agent platform needs an analogous split: decouple agent logic from the guarantees around admission, isolation, and failure recovery that production demands. + +## RossoCortex, the data plane + +RossoCortex is an intercept. It sits transparently between an agent and everything external it touches: models, tools, users, and other agents. From that one vantage point it enforces the guarantees agents can't enforce for themselves. It is flexible by design: it works with different agent types, including black-box harnesses, integrates with different sandboxes, and works across container network choices. + + + +## Rossoctl services + +The services are the building blocks agents need to do real work: skills, tools, memory, knowledge bases, and sandboxes. The focus is on capabilities that lower the risk of agentic workloads and use resources more efficiently. + + + +
diff --git a/ecosystem/welcome.mdx b/ecosystem/welcome.mdx index 31c4bbc..18baa69 100644 --- a/ecosystem/welcome.mdx +++ b/ecosystem/welcome.mdx @@ -6,137 +6,263 @@ title: Welcome to rossoctl import Link from '@docusaurus/Link'; import Accordion from '@site/src/components/Accordion'; -import ArchitectureDiagram from '@site/src/components/ArchitectureDiagram'; +import ProjectCards from '@site/src/components/ProjectCards'; -export const cortexFunctions = [ +export const coreProjects = [ + { + name: 'Moca', + repo: 'rossoctl/moca', + description: + 'A dense, warm process-manager runtime for stateful AI coding agents — sessions resume exactly where they left off. Agent state is durable, tool execution runs in isolated sandboxes, and one supervisor serves many sessions per warm worker.', + }, + { + name: 'Cortex', + repo: 'rossoctl/cortex', + description: + "See what your coding agent actually sends — and pay less for it. A proxy in the agent's request path that shows every model call, tool call, and cost as it happens, and strips the tool definitions the agent never calls. Cortex Local runs on individual, end-user machines; Cortex Remote, deployed along the harness, is being explored.", + }, + { + name: 'Eventing', + repo: 'rossoctl/eventing-lab', + description: + 'The signed-event agent wake path: a Kafka message wakes a coding agent, and every step of its run streams back out as CloudEvents — with identity and signing on the event path.', + }, + { + name: 'AutoBench', + repo: 'rossoctl/autobench', + description: + "Automated benchmarking of agentic AI workloads: deploys a benchmark workload — a tool-calling agent paired with the benchmark's MCP server — runs it, collects per-task telemetry, and publishes the results as durable artifacts.", + links: [{label: 'autobench-claudecode', href: 'https://github.com/rossoctl/autobench-claudecode'}], + }, + { + name: 'State management', + repo: 'rossoctl/state-lab', + description: + 'Where agent state lives, who owns it, and what happens when a process dies mid-task — demo flows exploring durability and passability for distributed agents.', + }, +]; + +export const contextGovernanceProjects = [ + { + name: 'Context Guru', + repo: 'rossoctl/context-guru', + description: + 'Provider-agnostic context engineering for LLM agents — lower token cost and latency without sacrificing accuracy. Ships as plugins for Claude Code and Codex.', + links: [{label: 'project site', href: 'https://rossoctl.github.io/context-guru/'}], + }, + { + name: 'AIAC', + repo: 'rossoctl/aiac', + description: + 'AI-based access control: translates natural-language policy into enforced permissions on OPA, driven by Keycloak identities.', + }, + { + name: 'Data governance', + repo: 'rossoctl/lab-data-governance', + description: + 'Data-aware governance and security: observes how data flows across agents, tools, and sessions, and derives interactions, payload classifications, and data lineage from the raw stream.', + }, + { + name: 'Context Service', + repo: 'rossoctl/context-service', + description: + 'Agent context infrastructure: durable storage and lifecycle management for agent state, memory, knowledge, workspaces, and artifacts — for local harnesses and container-native platforms alike.', + }, +]; + +export const automationProjects = [ + { + name: 'Automation', + repo: 'rossoctl/automation', + description: + 'Automated maintenance programs for the rossoctl org, built on a scanner/fixer pattern.', + }, + { + name: 'RepoMan', + repo: 'rossoctl/repoman', + description: + 'Automated maintenance programs — PR review, link health, dependency bumps, weekly reports — across GitHub repos you enroll once. Install once, enable programs on the fly.', + }, +]; + +{/* Historical cards: the data-plane functions and services from the earlier + platform direction (shipped through v0.8). Where the work continues, `now` + points at the repository it lives in today; `discontinued` marks the rest. */} +export const pastDataPlane = [ { number: '01', - status: 'Ready', title: 'Agent identity', description: 'Every agent carries a verifiable identity, so the platform knows who is acting before it decides what they may do.', + now: 'rossoctl/cortex', }, { number: '02', - status: 'Ready', title: 'Authorization and access', description: 'Agents run with least privilege and act by delegation, never with more authority than the user and the agent both hold.', + now: 'rossoctl/cortex', }, { number: '03', - status: 'beta in 0.7', title: 'Intent-based access', description: "Access is tied to what the user actually asked for, so an agent that drifts off task can't quietly reuse its access for something else.", + now: 'rossoctl/aiac', }, { number: '04', - status: 'beta in 0.7', title: 'Tool semantic validation', description: "Tool calls are checked for correctness and meaning before they run, catching calls that are malformed or don't match the task.", + discontinued: true, }, { number: '05', - status: 'alpha in 0.7', title: 'Context compaction', description: "The platform assembles and trims what goes into the model's context, keeping it relevant and lowering token cost.", + now: 'rossoctl/context-guru', }, { number: '06', - status: 'alpha in 0.7', title: 'Data-flow analysis', description: 'The platform tracks where the data behind a decision came from, so its provenance can gate what the agent does next.', + now: 'rossoctl/lab-data-governance', }, { number: '07', - status: 'beta in 0.7', title: 'Failure recovery', description: 'The platform detects when an agent stalls or fails and returns it to a known state instead of leaving work half-finished.', + now: 'rossoctl/moca', }, { number: '08', - status: 'beta in 0.7', title: 'User interaction', description: 'For high-stakes steps, a person stays in the loop and approves before the agent acts.', + now: 'rossoctl/eventing-lab', }, ]; -export const rossoctlServices = [ +export const pastServices = [ { number: '01', title: 'Skills', description: 'Reusable, governed capabilities an agent can draw on, versioned and controlled rather than pasted in.', + now: 'rossoctl/repoman', }, { number: '02', title: 'Platform Tools', description: 'Standalone tools the platform provides to strengthen agent and platform governance, security, resilience, reliability and efficiency, so each concern is handled once by the platform instead of rebuilt in every agent.', + discontinued: true, }, { number: '03', title: 'Memory', description: "Durable memory that survives sessions and restarts, so an agent doesn't start from nothing each time.", + now: 'rossoctl/context-service', }, { number: '04', title: 'Knowledge base', description: 'Shared, queryable knowledge agents use to ground their work in your own data.', + now: 'rossoctl/context-service', }, { number: '05', title: 'Sandboxes', description: 'Isolated environments to run untrusted or self-modifying agents without risking the host or other tenants.', + now: 'rossoctl/moca', }, ];
-# Platform primitives for trustworthy AI agents +# Agent infrastructure, built in the open
-rossoctl is a set of platform primitives for agent security, resilience, reliability and efficiency that -platform owners can build on. It comes in three parts: RossoCortex, a data plane that mediates -what agents do, a set of services agents can call and a set of tools and frameworks for observability, -security, governance and administration. It's open source, framework-neutral, -and built on open standards, supporting A2A and MCP. +rossoctl is an open source research project building the infrastructure AI coding agents need to run +for real: a dense runtime where sessions resume exactly where they left off, a proxy that shows what +your coding agent sends and what it costs, an event-driven wake path, automated benchmarking, and +state management for distributed agents. Around that core we work on context, access control, and +data governance, and we run the org itself on the automation we build.
- {/* Primary CTAs point at the project repos (docs hidden pre-launch). */} Get started + + GitHub +
- +## Core projects + +The projects we are actively building and shipping. + + + +## Context & governance + +Context, access control, and data governance for agent workloads. + + + +## Automation & repo maintenance + +The automation that keeps the org and its repositories healthy. + + + +## Past activities + +Our earlier platform direction, shipped through v0.8: a data plane that mediated what agents do, +and a set of services agents could call. The cards below are the historical record — where the work +continues, each card points at the repository it lives in today; the rest we decided not to continue. -## The problem +### The data plane (Rosso Cortex) -AI agents don't behave like the cloud applications we know how to run. They decide which tools to call while they run, they don't cleanly separate data from instructions, their goals drift as context changes, and they can't reliably report what they did. Those traits make the ordinary demands of production hard to meet: failure recovery, admission control, security, and resource management. +An intercept sitting transparently between an agent and everything external it touches: models, +tools, users, and other agents. From that one vantage point it enforced the guarantees agents +can't enforce for themselves. -Agent systems fail in ways enterprise architecture wasn't built for, so they need a platform to supply the guarantees they can't supply themselves. Kubernetes solved the same kind of problem for cloud software by separating application logic from placement, scaling, and recovery. An agent platform needs an analogous split: decouple agent logic from the guarantees around admission, isolation, and failure recovery that production demands. + -## RossoCortex, the data plane +### Services -RossoCortex is an intercept. It sits transparently between an agent and everything external it touches: models, tools, users, and other agents. From that one vantage point it enforces the guarantees agents can't enforce for themselves. It is flexible by design: it works with different agent types, including black-box harnesses, integrates with different sandboxes, and works across container network choices. +The building blocks agents needed to do real work: skills, tools, memory, knowledge bases, and +sandboxes. - + -## Rossoctl services +### The old repositories -The services are the building blocks agents need to do real work: skills, tools, memory, knowledge bases, and sandboxes. The focus is on capabilities that lower the risk of agentic workloads and use resources more efficiently. +The repositories that carried this direction are archived — read-only, but still available: - +| Repository | What it was | +| --- | --- | +| [operator](https://github.com/rossoctl/operator) | Kubernetes operator for deploying and lifecycle management of agents and tools | +| [examples](https://github.com/rossoctl/examples) | Sample agents and tools for the rossoctl platform | +| [OpenShell](https://github.com/rossoctl/OpenShell) | The safe, private runtime for autonomous agents — the sandbox layer | +| [openshell-driver-openshift](https://github.com/rossoctl/openshell-driver-openshift) | OpenShell compute driver that provisioned agent sandboxes on OpenShift | +| [openshell-credentials-keycloak](https://github.com/rossoctl/openshell-credentials-keycloak) | OpenShell credentials driver for Keycloak | +| [workload-harness](https://github.com/rossoctl/workload-harness) | Tools for generating workloads against agents | +| [lab-runtime-simulation](https://github.com/rossoctl/lab-runtime-simulation) | Virtual MCP server for validating tool calling before and during runtime | +| [lab-clear](https://github.com/rossoctl/lab-clear) | Trajectory analysis and deep insights on agent failures | +| [DEPRECATED-kagenti-bundle-service](https://github.com/rossoctl/DEPRECATED-kagenti-bundle-service) | Bridged Kubernetes-native policy definitions to the OPA bundle protocol |
diff --git a/src/components/Accordion/index.tsx b/src/components/Accordion/index.tsx index 688fd3a..1b0f113 100644 --- a/src/components/Accordion/index.tsx +++ b/src/components/Accordion/index.tsx @@ -6,12 +6,19 @@ import styles from './styles.module.css'; // rotating chevron, row dividers, and the first item open by default. `redTitles` // renders the item titles in the question-title red (#ef3030). An optional // `status` renders a Ready / In progress / Next pill on the right of the row. +// An optional `now` (a repo path such as 'rossoctl/cortex') renders a muted +// "→ repo" link on the right of the row instead — used by the historical +// "Past activities" cards to point at where the work lives today. export type AccordionItem = { number: string; title: string; description?: string; status?: 'Ready' | 'In progress' | 'Next'; + now?: string; + // Marks a historical card whose work we decided not to continue; renders a + // muted "discontinued" tag where continuing cards carry their "→ repo" link. + discontinued?: boolean; }; // Map a status label to its pill style. @@ -84,6 +91,18 @@ export default function Accordion({ {item.status} )} + {item.now && ( + + → {item.now.split('/')[1]} + + )} + {item.discontinued && ( + discontinued + )} ); diff --git a/src/components/Accordion/styles.module.css b/src/components/Accordion/styles.module.css index 5ce2450..23a5a1a 100644 --- a/src/components/Accordion/styles.module.css +++ b/src/components/Accordion/styles.module.css @@ -88,6 +88,34 @@ transform: rotate(-90deg); } +/* "→ repo" pointer on the right of a row (Past activities cards): small, + muted, external link to where the work lives today. */ +.nowLink { + flex-shrink: 0; + align-self: flex-start; + margin-top: 0.35rem; + font-size: 0.8rem; + line-height: 1.4; + white-space: nowrap; + color: var(--ifm-color-emphasis-800); +} +.nowLink:hover { + color: var(--ifm-color-primary); + text-decoration: none; +} + +/* "discontinued" tag for historical cards whose work did not continue. */ +.discontinued { + flex-shrink: 0; + align-self: flex-start; + margin-top: 0.35rem; + font-size: 0.8rem; + line-height: 1.4; + white-space: nowrap; + color: var(--ifm-color-emphasis-600); + font-style: italic; +} + /* Status pill on the right of a row: Ready / In progress / Next. Colors are semantic (not brand) and have light + dark variants for legibility. */ .pill { diff --git a/src/components/ProjectCards/index.tsx b/src/components/ProjectCards/index.tsx new file mode 100644 index 0000000..081108d --- /dev/null +++ b/src/components/ProjectCards/index.tsx @@ -0,0 +1,54 @@ +import React, {type ReactNode} from 'react'; +import styles from './styles.module.css'; + +// Project card grid for the landing page's project directory. Each card names +// a focus project (the name links to its GitHub repository, where the details, +// instructions, and examples live), carries a one- to two-line essence of what +// the project does, and optionally lists further links — sibling repos in a +// family, a project site — in a muted footer row. + +export type ProjectLink = { + label: string; + href: string; +}; + +export type ProjectCard = { + name: string; + // GitHub repository path, e.g. 'rossoctl/moca'; the card title links there. + repo: string; + description: string; + links?: ProjectLink[]; +}; + +export default function ProjectCards({items}: {items: ProjectCard[]}): ReactNode { + return ( +
+ {items.map((item) => ( +
+

+ + {item.name} + +

+

{item.description}

+ {item.links && item.links.length > 0 && ( +
+ {item.links.map((link) => ( + + {link.label} ↗ + + ))} +
+ )} +
+ ))} +
+ ); +} diff --git a/src/components/ProjectCards/styles.module.css b/src/components/ProjectCards/styles.module.css new file mode 100644 index 0000000..e12c704 --- /dev/null +++ b/src/components/ProjectCards/styles.module.css @@ -0,0 +1,61 @@ +/* Project card grid (landing page). Two cards per row inside the 672px + .rosso-landing column, collapsing to one on narrow screens. Aesthetic follows + the site tokens: 1px emphasis border, brand-red card title, muted footer + links, IBM Plex inherited from the doc theme. */ + +.grid { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); + gap: 1rem; + margin-top: 1.25rem; +} + +.card { + display: flex; + flex-direction: column; + gap: 0.6rem; + padding: 1.15rem 1.25rem 1rem; + border: 1px solid var(--ifm-color-emphasis-300); + border-radius: 8px; + background: var(--ifm-background-color); +} + +.name { + margin: 0; + font-size: 1.0625rem; + font-weight: 600; + line-height: 1.3; +} + +.name a { + color: var(--ifm-color-primary); +} + +.name a:hover { + text-decoration: underline; + text-underline-offset: 2px; +} + +.desc { + flex-grow: 1; + margin: 0; + font-size: 0.95rem; + line-height: 1.55; + color: var(--ifm-font-color-base); +} + +.links { + display: flex; + flex-wrap: wrap; + gap: 0.25rem 1.1rem; + font-size: 0.8rem; +} + +.links a { + color: var(--ifm-color-emphasis-800); + white-space: nowrap; +} + +.links a:hover { + color: var(--ifm-color-primary); +} From d9ee32242d19391e8b398d73baa4da2d2491fffa Mon Sep 17 00:00:00 2001 From: Mariusz Sabath Date: Fri, 30 Oct 2026 18:07:01 -0400 Subject: [PATCH 2/5] Fix: match the GitHub CTA height and repair the landing page edit link The GitHub button next to Get started rendered taller than its neighbour: MDX parsed the multi-line JSX children as a markdown paragraph inside the link, adding paragraph spacing inside the button. Write the Link on a single line so both CTAs render identically. The ecosystem plugin's editUrl now points at this repo instead of the archived rossoctl/ecosystem-guide, so the landing page's "Edit this page" link resolves (it previously 404'd on a doubled path). Assisted-By: Claude (Anthropic AI) Signed-off-by: Mariusz Sabath --- docusaurus.config.ts | 9 +++++++-- ecosystem/welcome.mdx | 8 +------- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/docusaurus.config.ts b/docusaurus.config.ts index 13d4ffa..0f670d5 100644 --- a/docusaurus.config.ts +++ b/docusaurus.config.ts @@ -199,8 +199,13 @@ const config: Config = { path: 'ecosystem', routeBasePath: '/', sidebarPath: './sidebarsEcosystem.ts', - editUrl: - 'https://github.com/rossoctl/ecosystem-guide/tree/main/content/', + // "Edit this page" must point at THIS repo: the ecosystem pages (the + // landing page among them) are authored here, not in the archived + // rossoctl/ecosystem-guide this instance was originally seeded from. + // Docusaurus appends the doc's site-relative path (e.g. + // 'ecosystem/welcome.mdx') to a string editUrl, so the base is the + // repo root — no 'ecosystem/' segment here, or it doubles. + editUrl: 'https://github.com/rossoctl/.github/tree/main/', }, ], // Copies cortex/ (synced by scripts/sync-docs.sh) to build/cortex/, so diff --git a/ecosystem/welcome.mdx b/ecosystem/welcome.mdx index 18baa69..11db094 100644 --- a/ecosystem/welcome.mdx +++ b/ecosystem/welcome.mdx @@ -201,13 +201,7 @@ data governance, and we run the org itself on the automation we build.
Get started - - GitHub - + GitHub
## Core projects From 075f4e3897fae97d8ad3745bbee68163520fb9a6 Mon Sep 17 00:00:00 2001 From: Mariusz Sabath Date: Fri, 30 Oct 2026 18:25:19 -0400 Subject: [PATCH 3/5] Docs: drop the Past activities section from the landing page The historical data-plane/services cards and the archived-repositories table are gone from the page. The pre-pivot narrative remains available in the repo as the draft backup (welcome-platform-story.mdx). Reverts the Accordion now/discontinued extensions, which existed only to render those cards; the component is back to its pre-PR shape. Assisted-By: Claude (Anthropic AI) Signed-off-by: Mariusz Sabath --- ecosystem/welcome.mdx | 138 --------------------- src/components/Accordion/index.tsx | 19 --- src/components/Accordion/styles.module.css | 28 ----- 3 files changed, 185 deletions(-) diff --git a/ecosystem/welcome.mdx b/ecosystem/welcome.mdx index 11db094..fc31448 100644 --- a/ecosystem/welcome.mdx +++ b/ecosystem/welcome.mdx @@ -5,7 +5,6 @@ title: Welcome to rossoctl --- import Link from '@docusaurus/Link'; -import Accordion from '@site/src/components/Accordion'; import ProjectCards from '@site/src/components/ProjectCards'; export const coreProjects = [ @@ -85,106 +84,6 @@ export const automationProjects = [ }, ]; -{/* Historical cards: the data-plane functions and services from the earlier - platform direction (shipped through v0.8). Where the work continues, `now` - points at the repository it lives in today; `discontinued` marks the rest. */} -export const pastDataPlane = [ - { - number: '01', - title: 'Agent identity', - description: - 'Every agent carries a verifiable identity, so the platform knows who is acting before it decides what they may do.', - now: 'rossoctl/cortex', - }, - { - number: '02', - title: 'Authorization and access', - description: - 'Agents run with least privilege and act by delegation, never with more authority than the user and the agent both hold.', - now: 'rossoctl/cortex', - }, - { - number: '03', - title: 'Intent-based access', - description: - "Access is tied to what the user actually asked for, so an agent that drifts off task can't quietly reuse its access for something else.", - now: 'rossoctl/aiac', - }, - { - number: '04', - title: 'Tool semantic validation', - description: - "Tool calls are checked for correctness and meaning before they run, catching calls that are malformed or don't match the task.", - discontinued: true, - }, - { - number: '05', - title: 'Context compaction', - description: - "The platform assembles and trims what goes into the model's context, keeping it relevant and lowering token cost.", - now: 'rossoctl/context-guru', - }, - { - number: '06', - title: 'Data-flow analysis', - description: - 'The platform tracks where the data behind a decision came from, so its provenance can gate what the agent does next.', - now: 'rossoctl/lab-data-governance', - }, - { - number: '07', - title: 'Failure recovery', - description: - 'The platform detects when an agent stalls or fails and returns it to a known state instead of leaving work half-finished.', - now: 'rossoctl/moca', - }, - { - number: '08', - title: 'User interaction', - description: - 'For high-stakes steps, a person stays in the loop and approves before the agent acts.', - now: 'rossoctl/eventing-lab', - }, -]; - -export const pastServices = [ - { - number: '01', - title: 'Skills', - description: - 'Reusable, governed capabilities an agent can draw on, versioned and controlled rather than pasted in.', - now: 'rossoctl/repoman', - }, - { - number: '02', - title: 'Platform Tools', - description: - 'Standalone tools the platform provides to strengthen agent and platform governance, security, resilience, reliability and efficiency, so each concern is handled once by the platform instead of rebuilt in every agent.', - discontinued: true, - }, - { - number: '03', - title: 'Memory', - description: - "Durable memory that survives sessions and restarts, so an agent doesn't start from nothing each time.", - now: 'rossoctl/context-service', - }, - { - number: '04', - title: 'Knowledge base', - description: - 'Shared, queryable knowledge agents use to ground their work in your own data.', - now: 'rossoctl/context-service', - }, - { - number: '05', - title: 'Sandboxes', - description: - 'Isolated environments to run untrusted or self-modifying agents without risking the host or other tenants.', - now: 'rossoctl/moca', - }, -]; -
# Agent infrastructure, built in the open @@ -222,41 +121,4 @@ The automation that keeps the org and its repositories healthy. -## Past activities - -Our earlier platform direction, shipped through v0.8: a data plane that mediated what agents do, -and a set of services agents could call. The cards below are the historical record — where the work -continues, each card points at the repository it lives in today; the rest we decided not to continue. - -### The data plane (Rosso Cortex) - -An intercept sitting transparently between an agent and everything external it touches: models, -tools, users, and other agents. From that one vantage point it enforced the guarantees agents -can't enforce for themselves. - - - -### Services - -The building blocks agents needed to do real work: skills, tools, memory, knowledge bases, and -sandboxes. - - - -### The old repositories - -The repositories that carried this direction are archived — read-only, but still available: - -| Repository | What it was | -| --- | --- | -| [operator](https://github.com/rossoctl/operator) | Kubernetes operator for deploying and lifecycle management of agents and tools | -| [examples](https://github.com/rossoctl/examples) | Sample agents and tools for the rossoctl platform | -| [OpenShell](https://github.com/rossoctl/OpenShell) | The safe, private runtime for autonomous agents — the sandbox layer | -| [openshell-driver-openshift](https://github.com/rossoctl/openshell-driver-openshift) | OpenShell compute driver that provisioned agent sandboxes on OpenShift | -| [openshell-credentials-keycloak](https://github.com/rossoctl/openshell-credentials-keycloak) | OpenShell credentials driver for Keycloak | -| [workload-harness](https://github.com/rossoctl/workload-harness) | Tools for generating workloads against agents | -| [lab-runtime-simulation](https://github.com/rossoctl/lab-runtime-simulation) | Virtual MCP server for validating tool calling before and during runtime | -| [lab-clear](https://github.com/rossoctl/lab-clear) | Trajectory analysis and deep insights on agent failures | -| [DEPRECATED-kagenti-bundle-service](https://github.com/rossoctl/DEPRECATED-kagenti-bundle-service) | Bridged Kubernetes-native policy definitions to the OPA bundle protocol | -
diff --git a/src/components/Accordion/index.tsx b/src/components/Accordion/index.tsx index 1b0f113..688fd3a 100644 --- a/src/components/Accordion/index.tsx +++ b/src/components/Accordion/index.tsx @@ -6,19 +6,12 @@ import styles from './styles.module.css'; // rotating chevron, row dividers, and the first item open by default. `redTitles` // renders the item titles in the question-title red (#ef3030). An optional // `status` renders a Ready / In progress / Next pill on the right of the row. -// An optional `now` (a repo path such as 'rossoctl/cortex') renders a muted -// "→ repo" link on the right of the row instead — used by the historical -// "Past activities" cards to point at where the work lives today. export type AccordionItem = { number: string; title: string; description?: string; status?: 'Ready' | 'In progress' | 'Next'; - now?: string; - // Marks a historical card whose work we decided not to continue; renders a - // muted "discontinued" tag where continuing cards carry their "→ repo" link. - discontinued?: boolean; }; // Map a status label to its pill style. @@ -91,18 +84,6 @@ export default function Accordion({ {item.status} )} - {item.now && ( - - → {item.now.split('/')[1]} - - )} - {item.discontinued && ( - discontinued - )} ); diff --git a/src/components/Accordion/styles.module.css b/src/components/Accordion/styles.module.css index 23a5a1a..5ce2450 100644 --- a/src/components/Accordion/styles.module.css +++ b/src/components/Accordion/styles.module.css @@ -88,34 +88,6 @@ transform: rotate(-90deg); } -/* "→ repo" pointer on the right of a row (Past activities cards): small, - muted, external link to where the work lives today. */ -.nowLink { - flex-shrink: 0; - align-self: flex-start; - margin-top: 0.35rem; - font-size: 0.8rem; - line-height: 1.4; - white-space: nowrap; - color: var(--ifm-color-emphasis-800); -} -.nowLink:hover { - color: var(--ifm-color-primary); - text-decoration: none; -} - -/* "discontinued" tag for historical cards whose work did not continue. */ -.discontinued { - flex-shrink: 0; - align-self: flex-start; - margin-top: 0.35rem; - font-size: 0.8rem; - line-height: 1.4; - white-space: nowrap; - color: var(--ifm-color-emphasis-600); - font-style: italic; -} - /* Status pill on the right of a row: Ready / In progress / Next. Colors are semantic (not brand) and have light + dark variants for legibility. */ .pill { From 5869daabb3b0f302232eae7adab6847a84b4776f Mon Sep 17 00:00:00 2001 From: Mariusz Sabath Date: Sat, 31 Oct 2026 13:27:23 -0400 Subject: [PATCH 4/5] Feat: route Get started to the projects, not the platform docs The hero's Get started button now anchors to the Core projects section on the landing page instead of /docs/, which still presents the earlier platform work. Each project card always shows an explicit Get started link to its own repository in the footer, so the per-project entry point is unmistakable even before reading the card. Assisted-By: Claude (Anthropic AI) Signed-off-by: Mariusz Sabath --- ecosystem/welcome.mdx | 2 +- src/components/ProjectCards/index.tsx | 36 ++++++++++++++------------- 2 files changed, 20 insertions(+), 18 deletions(-) diff --git a/ecosystem/welcome.mdx b/ecosystem/welcome.mdx index fc31448..1620e9c 100644 --- a/ecosystem/welcome.mdx +++ b/ecosystem/welcome.mdx @@ -99,7 +99,7 @@ data governance, and we run the org itself on the automation we build.
- Get started + Get started GitHub
diff --git a/src/components/ProjectCards/index.tsx b/src/components/ProjectCards/index.tsx index 081108d..5e7ecf9 100644 --- a/src/components/ProjectCards/index.tsx +++ b/src/components/ProjectCards/index.tsx @@ -2,10 +2,11 @@ import React, {type ReactNode} from 'react'; import styles from './styles.module.css'; // Project card grid for the landing page's project directory. Each card names -// a focus project (the name links to its GitHub repository, where the details, -// instructions, and examples live), carries a one- to two-line essence of what -// the project does, and optionally lists further links — sibling repos in a -// family, a project site — in a muted footer row. +// a focus project, carries a one- to two-line essence of what the project +// does, and always shows a "Get started" link to the project's GitHub +// repository — where the details, instructions, and examples live — plus any +// further links (sibling repos in a family, a project site) in a muted footer +// row. export type ProjectLink = { label: string; @@ -34,19 +35,20 @@ export default function ProjectCards({items}: {items: ProjectCard[]}): ReactNode

{item.description}

- {item.links && item.links.length > 0 && ( -
- {item.links.map((link) => ( - - {link.label} ↗ - - ))} -
- )} +
+ + Get started ↗ + + {item.links?.map((link) => ( + + {link.label} ↗ + + ))} +
))} From 1ccf1a46d23beadd9071429bdc141d009be6eb39 Mon Sep 17 00:00:00 2001 From: Mariusz Sabath Date: Mon, 2 Nov 2026 12:35:53 -0500 Subject: [PATCH 5/5] Docs: use Docusaurus Link in ProjectCards and hoist the repo URL Match the sibling GitHubStars component and render the card anchors through @docusaurus/Link instead of raw , and build the repository URL once per card instead of twice (title and footer Get started anchor), per review feedback. Assisted-By: Claude (Anthropic AI) Signed-off-by: Mariusz Sabath --- src/components/ProjectCards/index.tsx | 49 +++++++++++++-------------- 1 file changed, 23 insertions(+), 26 deletions(-) diff --git a/src/components/ProjectCards/index.tsx b/src/components/ProjectCards/index.tsx index 5e7ecf9..9fb3c24 100644 --- a/src/components/ProjectCards/index.tsx +++ b/src/components/ProjectCards/index.tsx @@ -1,4 +1,5 @@ import React, {type ReactNode} from 'react'; +import Link from '@docusaurus/Link'; import styles from './styles.module.css'; // Project card grid for the landing page's project directory. Each card names @@ -24,33 +25,29 @@ export type ProjectCard = { export default function ProjectCards({items}: {items: ProjectCard[]}): ReactNode { return (
- {items.map((item) => ( -
-

- - {item.name} - -

-

{item.description}

-
- - Get started ↗ - - {item.links?.map((link) => ( - - {link.label} ↗ - - ))} + {items.map((item) => { + const repoUrl = `https://github.com/${item.repo}`; + return ( +
+

+ + {item.name} + +

+

{item.description}

+
+ + Get started ↗ + + {item.links?.map((link) => ( + + {link.label} ↗ + + ))} +
-
- ))} + ); + })}
); }