{
  "manifest_version": "1.0.0",
  "template": {
    "id": "dbcca2c1-a313-4a82-9e59-5a3c5d168437",
    "slug": "i-rqKj",
    "name": "xtdb",
    "description": "A single node XTDB deployment",
    "url": "https://railway.com/deploy/i-rqKj",
    "upstream": {
      "repo_url": "https://github.com/railwayapp-templates/minio-console"
    }
  },
  "services": [
    {
      "name": "minio-console",
      "source": {
        "repo": "https://github.com/railwayapp-templates/minio-console"
      },
      "needs_volume": false,
      "http": true
    },
    {
      "name": "kafka",
      "source": {
        "image": "confluentinc/cp-kafka:7.7.1"
      },
      "needs_volume": false,
      "http": false
    },
    {
      "name": "minio",
      "source": {
        "image": "minio/minio"
      },
      "needs_volume": true,
      "volume_mount_path": "/data",
      "http": false
    },
    {
      "name": "xtdb-railway",
      "source": {
        "repo": "https://github.com/FiV0/xtdb-railway"
      },
      "needs_volume": true,
      "volume_mount_path": "/var/lib/xtdb",
      "tcp_ports": [
        5432
      ],
      "http": false
    }
  ],
  "required_inputs": [
    {
      "key": "PORT",
      "service": "minio-console",
      "description": "Provide a value for PORT.",
      "secret": false,
      "strategy": "default",
      "default": "9090"
    },
    {
      "key": "USER",
      "service": "minio-console",
      "description": "Provide a value for USER.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "PASSWORD",
      "service": "minio-console",
      "description": "Provide a value for PASSWORD.",
      "secret": true,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "CONSOLE_MINIO_SERVER",
      "service": "minio-console",
      "description": "Provide a value for CONSOLE_MINIO_SERVER.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "K_PORT",
      "service": "kafka",
      "description": "Provide a value for K_PORT.",
      "secret": false,
      "strategy": "default",
      "default": "29092"
    },
    {
      "key": "CLUSTER_ID",
      "service": "kafka",
      "description": "Provide a value for CLUSTER_ID.",
      "secret": false,
      "strategy": "default",
      "default": "1"
    },
    {
      "key": "KAFKA_NODE_ID",
      "service": "kafka",
      "description": "Provide a value for KAFKA_NODE_ID.",
      "secret": false,
      "strategy": "default",
      "default": "1"
    },
    {
      "key": "KAFKA_LISTENERS",
      "service": "kafka",
      "description": "Provide a value for KAFKA_LISTENERS.",
      "secret": false,
      "strategy": "default",
      "default": "PLAINTEXT://kafka:29092,CONTROLLER://kafka:29093,PLAINTEXT_HOST://0.0.0.0:9092"
    },
    {
      "key": "KAFKA_PRIVATE_HOST",
      "service": "kafka",
      "description": "Provide a value for KAFKA_PRIVATE_HOST.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "KAFKA_PROCESS_ROLES",
      "service": "kafka",
      "description": "Provide a value for KAFKA_PROCESS_ROLES.",
      "secret": false,
      "strategy": "default",
      "default": "broker,controller"
    },
    {
      "key": "KAFKA_ADVERTISED_LISTENERS",
      "service": "kafka",
      "description": "Provide a value for KAFKA_ADVERTISED_LISTENERS.",
      "secret": false,
      "strategy": "default",
      "default": "PLAINTEXT://kafka:29092,PLAINTEXT_HOST://localhost:9092"
    },
    {
      "key": "KAFKA_CONTROLLER_QUORUM_VOTERS",
      "service": "kafka",
      "description": "Provide a value for KAFKA_CONTROLLER_QUORUM_VOTERS.",
      "secret": false,
      "strategy": "default",
      "default": "1@kafka:29093"
    },
    {
      "key": "KAFKA_CONTROLLER_LISTENER_NAMES",
      "service": "kafka",
      "description": "Provide a value for KAFKA_CONTROLLER_LISTENER_NAMES.",
      "secret": false,
      "strategy": "default",
      "default": "CONTROLLER"
    },
    {
      "key": "KAFKA_INTER_BROKER_LISTENER_NAME",
      "service": "kafka",
      "description": "Provide a value for KAFKA_INTER_BROKER_LISTENER_NAME.",
      "secret": false,
      "strategy": "default",
      "default": "PLAINTEXT"
    },
    {
      "key": "KAFKA_LISTENER_SECURITY_PROTOCOL_MAP",
      "service": "kafka",
      "description": "Provide a value for KAFKA_LISTENER_SECURITY_PROTOCOL_MAP.",
      "secret": false,
      "strategy": "default",
      "default": "CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT"
    },
    {
      "key": "KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR",
      "service": "kafka",
      "description": "Provide a value for KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR.",
      "secret": false,
      "strategy": "default",
      "default": "1"
    },
    {
      "key": "PORT",
      "service": "minio",
      "description": "Provide a value for PORT.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "MINIO_ROOT_USER",
      "service": "minio",
      "description": "Provide a value for MINIO_ROOT_USER.",
      "secret": false,
      "strategy": "default",
      "default": "minioadmin"
    },
    {
      "key": "MINIO_PRIVATE_HOST",
      "service": "minio",
      "description": "Provide a value for MINIO_PRIVATE_HOST.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "MINIO_PRIVATE_PORT",
      "service": "minio",
      "description": "Provide a value for MINIO_PRIVATE_PORT.",
      "secret": false,
      "strategy": "default",
      "default": "9000"
    },
    {
      "key": "MINIO_ROOT_PASSWORD",
      "service": "minio",
      "description": "Provide a value for MINIO_ROOT_PASSWORD.",
      "secret": true,
      "strategy": "default",
      "default": "minioadmin"
    },
    {
      "key": "MINIO_PRIVATE_ENDPOINT",
      "service": "minio",
      "description": "Provide a value for MINIO_PRIVATE_ENDPOINT.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "ACCESS_KEY",
      "service": "xtdb-railway",
      "description": "Provide a value for ACCESS_KEY.",
      "secret": true,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "AWS_REGION",
      "service": "xtdb-railway",
      "description": "Provide a value for AWS_REGION.",
      "secret": false,
      "strategy": "default",
      "default": "aws-iso-global"
    },
    {
      "key": "SECRET_KEY",
      "service": "xtdb-railway",
      "description": "Provide a value for SECRET_KEY.",
      "secret": true,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "HEALTH_PORT",
      "service": "xtdb-railway",
      "description": "Provide a value for HEALTH_PORT.",
      "secret": false,
      "strategy": "default",
      "default": "8080"
    },
    {
      "key": "XTDB_NODE_ID",
      "service": "xtdb-railway",
      "description": "Provide a value for XTDB_NODE_ID.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "XTDB_LOG_TOPIC",
      "service": "xtdb-railway",
      "description": "Provide a value for XTDB_LOG_TOPIC.",
      "secret": false,
      "strategy": "default",
      "default": "xt-log"
    },
    {
      "key": "XTDB_S3_BUCKET",
      "service": "xtdb-railway",
      "description": "Provide a value for XTDB_S3_BUCKET.",
      "secret": false,
      "strategy": "default",
      "default": "xtdb-bucket"
    },
    {
      "key": "XTDB_S3_ENDPOINT",
      "service": "xtdb-railway",
      "description": "Provide a value for XTDB_S3_ENDPOINT.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "AWS_S3_FORCE_PATH_STYLE",
      "service": "xtdb-railway",
      "description": "Provide a value for AWS_S3_FORCE_PATH_STYLE.",
      "secret": false,
      "strategy": "default",
      "default": "true"
    },
    {
      "key": "KAFKA_BOOTSTRAP_SERVERS",
      "service": "xtdb-railway",
      "description": "Provide a value for KAFKA_BOOTSTRAP_SERVERS.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    }
  ],
  "deploy": {
    "mcp": {
      "server": "railway",
      "tool": "deploy_template",
      "args": {
        "template_code": "i-rqKj"
      }
    },
    "cli": "railway deploy --template i-rqKj",
    "api": {
      "method": "POST",
      "path": "/graphql/v2",
      "body": {
        "query": "mutation templateDeploy($input: TemplateDeployV2Input!) { templateDeployV2(input: $input) { projectId workflowId } }",
        "variables": {
          "input": {
            "templateId": "dbcca2c1-a313-4a82-9e59-5a3c5d168437",
            "serializedConfig": {
              "services": {
                "447a18d2-abc9-48cf-bace-8da0e0530c42": {
                  "icon": "https://panzura.com/wp-content/uploads/2021/04/minio.png",
                  "name": "minio-console",
                  "deploy": {
                    "startCommand": "/bin/sh -c \"exec console server --host 0.0.0.0 --port $PORT\""
                  },
                  "source": {
                    "repo": "railwayapp-templates/minio-console",
                    "branch": null,
                    "rootDirectory": null
                  },
                  "variables": {
                    "PORT": {
                      "isOptional": false,
                      "description": "",
                      "defaultValue": "9090"
                    },
                    "USER": {
                      "isOptional": false,
                      "description": "",
                      "defaultValue": "${{minio.MINIO_ROOT_USER}}"
                    },
                    "PASSWORD": {
                      "isOptional": false,
                      "description": "",
                      "defaultValue": "${{minio.MINIO_ROOT_PASSWORD}}"
                    },
                    "CONSOLE_MINIO_SERVER": {
                      "isOptional": false,
                      "description": "",
                      "defaultValue": "${{minio.MINIO_PRIVATE_ENDPOINT}}"
                    }
                  },
                  "networking": {
                    "serviceDomains": {
                      "<hasDomain>": {}
                    }
                  }
                },
                "83229022-b8d2-4ced-99c5-3cfd20d74176": {
                  "icon": "https://e7.pngegg.com/pngimages/630/547/png-clipart-kafka-vertical-logo-tech-companies-thumbnail.png",
                  "name": "kafka",
                  "source": {
                    "image": "confluentinc/cp-kafka:7.7.1"
                  },
                  "variables": {
                    "K_PORT": {
                      "isOptional": false,
                      "description": "",
                      "defaultValue": "29092"
                    },
                    "CLUSTER_ID": {
                      "defaultValue": "1"
                    },
                    "KAFKA_NODE_ID": {
                      "defaultValue": "1"
                    },
                    "KAFKA_LISTENERS": {
                      "defaultValue": "PLAINTEXT://kafka:29092,CONTROLLER://kafka:29093,PLAINTEXT_HOST://0.0.0.0:9092"
                    },
                    "KAFKA_PRIVATE_HOST": {
                      "isOptional": false,
                      "description": "",
                      "defaultValue": "${{RAILWAY_SERVICE_NAME}}:${{K_PORT}}"
                    },
                    "KAFKA_PROCESS_ROLES": {
                      "defaultValue": "broker,controller"
                    },
                    "KAFKA_ADVERTISED_LISTENERS": {
                      "defaultValue": "PLAINTEXT://kafka:29092,PLAINTEXT_HOST://localhost:9092"
                    },
                    "KAFKA_CONTROLLER_QUORUM_VOTERS": {
                      "defaultValue": "1@kafka:29093"
                    },
                    "KAFKA_CONTROLLER_LISTENER_NAMES": {
                      "defaultValue": "CONTROLLER"
                    },
                    "KAFKA_INTER_BROKER_LISTENER_NAME": {
                      "defaultValue": "PLAINTEXT"
                    },
                    "KAFKA_LISTENER_SECURITY_PROTOCOL_MAP": {
                      "defaultValue": "CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT"
                    },
                    "KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR": {
                      "defaultValue": "1"
                    }
                  },
                  "networking": {}
                },
                "d4b5ad8a-da54-4385-8289-90410d8b06c9": {
                  "icon": "https://panzura.com/wp-content/uploads/2021/04/minio.png",
                  "name": "minio",
                  "deploy": {
                    "startCommand": "/bin/sh -c \"mkdir -p /data/xtdb-bucket && exec minio server --address [::]:$MINIO_PRIVATE_PORT $RAILWAY_VOLUME_MOUNT_PATH\"",
                    "healthcheckPath": "/minio/health/live"
                  },
                  "source": {
                    "image": "minio/minio"
                  },
                  "variables": {
                    "PORT": {
                      "isOptional": false,
                      "description": "",
                      "defaultValue": "${{minio.MINIO_PRIVATE_PORT}}"
                    },
                    "MINIO_ROOT_USER": {
                      "defaultValue": "minioadmin"
                    },
                    "MINIO_PRIVATE_HOST": {
                      "isOptional": false,
                      "description": "",
                      "defaultValue": "${{RAILWAY_PRIVATE_DOMAIN}}"
                    },
                    "MINIO_PRIVATE_PORT": {
                      "isOptional": false,
                      "description": "",
                      "defaultValue": "9000"
                    },
                    "MINIO_ROOT_PASSWORD": {
                      "defaultValue": "minioadmin"
                    },
                    "MINIO_PRIVATE_ENDPOINT": {
                      "isOptional": false,
                      "description": "",
                      "defaultValue": "http://${{MINIO_PRIVATE_HOST}}:${{MINIO_PRIVATE_PORT}}"
                    }
                  },
                  "networking": {},
                  "volumeMounts": {
                    "d4b5ad8a-da54-4385-8289-90410d8b06c9": {
                      "mountPath": "/data"
                    }
                  }
                },
                "f59d9f1e-6602-4b1d-b917-6055dbe63053": {
                  "icon": "https://avatars.githubusercontent.com/u/80914002?s=200&v=4",
                  "name": "xtdb-railway",
                  "deploy": {
                    "startCommand": "",
                    "healthcheckPath": ""
                  },
                  "source": {
                    "repo": "FiV0/xtdb-railway",
                    "branch": null,
                    "rootDirectory": null
                  },
                  "variables": {
                    "ACCESS_KEY": {
                      "isOptional": false,
                      "description": "",
                      "defaultValue": "${{minio.MINIO_ROOT_USER}}"
                    },
                    "AWS_REGION": {
                      "isOptional": false,
                      "description": "",
                      "defaultValue": "aws-iso-global"
                    },
                    "SECRET_KEY": {
                      "isOptional": false,
                      "description": "",
                      "defaultValue": "${{minio.MINIO_ROOT_PASSWORD}}"
                    },
                    "HEALTH_PORT": {
                      "isOptional": false,
                      "description": "",
                      "defaultValue": "8080"
                    },
                    "XTDB_NODE_ID": {
                      "isOptional": false,
                      "description": "",
                      "defaultValue": "xtdb-node-${{RAILWAY_SERVICE_ID}}"
                    },
                    "XTDB_LOG_TOPIC": {
                      "isOptional": false,
                      "description": "",
                      "defaultValue": "xt-log"
                    },
                    "XTDB_S3_BUCKET": {
                      "isOptional": false,
                      "description": "",
                      "defaultValue": "xtdb-bucket"
                    },
                    "XTDB_S3_ENDPOINT": {
                      "isOptional": false,
                      "description": "",
                      "defaultValue": "${{minio.MINIO_PRIVATE_ENDPOINT}}"
                    },
                    "AWS_S3_FORCE_PATH_STYLE": {
                      "isOptional": false,
                      "description": "",
                      "defaultValue": "true"
                    },
                    "KAFKA_BOOTSTRAP_SERVERS": {
                      "isOptional": false,
                      "description": "",
                      "defaultValue": "${{kafka.KAFKA_PRIVATE_HOST}}"
                    }
                  },
                  "networking": {
                    "tcpProxies": {
                      "5432": {}
                    }
                  },
                  "volumeMounts": {
                    "f59d9f1e-6602-4b1d-b917-6055dbe63053": {
                      "mountPath": "/var/lib/xtdb"
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "post_deploy": {},
  "resources": {
    "expected_services": 4,
    "needs_volume": true
  },
  "generated_at": "2026-09-20T22:14:37.505Z",
  "generator_version": "0.1.0",
  "status": "degraded",
  "validated_at": "2026-09-19T01:11:17.742Z",
  "success_rate_30d": 0,
  "validation": {
    "last_run_id": "run_613266eac0e54109b166",
    "checks": [
      {
        "name": "workflow_completed",
        "passed": true
      },
      {
        "name": "all_services_deployed",
        "passed": false,
        "detail": "BUILDING,BUILDING,FAILED,SUCCESS"
      }
    ]
  }
}
