{"services": [ { "@type": "SoftwareApplication", "id": "litellm", "name": "LiteLLM", "description": "Unified API gateway for LLM providers", "category": "AI", "tags": ["ai", "llm", "api-gateway", "openai", "proxy", "unified-api"], "abstract": "Call 100+ LLM APIs using OpenAI format", "logo": "litellm-logo.svg", "website": "https://litellm.ai" ,"summary": "LiteLLM is a unified API gateway that allows you to call 100+ LLM APIs using the OpenAI format. It provides load balancing, fallbacks, spend tracking, and virtual keys." ,"docs": "/docs/services/ai/litellm" ,"playbook": "210-setup-litellm.yml" ,"priority": 51 ,"checkCommand": "kubectl get pods -n ai -l app.kubernetes.io/name=litellm --no-headers 2>/dev/null | grep -q Running" ,"removePlaybook": "210-remove-litellm.yml" ,"requires": ["postgresql"] ,"helmChart": "oci://ghcr.io/berriai/litellm-helm" ,"namespace": "ai" } , { "@type": "SoftwareApplication", "id": "openwebui", "name": "Open WebUI", "description": "User-friendly interface for AI models", "category": "AI", "tags": ["ai", "llm", "chat", "interface", "openai", "ollama"], "abstract": "Self-hosted AI interface supporting multiple model providers", "logo": "openwebui-logo.png", "website": "https://openwebui.com" ,"summary": "Open WebUI is an extensible, feature-rich, and user-friendly self-hosted AI interface. It supports various LLM runners including Ollama and OpenAI-compatible APIs." ,"docs": "/docs/services/ai/openwebui" ,"playbook": "200-setup-open-webui.yml" ,"priority": 50 ,"checkCommand": "kubectl get pods -n ai -l app.kubernetes.io/name=open-webui --no-headers 2>/dev/null | grep -q Running" ,"removePlaybook": "200-remove-open-webui.yml" ,"requires": ["postgresql"] ,"helmChart": "open-webui/open-webui" ,"namespace": "ai" } , { "@type": "SoftwareApplication", "id": "jupyterhub", "name": "JupyterHub", "description": "Multi-user Jupyter notebook server", "category": "ANALYTICS", "tags": ["notebooks", "jupyter", "python", "data-science", "collaboration"], "abstract": "Multi-user server for Jupyter notebooks enabling collaborative data science", "logo": "jupyterhub-logo.svg", "website": "https://jupyter.org/hub" ,"summary": "JupyterHub is a multi-user server that manages and proxies multiple instances of Jupyter notebooks. It enables teams to share computational environments and collaborate on data science projects." ,"docs": "/docs/services/analytics/jupyterhub" ,"playbook": "350-setup-jupyterhub.yml" ,"priority": 92 ,"checkCommand": "kubectl get pods -n jupyterhub -l app=jupyterhub --no-headers 2>/dev/null | grep -q Running" ,"removePlaybook": "350-remove-jupyterhub.yml" ,"helmChart": "jupyterhub/jupyterhub" ,"namespace": "jupyterhub" } , { "@type": "SoftwareApplication", "id": "openmetadata", "name": "OpenMetadata", "description": "Open-source data governance and metadata platform", "category": "ANALYTICS", "tags": ["data-governance", "metadata", "data-discovery", "data-lineage", "data-quality", "data-catalog"], "abstract": "Open-source metadata platform for data discovery, governance, and observability", "logo": "openmetadata-logo.png", "website": "https://open-metadata.org" ,"summary": "OpenMetadata is an open-source metadata platform for data discovery, data observability, and data governance. It provides unified metadata management with 100+ connectors, column-level lineage, data quality checks, and collaboration features." ,"docs": "/docs/services/analytics/openmetadata" ,"playbook": "340-setup-openmetadata.yml" ,"priority": 93 ,"checkCommand": "kubectl get pods -n openmetadata -l app.kubernetes.io/name=openmetadata --no-headers 2>/dev/null | grep -q Running" ,"removePlaybook": "340-remove-openmetadata.yml" ,"requires": ["postgresql", "elasticsearch"] ,"helmChart": "open-metadata/openmetadata" ,"namespace": "openmetadata" ,"image": "docker.getcollate.io/openmetadata/server:1.12.1" } , { "@type": "SoftwareApplication", "id": "spark", "name": "Apache Spark", "description": "Unified analytics engine for big data", "category": "ANALYTICS", "tags": ["big-data", "analytics", "distributed-computing", "etl", "machine-learning"], "abstract": "Fast and general-purpose cluster computing system for big data processing", "logo": "spark-logo.svg", "website": "https://spark.apache.org" ,"summary": "Apache Spark is a unified analytics engine for large-scale data processing. It provides high-level APIs in Java, Scala, Python, and R, and supports SQL queries, streaming data, machine learning, and graph processing." ,"docs": "/docs/services/analytics/spark" ,"playbook": "330-setup-spark.yml" ,"priority": 91 ,"checkCommand": "kubectl get pods -n spark-operator -l app.kubernetes.io/name=spark-kubernetes-operator --no-headers 2>/dev/null | grep -q Running" ,"removePlaybook": "330-remove-spark.yml" ,"helmChart": "spark-kubernetes-operator/spark-kubernetes-operator" ,"namespace": "spark-operator" } , { "@type": "SoftwareApplication", "id": "unity-catalog", "name": "Unity Catalog", "description": "Open-source data catalog and governance", "category": "ANALYTICS", "tags": ["data-catalog", "governance", "metadata", "lakehouse", "data-lineage"], "abstract": "Open-source data catalog for unified governance across data and AI assets", "logo": "unity-catalog-logo.png", "website": "https://www.unitycatalog.io" ,"summary": "Unity Catalog is an open-source data catalog that provides unified governance for data and AI assets. It enables fine-grained access control, data lineage tracking, and metadata management across your data lakehouse." ,"docs": "/docs/services/analytics/unity-catalog" ,"playbook": "320-setup-unity-catalog.yml" ,"priority": 90 ,"checkCommand": "kubectl get pods -n unity-catalog -l app=unity-catalog,component=server --no-headers 2>/dev/null | grep -q Running" ,"removePlaybook": "320-remove-unity-catalog.yml" ,"requires": ["postgresql"] ,"namespace": "unity-catalog" ,"image": "unitycatalog/unitycatalog:latest" } , { "@type": "SoftwareApplication", "id": "elasticsearch", "name": "Elasticsearch", "description": "Distributed search and analytics engine", "category": "DATABASES", "tags": ["search", "full-text", "analytics", "indexing", "distributed"], "abstract": "RESTful search and analytics engine for all types of data", "logo": "elasticsearch-logo.svg", "website": "https://www.elastic.co/elasticsearch" ,"summary": "Elasticsearch is a distributed, RESTful search and analytics engine capable of addressing a growing number of use cases. It centrally stores your data for lightning fast search and fine-tuned relevancy." ,"docs": "/docs/services/databases/elasticsearch" ,"playbook": "060-setup-elasticsearch.yml" ,"priority": 70 ,"checkCommand": "kubectl get pods -n default -l app=elasticsearch-master --no-headers 2>/dev/null | grep -q Running" ,"removePlaybook": "060-remove-elasticsearch.yml" ,"helmChart": "elastic/elasticsearch" ,"namespace": "default" ,"configurable": true ,"exposePort": 39200 } , { "@type": "SoftwareApplication", "id": "mongodb", "name": "MongoDB", "description": "Document-oriented NoSQL database", "category": "DATABASES", "tags": ["database", "nosql", "document", "json", "flexible-schema"], "abstract": "General purpose document database", "logo": "mongodb-logo.svg", "website": "https://www.mongodb.com" ,"summary": "MongoDB is a document-oriented NoSQL database designed for high-volume data storage. It stores data in flexible, JSON-like documents, meaning fields can vary from document to document." ,"docs": "/docs/services/databases/mongodb" ,"playbook": "040-setup-mongodb.yml" ,"priority": 31 ,"checkCommand": "kubectl get pods -n default -l app=mongodb --no-headers 2>/dev/null | grep -q Running" ,"removePlaybook": "040-remove-database-mongodb.yml" ,"namespace": "default" ,"image": "mongo:8.0.5" ,"configurable": true ,"exposePort": 37017 } , { "@type": "SoftwareApplication", "id": "mysql", "name": "MySQL", "description": "Open-source relational database", "category": "DATABASES", "tags": ["database", "sql", "relational", "mysql", "rdbms"], "abstract": "Popular open-source relational database for web applications", "logo": "mysql-logo.svg", "website": "https://www.mysql.com" ,"summary": "MySQL is the worlds most popular open-source relational database management system. It powers many of the most accessed applications including Facebook, Twitter, and YouTube." ,"docs": "/docs/services/databases/mysql" ,"playbook": "040-database-mysql.yml" ,"priority": 31 ,"checkCommand": "kubectl get pods -n default -l app.kubernetes.io/name=mysql --no-headers 2>/dev/null | grep -q Running" ,"removePlaybook": "040-remove-database-mysql.yml" ,"namespace": "default" ,"image": "mysql:8.0" ,"configurable": true ,"exposePort": 33306 } , { "@type": "SoftwareApplication", "id": "postgresql", "name": "PostgreSQL", "description": "Open-source relational database", "category": "DATABASES", "tags": ["database", "sql", "relational", "postgres", "rdbms"], "abstract": "Worlds most advanced open-source relational database", "logo": "postgresql-logo.svg", "website": "https://www.postgresql.org" ,"summary": "PostgreSQL is a powerful, open-source object-relational database system with over 35 years of active development. It has earned a strong reputation for reliability, feature robustness, and performance." ,"docs": "/docs/services/databases/postgresql" ,"playbook": "040-database-postgresql.yml" ,"priority": 30 ,"checkCommand": "kubectl get pods -n default -l app.kubernetes.io/name=postgresql --no-headers 2>/dev/null | grep -q Running" ,"removePlaybook": "040-remove-database-postgresql.yml" ,"helmChart": "bitnami/postgresql" ,"namespace": "default" ,"configurable": true ,"exposePort": 35432 } , { "@type": "SoftwareApplication", "id": "qdrant", "name": "Qdrant", "description": "Vector similarity search engine", "category": "DATABASES", "tags": ["vector-database", "ai", "embeddings", "similarity-search", "semantic-search"], "abstract": "High-performance vector database for AI applications", "logo": "qdrant-logo.svg", "website": "https://qdrant.tech" ,"summary": "Qdrant is a vector similarity search engine and database designed for AI applications. It provides extended filtering support, making it useful for neural network or semantic-based matching." ,"docs": "/docs/services/databases/qdrant" ,"playbook": "044-setup-qdrant.yml" ,"priority": 33 ,"checkCommand": "kubectl get pods -n default -l app.kubernetes.io/name=qdrant --no-headers 2>/dev/null | grep -q Running" ,"removePlaybook": "044-remove-qdrant.yml" ,"helmChart": "qdrant/qdrant" ,"namespace": "default" ,"configurable": true ,"exposePort": 36333 } , { "@type": "SoftwareApplication", "id": "redis", "name": "Redis", "description": "In-memory data store and cache", "category": "DATABASES", "tags": ["cache", "in-memory", "key-value", "message-broker", "session"], "abstract": "In-memory data structure store for caching and messaging", "logo": "redis-logo.svg", "website": "https://redis.io" ,"summary": "Redis is an open-source, in-memory data structure store used as a database, cache, message broker, and streaming engine. It supports various data structures like strings, hashes, lists, and sets." ,"docs": "/docs/services/databases/redis" ,"playbook": "050-setup-redis.yml" ,"priority": 32 ,"checkCommand": "kubectl get pods -n default -l app.kubernetes.io/name=redis --no-headers 2>/dev/null | grep -q Running" ,"removePlaybook": "050-remove-redis.yml" ,"helmChart": "bitnami/redis" ,"namespace": "default" ,"configurable": true ,"exposePort": 36379 } , { "@type": "SoftwareApplication", "id": "authentik", "name": "Authentik", "description": "Identity provider and SSO solution", "category": "IDENTITY", "tags": ["authentication", "sso", "identity", "oauth", "saml", "ldap", "mfa"], "abstract": "Open-source identity provider with SSO, MFA, and user management", "logo": "authentik-logo.svg", "website": "https://goauthentik.io" ,"summary": "Authentik is an open-source Identity Provider focused on flexibility and versatility. It supports SAML, OAuth/OIDC, LDAP, and proxy authentication with built-in MFA support." ,"docs": "/docs/services/identity/authentik" ,"playbook": "070-setup-authentik.yml" ,"priority": 40 ,"checkCommand": "kubectl get pods -n authentik -l app.kubernetes.io/name=authentik --no-headers 2>/dev/null | grep -q Running" ,"removePlaybook": "070-remove-authentik.yml" ,"requires": ["postgresql", "redis"] ,"helmChart": "bitnami/authentik" ,"namespace": "authentik" ,"configurable": true ,"exposePort": 39000 } , { "@type": "SoftwareApplication", "id": "enonic", "name": "Enonic XP", "description": "Headless CMS platform for content management and delivery", "category": "INTEGRATION", "tags": ["cms", "headless-cms", "content-management", "content-studio", "graphql", "enonic-xp"], "abstract": "Headless CMS platform with embedded storage, Content Studio, and 100+ integrations", "logo": "enonic-logo.svg", "website": "https://enonic.com" ,"summary": "Enonic XP is a Java/GraalVM-based headless CMS platform with embedded Elasticsearch and NoSQL storage. It provides Content Studio for editorial work, headless APIs (GraphQL/REST), and a composable architecture for building content-driven applications." ,"docs": "/docs/services/integration/enonic" ,"playbook": "085-setup-enonic.yml" ,"priority": 85 ,"checkCommand": "kubectl get pods -n enonic -l app=enonic-xp --no-headers 2>/dev/null | grep -q Running" ,"removePlaybook": "085-remove-enonic.yml" ,"namespace": "enonic" ,"image": "enonic/xp:7.16.2-ubuntu" } , { "@type": "SoftwareApplication", "id": "gravitee", "name": "Gravitee", "description": "API management and gateway platform", "category": "INTEGRATION", "tags": ["api-gateway", "api-management", "gravitee", "postgresql"], "abstract": "A platform service that runs Gravitee API Management with PostgreSQL as the metadata store and no Elasticsearch/Redis dependencies.", "logo": "gravitee-logo.svg", "website": "https://www.gravitee.io" ,"summary": "Gravitee APIM is an open-source API gateway and management platform with admin Console, Developer Portal, and runtime API gateway. UIS deploys APIM 4.11 with PostgreSQL as the management store via the JDBC repository plugin (no MongoDB). Elasticsearch and Redis are not deployed; analytics dashboards and rate-limit policies are disabled. Suitable for laptop-scale development clusters." ,"docs": "/docs/services/integration/gravitee" ,"playbook": "090-setup-gravitee.yml" ,"priority": 50 ,"checkCommand": "kubectl get pods -n gravitee -l app.kubernetes.io/instance=gravitee-apim --no-headers 2>/dev/null | grep -qE \\\\s(Running|Completed)\\\\s" ,"removePlaybook": "090-remove-gravitee.yml" ,"requires": ["postgresql"] ,"helmChart": "graviteeio/apim" ,"namespace": "gravitee" ,"image": "graviteeio/apim:4.11.3" } , { "@type": "SoftwareApplication", "id": "postgrest", "name": "PostgREST", "description": "Auto-generated REST API from a curated PostgreSQL schema", "category": "INTEGRATION", "tags": ["rest-api", "postgrest", "api-platform", "postgresql", "read-only"], "abstract": "A platform service that turns a curated api_v1 PostgreSQL schema into a public REST API.", "logo": "postgrest-logo.svg", "website": "https://postgrest.org" ,"summary": "PostgREST is a single Haskell binary that introspects a PostgreSQL schema and exposes its tables and views as REST endpoints, with foreign keys becoming embedded-resource relations and OpenAPI metadata served at GET /. PostgREST 12.x emits Swagger 2.0; later releases may upgrade to OpenAPI 3.x. UIS deploys one PostgREST instance per consuming application, all sharing a single namespace and the shared PostgreSQL service. Each instance is configured separately via ./uis configure postgrest --app ." ,"docs": "/docs/services/integration/postgrest" ,"playbook": "088-setup-postgrest.yml" ,"priority": 50 ,"checkCommand": "kubectl get deploy -n postgrest -l app.kubernetes.io/name=postgrest --no-headers 2>/dev/null | grep -qE \\\\s([1-9][0-9]*)/\\\\1\\\\s" ,"removePlaybook": "088-remove-postgrest.yml" ,"requires": ["postgresql"] ,"namespace": "postgrest" ,"image": "postgrest/postgrest:v14.10" ,"configurable": true ,"multiInstance": true } , { "@type": "SoftwareApplication", "id": "rabbitmq", "name": "RabbitMQ", "description": "Message broker for async communication", "category": "INTEGRATION", "tags": ["message-queue", "amqp", "messaging", "async", "pubsub"], "abstract": "Reliable message broker supporting multiple messaging protocols", "logo": "rabbitmq-logo.svg", "website": "https://www.rabbitmq.com" ,"summary": "RabbitMQ is a reliable and mature messaging broker that supports multiple messaging protocols including AMQP. It provides features like message persistence, delivery acknowledgment, and flexible routing." ,"docs": "/docs/services/integration/rabbitmq" ,"playbook": "080-setup-rabbitmq.yml" ,"priority": 60 ,"checkCommand": "kubectl get pods -n default -l app.kubernetes.io/name=rabbitmq --no-headers 2>/dev/null | grep -q Running" ,"removePlaybook": "080-remove-rabbitmq.yml" ,"helmChart": "bitnami/rabbitmq" ,"namespace": "default" } , { "@type": "SoftwareApplication", "id": "argocd", "name": "ArgoCD", "description": "GitOps continuous delivery for Kubernetes", "category": "MANAGEMENT", "tags": ["gitops", "cd", "continuous-delivery", "kubernetes", "deployment"], "abstract": "Declarative GitOps CD for Kubernetes", "logo": "argocd-logo.svg", "website": "https://argo-cd.readthedocs.io" ,"summary": "ArgoCD is a declarative, GitOps continuous delivery tool for Kubernetes. It automates the deployment of applications to specified target environments, keeping them synchronized with their Git repository definitions." ,"docs": "/docs/services/management/argocd" ,"playbook": "220-setup-argocd.yml" ,"priority": 80 ,"checkCommand": "kubectl get pods -n argocd -l app.kubernetes.io/name=argocd-server --no-headers 2>/dev/null | grep -q Running" ,"removePlaybook": "220-remove-argocd.yml" ,"helmChart": "argo/argo-cd" ,"namespace": "argocd" } , { "@type": "SoftwareApplication", "id": "backstage", "name": "Backstage (RHDH)", "description": "Developer portal with software catalog and Kubernetes visibility", "category": "MANAGEMENT", "tags": ["developer-portal", "catalog", "backstage", "rhdh", "kubernetes"], "abstract": "Developer portal for software catalog and service visibility", "logo": "backstage-logo.svg", "website": "https://backstage.io" ,"summary": "Backstage (via Red Hat Developer Hub) provides a centralized developer portal with a software catalog showing all UIS services, their relationships, Kubernetes pod status, and Grafana dashboard links." ,"docs": "/docs/services/management/backstage" ,"playbook": "650-setup-backstage.yml" ,"priority": 80 ,"checkCommand": "kubectl get pods -n backstage -l app.kubernetes.io/instance=backstage --no-headers 2>/dev/null | grep -q Running" ,"removePlaybook": "650-remove-backstage.yml" ,"requires": ["postgresql"] ,"helmChart": "rhdh-chart/backstage" ,"namespace": "backstage" } , { "@type": "SoftwareApplication", "id": "nextcloud", "name": "Nextcloud", "description": "Self-hosted collaboration platform with file sync and document editing", "category": "APPLICATIONS", "tags": ["collaboration", "file-sync", "document-editing", "calendar", "contacts", "onlyoffice"], "abstract": "Self-hosted collaboration platform — file sync, document editing, calendar, and contacts", "logo": "nextcloud-logo.svg", "website": "https://nextcloud.com" ,"summary": "Nextcloud is a self-hosted content collaboration platform providing file sync and sharing, browser-based document editing via OnlyOffice, calendar, contacts, and more. Deployed with the official Helm chart, reusing existing UIS PostgreSQL and Redis services." ,"docs": "/docs/services/applications/nextcloud" ,"playbook": "620-setup-nextcloud.yml" ,"priority": 620 ,"checkCommand": "kubectl get pods -n nextcloud -l app.kubernetes.io/name=nextcloud --no-headers 2>/dev/null | grep -q Running" ,"removePlaybook": "620-remove-nextcloud.yml" ,"requires": ["postgresql", "redis"] ,"helmChart": "nextcloud/nextcloud" ,"namespace": "nextcloud" ,"image": "nextcloud:33-apache" } , { "@type": "SoftwareApplication", "id": "nginx", "name": "Nginx", "description": "Web server and reverse proxy", "category": "MANAGEMENT", "tags": ["webserver", "proxy", "reverse-proxy", "load-balancer", "http"], "abstract": "High-performance web server and reverse proxy", "logo": "nginx-logo.svg", "website": "https://nginx.org" ,"summary": "Nginx is a high-performance HTTP server and reverse proxy, known for its stability, rich feature set, simple configuration, and low resource consumption." ,"docs": "/docs/services/management/nginx" ,"playbook": "020-setup-nginx.yml" ,"priority": 1 ,"checkCommand": "kubectl get pods -n default -l app.kubernetes.io/name=nginx --no-headers 2>/dev/null | grep -q Running" ,"removePlaybook": "020-remove-nginx.yml" ,"helmChart": "bitnami/nginx" ,"namespace": "default" } , { "@type": "SoftwareApplication", "id": "pgadmin", "name": "pgAdmin", "description": "Web-based PostgreSQL database administration", "category": "MANAGEMENT", "tags": ["postgresql", "database", "admin", "management", "web-ui"], "abstract": "Web administration interface for PostgreSQL", "logo": "pgadmin-logo.png", "website": "https://www.pgadmin.org" ,"summary": "pgAdmin is a feature-rich open source administration and development platform for PostgreSQL. It provides a graphical interface for managing databases, running queries, and monitoring server activity." ,"docs": "/docs/services/management/pgadmin" ,"playbook": "641-adm-pgadmin.yml" ,"priority": 90 ,"checkCommand": "kubectl get pods -n default -l app.kubernetes.io/name=pgadmin4 --no-headers 2>/dev/null | grep -q Running" ,"removePlaybook": "641-remove-pgadmin.yml" ,"requires": ["postgresql"] ,"helmChart": "runix/pgadmin4" ,"namespace": "default" } , { "@type": "SoftwareApplication", "id": "redisinsight", "name": "RedisInsight", "description": "Web-based Redis database management GUI", "category": "MANAGEMENT", "tags": ["redis", "database", "admin", "management", "web-ui", "cache"], "abstract": "Visual management interface for Redis", "logo": "redisinsight-logo.svg", "website": "https://redis.io/insight/" ,"summary": "RedisInsight is a visual tool for managing Redis databases. It provides a graphical interface for browsing keys, running commands, monitoring performance, and managing Redis data structures." ,"docs": "/docs/services/management/redisinsight" ,"playbook": "651-adm-redisinsight.yml" ,"priority": 90 ,"checkCommand": "kubectl get pods -n default -l app.kubernetes.io/name=redisinsight --no-headers 2>/dev/null | grep -q Running" ,"removePlaybook": "651-remove-redisinsight.yml" ,"requires": ["redis"] ,"helmChart": "redisinsight/redisinsight" ,"namespace": "default" } , { "@type": "SoftwareApplication", "id": "whoami", "name": "Whoami", "description": "Test service for debugging", "category": "MANAGEMENT", "tags": ["testing", "debug", "ingress", "traefik", "development"], "abstract": "Lightweight test container for debugging ingress and authentication", "logo": "whoami-logo.svg", "website": "https://github.com/traefik/whoami" ,"summary": "Whoami is a tiny Go webserver that prints OS information and HTTP request details. Its useful for testing ingress configurations, authentication flows, and debugging network issues." ,"docs": "/docs/services/management/whoami" ,"playbook": "025-setup-whoami-testpod.yml" ,"priority": 2 ,"checkCommand": "kubectl get pods -n default -l app=whoami --no-headers 2>/dev/null | grep -q Running" ,"removePlaybook": "025-setup-whoami-testpod.yml -e operation=delete" ,"namespace": "default" ,"image": "traefik/whoami:v1.10.2" } , { "@type": "SoftwareApplication", "id": "traefik", "name": "Traefik", "description": "Cluster ingress controller and reverse proxy", "category": "NETWORKING", "tags": ["ingress", "reverse-proxy", "traefik", "networking", "ingressroute"], "abstract": "IngressRoute-driven cluster ingress, pinned to chart v39.0.7 + proxy v3.6.13 for rancher-desktop k3s parity", "logo": "traefik-logo.svg", "website": "https://traefik.io/" ,"summary": "Traefik is a cloud-native edge router that exposes services via Kubernetes Ingress and the IngressRoute CRD. UIS pins the chart and proxy versions to match the bundled k3s chart that rancher-desktop ships, so local-dev and cloud clusters run the same Traefik." ,"docs": "/docs/services/networking/traefik" ,"playbook": "003-setup-traefik.yml" ,"priority": 3 ,"checkCommand": "kubectl get pods -n kube-system -l app.kubernetes.io/name=traefik --no-headers 2>/dev/null | grep -q Running" ,"removePlaybook": "003-remove-traefik.yml" ,"helmChart": "traefik/traefik" ,"namespace": "kube-system" ,"image": "traefik:v3.6.13" } , { "@type": "SoftwareApplication", "id": "grafana", "name": "Grafana", "description": "Visualization and dashboards for observability", "category": "OBSERVABILITY", "tags": ["monitoring", "dashboards", "visualization", "observability", "metrics", "logs"], "abstract": "Observability platform for metrics, logs, and distributed tracing", "logo": "grafana-logo.svg", "website": "https://grafana.com" ,"summary": "Grafana is the open-source analytics and monitoring solution for every database. Create, explore, and share dashboards with your team and foster a data-driven culture." ,"docs": "/docs/services/observability/grafana" ,"playbook": "034-setup-grafana.yml" ,"priority": 20 ,"checkCommand": "kubectl get pods -n monitoring -l app.kubernetes.io/name=grafana --no-headers 2>/dev/null | grep -q Running" ,"removePlaybook": "034-remove-grafana.yml" ,"requires": ["prometheus", "loki", "tempo", "otel-collector"] ,"helmChart": "grafana/grafana" ,"namespace": "monitoring" } , { "@type": "SoftwareApplication", "id": "loki", "name": "Loki", "description": "Log aggregation and storage", "category": "OBSERVABILITY", "tags": ["logging", "logs", "aggregation", "observability", "monitoring"], "abstract": "Horizontally-scalable log aggregation system", "logo": "loki-logo.png", "website": "https://grafana.com/oss/loki/" ,"summary": "Loki is a horizontally-scalable, highly-available, multi-tenant log aggregation system inspired by Prometheus. It indexes labels, not log content, making it cost-effective and easy to operate." ,"docs": "/docs/services/observability/loki" ,"playbook": "032-setup-loki.yml" ,"priority": 11 ,"checkCommand": "kubectl get pods -n monitoring -l app.kubernetes.io/name=loki --no-headers 2>/dev/null | grep -q Running" ,"removePlaybook": "032-remove-loki.yml" ,"helmChart": "grafana/loki" ,"namespace": "monitoring" } , { "@type": "SoftwareApplication", "id": "otel-collector", "name": "OpenTelemetry Collector", "description": "Telemetry data collection and processing", "category": "OBSERVABILITY", "tags": ["telemetry", "opentelemetry", "otel", "observability", "traces", "metrics", "logs"], "abstract": "Vendor-agnostic telemetry collection and processing", "logo": "otel-collector-logo.svg", "website": "https://opentelemetry.io" ,"summary": "The OpenTelemetry Collector offers a vendor-agnostic implementation to receive, process, and export telemetry data. It removes the need to run multiple agents/collectors." ,"docs": "/docs/services/observability/otel-collector" ,"playbook": "033-setup-otel-collector.yml" ,"priority": 13 ,"checkCommand": "kubectl get pods -n monitoring -l app.kubernetes.io/name=opentelemetry-collector --no-headers 2>/dev/null | grep -q Running" ,"removePlaybook": "033-remove-otel-collector.yml" ,"requires": ["prometheus", "loki", "tempo"] ,"helmChart": "open-telemetry/opentelemetry-collector" ,"namespace": "monitoring" } , { "@type": "SoftwareApplication", "id": "prometheus", "name": "Prometheus", "description": "Metrics collection and storage for observability", "category": "OBSERVABILITY", "tags": ["monitoring", "metrics", "alerting", "time-series", "observability"], "abstract": "Time-series database for metrics collection, storage, and alerting", "logo": "prometheus-logo.svg", "website": "https://prometheus.io" ,"summary": "Prometheus is a systems monitoring and alerting toolkit that collects metrics from configured targets, stores them locally, and provides a powerful query language (PromQL) for analysis and alerting." ,"docs": "/docs/services/observability/prometheus" ,"playbook": "030-setup-prometheus.yml" ,"priority": 10 ,"checkCommand": "kubectl get pods -n monitoring -l app.kubernetes.io/name=prometheus --no-headers 2>/dev/null | grep -q Running" ,"removePlaybook": "030-remove-prometheus.yml" ,"helmChart": "prometheus-community/prometheus" ,"namespace": "monitoring" } , { "@type": "SoftwareApplication", "id": "tempo", "name": "Tempo", "description": "Distributed tracing backend", "category": "OBSERVABILITY", "tags": ["tracing", "distributed-tracing", "observability", "monitoring", "spans"], "abstract": "Open source distributed tracing backend", "logo": "tempo-logo.svg", "website": "https://grafana.com/oss/tempo/" ,"summary": "Tempo is an open source, easy-to-use, high-scale distributed tracing backend. It requires only object storage to operate and integrates seamlessly with Grafana, Prometheus, and Loki." ,"docs": "/docs/services/observability/tempo" ,"playbook": "031-setup-tempo.yml" ,"priority": 12 ,"checkCommand": "kubectl get pods -n monitoring -l app.kubernetes.io/name=tempo --no-headers 2>/dev/null | grep -q Running" ,"removePlaybook": "031-remove-tempo.yml" ,"helmChart": "grafana/tempo" ,"namespace": "monitoring" } ]}