{
  "manifest_version": "1.0.0",
  "template": {
    "id": "165260fe-b6c9-443e-bc99-569985d3b5d9",
    "slug": "K5vWpm",
    "name": "Kafka",
    "description": "A Kafka template on Railway.",
    "url": "https://railway.com/deploy/K5vWpm"
  },
  "services": [
    {
      "name": "Zookeeper",
      "source": {
        "repo": "https://github.com/oussamajabnouni/railway-kafka"
      },
      "needs_volume": false,
      "http": false
    },
    {
      "name": "Producer",
      "source": {
        "repo": "https://github.com/oussamajabnouni/railway-kafka"
      },
      "needs_volume": false,
      "http": false
    },
    {
      "name": "Consumer",
      "source": {
        "repo": "https://github.com/oussamajabnouni/railway-kafka"
      },
      "needs_volume": false,
      "http": false
    },
    {
      "name": "Kafka",
      "source": {
        "repo": "https://github.com/oussamajabnouni/railway-kafka"
      },
      "needs_volume": false,
      "http": false
    }
  ],
  "required_inputs": [
    {
      "key": "PORT",
      "service": "Zookeeper",
      "description": "Provide a value for PORT.",
      "secret": false,
      "strategy": "default",
      "default": "2181"
    },
    {
      "key": "ZOOKEEPER_CLIENT_PORT",
      "service": "Zookeeper",
      "description": "Provide a value for ZOOKEEPER_CLIENT_PORT.",
      "secret": false,
      "strategy": "default",
      "default": "2181"
    },
    {
      "key": "BROKERS",
      "service": "Producer",
      "description": "Provide a value for BROKERS.",
      "secret": false,
      "strategy": "default",
      "default": "kafka.railway.internal:29092"
    },
    {
      "key": "BROKERS",
      "service": "Consumer",
      "description": "Provide a value for BROKERS.",
      "secret": false,
      "strategy": "default",
      "default": "kafka.railway.internal:29092"
    },
    {
      "key": "PORT",
      "service": "Kafka",
      "description": "Provide a value for PORT.",
      "secret": false,
      "strategy": "default",
      "default": "29092"
    },
    {
      "key": "KAFKA_ZOOKEEPER_CONNECT",
      "service": "Kafka",
      "description": "Provide a value for KAFKA_ZOOKEEPER_CONNECT.",
      "secret": false,
      "strategy": "default",
      "default": "zookeeper.railway.internal:2181"
    },
    {
      "key": "KAFKA_ADVERTISED_LISTENERS",
      "service": "Kafka",
      "description": "Provide a value for KAFKA_ADVERTISED_LISTENERS.",
      "secret": false,
      "strategy": "default",
      "default": "INTERNAL://kafka.railway.internal:29092"
    },
    {
      "key": "KAFKA_INTER_BROKER_LISTENER_NAME",
      "service": "Kafka",
      "description": "Provide a value for KAFKA_INTER_BROKER_LISTENER_NAME.",
      "secret": false,
      "strategy": "default",
      "default": "INTERNAL"
    },
    {
      "key": "KAFKA_LISTENER_SECURITY_PROTOCOL_MAP",
      "service": "Kafka",
      "description": "Provide a value for KAFKA_LISTENER_SECURITY_PROTOCOL_MAP.",
      "secret": false,
      "strategy": "default",
      "default": "INTERNAL:PLAINTEXT"
    }
  ],
  "deploy": {
    "mcp": {
      "server": "railway",
      "tool": "deploy_template",
      "args": {
        "template_code": "K5vWpm"
      }
    },
    "cli": "railway deploy --template K5vWpm",
    "api": {
      "method": "POST",
      "path": "/graphql/v2",
      "body": {
        "query": "mutation templateDeploy($input: TemplateDeployV2Input!) { templateDeployV2(input: $input) { projectId workflowId } }",
        "variables": {
          "input": {
            "templateId": "165260fe-b6c9-443e-bc99-569985d3b5d9",
            "serializedConfig": {
              "services": {
                "81c5f379-3b48-4bbe-a9f4-0da951ba0baa": {
                  "name": "Zookeeper",
                  "build": {},
                  "deploy": {
                    "startCommand": null,
                    "healthcheckPath": null
                  },
                  "source": {
                    "repo": "https://github.com/oussamajabnouni/railway-kafka",
                    "rootDirectory": "/zookeeper"
                  },
                  "variables": {
                    "PORT": {
                      "isOptional": false,
                      "defaultValue": "2181"
                    },
                    "ZOOKEEPER_CLIENT_PORT": {
                      "isOptional": false,
                      "defaultValue": "2181"
                    }
                  },
                  "networking": {
                    "tcpProxies": {},
                    "serviceDomains": {}
                  },
                  "volumeMounts": {}
                },
                "85517395-d085-4fc3-a6ea-65845625e9ea": {
                  "name": "Producer",
                  "build": {},
                  "deploy": {
                    "startCommand": null,
                    "healthcheckPath": null
                  },
                  "source": {
                    "repo": "https://github.com/oussamajabnouni/railway-kafka",
                    "rootDirectory": "/producer"
                  },
                  "variables": {
                    "BROKERS": {
                      "isOptional": false,
                      "defaultValue": "kafka.railway.internal:29092"
                    }
                  },
                  "networking": {
                    "tcpProxies": {},
                    "serviceDomains": {}
                  },
                  "volumeMounts": {}
                },
                "b606345b-3b78-403f-9f24-e098296b79f6": {
                  "name": "Consumer",
                  "build": {},
                  "deploy": {
                    "startCommand": null,
                    "healthcheckPath": null
                  },
                  "source": {
                    "repo": "https://github.com/oussamajabnouni/railway-kafka",
                    "rootDirectory": "/consumer"
                  },
                  "variables": {
                    "BROKERS": {
                      "isOptional": false,
                      "defaultValue": "kafka.railway.internal:29092"
                    }
                  },
                  "networking": {
                    "tcpProxies": {},
                    "serviceDomains": {}
                  },
                  "volumeMounts": {}
                },
                "c188a6e6-24d2-43ee-81a6-9f36dd223691": {
                  "name": "Kafka",
                  "build": {},
                  "deploy": {
                    "startCommand": null,
                    "healthcheckPath": null
                  },
                  "source": {
                    "repo": "https://github.com/oussamajabnouni/railway-kafka",
                    "rootDirectory": "/kafka"
                  },
                  "variables": {
                    "PORT": {
                      "isOptional": false,
                      "defaultValue": "29092"
                    },
                    "KAFKA_ZOOKEEPER_CONNECT": {
                      "isOptional": false,
                      "defaultValue": "zookeeper.railway.internal:2181"
                    },
                    "KAFKA_ADVERTISED_LISTENERS": {
                      "isOptional": false,
                      "defaultValue": "INTERNAL://kafka.railway.internal:29092"
                    },
                    "KAFKA_INTER_BROKER_LISTENER_NAME": {
                      "isOptional": false,
                      "defaultValue": "INTERNAL"
                    },
                    "KAFKA_LISTENER_SECURITY_PROTOCOL_MAP": {
                      "isOptional": false,
                      "defaultValue": "INTERNAL:PLAINTEXT"
                    }
                  },
                  "networking": {
                    "tcpProxies": {},
                    "serviceDomains": {}
                  },
                  "volumeMounts": {}
                }
              }
            }
          }
        }
      }
    }
  },
  "post_deploy": {},
  "resources": {
    "expected_services": 4,
    "needs_volume": false
  },
  "generated_at": "2026-09-21T22:14:44.200Z",
  "generator_version": "0.1.0",
  "status": "validated",
  "validated_at": "2026-09-21T16:58:15.537Z",
  "success_rate_30d": 1,
  "validation": {
    "last_run_id": "run_33dfcbb874664be38b8f",
    "checks": [
      {
        "name": "workflow_completed",
        "passed": true
      },
      {
        "name": "all_services_deployed",
        "passed": true
      },
      {
        "name": "stays_up",
        "passed": true
      }
    ],
    "typical_ready_seconds": 101,
    "typical_build_seconds": 35,
    "typical_start_seconds": 10,
    "slowest_service": "Kafka"
  }
}
