{
  "repo": "tidbcloud/loki",
  "binary": "loki",
  "binary_path": "cmd/loki/main.go",
  "dependencies": {
    "Runtime LokiHTTPAndGRPC.ServerConfigListeners": {
      "infrastructure": {},
      "services": []
    },
    "HTTP GET /ready": {
      "infrastructure": {},
      "services": []
    },
    "HTTP GET /services": {
      "infrastructure": {},
      "services": []
    },
    "Runtime LokiModules.RunTargetModules": {
      "infrastructure": {
        "object-storage-and-index": {
          "conditions": [
            "Depends on storage_config and schema_config"
          ],
          "operations": [
            {
              "operation": "Chunk/index store access",
              "trigger": "Persist and query log data",
              "implementation": "storage.Config, SchemaConfig, TableManager, compactor.Config"
            }
          ]
        },
        "memberlist-ring": {
          "conditions": [
            "memberlist enabled"
          ],
          "operations": [
            {
              "operation": "Ring membership and service discovery",
              "trigger": "Coordinate distributed Loki modules",
              "implementation": "memberlist.KVConfig and ring.Ring"
            }
          ]
        }
      },
      "services": []
    }
  },
  "notes": [
    "cmd/loki delegates most route registration to the Loki module graph in pkg/loki.",
    "The active runtime surface depends on the selected target, but HTTP+gRPC listeners, /ready, and /services are always wired through the shared server."
  ]
}
