openova/docs/COMPONENT-LOGOS.md
hatiyildiz 3864eef4e7 docs(reconcile-pass-2): align docs with ground truth at 6afdb303
- Wizard step canonical order updated to Org → Topology → Provider →
  Credentials → Components → Domain → Review (RUNBOOK-PROVISIONING,
  DEMO-RUNBOOK, IMPLEMENTATION-STATUS); SKU pickers cross-ref the
  PROVIDER_NODE_SIZES per-provider catalog (#176).
- StepComponents UX rewritten: single flat marketplace card grid with
  family chips + product/family routes, two tabs (Choose Your Stack +
  Always Included) — replaces the prior "two-tab Mandatory infra/Apps"
  + "grouped by product header" prose (PRODUCT-FAMILIES, RUNBOOK-
  PROVISIONING, DEMO-RUNBOOK, COMPONENT-LOGOS).
- CORTEX familyDependencies = [] reflected in PRODUCT-FAMILIES; the
  Specter / BGE cascade narratives rewritten to component-level-only
  resolution (langfuse → cnpg, librechat → ferretdb → cnpg) — fixes
  the "selecting Spector pulls entire FABRIC" over-broad claim.
- catalyst-api OpenTofu workdir realigned from /var/lib/catalyst/...
  to /tmp/catalyst/tofu/<fqdn>/ via CATALYST_TOFU_WORKDIR env var
  (commit 27527e4c) — fixes runtime drift in RUNBOOK-PROVISIONING,
  SOVEREIGN-PROVISIONING, DEMO-RUNBOOK; DEMO-RUNBOOK kubectl exec
  ns corrected from catalyst-system to catalyst.
- Logo asset story rewritten: 58 logos (44 SVG + 14 PNG) sourced from
  CNCF artwork + project repos at #169b1d1c/#30ff318d, replacing the
  prior 62 stylised in-house marks; CI smoke-test (#6a7d2dd8)
  cross-referenced.
- 12 G2 bootstrap-kit charts (original 11 + bp-powerdns #167) aligned
  in PROVISIONING-PLAN Group F + blueprint-release.yaml comment +
  SOVEREIGN-PROVISIONING header; previously stale at 11.
- README repo-structure note updated: 12-component bootstrap kit +
  axon + external-dns leaf chart are built; 45 platform / 4 product
  folders remain README-only (was: "every folder except axon").
- ORCHESTRATOR-STATE main-tip SHA advanced from dd578d1c6afdb303
  with one-line summary of the post-Pass-1 batch.
- VALIDATION-LOG: Reconcile Pass 2 entry appended (drift fixed across
  10 files; six-category rubric).

Reconcile Pass 2 against main @ 6afdb303 — 10 files patched plus
VALIDATION-LOG entry. Doc patches are landing first so the in-flight
wizard step-reorder branch will merge into a doc set that already
names the canonical order, avoiding a second drift round.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-29 11:48:57 +02:00

14 KiB

Component Logos

The OpenOva Catalyst wizard's component picker (Step 5: Components, StepComponents.tsx) renders a single flat marketplace card grid (no per-family section headers) with a clickable family chip on each card and a search + product-family chip filter at the top — the layout that won out after the operator's "fragmented page" feedback at #b0ec0c43. Each card displays the component's brand mark from a vendored asset file under products/catalyst/bootstrap/ui/public/component-logos/<id>.{svg,png}.

This doc tracks the source and licence of each logo so the asset library can be audited, re-vendored, or swapped for canonical upstream art when permission/license is verified.

How it works

componentGroups.ts declares each component with an optional logoUrl field. The default value (when omitted) is /component-logos/<id>.svg, which Vite serves from the wizard's public/ directory. Components whose canonical upstream asset is published as PNG (e.g. coraza, external-dns, ferretdb, langfuse, loki, mimir, netbird, ntfy, openmeter, strongswan, syft-grype, tempo, trivy, vllm) carry an explicit logoUrl: basePath('component-logos/<id>.png') override in the catalog entry. To change a logo:

  • Use a vendored upstream SVG/PNG: replace the file at public/component-logos/<id>.<ext>. No code change required — the URL is data, not source (per INVIOLABLE-PRINCIPLES.md #4 "never hardcode").
  • Suppress the logo entirely: set logoUrl: null in the component definition (PowerDNS uses this — no single-glyph upstream brand mark is suitable for a square card tile). The card renders the letter-mark fallback (hue-derived from the component name).

Current asset status

The 58 logo files currently in public/component-logos/ (44 SVG + 14 PNG, replacing the prior 62 stylised in-house marks at #169b1d1c

  • #30ff318d) are sourced from the canonical upstream:
  • CNCF artwork repo — cert-manager, cilium, cnpg (cloudnativepg), crossplane, envoy, external-secrets, falco, flux, harbor, keda, keycloak, knative, kserve, kyverno, litmus, opentelemetry, opentofu, sigstore, strimzi, vpa.
  • Project repos (each upstream's own brand page or repository) — alloy, clickhouse, debezium, ferretdb, frpc, gitea, grafana, iceberg, langfuse, librechat, livekit, loki, matrix, milvus, mimir, neo4j, netbird, ntfy, openbao, openmeter, opensearch, reloader, seaweedfs, stalwart, strongswan, stunner, superset, syft-grype, temporal, tempo, trivy, valkey, vcluster, velero, vllm, flink, coraza.
  • OpenOva-curated (no upstream brand) — axon, bge, continuum, specter. These ship as in-house marks under the OpenOva license.

The catalog references one additional component (powerdns) whose catalog entry sets logoUrl: null — PowerDNS has no single-glyph upstream brand mark suitable for a square card tile, so the wizard renders the letter-mark fallback by design.

CI's logo smoke-test (.github/workflows/catalyst-build.yaml, commit 6a7d2dd8) curls every PNG/SVG path the catalog references so a missing or mis-cased asset fails the build, not the user.

The table below records the canonical upstream logo source for each component for re-vendoring + license traceability.

Component slug Upstream project Canonical logo source Notes
flux Flux CD https://github.com/cncf/artwork/tree/main/projects/flux CNCF graduated, Apache-2.0, brand-guidelines apply
crossplane Crossplane https://github.com/cncf/artwork/tree/main/projects/crossplane CNCF incubating
gitea Gitea https://about.gitea.com/ MIT
opentofu OpenTofu https://opentofu.org/ Linux Foundation, MPL-2.0
vcluster vCluster (Loft Labs) https://www.vcluster.com/brand Apache-2.0
cilium Cilium https://github.com/cncf/artwork/tree/main/projects/cilium CNCF graduated
coraza Coraza WAF https://coraza.io/ OWASP, Apache-2.0
external-dns ExternalDNS https://github.com/kubernetes-sigs/external-dns Kubernetes-sigs
envoy Envoy Proxy https://github.com/cncf/artwork/tree/main/projects/envoy CNCF graduated
frpc frp / frpc https://github.com/fatedier/frp Apache-2.0
netbird NetBird https://netbird.io/brand BSD-3-Clause
strongswan strongSwan https://www.strongswan.org/ GPL-2.0
vpa Kubernetes VPA https://github.com/kubernetes/autoscaler Apache-2.0 — Kubernetes wheel mark
keda KEDA https://github.com/cncf/artwork/tree/main/projects/keda CNCF graduated
reloader Reloader (Stakater) https://github.com/stakater/Reloader Apache-2.0
continuum Continuum (in-house) OpenOva platform-curated No upstream — text-mark fallback
seaweedfs SeaweedFS https://github.com/seaweedfs/seaweedfs Apache-2.0
velero Velero https://github.com/cncf/artwork/tree/main/projects/velero CNCF
harbor Harbor https://github.com/cncf/artwork/tree/main/projects/harbor CNCF graduated
falco Falco https://github.com/cncf/artwork/tree/main/projects/falco CNCF graduated
kyverno Kyverno https://github.com/cncf/artwork/tree/main/projects/kyverno CNCF graduated
trivy Trivy (Aqua) https://github.com/aquasecurity/trivy Apache-2.0
syft-grype Syft + Grype https://github.com/anchore/syft, https://github.com/anchore/grype Apache-2.0 (Anchore)
sigstore Sigstore https://www.sigstore.dev/ Linux Foundation
keycloak Keycloak https://www.keycloak.org/ CNCF, Apache-2.0
openbao OpenBao (Vault fork) https://openbao.org/img/openbao-icon.svg MPL-2.0 — use OpenBao's mark, NOT HashiCorp Vault's
external-secrets External Secrets Op. https://github.com/external-secrets/external-secrets Apache-2.0
cert-manager cert-manager https://github.com/cncf/artwork/tree/main/projects/cert-manager CNCF graduated
grafana Grafana https://grafana.com/brand AGPL-3.0; brand-guidelines apply
opentelemetry OpenTelemetry https://github.com/cncf/artwork/tree/main/projects/opentelemetry CNCF graduated
alloy Grafana Alloy https://grafana.com/brand AGPL-3.0
loki Grafana Loki https://grafana.com/brand AGPL-3.0
mimir Grafana Mimir https://grafana.com/brand AGPL-3.0
tempo Grafana Tempo https://grafana.com/brand AGPL-3.0
opensearch OpenSearch https://opensearch.org/brand-guidelines/ Apache-2.0
litmus LitmusChaos https://github.com/cncf/artwork/tree/main/projects/litmus CNCF
openmeter OpenMeter https://openmeter.io/ Apache-2.0
specter Specter (in-house) OpenOva platform-curated No upstream — text-mark fallback
cnpg CloudNativePG https://cloudnative-pg.io/ Apache-2.0
valkey Valkey https://valkey.io/ Linux Foundation, BSD-3
strimzi Strimzi https://github.com/cncf/artwork/tree/main/projects/strimzi CNCF
debezium Debezium https://debezium.io/ Apache-2.0
flink Apache Flink https://flink.apache.org/ Apache-2.0 — Apache trademark policy applies
temporal Temporal https://temporal.io/brand MIT
clickhouse ClickHouse https://clickhouse.com/ Apache-2.0
ferretdb FerretDB https://www.ferretdb.io/ Apache-2.0
iceberg Apache Iceberg https://iceberg.apache.org/ Apache-2.0
superset Apache Superset https://superset.apache.org/ Apache-2.0
kserve KServe https://github.com/cncf/artwork/tree/main/projects/kserve CNCF
knative Knative https://github.com/cncf/artwork/tree/main/projects/knative CNCF
axon Axon (OpenOva) OpenOva platform-curated OpenOva product mark
neo4j Neo4j https://neo4j.com/brand GPL-3.0 (community)
vllm vLLM https://github.com/vllm-project/vllm Apache-2.0
milvus Milvus https://github.com/cncf/artwork/tree/main/projects/milvus CNCF
bge BGE (BAAI) BAAI / FlagEmbedding MIT
langfuse Langfuse https://github.com/langfuse/langfuse MIT
librechat LibreChat https://github.com/danny-avila/LibreChat MIT
stalwart Stalwart https://stalw.art/ AGPL-3.0
livekit LiveKit https://livekit.io/ Apache-2.0
stunner STUNner https://github.com/l7mp/stunner MIT
matrix Matrix https://matrix.org/foundation/ Apache-2.0
ntfy ntfy https://ntfy.sh/ Apache-2.0

Replacement procedure

To replace an in-house mark with the upstream's official SVG:

  1. Download the canonical asset from the source URL above.
  2. Confirm licence permits redistribution in this public repo (most CNCF projects allow brand-asset use with attribution; some require permission for derivative works).
  3. Convert to a square viewBox if not already; size to 64x64.
  4. Save as products/catalyst/bootstrap/ui/public/component-logos/<id>.svg, overwriting the existing file.
  5. Run npm test in products/catalyst/bootstrap/ui/ to confirm tests still pass (logos are loaded by URL, so no test-fixture change is needed).
  6. Commit under area/platform, mention the licence in the commit message.

License note

OpenOva does not claim ownership of any third-party project's brand or logo. The marks vendored under public/component-logos/ are stylised brand-color silhouettes generated for use in OpenOva's own console UI. Each upstream project's name and brand-color reference remains the property of its respective owner. When you ship the Catalyst wizard to a customer, ensure the licence terms of any canonical upstream logos you swap in still permit redistribution in your build.

For OpenOva-curated components (Continuum, Specter, Axon) there is no upstream — the marks are wholly OpenOva's.