Backstage

Integrate Knowledge Tree discovered resources into Backstage as catalog entities with full dependency tracking.

Overview

The Backstage integration publishes discovered infrastructure resources into the Backstage software catalog. Each resource becomes a catalog entity with typed relationships, health status, and metadata links back to the Knowledge Tree graph. The integration also provides a custom Backstage plugin for browsing the knowledge graph directly within the Backstage UI.

Catalog entities

Knowledge Tree resources are mapped to Backstage catalog entities using the standard Backstage entity model:

Knowledge Tree fieldBackstage entity field
Resource IDmetadata.name
Resource typespec.type
Providerspec.provider (custom annotation)
Tagsmetadata.labels
Scopespec.system or spec.owner
Relationshipsspec.dependsOn, spec.dependencyOf

Dependency graphs

The Backstage plugin adds a Knowledge Tree tab to each entity detail page, showing:

  • Full dependency graph -- interactive visualization of the resource and its dependencies
  • Blast radius -- which other resources would be affected if this resource fails
  • Change history -- recent changes detected by Knowledge Tree
  • Health status -- current health score and any active findings
  • Related runbooks -- operational runbooks for the resource type

Scaffolding

Knowledge Tree resources can be used as templates in Backstage scaffolder. When creating a new service in Backstage, the scaffolder can automatically:

  • Reserve cloud resources based on existing infrastructure patterns
  • Apply standard tagging and naming conventions from Knowledge Tree policies
  • Register the new service's infrastructure in the knowledge graph
  • Generate documentation templates with known dependencies
Entity Provider
The integration implements the Backstage EntityProvider protocol, so catalog updates happen automatically whenever the knowledge graph changes.

Configuration

# app-config.yaml (Backstage)
catalog:
  providers:
    knowledgeTree:
      module: ./plugins/kt-catalog
      baseUrl: http://kt-server:8080
      apiKey: ${KT_API_KEY}
      schedule:
        frequency: { minutes: 30 }
        timeout: { minutes: 5 }