{
  "manifest_version": "1.0.0",
  "template": {
    "id": "575391bb-fc12-454d-8e3a-88e343f7fc49",
    "slug": "datahub",
    "name": "DataHub",
    "description": "DataHub: Searchable catalog of your tables, dashboards & pipelines",
    "url": "https://railway.com/deploy/datahub",
    "upstream": {
      "image": "acryldata/datahub-gms:v1.7.0"
    }
  },
  "services": [
    {
      "name": "datahub-mce-consumer",
      "source": {
        "image": "acryldata/datahub-mce-consumer:v1.7.0"
      },
      "needs_volume": false,
      "http": false
    },
    {
      "name": "datahub-mae-consumer",
      "source": {
        "image": "acryldata/datahub-mae-consumer:v1.7.0"
      },
      "needs_volume": false,
      "http": false
    },
    {
      "name": "datahub-gms",
      "source": {
        "image": "acryldata/datahub-gms:v1.7.0"
      },
      "needs_volume": false,
      "http": true
    },
    {
      "name": "datahub-system-update",
      "source": {
        "repo": "https://github.com/gridalpha/datahub-railway"
      },
      "needs_volume": false,
      "http": false
    },
    {
      "name": "kafka",
      "source": {
        "image": "confluentinc/cp-kafka:8.2.2"
      },
      "needs_volume": true,
      "volume_mount_path": "/var/lib/kafka/data",
      "http": false
    },
    {
      "name": "MySQL",
      "source": {
        "image": "mysql:9.4"
      },
      "needs_volume": true,
      "volume_mount_path": "/var/lib/mysql",
      "http": false
    },
    {
      "name": "datahub-frontend",
      "source": {
        "repo": "https://github.com/gridalpha/datahub-railway"
      },
      "needs_volume": false,
      "http": true
    },
    {
      "name": "opensearch",
      "source": {
        "repo": "https://github.com/gridalpha/datahub-railway"
      },
      "needs_volume": true,
      "volume_mount_path": "/usr/share/opensearch/data",
      "http": false
    },
    {
      "name": "datahub-actions",
      "source": {
        "image": "acryldata/datahub-actions:v1.7.0-slim"
      },
      "needs_volume": false,
      "http": false
    }
  ],
  "required_inputs": [
    {
      "key": "PORT",
      "service": "datahub-mce-consumer",
      "description": "Management port Railway health-checks",
      "secret": false,
      "strategy": "default",
      "default": "4319"
    },
    {
      "key": "JAVA_OPTS",
      "service": "datahub-mce-consumer",
      "description": "Heap sized from the container limit",
      "secret": false,
      "strategy": "default",
      "default": "-XX:MaxRAMPercentage=70"
    },
    {
      "key": "DATAHUB_GMS_HOST",
      "service": "datahub-mce-consumer",
      "description": "Metadata service host",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "DATAHUB_GMS_PORT",
      "service": "datahub-mce-consumer",
      "description": "Metadata service port",
      "secret": false,
      "strategy": "default",
      "default": "8080"
    },
    {
      "key": "ELASTICSEARCH_HOST",
      "service": "datahub-mce-consumer",
      "description": "Search cluster host",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "ELASTICSEARCH_PORT",
      "service": "datahub-mce-consumer",
      "description": "Search cluster port",
      "secret": false,
      "strategy": "default",
      "default": "9200"
    },
    {
      "key": "GRAPH_SERVICE_IMPL",
      "service": "datahub-mce-consumer",
      "description": "Lineage graph backend",
      "secret": false,
      "strategy": "default",
      "default": "elasticsearch"
    },
    {
      "key": "EBEAN_DATASOURCE_URL",
      "service": "datahub-mce-consumer",
      "description": "JDBC connection string",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "MCE_CONSUMER_ENABLED",
      "service": "datahub-mce-consumer",
      "description": "Run the proposal consumer",
      "secret": false,
      "strategy": "default",
      "default": "true"
    },
    {
      "key": "SCHEMA_REGISTRY_TYPE",
      "service": "datahub-mce-consumer",
      "description": "Use the built-in registry",
      "secret": false,
      "strategy": "default",
      "default": "INTERNAL"
    },
    {
      "key": "EBEAN_DATASOURCE_HOST",
      "service": "datahub-mce-consumer",
      "description": "Database host and port",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "ELASTICSEARCH_USE_SSL",
      "service": "datahub-mce-consumer",
      "description": "No TLS on the private network",
      "secret": false,
      "strategy": "default",
      "default": "false"
    },
    {
      "key": "ELASTICSEARCH_PROTOCOL",
      "service": "datahub-mce-consumer",
      "description": "Private traffic is plain HTTP",
      "secret": false,
      "strategy": "default",
      "default": "http"
    },
    {
      "key": "KAFKA_BOOTSTRAP_SERVER",
      "service": "datahub-mce-consumer",
      "description": "Kafka broker address",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "EBEAN_DATASOURCE_DRIVER",
      "service": "datahub-mce-consumer",
      "description": "JDBC driver class",
      "secret": false,
      "strategy": "default",
      "default": "com.mysql.jdbc.Driver"
    },
    {
      "key": "ALTERNATE_MCP_VALIDATION",
      "service": "datahub-mce-consumer",
      "description": "Faster proposal validation",
      "secret": false,
      "strategy": "default",
      "default": "true"
    },
    {
      "key": "KAFKA_SCHEMAREGISTRY_URL",
      "service": "datahub-mce-consumer",
      "description": "GMS internal registry",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "DATAHUB_TELEMETRY_ENABLED",
      "service": "datahub-mce-consumer",
      "description": "Upstream telemetry off",
      "secret": false,
      "strategy": "default",
      "default": "false"
    },
    {
      "key": "EBEAN_DATASOURCE_PASSWORD",
      "service": "datahub-mce-consumer",
      "description": "Database password",
      "secret": true,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "EBEAN_DATASOURCE_USERNAME",
      "service": "datahub-mce-consumer",
      "description": "Database user",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "ENTITY_VERSIONING_ENABLED",
      "service": "datahub-mce-consumer",
      "description": "Keep aspect version history",
      "secret": false,
      "strategy": "default",
      "default": "true"
    },
    {
      "key": "DATAHUB_TOKEN_SERVICE_SALT",
      "service": "datahub-mce-consumer",
      "description": "Same source as GMS",
      "secret": true,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "MCP_CONSUMER_BATCH_ENABLED",
      "service": "datahub-mce-consumer",
      "description": "Batch proposal consumption",
      "secret": false,
      "strategy": "default",
      "default": "true"
    },
    {
      "key": "ENTITY_REGISTRY_CONFIG_PATH",
      "service": "datahub-mce-consumer",
      "description": "Entity model file",
      "secret": false,
      "strategy": "default",
      "default": "/datahub/datahub-mce-consumer/resources/entity-registry.yml"
    },
    {
      "key": "DATAHUB_WAIT_TIMEOUT_SECONDS",
      "service": "datahub-mce-consumer",
      "description": "Dependency wait budget",
      "secret": false,
      "strategy": "default",
      "default": "900"
    },
    {
      "key": "ELASTICSEARCH_IMPLEMENTATION",
      "service": "datahub-mce-consumer",
      "description": "Cluster flavour",
      "secret": false,
      "strategy": "default",
      "default": "opensearch"
    },
    {
      "key": "STRICT_URN_VALIDATION_ENABLED",
      "service": "datahub-mce-consumer",
      "description": "Reject malformed URNs",
      "secret": false,
      "strategy": "default",
      "default": "true"
    },
    {
      "key": "ELASTICSEARCH_SHIM_AUTO_DETECT",
      "service": "datahub-mce-consumer",
      "description": "Do not detect engine at boot",
      "secret": false,
      "strategy": "default",
      "default": "false"
    },
    {
      "key": "ELASTICSEARCH_SHIM_ENGINE_TYPE",
      "service": "datahub-mce-consumer",
      "description": "Pin the client, skip probing",
      "secret": false,
      "strategy": "default",
      "default": "OPENSEARCH_2"
    },
    {
      "key": "RAILWAY_HEALTHCHECK_TIMEOUT_SEC",
      "service": "datahub-mce-consumer",
      "description": "Waits on GMS before it listens",
      "secret": false,
      "strategy": "default",
      "default": "900"
    },
    {
      "key": "DATAHUB_TOKEN_SERVICE_SIGNING_KEY",
      "service": "datahub-mce-consumer",
      "description": "Same source as GMS",
      "secret": true,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "PORT",
      "service": "datahub-mae-consumer",
      "description": "Management port Railway health-checks",
      "secret": false,
      "strategy": "default",
      "default": "4319"
    },
    {
      "key": "JAVA_OPTS",
      "service": "datahub-mae-consumer",
      "description": "Heap sized from the container limit",
      "secret": false,
      "strategy": "default",
      "default": "-XX:MaxRAMPercentage=70"
    },
    {
      "key": "DATAHUB_GMS_HOST",
      "service": "datahub-mae-consumer",
      "description": "Metadata service host",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "DATAHUB_GMS_PORT",
      "service": "datahub-mae-consumer",
      "description": "Metadata service port",
      "secret": false,
      "strategy": "default",
      "default": "8080"
    },
    {
      "key": "ELASTICSEARCH_HOST",
      "service": "datahub-mae-consumer",
      "description": "Search cluster host",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "ELASTICSEARCH_PORT",
      "service": "datahub-mae-consumer",
      "description": "Search cluster port",
      "secret": false,
      "strategy": "default",
      "default": "9200"
    },
    {
      "key": "GRAPH_SERVICE_IMPL",
      "service": "datahub-mae-consumer",
      "description": "Lineage graph backend",
      "secret": false,
      "strategy": "default",
      "default": "elasticsearch"
    },
    {
      "key": "PE_CONSUMER_ENABLED",
      "service": "datahub-mae-consumer",
      "description": "Run the platform event consumer",
      "secret": false,
      "strategy": "default",
      "default": "true"
    },
    {
      "key": "EBEAN_DATASOURCE_URL",
      "service": "datahub-mae-consumer",
      "description": "JDBC connection string",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "MAE_CONSUMER_ENABLED",
      "service": "datahub-mae-consumer",
      "description": "Run the change-log consumer",
      "secret": false,
      "strategy": "default",
      "default": "true"
    },
    {
      "key": "SCHEMA_REGISTRY_TYPE",
      "service": "datahub-mae-consumer",
      "description": "Use the built-in registry",
      "secret": false,
      "strategy": "default",
      "default": "INTERNAL"
    },
    {
      "key": "EBEAN_DATASOURCE_HOST",
      "service": "datahub-mae-consumer",
      "description": "Database host and port",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "ELASTICSEARCH_USE_SSL",
      "service": "datahub-mae-consumer",
      "description": "No TLS on the private network",
      "secret": false,
      "strategy": "default",
      "default": "false"
    },
    {
      "key": "ELASTICSEARCH_PROTOCOL",
      "service": "datahub-mae-consumer",
      "description": "Private traffic is plain HTTP",
      "secret": false,
      "strategy": "default",
      "default": "http"
    },
    {
      "key": "KAFKA_BOOTSTRAP_SERVER",
      "service": "datahub-mae-consumer",
      "description": "Kafka broker address",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "EBEAN_DATASOURCE_DRIVER",
      "service": "datahub-mae-consumer",
      "description": "JDBC driver class",
      "secret": false,
      "strategy": "default",
      "default": "com.mysql.jdbc.Driver"
    },
    {
      "key": "KAFKA_SCHEMAREGISTRY_URL",
      "service": "datahub-mae-consumer",
      "description": "GMS internal registry",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "DATAHUB_TELEMETRY_ENABLED",
      "service": "datahub-mae-consumer",
      "description": "Upstream telemetry off",
      "secret": false,
      "strategy": "default",
      "default": "false"
    },
    {
      "key": "EBEAN_DATASOURCE_PASSWORD",
      "service": "datahub-mae-consumer",
      "description": "Database password",
      "secret": true,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "EBEAN_DATASOURCE_USERNAME",
      "service": "datahub-mae-consumer",
      "description": "Database user",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "ENTITY_VERSIONING_ENABLED",
      "service": "datahub-mae-consumer",
      "description": "Keep aspect version history",
      "secret": false,
      "strategy": "default",
      "default": "true"
    },
    {
      "key": "ENTITY_GRAPH_CACHE_ENABLED",
      "service": "datahub-mae-consumer",
      "description": "Disable the graph cache",
      "secret": false,
      "strategy": "default",
      "default": "false"
    },
    {
      "key": "MCL_CONSUMER_BATCH_ENABLED",
      "service": "datahub-mae-consumer",
      "description": "Batch change-log consumption",
      "secret": false,
      "strategy": "default",
      "default": "true"
    },
    {
      "key": "ENTITY_REGISTRY_CONFIG_PATH",
      "service": "datahub-mae-consumer",
      "description": "Entity model file",
      "secret": false,
      "strategy": "default",
      "default": "/datahub/datahub-mae-consumer/resources/entity-registry.yml"
    },
    {
      "key": "DATAHUB_WAIT_TIMEOUT_SECONDS",
      "service": "datahub-mae-consumer",
      "description": "Dependency wait budget",
      "secret": false,
      "strategy": "default",
      "default": "900"
    },
    {
      "key": "ELASTICSEARCH_IMPLEMENTATION",
      "service": "datahub-mae-consumer",
      "description": "Cluster flavour",
      "secret": false,
      "strategy": "default",
      "default": "opensearch"
    },
    {
      "key": "ELASTICSEARCH_SHIM_AUTO_DETECT",
      "service": "datahub-mae-consumer",
      "description": "Do not detect engine at boot",
      "secret": false,
      "strategy": "default",
      "default": "false"
    },
    {
      "key": "ELASTICSEARCH_SHIM_ENGINE_TYPE",
      "service": "datahub-mae-consumer",
      "description": "Pin the client, skip probing",
      "secret": false,
      "strategy": "default",
      "default": "OPENSEARCH_2"
    },
    {
      "key": "RAILWAY_HEALTHCHECK_TIMEOUT_SEC",
      "service": "datahub-mae-consumer",
      "description": "Provide a value for RAILWAY_HEALTHCHECK_TIMEOUT_SEC.",
      "secret": false,
      "strategy": "default",
      "default": "900"
    },
    {
      "key": "PORT",
      "service": "datahub-gms",
      "description": "Port Railway health-checks",
      "secret": false,
      "strategy": "default",
      "default": "8080"
    },
    {
      "key": "JAVA_OPTS",
      "service": "datahub-gms",
      "description": "Heap sized from the container limit",
      "secret": false,
      "strategy": "default",
      "default": "-XX:MaxRAMPercentage=70"
    },
    {
      "key": "SERVER_ADDRESS",
      "service": "datahub-gms",
      "description": "Dual-stack bind for private callers",
      "secret": false,
      "strategy": "default",
      "default": "::"
    },
    {
      "key": "THEME_V2_DEFAULT",
      "service": "datahub-gms",
      "description": "Use the redesigned theme",
      "secret": false,
      "strategy": "default",
      "default": "true"
    },
    {
      "key": "ELASTICSEARCH_HOST",
      "service": "datahub-gms",
      "description": "Search cluster host",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "ELASTICSEARCH_PORT",
      "service": "datahub-gms",
      "description": "Search cluster port",
      "secret": false,
      "strategy": "default",
      "default": "9200"
    },
    {
      "key": "GRAPH_SERVICE_IMPL",
      "service": "datahub-gms",
      "description": "Lineage graph backend",
      "secret": false,
      "strategy": "default",
      "default": "elasticsearch"
    },
    {
      "key": "DATAHUB_SERVER_TYPE",
      "service": "datahub-gms",
      "description": "Deployment label",
      "secret": false,
      "strategy": "default",
      "default": "railway"
    },
    {
      "key": "PE_CONSUMER_ENABLED",
      "service": "datahub-gms",
      "description": "Runs as its own service",
      "secret": false,
      "strategy": "default",
      "default": "false"
    },
    {
      "key": "EBEAN_DATASOURCE_URL",
      "service": "datahub-gms",
      "description": "JDBC connection string",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "MAE_CONSUMER_ENABLED",
      "service": "datahub-gms",
      "description": "Runs as its own service",
      "secret": false,
      "strategy": "default",
      "default": "false"
    },
    {
      "key": "MCE_CONSUMER_ENABLED",
      "service": "datahub-gms",
      "description": "Runs as its own service",
      "secret": false,
      "strategy": "default",
      "default": "false"
    },
    {
      "key": "SCHEMA_REGISTRY_TYPE",
      "service": "datahub-gms",
      "description": "Use the built-in registry",
      "secret": false,
      "strategy": "default",
      "default": "INTERNAL"
    },
    {
      "key": "UI_INGESTION_ENABLED",
      "service": "datahub-gms",
      "description": "Enable the Data Sources screen",
      "secret": false,
      "strategy": "default",
      "default": "true"
    },
    {
      "key": "EBEAN_DATASOURCE_HOST",
      "service": "datahub-gms",
      "description": "Database host and port",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "ELASTICSEARCH_USE_SSL",
      "service": "datahub-gms",
      "description": "No TLS on the private network",
      "secret": false,
      "strategy": "default",
      "default": "false"
    },
    {
      "key": "ELASTICSEARCH_PROTOCOL",
      "service": "datahub-gms",
      "description": "Private traffic is plain HTTP",
      "secret": false,
      "strategy": "default",
      "default": "http"
    },
    {
      "key": "ES_BULK_REFRESH_POLICY",
      "service": "datahub-gms",
      "description": "Do not force refresh per write",
      "secret": false,
      "strategy": "default",
      "default": "NONE"
    },
    {
      "key": "KAFKA_BOOTSTRAP_SERVER",
      "service": "datahub-gms",
      "description": "Kafka broker address",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "SEARCH_BAR_API_VARIANT",
      "service": "datahub-gms",
      "description": "Search API used by the bar",
      "secret": false,
      "strategy": "default",
      "default": "SEARCH_ACROSS_ENTITIES"
    },
    {
      "key": "EBEAN_DATASOURCE_DRIVER",
      "service": "datahub-gms",
      "description": "JDBC driver class",
      "secret": false,
      "strategy": "default",
      "default": "com.mysql.jdbc.Driver"
    },
    {
      "key": "SHOW_HOME_PAGE_REDESIGN",
      "service": "datahub-gms",
      "description": "New home page layout",
      "secret": false,
      "strategy": "default",
      "default": "true"
    },
    {
      "key": "ALTERNATE_MCP_VALIDATION",
      "service": "datahub-gms",
      "description": "Faster proposal validation",
      "secret": false,
      "strategy": "default",
      "default": "true"
    },
    {
      "key": "DATAHUB_SYSTEM_CLIENT_ID",
      "service": "datahub-gms",
      "description": "Service account id",
      "secret": false,
      "strategy": "default",
      "default": "__datahub_system"
    },
    {
      "key": "KAFKA_SCHEMAREGISTRY_URL",
      "service": "datahub-gms",
      "description": "Own registry over loopback",
      "secret": false,
      "strategy": "default",
      "default": "http://localhost:8080/schema-registry/api/"
    },
    {
      "key": "SHOW_HAS_SIBLINGS_FILTER",
      "service": "datahub-gms",
      "description": "Sibling assets filter",
      "secret": false,
      "strategy": "default",
      "default": "true"
    },
    {
      "key": "DATAHUB_TELEMETRY_ENABLED",
      "service": "datahub-gms",
      "description": "Upstream telemetry off",
      "secret": false,
      "strategy": "default",
      "default": "false"
    },
    {
      "key": "EBEAN_DATASOURCE_PASSWORD",
      "service": "datahub-gms",
      "description": "Database password",
      "secret": true,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "EBEAN_DATASOURCE_USERNAME",
      "service": "datahub-gms",
      "description": "Database user",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "ENTITY_VERSIONING_ENABLED",
      "service": "datahub-gms",
      "description": "Keep aspect version history",
      "secret": false,
      "strategy": "default",
      "default": "true"
    },
    {
      "key": "USAGE_AGGREGATION_ENABLED",
      "service": "datahub-gms",
      "description": "Aggregate usage statistics",
      "secret": false,
      "strategy": "default",
      "default": "true"
    },
    {
      "key": "DATAHUB_OBJECT_STORAGE_URI",
      "service": "datahub-gms",
      "description": "Set to s3://bucket to persist assets",
      "secret": false,
      "strategy": "default",
      "default": "file:///tmp/datahub-object-storage"
    },
    {
      "key": "DATAHUB_TOKEN_SERVICE_SALT",
      "service": "datahub-gms",
      "description": "Salt for token hashing",
      "secret": true,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "MCL_CONSUMER_BATCH_ENABLED",
      "service": "datahub-gms",
      "description": "Batch change-log consumption",
      "secret": false,
      "strategy": "default",
      "default": "true"
    },
    {
      "key": "MCP_CONSUMER_BATCH_ENABLED",
      "service": "datahub-gms",
      "description": "Batch proposal consumption",
      "secret": false,
      "strategy": "default",
      "default": "true"
    },
    {
      "key": "ENTITY_REGISTRY_CONFIG_PATH",
      "service": "datahub-gms",
      "description": "Entity model file",
      "secret": false,
      "strategy": "default",
      "default": "/datahub/datahub-gms/resources/entity-registry.yml"
    },
    {
      "key": "DATAHUB_SYSTEM_CLIENT_SECRET",
      "service": "datahub-gms",
      "description": "Service account secret",
      "secret": true,
      "strategy": "generate",
      "generate": "random_base64_32"
    },
    {
      "key": "DATAHUB_WAIT_TIMEOUT_SECONDS",
      "service": "datahub-gms",
      "description": "Dependency wait budget",
      "secret": false,
      "strategy": "default",
      "default": "900"
    },
    {
      "key": "ELASTICSEARCH_IMPLEMENTATION",
      "service": "datahub-gms",
      "description": "Cluster flavour",
      "secret": false,
      "strategy": "default",
      "default": "opensearch"
    },
    {
      "key": "SHOW_INGESTION_PAGE_REDESIGN",
      "service": "datahub-gms",
      "description": "New ingestion page layout",
      "secret": false,
      "strategy": "default",
      "default": "true"
    },
    {
      "key": "METADATA_SERVICE_AUTH_ENABLED",
      "service": "datahub-gms",
      "description": "Reject anonymous API calls",
      "secret": false,
      "strategy": "default",
      "default": "true"
    },
    {
      "key": "STRICT_URN_VALIDATION_ENABLED",
      "service": "datahub-gms",
      "description": "Reject malformed URNs",
      "secret": false,
      "strategy": "default",
      "default": "true"
    },
    {
      "key": "ELASTICSEARCH_SHIM_AUTO_DETECT",
      "service": "datahub-gms",
      "description": "Do not detect engine at boot",
      "secret": false,
      "strategy": "default",
      "default": "false"
    },
    {
      "key": "ELASTICSEARCH_SHIM_ENGINE_TYPE",
      "service": "datahub-gms",
      "description": "Pin the client, skip probing",
      "secret": false,
      "strategy": "default",
      "default": "OPENSEARCH_2"
    },
    {
      "key": "ENTITY_SERVICE_ENABLE_RETENTION",
      "service": "datahub-gms",
      "description": "Apply aspect retention rules",
      "secret": false,
      "strategy": "default",
      "default": "true"
    },
    {
      "key": "GRAPH_SERVICE_DIFF_MODE_ENABLED",
      "service": "datahub-gms",
      "description": "Write only changed edges",
      "secret": false,
      "strategy": "default",
      "default": "true"
    },
    {
      "key": "RAILWAY_HEALTHCHECK_TIMEOUT_SEC",
      "service": "datahub-gms",
      "description": "GMS blocks on system-update; 300s default is too short",
      "secret": false,
      "strategy": "default",
      "default": "900"
    },
    {
      "key": "DATAHUB_TOKEN_SERVICE_SIGNING_KEY",
      "service": "datahub-gms",
      "description": "Signs access tokens; edge points at system-update",
      "secret": true,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "ELASTICSEARCH_LIMIT_RESULTS_STRICT",
      "service": "datahub-gms",
      "description": "Enforce result size limits",
      "secret": false,
      "strategy": "default",
      "default": "true"
    },
    {
      "key": "POLICY_CACHE_REFRESH_INTERVAL_SECONDS",
      "service": "datahub-gms",
      "description": "Access policy cache TTL",
      "secret": false,
      "strategy": "default",
      "default": "120"
    },
    {
      "key": "SHOW_SEARCH_BAR_AUTOCOMPLETE_REDESIGN",
      "service": "datahub-gms",
      "description": "New autocomplete",
      "secret": false,
      "strategy": "default",
      "default": "true"
    },
    {
      "key": "USAGE_AGGREGATION_FLUSH_INTERVAL_SECONDS",
      "service": "datahub-gms",
      "description": "Usage flush interval",
      "secret": false,
      "strategy": "default",
      "default": "30"
    },
    {
      "key": "USAGE_AGGREGATION_ALIGNMENT_PERIOD_SECONDS",
      "service": "datahub-gms",
      "description": "Usage bucket size",
      "secret": false,
      "strategy": "default",
      "default": "3600"
    },
    {
      "key": "CONFIG_ENTITY_REGISTRY_USE_OPTIMIZED_LOADING",
      "service": "datahub-gms",
      "description": "Faster registry load",
      "secret": false,
      "strategy": "default",
      "default": "true"
    },
    {
      "key": "ELASTICSEARCH_INDEX_BUILDER_MAPPINGS_REINDEX",
      "service": "datahub-gms",
      "description": "Reindex on mapping change",
      "secret": false,
      "strategy": "default",
      "default": "true"
    },
    {
      "key": "ELASTICSEARCH_INDEX_BUILDER_SETTINGS_REINDEX",
      "service": "datahub-gms",
      "description": "Reindex on settings change",
      "secret": false,
      "strategy": "default",
      "default": "true"
    },
    {
      "key": "DATAHUB_UPGRADE_HISTORY_KAFKA_CONSUMER_GROUP_ID",
      "service": "datahub-gms",
      "description": "Upgrade history group",
      "secret": false,
      "strategy": "default",
      "default": "generic-duhe-consumer-job-client-gms"
    },
    {
      "key": "PORT",
      "service": "datahub-system-update",
      "description": "Reserved; the job serves no HTTP",
      "secret": false,
      "strategy": "default",
      "default": "8080"
    },
    {
      "key": "JAVA_OPTS",
      "service": "datahub-system-update",
      "description": "Heap sized from the container limit",
      "secret": false,
      "strategy": "default",
      "default": "-XX:MaxRAMPercentage=70"
    },
    {
      "key": "PARTITIONS",
      "service": "datahub-system-update",
      "description": "Partitions per created topic",
      "secret": false,
      "strategy": "default",
      "default": "3"
    },
    {
      "key": "CREATE_USER",
      "service": "datahub-system-update",
      "description": "Do not seed an extra account",
      "secret": false,
      "strategy": "default",
      "default": "false"
    },
    {
      "key": "ELASTICSEARCH_HOST",
      "service": "datahub-system-update",
      "description": "Search cluster host",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "ELASTICSEARCH_PORT",
      "service": "datahub-system-update",
      "description": "Search cluster port",
      "secret": false,
      "strategy": "default",
      "default": "9200"
    },
    {
      "key": "GRAPH_SERVICE_IMPL",
      "service": "datahub-system-update",
      "description": "Lineage graph backend",
      "secret": false,
      "strategy": "default",
      "default": "elasticsearch"
    },
    {
      "key": "DATAHUB_SERVER_TYPE",
      "service": "datahub-system-update",
      "description": "Deployment label",
      "secret": false,
      "strategy": "default",
      "default": "railway"
    },
    {
      "key": "EBEAN_DATASOURCE_URL",
      "service": "datahub-system-update",
      "description": "JDBC connection string",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "SCHEMA_REGISTRY_TYPE",
      "service": "datahub-system-update",
      "description": "Use the built-in registry",
      "secret": false,
      "strategy": "default",
      "default": "INTERNAL"
    },
    {
      "key": "EBEAN_DATASOURCE_HOST",
      "service": "datahub-system-update",
      "description": "Database host and port",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "ELASTICSEARCH_USE_SSL",
      "service": "datahub-system-update",
      "description": "No TLS on the private network",
      "secret": false,
      "strategy": "default",
      "default": "false"
    },
    {
      "key": "ELASTICSEARCH_PROTOCOL",
      "service": "datahub-system-update",
      "description": "Private traffic is plain HTTP",
      "secret": false,
      "strategy": "default",
      "default": "http"
    },
    {
      "key": "KAFKA_BOOTSTRAP_SERVER",
      "service": "datahub-system-update",
      "description": "Kafka broker address",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "EBEAN_DATASOURCE_DRIVER",
      "service": "datahub-system-update",
      "description": "JDBC driver class",
      "secret": false,
      "strategy": "default",
      "default": "com.mysql.jdbc.Driver"
    },
    {
      "key": "RAILWAY_DOCKERFILE_PATH",
      "service": "datahub-system-update",
      "description": "Image built from the source repo",
      "secret": false,
      "strategy": "default",
      "default": "system-update/Dockerfile"
    },
    {
      "key": "BACKFILL_BROWSE_PATHS_V2",
      "service": "datahub-system-update",
      "description": "Backfill browse paths",
      "secret": false,
      "strategy": "default",
      "default": "true"
    },
    {
      "key": "DATAHUB_PRECREATE_TOPICS",
      "service": "datahub-system-update",
      "description": "Create Kafka topics up front",
      "secret": false,
      "strategy": "default",
      "default": "true"
    },
    {
      "key": "KAFKA_SCHEMAREGISTRY_URL",
      "service": "datahub-system-update",
      "description": "Literal hostname on purpose; a GMS reference here deadlocks the deploy",
      "secret": false,
      "strategy": "default",
      "default": "http://datahub-gms.railway.internal:8080/schema-registry/api/"
    },
    {
      "key": "DATAHUB_SQL_SETUP_ENABLED",
      "service": "datahub-system-update",
      "description": "Create the MySQL schema",
      "secret": false,
      "strategy": "default",
      "default": "true"
    },
    {
      "key": "DATAHUB_TELEMETRY_ENABLED",
      "service": "datahub-system-update",
      "description": "Upstream telemetry off",
      "secret": false,
      "strategy": "default",
      "default": "false"
    },
    {
      "key": "EBEAN_DATASOURCE_PASSWORD",
      "service": "datahub-system-update",
      "description": "Database password",
      "secret": true,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "EBEAN_DATASOURCE_USERNAME",
      "service": "datahub-system-update",
      "description": "Database user",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "ENTITY_VERSIONING_ENABLED",
      "service": "datahub-system-update",
      "description": "Keep aspect version history",
      "secret": false,
      "strategy": "default",
      "default": "true"
    },
    {
      "key": "DATAHUB_TOKEN_SERVICE_SALT",
      "service": "datahub-system-update",
      "description": "Defined HERE; gms and mce reference it",
      "secret": true,
      "strategy": "generate",
      "generate": "random_base64_32"
    },
    {
      "key": "ENTITY_REGISTRY_CONFIG_PATH",
      "service": "datahub-system-update",
      "description": "Entity model file",
      "secret": false,
      "strategy": "default",
      "default": "/datahub/datahub-gms/resources/entity-registry.yml"
    },
    {
      "key": "DATAHUB_WAIT_TIMEOUT_SECONDS",
      "service": "datahub-system-update",
      "description": "Dependency wait budget",
      "secret": false,
      "strategy": "default",
      "default": "900"
    },
    {
      "key": "ELASTICSEARCH_IMPLEMENTATION",
      "service": "datahub-system-update",
      "description": "Cluster flavour",
      "secret": false,
      "strategy": "default",
      "default": "opensearch"
    },
    {
      "key": "SCHEMA_REGISTRY_SYSTEM_UPDATE",
      "service": "datahub-system-update",
      "description": "Register schemas during the upgrade",
      "secret": false,
      "strategy": "default",
      "default": "true"
    },
    {
      "key": "USE_CONFLUENT_SCHEMA_REGISTRY",
      "service": "datahub-system-update",
      "description": "No external registry",
      "secret": false,
      "strategy": "default",
      "default": "false"
    },
    {
      "key": "ELASTICSEARCH_SHIM_AUTO_DETECT",
      "service": "datahub-system-update",
      "description": "Do not detect engine at boot",
      "secret": false,
      "strategy": "default",
      "default": "false"
    },
    {
      "key": "ELASTICSEARCH_SHIM_ENGINE_TYPE",
      "service": "datahub-system-update",
      "description": "Pin the client, skip probing",
      "secret": false,
      "strategy": "default",
      "default": "OPENSEARCH_2"
    },
    {
      "key": "LOGGING_LEVEL_ORG_APACHE_KAFKA",
      "service": "datahub-system-update",
      "description": "Quieten the Kafka client",
      "secret": false,
      "strategy": "default",
      "default": "WARN"
    },
    {
      "key": "DATAHUB_TOKEN_SERVICE_SIGNING_KEY",
      "service": "datahub-system-update",
      "description": "Defined HERE; gms and mce reference it",
      "secret": true,
      "strategy": "generate",
      "generate": "random_base64_32"
    },
    {
      "key": "REPROCESS_DEFAULT_BROWSE_PATHS_V2",
      "service": "datahub-system-update",
      "description": "Skip reprocessing existing paths",
      "secret": false,
      "strategy": "default",
      "default": "false"
    },
    {
      "key": "ELASTICSEARCH_BUILD_INDICES_CLONE_INDICES",
      "service": "datahub-system-update",
      "description": "Do not clone before reindex",
      "secret": false,
      "strategy": "default",
      "default": "false"
    },
    {
      "key": "SPRING_KAFKA_PROPERTIES_USE_LATEST_VERSION",
      "service": "datahub-system-update",
      "description": "Use latest schema version",
      "secret": false,
      "strategy": "default",
      "default": "true"
    },
    {
      "key": "ELASTICSEARCH_INDEX_BUILDER_MAPPINGS_REINDEX",
      "service": "datahub-system-update",
      "description": "Reindex on mapping change",
      "secret": false,
      "strategy": "default",
      "default": "true"
    },
    {
      "key": "ELASTICSEARCH_INDEX_BUILDER_SETTINGS_REINDEX",
      "service": "datahub-system-update",
      "description": "Reindex on settings change",
      "secret": false,
      "strategy": "default",
      "default": "true"
    },
    {
      "key": "SPRING_KAFKA_PROPERTIES_AUTO_REGISTER_SCHEMAS",
      "service": "datahub-system-update",
      "description": "Register Avro schemas",
      "secret": false,
      "strategy": "default",
      "default": "true"
    },
    {
      "key": "ELASTICSEARCH_INDEX_BUILDER_REFRESH_INTERVAL_SECONDS",
      "service": "datahub-system-update",
      "description": "Index refresh interval",
      "secret": false,
      "strategy": "default",
      "default": "3"
    },
    {
      "key": "CLUSTER_ID",
      "service": "kafka",
      "description": "Fixed KRaft cluster id",
      "secret": false,
      "strategy": "default",
      "default": "dGF0YUh1YlJhaWx3YXlLMQ"
    },
    {
      "key": "KAFKA_NODE_ID",
      "service": "kafka",
      "description": "Node id in the KRaft quorum",
      "secret": false,
      "strategy": "default",
      "default": "1"
    },
    {
      "key": "KAFKA_LOG_DIRS",
      "service": "kafka",
      "description": "Below the volume root",
      "secret": false,
      "strategy": "default",
      "default": "/var/lib/kafka/data/logs"
    },
    {
      "key": "KAFKA_HEAP_OPTS",
      "service": "kafka",
      "description": "Broker heap",
      "secret": false,
      "strategy": "default",
      "default": "-Xms512m -Xmx1G"
    },
    {
      "key": "KAFKA_LISTENERS",
      "service": "kafka",
      "description": "Dual-stack listeners",
      "secret": false,
      "strategy": "default",
      "default": "BROKER://[::]:29092,CONTROLLER://[::]:39092"
    },
    {
      "key": "RAILWAY_RUN_UID",
      "service": "kafka",
      "description": "Image needs root to write the volume",
      "secret": false,
      "strategy": "default",
      "default": "0"
    },
    {
      "key": "KAFKA_LOG4J_LOGGERS",
      "service": "kafka",
      "description": "Quieten metadata loader",
      "secret": false,
      "strategy": "default",
      "default": "org.apache.kafka.image.loader.MetadataLoader=WARN"
    },
    {
      "key": "KAFKA_PROCESS_ROLES",
      "service": "kafka",
      "description": "Combined broker and controller",
      "secret": false,
      "strategy": "default",
      "default": "broker,controller"
    },
    {
      "key": "KAFKA_MAX_MESSAGE_BYTES",
      "service": "kafka",
      "description": "5 MB max message",
      "secret": false,
      "strategy": "default",
      "default": "5242880"
    },
    {
      "key": "KAFKA_MESSAGE_MAX_BYTES",
      "service": "kafka",
      "description": "5 MB max message",
      "secret": false,
      "strategy": "default",
      "default": "5242880"
    },
    {
      "key": "KAFKA_LOG4J_ROOT_LOGLEVEL",
      "service": "kafka",
      "description": "Quieten broker logs",
      "secret": false,
      "strategy": "default",
      "default": "WARN"
    },
    {
      "key": "KAFKA_ADVERTISED_LISTENERS",
      "service": "kafka",
      "description": "Address peers dial",
      "secret": false,
      "strategy": "default",
      "default": "BROKER://kafka.railway.internal:29092"
    },
    {
      "key": "KAFKA_TOOLS_LOG4J_LOGLEVEL",
      "service": "kafka",
      "description": "Quieten CLI tools",
      "secret": false,
      "strategy": "default",
      "default": "ERROR"
    },
    {
      "key": "KAFKA_REPLICA_FETCH_MAX_BYTES",
      "service": "kafka",
      "description": "5 MB fetch size",
      "secret": false,
      "strategy": "default",
      "default": "5242880"
    },
    {
      "key": "KAFKA_CONTROLLER_QUORUM_VOTERS",
      "service": "kafka",
      "description": "Single-node quorum",
      "secret": false,
      "strategy": "default",
      "default": "1@localhost:39092"
    },
    {
      "key": "KAFKA_AUTO_CREATE_TOPICS_ENABLE",
      "service": "kafka",
      "description": "Topics are pre-created",
      "secret": false,
      "strategy": "default",
      "default": "false"
    },
    {
      "key": "KAFKA_CONTROLLER_LISTENER_NAMES",
      "service": "kafka",
      "description": "Controller listener",
      "secret": false,
      "strategy": "default",
      "default": "CONTROLLER"
    },
    {
      "key": "KAFKA_DEFAULT_REPLICATION_FACTOR",
      "service": "kafka",
      "description": "Single broker",
      "secret": false,
      "strategy": "default",
      "default": "1"
    },
    {
      "key": "KAFKA_INTER_BROKER_LISTENER_NAME",
      "service": "kafka",
      "description": "Broker-to-broker listener",
      "secret": false,
      "strategy": "default",
      "default": "BROKER"
    },
    {
      "key": "KAFKA_TRANSACTION_STATE_LOG_MIN_ISR",
      "service": "kafka",
      "description": "Single broker",
      "secret": false,
      "strategy": "default",
      "default": "1"
    },
    {
      "key": "KAFKA_LISTENER_SECURITY_PROTOCOL_MAP",
      "service": "kafka",
      "description": "Plaintext on both",
      "secret": false,
      "strategy": "default",
      "default": "CONTROLLER:PLAINTEXT,BROKER:PLAINTEXT"
    },
    {
      "key": "KAFKA_CONFLUENT_SUPPORT_METRICS_ENABLE",
      "service": "kafka",
      "description": "No metrics reporting",
      "secret": false,
      "strategy": "default",
      "default": "false"
    },
    {
      "key": "KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS",
      "service": "kafka",
      "description": "Rebalance immediately",
      "secret": false,
      "strategy": "default",
      "default": "0"
    },
    {
      "key": "KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR",
      "service": "kafka",
      "description": "Single broker",
      "secret": false,
      "strategy": "default",
      "default": "1"
    },
    {
      "key": "KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR",
      "service": "kafka",
      "description": "Single broker",
      "secret": false,
      "strategy": "default",
      "default": "1"
    },
    {
      "key": "MYSQLHOST",
      "service": "MySQL",
      "description": "Data panel alias, not read by the server",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "MYSQLPORT",
      "service": "MySQL",
      "description": "Data panel alias, not read by the server",
      "secret": false,
      "strategy": "default",
      "default": "3306"
    },
    {
      "key": "MYSQLUSER",
      "service": "MySQL",
      "description": "Data panel alias, not read by the server",
      "secret": false,
      "strategy": "default",
      "default": "root"
    },
    {
      "key": "MYSQL_URL",
      "service": "MySQL",
      "description": "Private connection string",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "MYSQLDATABASE",
      "service": "MySQL",
      "description": "Data panel alias, not read by the server",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "MYSQLPASSWORD",
      "service": "MySQL",
      "description": "Data panel alias, not read by the server",
      "secret": true,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "MYSQL_DATABASE",
      "service": "MySQL",
      "description": "Database created on first boot",
      "secret": false,
      "strategy": "default",
      "default": "railway"
    },
    {
      "key": "MYSQL_ROOT_PASSWORD",
      "service": "MySQL",
      "description": "Root password, read by the entrypoint",
      "secret": true,
      "strategy": "generate",
      "generate": "strong_password"
    },
    {
      "key": "PORT",
      "service": "datahub-frontend",
      "description": "Port Railway health-checks",
      "secret": false,
      "strategy": "default",
      "default": "9002"
    },
    {
      "key": "SERVER_PORT",
      "service": "datahub-frontend",
      "description": "Play HTTP listener port",
      "secret": false,
      "strategy": "default",
      "default": "9002"
    },
    {
      "key": "DATAHUB_SECRET",
      "service": "datahub-frontend",
      "description": "Play session signing key",
      "secret": true,
      "strategy": "generate",
      "generate": "random_base64_32"
    },
    {
      "key": "DATAHUB_GMS_HOST",
      "service": "datahub-frontend",
      "description": "Metadata service host",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "DATAHUB_GMS_PORT",
      "service": "datahub-frontend",
      "description": "Metadata service port",
      "secret": false,
      "strategy": "default",
      "default": "8080"
    },
    {
      "key": "JAVA_MEMORY_OPTS",
      "service": "datahub-frontend",
      "description": "Heap sized from the container limit",
      "secret": false,
      "strategy": "default",
      "default": "-XX:MaxRAMPercentage=60"
    },
    {
      "key": "THEME_V2_DEFAULT",
      "service": "datahub-frontend",
      "description": "Use the redesigned theme",
      "secret": false,
      "strategy": "default",
      "default": "true"
    },
    {
      "key": "AUTH_JAAS_ENABLED",
      "service": "datahub-frontend",
      "description": "Username and password login",
      "secret": false,
      "strategy": "default",
      "default": "true"
    },
    {
      "key": "DATAHUB_ADMIN_USER",
      "service": "datahub-frontend",
      "description": "Built-in account username",
      "secret": false,
      "strategy": "default",
      "default": "datahub"
    },
    {
      "key": "DATAHUB_APP_VERSION",
      "service": "datahub-frontend",
      "description": "Version shown in the UI",
      "secret": false,
      "strategy": "default",
      "default": "v1.7.0"
    },
    {
      "key": "ELASTIC_CLIENT_HOST",
      "service": "datahub-frontend",
      "description": "Analytics index host",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "ELASTIC_CLIENT_PORT",
      "service": "datahub-frontend",
      "description": "Analytics index port",
      "secret": false,
      "strategy": "default",
      "default": "9200"
    },
    {
      "key": "DATAHUB_GMS_PROTOCOL",
      "service": "datahub-frontend",
      "description": "Private traffic is plain HTTP",
      "secret": false,
      "strategy": "default",
      "default": "http"
    },
    {
      "key": "DATAHUB_ADMIN_PASSWORD",
      "service": "datahub-frontend",
      "description": "Built-in account password",
      "secret": true,
      "strategy": "generate",
      "generate": "strong_password"
    },
    {
      "key": "DATAHUB_TRACKING_TOPIC",
      "service": "datahub-frontend",
      "description": "Analytics event topic",
      "secret": false,
      "strategy": "default",
      "default": "DataHubUsageEvent_v1"
    },
    {
      "key": "KAFKA_BOOTSTRAP_SERVER",
      "service": "datahub-frontend",
      "description": "Kafka broker address",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "RAILWAY_DOCKERFILE_PATH",
      "service": "datahub-frontend",
      "description": "Image built from the source repo",
      "secret": false,
      "strategy": "default",
      "default": "frontend/Dockerfile"
    },
    {
      "key": "DATAHUB_SYSTEM_CLIENT_ID",
      "service": "datahub-frontend",
      "description": "Service account id for GMS",
      "secret": false,
      "strategy": "default",
      "default": "__datahub_system"
    },
    {
      "key": "DATAHUB_ANALYTICS_ENABLED",
      "service": "datahub-frontend",
      "description": "In-product usage analytics",
      "secret": false,
      "strategy": "default",
      "default": "true"
    },
    {
      "key": "DATAHUB_PLAY_MEM_BUFFER_SIZE",
      "service": "datahub-frontend",
      "description": "Request body buffer",
      "secret": false,
      "strategy": "default",
      "default": "10MB"
    },
    {
      "key": "DATAHUB_SYSTEM_CLIENT_SECRET",
      "service": "datahub-frontend",
      "description": "Service account secret",
      "secret": true,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "METADATA_SERVICE_AUTH_ENABLED",
      "service": "datahub-frontend",
      "description": "Authenticate calls to GMS",
      "secret": false,
      "strategy": "default",
      "default": "true"
    },
    {
      "key": "RAILWAY_HEALTHCHECK_TIMEOUT_SEC",
      "service": "datahub-frontend",
      "description": "Provide a value for RAILWAY_HEALTHCHECK_TIMEOUT_SEC.",
      "secret": false,
      "strategy": "default",
      "default": "900"
    },
    {
      "key": "FRONTEND_GRACEFUL_SHUTDOWN_ENABLED",
      "service": "datahub-frontend",
      "description": "Exit immediately on SIGTERM",
      "secret": false,
      "strategy": "default",
      "default": "false"
    },
    {
      "key": "PORT",
      "service": "opensearch",
      "description": "Port Railway health-checks",
      "secret": false,
      "strategy": "default",
      "default": "9200"
    },
    {
      "key": "OPENSEARCH_JAVA_OPTS",
      "service": "opensearch",
      "description": "Node heap",
      "secret": false,
      "strategy": "default",
      "default": "-Xms1g -Xmx1g -Dlog4j2.formatMsgNoLookups=true"
    },
    {
      "key": "OPENSEARCH_NODE_NAME",
      "service": "opensearch",
      "description": "Node name",
      "secret": false,
      "strategy": "default",
      "default": "datahub-search"
    },
    {
      "key": "DISABLE_SECURITY_PLUGIN",
      "service": "opensearch",
      "description": "Private network only",
      "secret": false,
      "strategy": "default",
      "default": "true"
    },
    {
      "key": "OPENSEARCH_CLUSTER_NAME",
      "service": "opensearch",
      "description": "Cluster name",
      "secret": false,
      "strategy": "default",
      "default": "datahub"
    },
    {
      "key": "OPENSEARCH_NETWORK_HOST",
      "service": "opensearch",
      "description": "Dual-stack bind for private callers",
      "secret": false,
      "strategy": "default",
      "default": "::"
    },
    {
      "key": "RAILWAY_DOCKERFILE_PATH",
      "service": "opensearch",
      "description": "Image built from the source repo",
      "secret": false,
      "strategy": "default",
      "default": "opensearch/Dockerfile"
    },
    {
      "key": "DISABLE_INSTALL_DEMO_CONFIG",
      "service": "opensearch",
      "description": "Skip demo certificates",
      "secret": false,
      "strategy": "default",
      "default": "true"
    },
    {
      "key": "RAILWAY_HEALTHCHECK_TIMEOUT_SEC",
      "service": "opensearch",
      "description": "Provide a value for RAILWAY_HEALTHCHECK_TIMEOUT_SEC.",
      "secret": false,
      "strategy": "default",
      "default": "900"
    },
    {
      "key": "DATAHUB_GMS_HOST",
      "service": "datahub-actions",
      "description": "Metadata service host",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "DATAHUB_GMS_PORT",
      "service": "datahub-actions",
      "description": "Metadata service port",
      "secret": false,
      "strategy": "default",
      "default": "8080"
    },
    {
      "key": "ELASTICSEARCH_HOST",
      "service": "datahub-actions",
      "description": "Search cluster host",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "ELASTICSEARCH_PORT",
      "service": "datahub-actions",
      "description": "Search cluster port",
      "secret": false,
      "strategy": "default",
      "default": "9200"
    },
    {
      "key": "SCHEMA_REGISTRY_URL",
      "service": "datahub-actions",
      "description": "GMS internal registry",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "DATAHUB_GMS_PROTOCOL",
      "service": "datahub-actions",
      "description": "Private traffic is plain HTTP",
      "secret": false,
      "strategy": "default",
      "default": "http"
    },
    {
      "key": "ELASTICSEARCH_USE_SSL",
      "service": "datahub-actions",
      "description": "No TLS on the private network",
      "secret": false,
      "strategy": "default",
      "default": "false"
    },
    {
      "key": "ELASTICSEARCH_PROTOCOL",
      "service": "datahub-actions",
      "description": "Private traffic is plain HTTP",
      "secret": false,
      "strategy": "default",
      "default": "http"
    },
    {
      "key": "KAFKA_BOOTSTRAP_SERVER",
      "service": "datahub-actions",
      "description": "Kafka broker address",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "DATAHUB_SYSTEM_CLIENT_ID",
      "service": "datahub-actions",
      "description": "Service account id",
      "secret": false,
      "strategy": "default",
      "default": "__datahub_system"
    },
    {
      "key": "DATAHUB_TELEMETRY_ENABLED",
      "service": "datahub-actions",
      "description": "Upstream telemetry off",
      "secret": false,
      "strategy": "default",
      "default": "false"
    },
    {
      "key": "METADATA_AUDIT_EVENT_NAME",
      "service": "datahub-actions",
      "description": "Audit event topic",
      "secret": false,
      "strategy": "default",
      "default": "MetadataAuditEvent_v4"
    },
    {
      "key": "DATAHUB_SYSTEM_CLIENT_SECRET",
      "service": "datahub-actions",
      "description": "Service account secret",
      "secret": true,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "KAFKA_PROPERTIES_SECURITY_PROTOCOL",
      "service": "datahub-actions",
      "description": "No TLS on the private network",
      "secret": false,
      "strategy": "default",
      "default": "PLAINTEXT"
    },
    {
      "key": "METADATA_CHANGE_LOG_VERSIONED_TOPIC_NAME",
      "service": "datahub-actions",
      "description": "Change log topic",
      "secret": false,
      "strategy": "default",
      "default": "MetadataChangeLog_Versioned_v1"
    }
  ],
  "deploy": {
    "mcp": {
      "server": "railway",
      "tool": "deploy_template",
      "args": {
        "template_code": "datahub"
      }
    },
    "cli": "railway deploy --template datahub",
    "api": {
      "method": "POST",
      "path": "/graphql/v2",
      "body": {
        "query": "mutation templateDeploy($input: TemplateDeployV2Input!) { templateDeployV2(input: $input) { projectId workflowId } }",
        "variables": {
          "input": {
            "templateId": "575391bb-fc12-454d-8e3a-88e343f7fc49",
            "serializedConfig": {
              "buckets": {},
              "services": {
                "04edec9e-d986-4ba0-baec-37c094139a3f": {
                  "icon": "https://raw.githubusercontent.com/datahub-project/datahub/v1.7.0/datahub-web-react/public/assets/logos/datahublogo.svg",
                  "name": "datahub-mce-consumer",
                  "deploy": {
                    "startCommand": null,
                    "healthcheckPath": "/actuator/health",
                    "restartPolicyType": "ON_FAILURE",
                    "restartPolicyMaxRetries": 10
                  },
                  "source": {
                    "image": "acryldata/datahub-mce-consumer:v1.7.0"
                  },
                  "variables": {
                    "PORT": {
                      "isOptional": false,
                      "description": "Management port Railway health-checks",
                      "defaultValue": "4319"
                    },
                    "JAVA_OPTS": {
                      "isOptional": false,
                      "description": "Heap sized from the container limit",
                      "defaultValue": "-XX:MaxRAMPercentage=70"
                    },
                    "DATAHUB_GMS_HOST": {
                      "isOptional": false,
                      "description": "Metadata service host",
                      "defaultValue": "${{datahub-gms.RAILWAY_PRIVATE_DOMAIN}}"
                    },
                    "DATAHUB_GMS_PORT": {
                      "isOptional": false,
                      "description": "Metadata service port",
                      "defaultValue": "8080"
                    },
                    "ELASTICSEARCH_HOST": {
                      "isOptional": false,
                      "description": "Search cluster host",
                      "defaultValue": "${{opensearch.RAILWAY_PRIVATE_DOMAIN}}"
                    },
                    "ELASTICSEARCH_PORT": {
                      "isOptional": false,
                      "description": "Search cluster port",
                      "defaultValue": "9200"
                    },
                    "GRAPH_SERVICE_IMPL": {
                      "isOptional": false,
                      "description": "Lineage graph backend",
                      "defaultValue": "elasticsearch"
                    },
                    "EBEAN_DATASOURCE_URL": {
                      "isOptional": false,
                      "description": "JDBC connection string",
                      "defaultValue": "jdbc:mysql://${{MySQL.MYSQLHOST}}:${{MySQL.MYSQLPORT}}/${{MySQL.MYSQLDATABASE}}?verifyServerCertificate=false&useSSL=true&useUnicode=yes&characterEncoding=UTF-8&enabledTLSProtocols=TLSv1.2"
                    },
                    "MCE_CONSUMER_ENABLED": {
                      "isOptional": false,
                      "description": "Run the proposal consumer",
                      "defaultValue": "true"
                    },
                    "SCHEMA_REGISTRY_TYPE": {
                      "isOptional": false,
                      "description": "Use the built-in registry",
                      "defaultValue": "INTERNAL"
                    },
                    "EBEAN_DATASOURCE_HOST": {
                      "isOptional": false,
                      "description": "Database host and port",
                      "defaultValue": "${{MySQL.MYSQLHOST}}:${{MySQL.MYSQLPORT}}"
                    },
                    "ELASTICSEARCH_USE_SSL": {
                      "isOptional": false,
                      "description": "No TLS on the private network",
                      "defaultValue": "false"
                    },
                    "ELASTICSEARCH_PROTOCOL": {
                      "isOptional": false,
                      "description": "Private traffic is plain HTTP",
                      "defaultValue": "http"
                    },
                    "KAFKA_BOOTSTRAP_SERVER": {
                      "isOptional": false,
                      "description": "Kafka broker address",
                      "defaultValue": "${{kafka.RAILWAY_PRIVATE_DOMAIN}}:29092"
                    },
                    "EBEAN_DATASOURCE_DRIVER": {
                      "isOptional": false,
                      "description": "JDBC driver class",
                      "defaultValue": "com.mysql.jdbc.Driver"
                    },
                    "ALTERNATE_MCP_VALIDATION": {
                      "isOptional": false,
                      "description": "Faster proposal validation",
                      "defaultValue": "true"
                    },
                    "KAFKA_SCHEMAREGISTRY_URL": {
                      "isOptional": false,
                      "description": "GMS internal registry",
                      "defaultValue": "http://${{datahub-gms.RAILWAY_PRIVATE_DOMAIN}}:8080/schema-registry/api/"
                    },
                    "DATAHUB_TELEMETRY_ENABLED": {
                      "isOptional": false,
                      "description": "Upstream telemetry off",
                      "defaultValue": "false"
                    },
                    "EBEAN_DATASOURCE_PASSWORD": {
                      "isOptional": false,
                      "description": "Database password",
                      "defaultValue": "${{MySQL.MYSQLPASSWORD}}"
                    },
                    "EBEAN_DATASOURCE_USERNAME": {
                      "isOptional": false,
                      "description": "Database user",
                      "defaultValue": "${{MySQL.MYSQLUSER}}"
                    },
                    "ENTITY_VERSIONING_ENABLED": {
                      "isOptional": false,
                      "description": "Keep aspect version history",
                      "defaultValue": "true"
                    },
                    "DATAHUB_TOKEN_SERVICE_SALT": {
                      "isOptional": false,
                      "description": "Same source as GMS",
                      "defaultValue": "${{datahub-system-update.DATAHUB_TOKEN_SERVICE_SALT}}"
                    },
                    "MCP_CONSUMER_BATCH_ENABLED": {
                      "isOptional": false,
                      "description": "Batch proposal consumption",
                      "defaultValue": "true"
                    },
                    "ENTITY_REGISTRY_CONFIG_PATH": {
                      "isOptional": false,
                      "description": "Entity model file",
                      "defaultValue": "/datahub/datahub-mce-consumer/resources/entity-registry.yml"
                    },
                    "DATAHUB_WAIT_TIMEOUT_SECONDS": {
                      "isOptional": false,
                      "description": "Dependency wait budget",
                      "defaultValue": "900"
                    },
                    "ELASTICSEARCH_IMPLEMENTATION": {
                      "isOptional": false,
                      "description": "Cluster flavour",
                      "defaultValue": "opensearch"
                    },
                    "STRICT_URN_VALIDATION_ENABLED": {
                      "isOptional": false,
                      "description": "Reject malformed URNs",
                      "defaultValue": "true"
                    },
                    "ELASTICSEARCH_SHIM_AUTO_DETECT": {
                      "isOptional": false,
                      "description": "Do not detect engine at boot",
                      "defaultValue": "false"
                    },
                    "ELASTICSEARCH_SHIM_ENGINE_TYPE": {
                      "isOptional": false,
                      "description": "Pin the client, skip probing",
                      "defaultValue": "OPENSEARCH_2"
                    },
                    "RAILWAY_HEALTHCHECK_TIMEOUT_SEC": {
                      "description": "Waits on GMS before it listens",
                      "defaultValue": "900"
                    },
                    "DATAHUB_TOKEN_SERVICE_SIGNING_KEY": {
                      "isOptional": false,
                      "description": "Same source as GMS",
                      "defaultValue": "${{datahub-system-update.DATAHUB_TOKEN_SERVICE_SIGNING_KEY}}"
                    }
                  }
                },
                "0606cc1d-e4b4-404b-8710-d64ce7f9e43a": {
                  "icon": "https://raw.githubusercontent.com/datahub-project/datahub/v1.7.0/datahub-web-react/public/assets/logos/datahublogo.svg",
                  "name": "datahub-mae-consumer",
                  "deploy": {
                    "startCommand": null,
                    "healthcheckPath": "/actuator/health",
                    "restartPolicyType": "ON_FAILURE",
                    "restartPolicyMaxRetries": 10
                  },
                  "source": {
                    "image": "acryldata/datahub-mae-consumer:v1.7.0"
                  },
                  "variables": {
                    "PORT": {
                      "isOptional": false,
                      "description": "Management port Railway health-checks",
                      "defaultValue": "4319"
                    },
                    "JAVA_OPTS": {
                      "isOptional": false,
                      "description": "Heap sized from the container limit",
                      "defaultValue": "-XX:MaxRAMPercentage=70"
                    },
                    "DATAHUB_GMS_HOST": {
                      "isOptional": false,
                      "description": "Metadata service host",
                      "defaultValue": "${{datahub-gms.RAILWAY_PRIVATE_DOMAIN}}"
                    },
                    "DATAHUB_GMS_PORT": {
                      "isOptional": false,
                      "description": "Metadata service port",
                      "defaultValue": "8080"
                    },
                    "ELASTICSEARCH_HOST": {
                      "isOptional": false,
                      "description": "Search cluster host",
                      "defaultValue": "${{opensearch.RAILWAY_PRIVATE_DOMAIN}}"
                    },
                    "ELASTICSEARCH_PORT": {
                      "isOptional": false,
                      "description": "Search cluster port",
                      "defaultValue": "9200"
                    },
                    "GRAPH_SERVICE_IMPL": {
                      "isOptional": false,
                      "description": "Lineage graph backend",
                      "defaultValue": "elasticsearch"
                    },
                    "PE_CONSUMER_ENABLED": {
                      "isOptional": false,
                      "description": "Run the platform event consumer",
                      "defaultValue": "true"
                    },
                    "EBEAN_DATASOURCE_URL": {
                      "isOptional": false,
                      "description": "JDBC connection string",
                      "defaultValue": "jdbc:mysql://${{MySQL.MYSQLHOST}}:${{MySQL.MYSQLPORT}}/${{MySQL.MYSQLDATABASE}}?verifyServerCertificate=false&useSSL=true&useUnicode=yes&characterEncoding=UTF-8&enabledTLSProtocols=TLSv1.2"
                    },
                    "MAE_CONSUMER_ENABLED": {
                      "isOptional": false,
                      "description": "Run the change-log consumer",
                      "defaultValue": "true"
                    },
                    "SCHEMA_REGISTRY_TYPE": {
                      "isOptional": false,
                      "description": "Use the built-in registry",
                      "defaultValue": "INTERNAL"
                    },
                    "EBEAN_DATASOURCE_HOST": {
                      "isOptional": false,
                      "description": "Database host and port",
                      "defaultValue": "${{MySQL.MYSQLHOST}}:${{MySQL.MYSQLPORT}}"
                    },
                    "ELASTICSEARCH_USE_SSL": {
                      "isOptional": false,
                      "description": "No TLS on the private network",
                      "defaultValue": "false"
                    },
                    "ELASTICSEARCH_PROTOCOL": {
                      "isOptional": false,
                      "description": "Private traffic is plain HTTP",
                      "defaultValue": "http"
                    },
                    "KAFKA_BOOTSTRAP_SERVER": {
                      "isOptional": false,
                      "description": "Kafka broker address",
                      "defaultValue": "${{kafka.RAILWAY_PRIVATE_DOMAIN}}:29092"
                    },
                    "EBEAN_DATASOURCE_DRIVER": {
                      "isOptional": false,
                      "description": "JDBC driver class",
                      "defaultValue": "com.mysql.jdbc.Driver"
                    },
                    "KAFKA_SCHEMAREGISTRY_URL": {
                      "isOptional": false,
                      "description": "GMS internal registry",
                      "defaultValue": "http://${{datahub-gms.RAILWAY_PRIVATE_DOMAIN}}:8080/schema-registry/api/"
                    },
                    "DATAHUB_TELEMETRY_ENABLED": {
                      "isOptional": false,
                      "description": "Upstream telemetry off",
                      "defaultValue": "false"
                    },
                    "EBEAN_DATASOURCE_PASSWORD": {
                      "isOptional": false,
                      "description": "Database password",
                      "defaultValue": "${{MySQL.MYSQLPASSWORD}}"
                    },
                    "EBEAN_DATASOURCE_USERNAME": {
                      "isOptional": false,
                      "description": "Database user",
                      "defaultValue": "${{MySQL.MYSQLUSER}}"
                    },
                    "ENTITY_VERSIONING_ENABLED": {
                      "isOptional": false,
                      "description": "Keep aspect version history",
                      "defaultValue": "true"
                    },
                    "ENTITY_GRAPH_CACHE_ENABLED": {
                      "isOptional": false,
                      "description": "Disable the graph cache",
                      "defaultValue": "false"
                    },
                    "MCL_CONSUMER_BATCH_ENABLED": {
                      "isOptional": false,
                      "description": "Batch change-log consumption",
                      "defaultValue": "true"
                    },
                    "ENTITY_REGISTRY_CONFIG_PATH": {
                      "isOptional": false,
                      "description": "Entity model file",
                      "defaultValue": "/datahub/datahub-mae-consumer/resources/entity-registry.yml"
                    },
                    "DATAHUB_WAIT_TIMEOUT_SECONDS": {
                      "isOptional": false,
                      "description": "Dependency wait budget",
                      "defaultValue": "900"
                    },
                    "ELASTICSEARCH_IMPLEMENTATION": {
                      "isOptional": false,
                      "description": "Cluster flavour",
                      "defaultValue": "opensearch"
                    },
                    "ELASTICSEARCH_SHIM_AUTO_DETECT": {
                      "isOptional": false,
                      "description": "Do not detect engine at boot",
                      "defaultValue": "false"
                    },
                    "ELASTICSEARCH_SHIM_ENGINE_TYPE": {
                      "isOptional": false,
                      "description": "Pin the client, skip probing",
                      "defaultValue": "OPENSEARCH_2"
                    },
                    "RAILWAY_HEALTHCHECK_TIMEOUT_SEC": {
                      "defaultValue": "900"
                    }
                  }
                },
                "091636c6-7ace-44c7-bea5-1c82f2d1aa55": {
                  "icon": "https://raw.githubusercontent.com/datahub-project/datahub/v1.7.0/datahub-web-react/public/assets/logos/datahublogo.svg",
                  "name": "datahub-gms",
                  "deploy": {
                    "startCommand": null,
                    "healthcheckPath": "/health",
                    "restartPolicyType": "ON_FAILURE",
                    "restartPolicyMaxRetries": 10
                  },
                  "source": {
                    "image": "acryldata/datahub-gms:v1.7.0"
                  },
                  "variables": {
                    "PORT": {
                      "isOptional": false,
                      "description": "Port Railway health-checks",
                      "defaultValue": "8080"
                    },
                    "JAVA_OPTS": {
                      "isOptional": false,
                      "description": "Heap sized from the container limit",
                      "defaultValue": "-XX:MaxRAMPercentage=70"
                    },
                    "SERVER_ADDRESS": {
                      "isOptional": false,
                      "description": "Dual-stack bind for private callers",
                      "defaultValue": "::"
                    },
                    "THEME_V2_DEFAULT": {
                      "isOptional": false,
                      "description": "Use the redesigned theme",
                      "defaultValue": "true"
                    },
                    "ELASTICSEARCH_HOST": {
                      "isOptional": false,
                      "description": "Search cluster host",
                      "defaultValue": "${{opensearch.RAILWAY_PRIVATE_DOMAIN}}"
                    },
                    "ELASTICSEARCH_PORT": {
                      "isOptional": false,
                      "description": "Search cluster port",
                      "defaultValue": "9200"
                    },
                    "GRAPH_SERVICE_IMPL": {
                      "isOptional": false,
                      "description": "Lineage graph backend",
                      "defaultValue": "elasticsearch"
                    },
                    "DATAHUB_SERVER_TYPE": {
                      "isOptional": false,
                      "description": "Deployment label",
                      "defaultValue": "railway"
                    },
                    "PE_CONSUMER_ENABLED": {
                      "isOptional": false,
                      "description": "Runs as its own service",
                      "defaultValue": "false"
                    },
                    "EBEAN_DATASOURCE_URL": {
                      "isOptional": false,
                      "description": "JDBC connection string",
                      "defaultValue": "jdbc:mysql://${{MySQL.MYSQLHOST}}:${{MySQL.MYSQLPORT}}/${{MySQL.MYSQLDATABASE}}?verifyServerCertificate=false&useSSL=true&useUnicode=yes&characterEncoding=UTF-8&enabledTLSProtocols=TLSv1.2"
                    },
                    "MAE_CONSUMER_ENABLED": {
                      "isOptional": false,
                      "description": "Runs as its own service",
                      "defaultValue": "false"
                    },
                    "MCE_CONSUMER_ENABLED": {
                      "isOptional": false,
                      "description": "Runs as its own service",
                      "defaultValue": "false"
                    },
                    "SCHEMA_REGISTRY_TYPE": {
                      "isOptional": false,
                      "description": "Use the built-in registry",
                      "defaultValue": "INTERNAL"
                    },
                    "UI_INGESTION_ENABLED": {
                      "isOptional": false,
                      "description": "Enable the Data Sources screen",
                      "defaultValue": "true"
                    },
                    "EBEAN_DATASOURCE_HOST": {
                      "isOptional": false,
                      "description": "Database host and port",
                      "defaultValue": "${{MySQL.MYSQLHOST}}:${{MySQL.MYSQLPORT}}"
                    },
                    "ELASTICSEARCH_USE_SSL": {
                      "isOptional": false,
                      "description": "No TLS on the private network",
                      "defaultValue": "false"
                    },
                    "ELASTICSEARCH_PROTOCOL": {
                      "isOptional": false,
                      "description": "Private traffic is plain HTTP",
                      "defaultValue": "http"
                    },
                    "ES_BULK_REFRESH_POLICY": {
                      "isOptional": false,
                      "description": "Do not force refresh per write",
                      "defaultValue": "NONE"
                    },
                    "KAFKA_BOOTSTRAP_SERVER": {
                      "isOptional": false,
                      "description": "Kafka broker address",
                      "defaultValue": "${{kafka.RAILWAY_PRIVATE_DOMAIN}}:29092"
                    },
                    "SEARCH_BAR_API_VARIANT": {
                      "isOptional": false,
                      "description": "Search API used by the bar",
                      "defaultValue": "SEARCH_ACROSS_ENTITIES"
                    },
                    "EBEAN_DATASOURCE_DRIVER": {
                      "isOptional": false,
                      "description": "JDBC driver class",
                      "defaultValue": "com.mysql.jdbc.Driver"
                    },
                    "SHOW_HOME_PAGE_REDESIGN": {
                      "isOptional": false,
                      "description": "New home page layout",
                      "defaultValue": "true"
                    },
                    "ALTERNATE_MCP_VALIDATION": {
                      "isOptional": false,
                      "description": "Faster proposal validation",
                      "defaultValue": "true"
                    },
                    "DATAHUB_SYSTEM_CLIENT_ID": {
                      "isOptional": false,
                      "description": "Service account id",
                      "defaultValue": "__datahub_system"
                    },
                    "KAFKA_SCHEMAREGISTRY_URL": {
                      "isOptional": false,
                      "description": "Own registry over loopback",
                      "defaultValue": "http://localhost:8080/schema-registry/api/"
                    },
                    "SHOW_HAS_SIBLINGS_FILTER": {
                      "isOptional": false,
                      "description": "Sibling assets filter",
                      "defaultValue": "true"
                    },
                    "DATAHUB_TELEMETRY_ENABLED": {
                      "isOptional": false,
                      "description": "Upstream telemetry off",
                      "defaultValue": "false"
                    },
                    "EBEAN_DATASOURCE_PASSWORD": {
                      "isOptional": false,
                      "description": "Database password",
                      "defaultValue": "${{MySQL.MYSQLPASSWORD}}"
                    },
                    "EBEAN_DATASOURCE_USERNAME": {
                      "isOptional": false,
                      "description": "Database user",
                      "defaultValue": "${{MySQL.MYSQLUSER}}"
                    },
                    "ENTITY_VERSIONING_ENABLED": {
                      "isOptional": false,
                      "description": "Keep aspect version history",
                      "defaultValue": "true"
                    },
                    "USAGE_AGGREGATION_ENABLED": {
                      "isOptional": false,
                      "description": "Aggregate usage statistics",
                      "defaultValue": "true"
                    },
                    "DATAHUB_OBJECT_STORAGE_URI": {
                      "isOptional": false,
                      "description": "Set to s3://bucket to persist assets",
                      "defaultValue": "file:///tmp/datahub-object-storage"
                    },
                    "DATAHUB_TOKEN_SERVICE_SALT": {
                      "isOptional": false,
                      "description": "Salt for token hashing",
                      "defaultValue": "${{datahub-system-update.DATAHUB_TOKEN_SERVICE_SALT}}"
                    },
                    "MCL_CONSUMER_BATCH_ENABLED": {
                      "isOptional": false,
                      "description": "Batch change-log consumption",
                      "defaultValue": "true"
                    },
                    "MCP_CONSUMER_BATCH_ENABLED": {
                      "isOptional": false,
                      "description": "Batch proposal consumption",
                      "defaultValue": "true"
                    },
                    "ENTITY_REGISTRY_CONFIG_PATH": {
                      "isOptional": false,
                      "description": "Entity model file",
                      "defaultValue": "/datahub/datahub-gms/resources/entity-registry.yml"
                    },
                    "DATAHUB_SYSTEM_CLIENT_SECRET": {
                      "isOptional": false,
                      "description": "Service account secret",
                      "defaultValue": "{{DATAHUB_SYSTEM_CLIENT_SECRET}}"
                    },
                    "DATAHUB_WAIT_TIMEOUT_SECONDS": {
                      "isOptional": false,
                      "description": "Dependency wait budget",
                      "defaultValue": "900"
                    },
                    "ELASTICSEARCH_IMPLEMENTATION": {
                      "isOptional": false,
                      "description": "Cluster flavour",
                      "defaultValue": "opensearch"
                    },
                    "SHOW_INGESTION_PAGE_REDESIGN": {
                      "isOptional": false,
                      "description": "New ingestion page layout",
                      "defaultValue": "true"
                    },
                    "METADATA_SERVICE_AUTH_ENABLED": {
                      "isOptional": false,
                      "description": "Reject anonymous API calls",
                      "defaultValue": "true"
                    },
                    "STRICT_URN_VALIDATION_ENABLED": {
                      "isOptional": false,
                      "description": "Reject malformed URNs",
                      "defaultValue": "true"
                    },
                    "ELASTICSEARCH_SHIM_AUTO_DETECT": {
                      "isOptional": false,
                      "description": "Do not detect engine at boot",
                      "defaultValue": "false"
                    },
                    "ELASTICSEARCH_SHIM_ENGINE_TYPE": {
                      "isOptional": false,
                      "description": "Pin the client, skip probing",
                      "defaultValue": "OPENSEARCH_2"
                    },
                    "ENTITY_SERVICE_ENABLE_RETENTION": {
                      "isOptional": false,
                      "description": "Apply aspect retention rules",
                      "defaultValue": "true"
                    },
                    "GRAPH_SERVICE_DIFF_MODE_ENABLED": {
                      "isOptional": false,
                      "description": "Write only changed edges",
                      "defaultValue": "true"
                    },
                    "RAILWAY_HEALTHCHECK_TIMEOUT_SEC": {
                      "description": "GMS blocks on system-update; 300s default is too short",
                      "defaultValue": "900"
                    },
                    "DATAHUB_TOKEN_SERVICE_SIGNING_KEY": {
                      "isOptional": false,
                      "description": "Signs access tokens; edge points at system-update",
                      "defaultValue": "${{datahub-system-update.DATAHUB_TOKEN_SERVICE_SIGNING_KEY}}"
                    },
                    "ELASTICSEARCH_LIMIT_RESULTS_STRICT": {
                      "isOptional": false,
                      "description": "Enforce result size limits",
                      "defaultValue": "true"
                    },
                    "POLICY_CACHE_REFRESH_INTERVAL_SECONDS": {
                      "isOptional": false,
                      "description": "Access policy cache TTL",
                      "defaultValue": "120"
                    },
                    "SHOW_SEARCH_BAR_AUTOCOMPLETE_REDESIGN": {
                      "isOptional": false,
                      "description": "New autocomplete",
                      "defaultValue": "true"
                    },
                    "USAGE_AGGREGATION_FLUSH_INTERVAL_SECONDS": {
                      "isOptional": false,
                      "description": "Usage flush interval",
                      "defaultValue": "30"
                    },
                    "USAGE_AGGREGATION_ALIGNMENT_PERIOD_SECONDS": {
                      "isOptional": false,
                      "description": "Usage bucket size",
                      "defaultValue": "3600"
                    },
                    "CONFIG_ENTITY_REGISTRY_USE_OPTIMIZED_LOADING": {
                      "isOptional": false,
                      "description": "Faster registry load",
                      "defaultValue": "true"
                    },
                    "ELASTICSEARCH_INDEX_BUILDER_MAPPINGS_REINDEX": {
                      "isOptional": false,
                      "description": "Reindex on mapping change",
                      "defaultValue": "true"
                    },
                    "ELASTICSEARCH_INDEX_BUILDER_SETTINGS_REINDEX": {
                      "isOptional": false,
                      "description": "Reindex on settings change",
                      "defaultValue": "true"
                    },
                    "DATAHUB_UPGRADE_HISTORY_KAFKA_CONSUMER_GROUP_ID": {
                      "isOptional": false,
                      "description": "Upgrade history group",
                      "defaultValue": "generic-duhe-consumer-job-client-gms"
                    }
                  },
                  "networking": {
                    "serviceDomains": {
                      "<hasDomain>:8080": {
                        "port": 8080
                      }
                    }
                  }
                },
                "74dd358a-c935-44cd-9942-fa30d87d09df": {
                  "icon": "https://raw.githubusercontent.com/datahub-project/datahub/v1.7.0/datahub-web-react/public/assets/logos/datahublogo.svg",
                  "name": "datahub-system-update",
                  "deploy": {
                    "startCommand": null,
                    "healthcheckPath": null,
                    "restartPolicyType": "ON_FAILURE",
                    "restartPolicyMaxRetries": 10
                  },
                  "source": {
                    "repo": "https://github.com/gridalpha/datahub-railway",
                    "rootDirectory": null
                  },
                  "variables": {
                    "PORT": {
                      "isOptional": false,
                      "description": "Reserved; the job serves no HTTP",
                      "defaultValue": "8080"
                    },
                    "JAVA_OPTS": {
                      "isOptional": false,
                      "description": "Heap sized from the container limit",
                      "defaultValue": "-XX:MaxRAMPercentage=70"
                    },
                    "PARTITIONS": {
                      "isOptional": false,
                      "description": "Partitions per created topic",
                      "defaultValue": "3"
                    },
                    "CREATE_USER": {
                      "isOptional": false,
                      "description": "Do not seed an extra account",
                      "defaultValue": "false"
                    },
                    "ELASTICSEARCH_HOST": {
                      "isOptional": false,
                      "description": "Search cluster host",
                      "defaultValue": "${{opensearch.RAILWAY_PRIVATE_DOMAIN}}"
                    },
                    "ELASTICSEARCH_PORT": {
                      "isOptional": false,
                      "description": "Search cluster port",
                      "defaultValue": "9200"
                    },
                    "GRAPH_SERVICE_IMPL": {
                      "isOptional": false,
                      "description": "Lineage graph backend",
                      "defaultValue": "elasticsearch"
                    },
                    "DATAHUB_SERVER_TYPE": {
                      "isOptional": false,
                      "description": "Deployment label",
                      "defaultValue": "railway"
                    },
                    "EBEAN_DATASOURCE_URL": {
                      "isOptional": false,
                      "description": "JDBC connection string",
                      "defaultValue": "jdbc:mysql://${{MySQL.MYSQLHOST}}:${{MySQL.MYSQLPORT}}/${{MySQL.MYSQLDATABASE}}?verifyServerCertificate=false&useSSL=true&useUnicode=yes&characterEncoding=UTF-8&enabledTLSProtocols=TLSv1.2"
                    },
                    "SCHEMA_REGISTRY_TYPE": {
                      "isOptional": false,
                      "description": "Use the built-in registry",
                      "defaultValue": "INTERNAL"
                    },
                    "EBEAN_DATASOURCE_HOST": {
                      "isOptional": false,
                      "description": "Database host and port",
                      "defaultValue": "${{MySQL.MYSQLHOST}}:${{MySQL.MYSQLPORT}}"
                    },
                    "ELASTICSEARCH_USE_SSL": {
                      "isOptional": false,
                      "description": "No TLS on the private network",
                      "defaultValue": "false"
                    },
                    "ELASTICSEARCH_PROTOCOL": {
                      "isOptional": false,
                      "description": "Private traffic is plain HTTP",
                      "defaultValue": "http"
                    },
                    "KAFKA_BOOTSTRAP_SERVER": {
                      "isOptional": false,
                      "description": "Kafka broker address",
                      "defaultValue": "${{kafka.RAILWAY_PRIVATE_DOMAIN}}:29092"
                    },
                    "EBEAN_DATASOURCE_DRIVER": {
                      "isOptional": false,
                      "description": "JDBC driver class",
                      "defaultValue": "com.mysql.jdbc.Driver"
                    },
                    "RAILWAY_DOCKERFILE_PATH": {
                      "isOptional": false,
                      "description": "Image built from the source repo",
                      "defaultValue": "system-update/Dockerfile"
                    },
                    "BACKFILL_BROWSE_PATHS_V2": {
                      "isOptional": false,
                      "description": "Backfill browse paths",
                      "defaultValue": "true"
                    },
                    "DATAHUB_PRECREATE_TOPICS": {
                      "isOptional": false,
                      "description": "Create Kafka topics up front",
                      "defaultValue": "true"
                    },
                    "KAFKA_SCHEMAREGISTRY_URL": {
                      "isOptional": false,
                      "description": "Literal hostname on purpose; a GMS reference here deadlocks the deploy",
                      "defaultValue": "http://datahub-gms.railway.internal:8080/schema-registry/api/"
                    },
                    "DATAHUB_SQL_SETUP_ENABLED": {
                      "isOptional": false,
                      "description": "Create the MySQL schema",
                      "defaultValue": "true"
                    },
                    "DATAHUB_TELEMETRY_ENABLED": {
                      "isOptional": false,
                      "description": "Upstream telemetry off",
                      "defaultValue": "false"
                    },
                    "EBEAN_DATASOURCE_PASSWORD": {
                      "isOptional": false,
                      "description": "Database password",
                      "defaultValue": "${{MySQL.MYSQLPASSWORD}}"
                    },
                    "EBEAN_DATASOURCE_USERNAME": {
                      "isOptional": false,
                      "description": "Database user",
                      "defaultValue": "${{MySQL.MYSQLUSER}}"
                    },
                    "ENTITY_VERSIONING_ENABLED": {
                      "isOptional": false,
                      "description": "Keep aspect version history",
                      "defaultValue": "true"
                    },
                    "DATAHUB_TOKEN_SERVICE_SALT": {
                      "isOptional": false,
                      "description": "Defined HERE; gms and mce reference it",
                      "defaultValue": "{{DATAHUB_TOKEN_SERVICE_SALT}}"
                    },
                    "ENTITY_REGISTRY_CONFIG_PATH": {
                      "isOptional": false,
                      "description": "Entity model file",
                      "defaultValue": "/datahub/datahub-gms/resources/entity-registry.yml"
                    },
                    "DATAHUB_WAIT_TIMEOUT_SECONDS": {
                      "isOptional": false,
                      "description": "Dependency wait budget",
                      "defaultValue": "900"
                    },
                    "ELASTICSEARCH_IMPLEMENTATION": {
                      "isOptional": false,
                      "description": "Cluster flavour",
                      "defaultValue": "opensearch"
                    },
                    "SCHEMA_REGISTRY_SYSTEM_UPDATE": {
                      "isOptional": false,
                      "description": "Register schemas during the upgrade",
                      "defaultValue": "true"
                    },
                    "USE_CONFLUENT_SCHEMA_REGISTRY": {
                      "isOptional": false,
                      "description": "No external registry",
                      "defaultValue": "false"
                    },
                    "ELASTICSEARCH_SHIM_AUTO_DETECT": {
                      "isOptional": false,
                      "description": "Do not detect engine at boot",
                      "defaultValue": "false"
                    },
                    "ELASTICSEARCH_SHIM_ENGINE_TYPE": {
                      "isOptional": false,
                      "description": "Pin the client, skip probing",
                      "defaultValue": "OPENSEARCH_2"
                    },
                    "LOGGING_LEVEL_ORG_APACHE_KAFKA": {
                      "isOptional": false,
                      "description": "Quieten the Kafka client",
                      "defaultValue": "WARN"
                    },
                    "DATAHUB_TOKEN_SERVICE_SIGNING_KEY": {
                      "isOptional": false,
                      "description": "Defined HERE; gms and mce reference it",
                      "defaultValue": "{{DATAHUB_TOKEN_SERVICE_SIGNING_KEY}}"
                    },
                    "REPROCESS_DEFAULT_BROWSE_PATHS_V2": {
                      "isOptional": false,
                      "description": "Skip reprocessing existing paths",
                      "defaultValue": "false"
                    },
                    "ELASTICSEARCH_BUILD_INDICES_CLONE_INDICES": {
                      "isOptional": false,
                      "description": "Do not clone before reindex",
                      "defaultValue": "false"
                    },
                    "SPRING_KAFKA_PROPERTIES_USE_LATEST_VERSION": {
                      "isOptional": false,
                      "description": "Use latest schema version",
                      "defaultValue": "true"
                    },
                    "ELASTICSEARCH_INDEX_BUILDER_MAPPINGS_REINDEX": {
                      "isOptional": false,
                      "description": "Reindex on mapping change",
                      "defaultValue": "true"
                    },
                    "ELASTICSEARCH_INDEX_BUILDER_SETTINGS_REINDEX": {
                      "isOptional": false,
                      "description": "Reindex on settings change",
                      "defaultValue": "true"
                    },
                    "SPRING_KAFKA_PROPERTIES_AUTO_REGISTER_SCHEMAS": {
                      "isOptional": false,
                      "description": "Register Avro schemas",
                      "defaultValue": "true"
                    },
                    "ELASTICSEARCH_INDEX_BUILDER_REFRESH_INTERVAL_SECONDS": {
                      "isOptional": false,
                      "description": "Index refresh interval",
                      "defaultValue": "3"
                    }
                  }
                },
                "78e64094-378f-42cc-8926-e83c5b27e860": {
                  "icon": "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/kafka.svg",
                  "name": "kafka",
                  "deploy": {
                    "startCommand": "/bin/sh -c 'mkdir -p /var/lib/kafka/data/logs && exec /etc/confluent/docker/run'",
                    "healthcheckPath": null,
                    "restartPolicyType": "ALWAYS",
                    "restartPolicyMaxRetries": 10
                  },
                  "source": {
                    "image": "confluentinc/cp-kafka:8.2.2"
                  },
                  "variables": {
                    "CLUSTER_ID": {
                      "isOptional": false,
                      "description": "Fixed KRaft cluster id",
                      "defaultValue": "dGF0YUh1YlJhaWx3YXlLMQ"
                    },
                    "KAFKA_NODE_ID": {
                      "isOptional": false,
                      "description": "Node id in the KRaft quorum",
                      "defaultValue": "1"
                    },
                    "KAFKA_LOG_DIRS": {
                      "isOptional": false,
                      "description": "Below the volume root",
                      "defaultValue": "/var/lib/kafka/data/logs"
                    },
                    "KAFKA_HEAP_OPTS": {
                      "isOptional": false,
                      "description": "Broker heap",
                      "defaultValue": "-Xms512m -Xmx1G"
                    },
                    "KAFKA_LISTENERS": {
                      "isOptional": false,
                      "description": "Dual-stack listeners",
                      "defaultValue": "BROKER://[::]:29092,CONTROLLER://[::]:39092"
                    },
                    "RAILWAY_RUN_UID": {
                      "isOptional": false,
                      "description": "Image needs root to write the volume",
                      "defaultValue": "0"
                    },
                    "KAFKA_LOG4J_LOGGERS": {
                      "isOptional": false,
                      "description": "Quieten metadata loader",
                      "defaultValue": "org.apache.kafka.image.loader.MetadataLoader=WARN"
                    },
                    "KAFKA_PROCESS_ROLES": {
                      "isOptional": false,
                      "description": "Combined broker and controller",
                      "defaultValue": "broker,controller"
                    },
                    "KAFKA_MAX_MESSAGE_BYTES": {
                      "isOptional": false,
                      "description": "5 MB max message",
                      "defaultValue": "5242880"
                    },
                    "KAFKA_MESSAGE_MAX_BYTES": {
                      "isOptional": false,
                      "description": "5 MB max message",
                      "defaultValue": "5242880"
                    },
                    "KAFKA_LOG4J_ROOT_LOGLEVEL": {
                      "isOptional": false,
                      "description": "Quieten broker logs",
                      "defaultValue": "WARN"
                    },
                    "KAFKA_ADVERTISED_LISTENERS": {
                      "isOptional": false,
                      "description": "Address peers dial",
                      "defaultValue": "BROKER://kafka.railway.internal:29092"
                    },
                    "KAFKA_TOOLS_LOG4J_LOGLEVEL": {
                      "isOptional": false,
                      "description": "Quieten CLI tools",
                      "defaultValue": "ERROR"
                    },
                    "KAFKA_REPLICA_FETCH_MAX_BYTES": {
                      "isOptional": false,
                      "description": "5 MB fetch size",
                      "defaultValue": "5242880"
                    },
                    "KAFKA_CONTROLLER_QUORUM_VOTERS": {
                      "isOptional": false,
                      "description": "Single-node quorum",
                      "defaultValue": "1@localhost:39092"
                    },
                    "KAFKA_AUTO_CREATE_TOPICS_ENABLE": {
                      "isOptional": false,
                      "description": "Topics are pre-created",
                      "defaultValue": "false"
                    },
                    "KAFKA_CONTROLLER_LISTENER_NAMES": {
                      "isOptional": false,
                      "description": "Controller listener",
                      "defaultValue": "CONTROLLER"
                    },
                    "KAFKA_DEFAULT_REPLICATION_FACTOR": {
                      "isOptional": false,
                      "description": "Single broker",
                      "defaultValue": "1"
                    },
                    "KAFKA_INTER_BROKER_LISTENER_NAME": {
                      "isOptional": false,
                      "description": "Broker-to-broker listener",
                      "defaultValue": "BROKER"
                    },
                    "KAFKA_TRANSACTION_STATE_LOG_MIN_ISR": {
                      "isOptional": false,
                      "description": "Single broker",
                      "defaultValue": "1"
                    },
                    "KAFKA_LISTENER_SECURITY_PROTOCOL_MAP": {
                      "isOptional": false,
                      "description": "Plaintext on both",
                      "defaultValue": "CONTROLLER:PLAINTEXT,BROKER:PLAINTEXT"
                    },
                    "KAFKA_CONFLUENT_SUPPORT_METRICS_ENABLE": {
                      "isOptional": false,
                      "description": "No metrics reporting",
                      "defaultValue": "false"
                    },
                    "KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS": {
                      "isOptional": false,
                      "description": "Rebalance immediately",
                      "defaultValue": "0"
                    },
                    "KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR": {
                      "isOptional": false,
                      "description": "Single broker",
                      "defaultValue": "1"
                    },
                    "KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR": {
                      "isOptional": false,
                      "description": "Single broker",
                      "defaultValue": "1"
                    }
                  },
                  "volumeMounts": {
                    "78e64094-378f-42cc-8926-e83c5b27e860": {
                      "mountPath": "/var/lib/kafka/data"
                    }
                  }
                },
                "88aeadbd-ca2d-47a4-becc-b13a35ad16e8": {
                  "icon": "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/mysql.svg",
                  "name": "MySQL",
                  "deploy": {
                    "startCommand": "docker-entrypoint.sh mysqld --innodb-use-native-aio=0 --disable-log-bin --performance_schema=0 --innodb-buffer-pool-size=1G",
                    "healthcheckPath": null,
                    "restartPolicyType": "ON_FAILURE",
                    "restartPolicyMaxRetries": 10
                  },
                  "source": {
                    "image": "mysql:9.4"
                  },
                  "variables": {
                    "MYSQLHOST": {
                      "isOptional": false,
                      "description": "Data panel alias, not read by the server",
                      "defaultValue": "${{RAILWAY_PRIVATE_DOMAIN}}"
                    },
                    "MYSQLPORT": {
                      "isOptional": false,
                      "description": "Data panel alias, not read by the server",
                      "defaultValue": "3306"
                    },
                    "MYSQLUSER": {
                      "isOptional": false,
                      "description": "Data panel alias, not read by the server",
                      "defaultValue": "root"
                    },
                    "MYSQL_URL": {
                      "isOptional": false,
                      "description": "Private connection string",
                      "defaultValue": "mysql://${{ MYSQLUSER }}:${{ MYSQL_ROOT_PASSWORD }}@${{ RAILWAY_PRIVATE_DOMAIN }}:3306/${{ MYSQL_DATABASE }}"
                    },
                    "MYSQLDATABASE": {
                      "isOptional": false,
                      "description": "Data panel alias, not read by the server",
                      "defaultValue": "${{ MYSQL_DATABASE }}"
                    },
                    "MYSQLPASSWORD": {
                      "isOptional": false,
                      "description": "Data panel alias, not read by the server",
                      "defaultValue": "${{ MYSQL_ROOT_PASSWORD }}"
                    },
                    "MYSQL_DATABASE": {
                      "isOptional": false,
                      "description": "Database created on first boot",
                      "defaultValue": "railway"
                    },
                    "MYSQL_ROOT_PASSWORD": {
                      "isOptional": false,
                      "description": "Root password, read by the entrypoint",
                      "defaultValue": "{{MYSQL_ROOT_PASSWORD}}"
                    }
                  },
                  "volumeMounts": {
                    "88aeadbd-ca2d-47a4-becc-b13a35ad16e8": {
                      "mountPath": "/var/lib/mysql"
                    }
                  }
                },
                "cf18f980-4152-4d45-a7b3-efa4a0ff787a": {
                  "icon": "https://raw.githubusercontent.com/datahub-project/datahub/v1.7.0/datahub-web-react/public/assets/logos/datahublogo.svg",
                  "name": "datahub-frontend",
                  "deploy": {
                    "startCommand": null,
                    "healthcheckPath": "/admin",
                    "restartPolicyType": "ON_FAILURE",
                    "restartPolicyMaxRetries": 10
                  },
                  "source": {
                    "repo": "https://github.com/gridalpha/datahub-railway",
                    "rootDirectory": null
                  },
                  "variables": {
                    "PORT": {
                      "isOptional": false,
                      "description": "Port Railway health-checks",
                      "defaultValue": "9002"
                    },
                    "SERVER_PORT": {
                      "isOptional": false,
                      "description": "Play HTTP listener port",
                      "defaultValue": "9002"
                    },
                    "DATAHUB_SECRET": {
                      "isOptional": false,
                      "description": "Play session signing key",
                      "defaultValue": "{{DATAHUB_SECRET}}"
                    },
                    "DATAHUB_GMS_HOST": {
                      "isOptional": false,
                      "description": "Metadata service host",
                      "defaultValue": "${{datahub-gms.RAILWAY_PRIVATE_DOMAIN}}"
                    },
                    "DATAHUB_GMS_PORT": {
                      "isOptional": false,
                      "description": "Metadata service port",
                      "defaultValue": "8080"
                    },
                    "JAVA_MEMORY_OPTS": {
                      "isOptional": false,
                      "description": "Heap sized from the container limit",
                      "defaultValue": "-XX:MaxRAMPercentage=60"
                    },
                    "THEME_V2_DEFAULT": {
                      "isOptional": false,
                      "description": "Use the redesigned theme",
                      "defaultValue": "true"
                    },
                    "AUTH_JAAS_ENABLED": {
                      "isOptional": false,
                      "description": "Username and password login",
                      "defaultValue": "true"
                    },
                    "DATAHUB_ADMIN_USER": {
                      "isOptional": false,
                      "description": "Built-in account username",
                      "defaultValue": "datahub"
                    },
                    "DATAHUB_APP_VERSION": {
                      "isOptional": false,
                      "description": "Version shown in the UI",
                      "defaultValue": "v1.7.0"
                    },
                    "ELASTIC_CLIENT_HOST": {
                      "isOptional": false,
                      "description": "Analytics index host",
                      "defaultValue": "${{opensearch.RAILWAY_PRIVATE_DOMAIN}}"
                    },
                    "ELASTIC_CLIENT_PORT": {
                      "isOptional": false,
                      "description": "Analytics index port",
                      "defaultValue": "9200"
                    },
                    "DATAHUB_GMS_PROTOCOL": {
                      "isOptional": false,
                      "description": "Private traffic is plain HTTP",
                      "defaultValue": "http"
                    },
                    "DATAHUB_ADMIN_PASSWORD": {
                      "isOptional": false,
                      "description": "Built-in account password",
                      "defaultValue": "{{DATAHUB_ADMIN_PASSWORD}}"
                    },
                    "DATAHUB_TRACKING_TOPIC": {
                      "isOptional": false,
                      "description": "Analytics event topic",
                      "defaultValue": "DataHubUsageEvent_v1"
                    },
                    "KAFKA_BOOTSTRAP_SERVER": {
                      "isOptional": false,
                      "description": "Kafka broker address",
                      "defaultValue": "${{kafka.RAILWAY_PRIVATE_DOMAIN}}:29092"
                    },
                    "RAILWAY_DOCKERFILE_PATH": {
                      "isOptional": false,
                      "description": "Image built from the source repo",
                      "defaultValue": "frontend/Dockerfile"
                    },
                    "DATAHUB_SYSTEM_CLIENT_ID": {
                      "isOptional": false,
                      "description": "Service account id for GMS",
                      "defaultValue": "__datahub_system"
                    },
                    "DATAHUB_ANALYTICS_ENABLED": {
                      "isOptional": false,
                      "description": "In-product usage analytics",
                      "defaultValue": "true"
                    },
                    "DATAHUB_PLAY_MEM_BUFFER_SIZE": {
                      "isOptional": false,
                      "description": "Request body buffer",
                      "defaultValue": "10MB"
                    },
                    "DATAHUB_SYSTEM_CLIENT_SECRET": {
                      "isOptional": false,
                      "description": "Service account secret",
                      "defaultValue": "${{datahub-gms.DATAHUB_SYSTEM_CLIENT_SECRET}}"
                    },
                    "METADATA_SERVICE_AUTH_ENABLED": {
                      "isOptional": false,
                      "description": "Authenticate calls to GMS",
                      "defaultValue": "true"
                    },
                    "RAILWAY_HEALTHCHECK_TIMEOUT_SEC": {
                      "defaultValue": "900"
                    },
                    "FRONTEND_GRACEFUL_SHUTDOWN_ENABLED": {
                      "isOptional": false,
                      "description": "Exit immediately on SIGTERM",
                      "defaultValue": "false"
                    }
                  },
                  "networking": {
                    "serviceDomains": {
                      "<hasDomain>:9002": {
                        "port": 9002
                      }
                    }
                  }
                },
                "e07d6e07-7ba1-4fc3-82c4-4a2d50cb0ae3": {
                  "icon": "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/opensearch.svg",
                  "name": "opensearch",
                  "deploy": {
                    "startCommand": null,
                    "healthcheckPath": "/",
                    "restartPolicyType": "ALWAYS",
                    "restartPolicyMaxRetries": 10
                  },
                  "source": {
                    "repo": "https://github.com/gridalpha/datahub-railway",
                    "rootDirectory": null
                  },
                  "variables": {
                    "PORT": {
                      "isOptional": false,
                      "description": "Port Railway health-checks",
                      "defaultValue": "9200"
                    },
                    "OPENSEARCH_JAVA_OPTS": {
                      "isOptional": false,
                      "description": "Node heap",
                      "defaultValue": "-Xms1g -Xmx1g -Dlog4j2.formatMsgNoLookups=true"
                    },
                    "OPENSEARCH_NODE_NAME": {
                      "isOptional": false,
                      "description": "Node name",
                      "defaultValue": "datahub-search"
                    },
                    "DISABLE_SECURITY_PLUGIN": {
                      "isOptional": false,
                      "description": "Private network only",
                      "defaultValue": "true"
                    },
                    "OPENSEARCH_CLUSTER_NAME": {
                      "isOptional": false,
                      "description": "Cluster name",
                      "defaultValue": "datahub"
                    },
                    "OPENSEARCH_NETWORK_HOST": {
                      "isOptional": false,
                      "description": "Dual-stack bind for private callers",
                      "defaultValue": "::"
                    },
                    "RAILWAY_DOCKERFILE_PATH": {
                      "isOptional": false,
                      "description": "Image built from the source repo",
                      "defaultValue": "opensearch/Dockerfile"
                    },
                    "DISABLE_INSTALL_DEMO_CONFIG": {
                      "isOptional": false,
                      "description": "Skip demo certificates",
                      "defaultValue": "true"
                    },
                    "RAILWAY_HEALTHCHECK_TIMEOUT_SEC": {
                      "defaultValue": "900"
                    }
                  },
                  "volumeMounts": {
                    "e07d6e07-7ba1-4fc3-82c4-4a2d50cb0ae3": {
                      "mountPath": "/usr/share/opensearch/data"
                    }
                  }
                },
                "e4826204-d74a-45c1-8403-4d64e00d5a2f": {
                  "icon": "https://raw.githubusercontent.com/datahub-project/datahub/v1.7.0/datahub-web-react/public/assets/logos/datahublogo.svg",
                  "name": "datahub-actions",
                  "deploy": {
                    "startCommand": null,
                    "healthcheckPath": null,
                    "restartPolicyType": "ALWAYS",
                    "restartPolicyMaxRetries": 10
                  },
                  "source": {
                    "image": "acryldata/datahub-actions:v1.7.0-slim"
                  },
                  "variables": {
                    "DATAHUB_GMS_HOST": {
                      "isOptional": false,
                      "description": "Metadata service host",
                      "defaultValue": "${{datahub-gms.RAILWAY_PRIVATE_DOMAIN}}"
                    },
                    "DATAHUB_GMS_PORT": {
                      "isOptional": false,
                      "description": "Metadata service port",
                      "defaultValue": "8080"
                    },
                    "ELASTICSEARCH_HOST": {
                      "isOptional": false,
                      "description": "Search cluster host",
                      "defaultValue": "${{opensearch.RAILWAY_PRIVATE_DOMAIN}}"
                    },
                    "ELASTICSEARCH_PORT": {
                      "isOptional": false,
                      "description": "Search cluster port",
                      "defaultValue": "9200"
                    },
                    "SCHEMA_REGISTRY_URL": {
                      "isOptional": false,
                      "description": "GMS internal registry",
                      "defaultValue": "http://${{datahub-gms.RAILWAY_PRIVATE_DOMAIN}}:8080/schema-registry/api/"
                    },
                    "DATAHUB_GMS_PROTOCOL": {
                      "isOptional": false,
                      "description": "Private traffic is plain HTTP",
                      "defaultValue": "http"
                    },
                    "ELASTICSEARCH_USE_SSL": {
                      "isOptional": false,
                      "description": "No TLS on the private network",
                      "defaultValue": "false"
                    },
                    "ELASTICSEARCH_PROTOCOL": {
                      "isOptional": false,
                      "description": "Private traffic is plain HTTP",
                      "defaultValue": "http"
                    },
                    "KAFKA_BOOTSTRAP_SERVER": {
                      "isOptional": false,
                      "description": "Kafka broker address",
                      "defaultValue": "${{kafka.RAILWAY_PRIVATE_DOMAIN}}:29092"
                    },
                    "DATAHUB_SYSTEM_CLIENT_ID": {
                      "isOptional": false,
                      "description": "Service account id",
                      "defaultValue": "__datahub_system"
                    },
                    "DATAHUB_TELEMETRY_ENABLED": {
                      "isOptional": false,
                      "description": "Upstream telemetry off",
                      "defaultValue": "false"
                    },
                    "METADATA_AUDIT_EVENT_NAME": {
                      "isOptional": false,
                      "description": "Audit event topic",
                      "defaultValue": "MetadataAuditEvent_v4"
                    },
                    "DATAHUB_SYSTEM_CLIENT_SECRET": {
                      "isOptional": false,
                      "description": "Service account secret",
                      "defaultValue": "${{datahub-gms.DATAHUB_SYSTEM_CLIENT_SECRET}}"
                    },
                    "KAFKA_PROPERTIES_SECURITY_PROTOCOL": {
                      "isOptional": false,
                      "description": "No TLS on the private network",
                      "defaultValue": "PLAINTEXT"
                    },
                    "METADATA_CHANGE_LOG_VERSIONED_TOPIC_NAME": {
                      "isOptional": false,
                      "description": "Change log topic",
                      "defaultValue": "MetadataChangeLog_Versioned_v1"
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "post_deploy": {
    "healthcheck": {
      "service": "datahub-gms",
      "method": "GET",
      "path": "/health",
      "expect_status": 200
    }
  },
  "resources": {
    "expected_services": 9,
    "needs_volume": true
  },
  "generated_at": "2026-09-21T22:14:44.200Z",
  "generator_version": "0.1.0",
  "status": "validated",
  "validated_at": "2026-09-21T20:33:57.027Z",
  "success_rate_30d": 1,
  "validation": {
    "last_run_id": "run_f31589b72d3f4fafa61e",
    "checks": [
      {
        "name": "workflow_completed",
        "passed": true
      },
      {
        "name": "all_services_deployed",
        "passed": true
      },
      {
        "name": "healthcheck",
        "passed": true
      },
      {
        "name": "stays_up",
        "passed": true
      }
    ],
    "typical_ready_seconds": 320,
    "typical_build_seconds": 0,
    "typical_start_seconds": 32,
    "slowest_service": "datahub-frontend"
  }
}
