Bring your multi-cluster Kubernetes platform into the Backstage Developer Portal.
Most Kubernetes plugins show you pods and deployments. AppThrust operates at a higher level — multi-cluster fleet management. These plugins understand that domain natively:
- ClusterSets & topology — see how clusters group across regions, environments, and roles (workload, gateway, control plane)
- Directional Istio connections — visualize service mesh links between clusters, including mTLS mode and protocol
- Karpenter auto-scaling — surface instance families, capacity types, and resource limits per cluster
- Sveltos packages & GatewayFleetPolicies — track installed packages, versions, health, and fleet-wide gateway policies
Instead of raw Kubernetes resources, your developers get platform context: which clusters belong to which environments, what's running where, and how it all connects.
@appthrust/backstage-plugin-common Shared TypeScript types & API client
@appthrust/backstage-plugin-catalog-backend Entity Provider — syncs AppThrust CRDs → Backstage catalog
@appthrust/backstage-plugin-backend Backend API proxy — routes to AppThrust PMC API
@appthrust/backstage-plugin Frontend plugin — Status Card & Cluster Overview Tab
| Package | Role |
|---|---|
@appthrust/backstage-plugin-common |
Domain types (Cluster, ClusterSet, Connection, Application, etc.) and a typed API client shared across all packages |
@appthrust/backstage-plugin-catalog-backend |
Entity Provider that syncs AppThrust projects, clusters, applications, connections, gateway policies, and subnets into the Backstage catalog |
@appthrust/backstage-plugin-backend |
Express router that proxies frontend requests to the AppThrust PMC API (or returns mock data in dev mode) |
@appthrust/backstage-plugin |
React components for entity pages — AppThrustStatusCard and ClusterOverviewTab |
# From your Backstage app root
yarn add @appthrust/backstage-plugin \
@appthrust/backstage-plugin-backend \
@appthrust/backstage-plugin-catalog-backend \
@appthrust/backstage-plugin-commoncatalog:
providers:
appthrust:
default:
apiUrl: https://pmc.example.com
serviceAccountToken: ${APPTHRUST_SA_TOKEN}
projects: [] # empty = all projects
schedule:
frequency: { minutes: 5 }
timeout: { minutes: 3 }In packages/backend/src/index.ts:
backend.add(import('@appthrust/backstage-plugin-catalog-backend'));
backend.add(import('@appthrust/backstage-plugin-backend'));In packages/app/src/components/catalog/EntityPage.tsx:
import {
AppThrustStatusCard,
ClusterOverviewTab,
isAppThrustAvailable,
} from '@appthrust/backstage-plugin';
// Add to the entity overview page
const overviewContent = (
<Grid container spacing={3}>
<EntitySwitch>
<EntitySwitch.Case if={isAppThrustAvailable}>
<Grid item md={6}>
<AppThrustStatusCard />
</Grid>
</EntitySwitch.Case>
</EntitySwitch>
</Grid>
);
// Add a Cluster Overview tab for Resource entities
const resourcePage = (
<EntityLayout>
<EntityLayout.Route path="/appthrust" title="AppThrust">
<ClusterOverviewTab />
</EntityLayout.Route>
</EntityLayout>
);That's it — AppThrust entities will appear in your catalog on the next sync cycle.
The catalog provider maps AppThrust resources to native Backstage entities with full relationship wiring:
| AppThrust Resource | Backstage Kind | Backstage Type | Key Relations |
|---|---|---|---|
| Project | Group | team |
— |
| Cluster | Resource | kubernetes-cluster |
partOf → ClusterSet |
| ClusterSet | System | cluster-set |
hasPart → Clusters |
| Application | Component | service |
dependsOn → ClusterSet |
| Connection | Resource | service-mesh-connection |
dependsOn → source & target Clusters |
| GatewayFleetPolicy | Resource | gateway-fleet |
dependsOn → target Clusters |
| Subnet | Resource | network-subnet |
dependencyOf → Cluster |
All entities are annotated with appthrust.io/* metadata (project, status, region, provider, role) and include direct links to the AppThrust Dashboard.
A compact card for entity overview pages. Shows at a glance:
- Health status — color-coded badge (healthy / degraded / unhealthy / unknown)
- Cluster role — workload, gateway, or control plane
- Project & ClusterSet — organizational context
- Last sync time — when the entity was last reconciled
- Dashboard link — one-click jump to AppThrust Dashboard
A full-page tab for deep cluster inspection. Four sections:
- Cluster Information — name, role, provider, region, Kubernetes version, node count, status
- Karpenter Auto-Scaling — instance families, capacity type (on-demand/spot), CPU & memory limits
- Installed Packages — table of Sveltos-managed packages with version and health status
- Labels — all cluster labels rendered as filterable chips
Set apiUrl: mock to load realistic demo data without a PMC connection — great for local development, demos, and CI:
catalog:
providers:
appthrust:
default:
apiUrl: mock
schedule:
frequency: { minutes: 5 }
timeout: { minutes: 3 }The mock dataset includes:
- ACME Corp project with 16 clusters across 4 AWS regions
- 3 ClusterSets — production-global (11 clusters), staging-eu, development
- 4 applications — checkout, payments, inventory, frontend
- 6 Istio connections — directional mesh links with mTLS
- 3 GatewayFleetPolicies — global ingress, API gateway, staging ingress
- 8 subnets — pod, service, and node CIDRs
┌──────────────────────────────────────────────────────────┐
│ Backstage App │
│ │
│ ┌─────────────────────┐ ┌────────────────────────────┐ │
│ │ AppThrustStatusCard │ │ ClusterOverviewTab │ │
│ └─────────┬───────────┘ └──────────┬─────────────────┘ │
│ │ │ │
│ └────────┬────────────────┘ │
│ ▼ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ @appthrust/backstage-plugin-backend │ │
│ │ (API Proxy / Express Router) │ │
│ └──────────────────────┬───────────────────────────────┘ │
│ │ │
│ ┌──────────────────────┴───────────────────────────────┐ │
│ │ @appthrust/backstage-plugin-catalog-backend │ │
│ │ (Entity Provider — sync loop) │ │
│ └──────────────────────┬───────────────────────────────┘ │
└─────────────────────────┼────────────────────────────────┘
│
▼
┌───────────────────────┐
│ AppThrust PMC API │
│ (or mock data mode) │
└───────────────────────┘
- Entity Provider syncing all AppThrust resource types
- Status card and cluster overview components
- Mock data for development and demos
- Interactive topology visualization (cluster mesh map)
- Release pipeline tab with deployment history
- Real-time status streaming via WebSocket
- Scaffolder actions: create clusters, applications, connections
- Golden path templates for common multi-cluster patterns
- Cost allocation dashboard integration
yarn install # Install dependencies
yarn build # Build all packages
yarn test # Run testsContributions are welcome! Whether it's a bug report, feature request, or pull request — we'd love your help making the AppThrust Backstage experience better.
- Fork the repo
- Create a feature branch (
git checkout -b feat/my-feature) - Commit your changes
- Open a pull request
- AppThrust — Platform website
- AppThrust Dashboard — Live dashboard demo
- Backstage — CNCF Developer Portal
MIT © 2026 AppThrust