{
  "manifest_version": "1.0.0",
  "template": {
    "id": "a4deddfb-26c3-45a6-82ca-69bfb26b4d8e",
    "slug": "pipeshub",
    "name": "PipesHub",
    "description": "AI context layer with enterprise search, connectors, agents, and RAG",
    "url": "https://railway.com/deploy/pipeshub",
    "upstream": {
      "repo_url": "https://github.com/monotykamary/railway-template-pipeshub"
    }
  },
  "status": "unvalidated",
  "validated_at": null,
  "success_rate_30d": null,
  "services": [
    {
      "name": "Neo4j",
      "source": {
        "repo": "https://github.com/monotykamary/railway-template-pipeshub"
      },
      "needs_volume": true,
      "volume_mount_path": "/data",
      "http": false
    },
    {
      "name": "PipesHub",
      "source": {
        "repo": "https://github.com/monotykamary/railway-template-pipeshub"
      },
      "needs_volume": true,
      "volume_mount_path": "/data/pipeshub",
      "http": true
    },
    {
      "name": "Redis",
      "source": {
        "repo": "https://github.com/monotykamary/railway-template-pipeshub"
      },
      "needs_volume": true,
      "volume_mount_path": "/data",
      "http": false
    },
    {
      "name": "Qdrant",
      "source": {
        "repo": "https://github.com/monotykamary/railway-template-pipeshub"
      },
      "needs_volume": true,
      "volume_mount_path": "/qdrant/storage",
      "http": false
    },
    {
      "name": "MongoDB",
      "source": {
        "repo": "https://github.com/monotykamary/railway-template-pipeshub"
      },
      "needs_volume": true,
      "volume_mount_path": "/data/db",
      "http": false
    }
  ],
  "required_inputs": [
    {
      "key": "NEO4J_AUTH",
      "service": "Neo4j",
      "description": "Neo4j username and generated password used for first initialization.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "NEO4J_PLUGINS",
      "service": "Neo4j",
      "description": "JSON list of Neo4j plugins installed at startup.",
      "secret": false,
      "strategy": "default",
      "default": "[\"apoc\"]"
    },
    {
      "key": "PIPESHUB_NEO4J_PASSWORD",
      "service": "Neo4j",
      "description": "Generated password shared with the PipesHub Neo4j client.",
      "secret": true,
      "strategy": "generate",
      "generate": "strong_password"
    },
    {
      "key": "NEO4J_server_memory_heap_max__size",
      "service": "Neo4j",
      "description": "Maximum Neo4j Java heap size.",
      "secret": false,
      "strategy": "default",
      "default": "2G"
    },
    {
      "key": "NEO4J_server_memory_pagecache_size",
      "service": "Neo4j",
      "description": "Neo4j page-cache allocation.",
      "secret": false,
      "strategy": "default",
      "default": "1G"
    },
    {
      "key": "NEO4J_server_memory_heap_initial__size",
      "service": "Neo4j",
      "description": "Initial Neo4j Java heap size.",
      "secret": false,
      "strategy": "default",
      "default": "1G"
    },
    {
      "key": "NEO4J_dbms_security_procedures_unrestricted",
      "service": "Neo4j",
      "description": "Neo4j procedures allowed without sandbox restrictions.",
      "secret": false,
      "strategy": "default",
      "default": "apoc.*"
    },
    {
      "key": "HOME",
      "service": "PipesHub",
      "description": "Writable home directory on the persistent PipesHub volume.",
      "secret": false,
      "strategy": "default",
      "default": "/data/pipeshub"
    },
    {
      "key": "PORT",
      "service": "PipesHub",
      "description": "Public HTTP port served by the PipesHub web application.",
      "secret": false,
      "strategy": "default",
      "default": "3000"
    },
    {
      "key": "HF_HOME",
      "service": "PipesHub",
      "description": "Persistent Hugging Face model cache directory.",
      "secret": false,
      "strategy": "default",
      "default": "/data/pipeshub/.cache/huggingface"
    },
    {
      "key": "NODE_ENV",
      "service": "PipesHub",
      "description": "Enables production behavior in the Node.js API.",
      "secret": false,
      "strategy": "default",
      "default": "production"
    },
    {
      "key": "REDIS_DB",
      "service": "PipesHub",
      "description": "Redis logical database used by PipesHub.",
      "secret": false,
      "strategy": "default",
      "default": "0"
    },
    {
      "key": "LOG_LEVEL",
      "service": "PipesHub",
      "description": "Application log verbosity.",
      "secret": false,
      "strategy": "default",
      "default": "info"
    },
    {
      "key": "MONGO_URI",
      "service": "PipesHub",
      "description": "Private MongoDB connection URI using the generated database password.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "NEO4J_URI",
      "service": "PipesHub",
      "description": "Private Neo4j Bolt endpoint.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "REDIS_URL",
      "service": "PipesHub",
      "description": "Private authenticated Redis connection URI.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "DATA_STORE",
      "service": "PipesHub",
      "description": "Graph data-store provider selected for PipesHub.",
      "secret": false,
      "strategy": "default",
      "default": "neo4j"
    },
    {
      "key": "MCP_SCOPES",
      "service": "PipesHub",
      "description": "OAuth scopes exposed to PipesHub MCP clients.",
      "secret": false,
      "strategy": "default",
      "default": "openid,profile,email,offline_access,semantic:write,conversation:write,conversation:chat,kb:read,team:read,user:read,config:read,agent:read,agent:execute,connector:read"
    },
    {
      "key": "REDIS_HOST",
      "service": "PipesHub",
      "description": "Redis hostname on Railway private networking.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "REDIS_PORT",
      "service": "PipesHub",
      "description": "Redis TCP port.",
      "secret": false,
      "strategy": "default",
      "default": "6379"
    },
    {
      "key": "SECRET_KEY",
      "service": "PipesHub",
      "description": "Generated application encryption and signing secret.",
      "secret": true,
      "strategy": "generate",
      "generate": "random_base64_32"
    },
    {
      "key": "QDRANT_HOST",
      "service": "PipesHub",
      "description": "Qdrant hostname on Railway private networking.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "QDRANT_PORT",
      "service": "PipesHub",
      "description": "Qdrant HTTP API port.",
      "secret": false,
      "strategy": "default",
      "default": "6333"
    },
    {
      "key": "STRICT_MODE",
      "service": "PipesHub",
      "description": "Keeps the upstream optional strict validation mode disabled.",
      "secret": false,
      "strategy": "default",
      "default": "false"
    },
    {
      "key": "SANDBOX_MODE",
      "service": "PipesHub",
      "description": "Keeps untrusted code execution disabled when Railway provides no Docker daemon.",
      "secret": false,
      "strategy": "default",
      "default": "docker"
    },
    {
      "key": "KV_STORE_TYPE",
      "service": "PipesHub",
      "description": "Key-value store provider used by PipesHub.",
      "secret": false,
      "strategy": "default",
      "default": "redis"
    },
    {
      "key": "MONGO_DB_NAME",
      "service": "PipesHub",
      "description": "MongoDB database name used by PipesHub.",
      "secret": false,
      "strategy": "default",
      "default": "es"
    },
    {
      "key": "QUERY_BACKEND",
      "service": "PipesHub",
      "description": "Internal all-in-one query service endpoint.",
      "secret": false,
      "strategy": "default",
      "default": "http://localhost:8000"
    },
    {
      "key": "REDIS_TIMEOUT",
      "service": "PipesHub",
      "description": "Redis operation timeout in milliseconds.",
      "secret": false,
      "strategy": "default",
      "default": "10000"
    },
    {
      "key": "MESSAGE_BROKER",
      "service": "PipesHub",
      "description": "Redis Streams message-broker provider.",
      "secret": false,
      "strategy": "default",
      "default": "redis"
    },
    {
      "key": "NEO4J_DATABASE",
      "service": "PipesHub",
      "description": "Neo4j database selected by PipesHub.",
      "secret": false,
      "strategy": "default",
      "default": "neo4j"
    },
    {
      "key": "NEO4J_PASSWORD",
      "service": "PipesHub",
      "description": "Generated Neo4j password referenced from the Neo4j service.",
      "secret": true,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "NEO4J_USERNAME",
      "service": "PipesHub",
      "description": "Neo4j username.",
      "secret": false,
      "strategy": "default",
      "default": "neo4j"
    },
    {
      "key": "QDRANT_API_KEY",
      "service": "PipesHub",
      "description": "Generated Qdrant API key referenced from the Qdrant service.",
      "secret": true,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "REDIS_PASSWORD",
      "service": "PipesHub",
      "description": "Generated Redis password referenced from the Redis service.",
      "secret": true,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "ALLOWED_ORIGINS",
      "service": "PipesHub",
      "description": "Public Railway origin allowed by application CORS policy.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_domain"
    },
    {
      "key": "OMP_NUM_THREADS",
      "service": "PipesHub",
      "description": "OpenMP thread limit for local model workloads.",
      "secret": false,
      "strategy": "default",
      "default": "2"
    },
    {
      "key": "REDIS_KV_PREFIX",
      "service": "PipesHub",
      "description": "Namespace prefix for PipesHub Redis keys.",
      "secret": false,
      "strategy": "default",
      "default": "pipeshub:kv:"
    },
    {
      "key": "DEFER_EXTRACTION",
      "service": "PipesHub",
      "description": "Processes extraction immediately rather than deferring it.",
      "secret": false,
      "strategy": "default",
      "default": "false"
    },
    {
      "key": "INDEXING_BACKEND",
      "service": "PipesHub",
      "description": "Internal all-in-one indexing service endpoint.",
      "secret": false,
      "strategy": "default",
      "default": "http://localhost:8091"
    },
    {
      "key": "QDRANT_GRPC_PORT",
      "service": "PipesHub",
      "description": "Qdrant gRPC API port.",
      "secret": false,
      "strategy": "default",
      "default": "6334"
    },
    {
      "key": "CONNECTOR_BACKEND",
      "service": "PipesHub",
      "description": "Internal all-in-one connector service endpoint.",
      "secret": false,
      "strategy": "default",
      "default": "http://localhost:8088"
    },
    {
      "key": "PIPESHUB_DATA_DIR",
      "service": "PipesHub",
      "description": "Persistent directory used by the Railway bootstrap marker and app data.",
      "secret": false,
      "strategy": "default",
      "default": "/data/pipeshub"
    },
    {
      "key": "PIPESHUB_ORG_NAME",
      "service": "PipesHub",
      "description": "Name of the initial organization created on first deployment.",
      "secret": false,
      "strategy": "default",
      "default": "PipesHub"
    },
    {
      "key": "SKIP_DOMAIN_CHECK",
      "service": "PipesHub",
      "description": "Requires normal upstream domain validation.",
      "secret": false,
      "strategy": "default",
      "default": "false"
    },
    {
      "key": "HIDE_SECRET_CONFIG",
      "service": "PipesHub",
      "description": "Redacts secret configuration values from application responses.",
      "secret": true,
      "strategy": "default",
      "default": "true"
    },
    {
      "key": "FRONTEND_PUBLIC_URL",
      "service": "PipesHub",
      "description": "Generated public HTTPS URL used by the frontend and API.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_domain"
    },
    {
      "key": "PIPESHUB_ADMIN_NAME",
      "service": "PipesHub",
      "description": "Display name of the initial administrator.",
      "secret": false,
      "strategy": "default",
      "default": "Railway Admin"
    },
    {
      "key": "USE_PARSING_SERVICE",
      "service": "PipesHub",
      "description": "Uses the bundled parser instead of an external parsing service.",
      "secret": false,
      "strategy": "default",
      "default": "false"
    },
    {
      "key": "EMBEDDING_SERVER_URL",
      "service": "PipesHub",
      "description": "Internal all-in-one embedding service endpoint.",
      "secret": false,
      "strategy": "default",
      "default": "http://localhost:8002"
    },
    {
      "key": "PIPESHUB_ADMIN_EMAIL",
      "service": "PipesHub",
      "description": "Required email address for the initial administrator. Enter this during deployment.",
      "secret": false,
      "strategy": "ask_user"
    },
    {
      "key": "REDIS_STREAMS_MAXLEN",
      "service": "PipesHub",
      "description": "Approximate maximum length retained for Redis Streams.",
      "secret": false,
      "strategy": "default",
      "default": "500000"
    },
    {
      "key": "SANDBOX_DOCKER_IMAGE",
      "service": "PipesHub",
      "description": "Pinned upstream sandbox image used only when a Docker daemon is available.",
      "secret": false,
      "strategy": "default",
      "default": "pipeshubai/pipeshub-sandbox:0.6.0-slim"
    },
    {
      "key": "REPLICA_SET_AVAILABLE",
      "service": "PipesHub",
      "description": "Configures MongoDB as the tested single-node deployment.",
      "secret": false,
      "strategy": "default",
      "default": "false"
    },
    {
      "key": "PIPESHUB_ADMIN_PASSWORD",
      "service": "PipesHub",
      "description": "Generated password for the initial administrator. Retrieve it from service variables after deployment.",
      "secret": true,
      "strategy": "generate",
      "generate": "strong_password"
    },
    {
      "key": "PIPESHUB_BOOTSTRAP_TIMEOUT",
      "service": "PipesHub",
      "description": "Maximum seconds allowed for first-boot readiness and organization creation.",
      "secret": false,
      "strategy": "default",
      "default": "600"
    },
    {
      "key": "REDIS_PASSWORD",
      "service": "Redis",
      "description": "Generated Redis password shared with PipesHub.",
      "secret": true,
      "strategy": "generate",
      "generate": "strong_password"
    },
    {
      "key": "QDRANT_API_KEY",
      "service": "Qdrant",
      "description": "Generated API key shared with the PipesHub Qdrant client.",
      "secret": true,
      "strategy": "generate",
      "generate": "random_base64_32"
    },
    {
      "key": "QDRANT__SERVICE__API_KEY",
      "service": "Qdrant",
      "description": "Qdrant server API key derived from the generated service secret.",
      "secret": true,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "QDRANT__SERVICE__GRPC_PORT",
      "service": "Qdrant",
      "description": "Qdrant gRPC listener port.",
      "secret": false,
      "strategy": "default",
      "default": "6334"
    },
    {
      "key": "QDRANT__SERVICE__HTTP_PORT",
      "service": "Qdrant",
      "description": "Qdrant HTTP listener port.",
      "secret": false,
      "strategy": "default",
      "default": "6333"
    },
    {
      "key": "QDRANT__SERVICE__MAX_REQUEST_SIZE_MB",
      "service": "Qdrant",
      "description": "Maximum accepted Qdrant request size in megabytes.",
      "secret": false,
      "strategy": "default",
      "default": "64"
    },
    {
      "key": "GLIBC_TUNABLES",
      "service": "MongoDB",
      "description": "Compatibility setting for MongoDB on Railway container hosts.",
      "secret": false,
      "strategy": "default",
      "default": "glibc.pthread.rseq=0"
    },
    {
      "key": "MONGO_PASSWORD",
      "service": "MongoDB",
      "description": "Generated MongoDB administrator password shared with PipesHub.",
      "secret": true,
      "strategy": "generate",
      "generate": "strong_password"
    },
    {
      "key": "MONGO_USERNAME",
      "service": "MongoDB",
      "description": "MongoDB administrator username used in the private connection URI.",
      "secret": false,
      "strategy": "default",
      "default": "admin"
    },
    {
      "key": "MONGO_INITDB_ROOT_PASSWORD",
      "service": "MongoDB",
      "description": "MongoDB root password derived from the generated service secret.",
      "secret": true,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "MONGO_INITDB_ROOT_USERNAME",
      "service": "MongoDB",
      "description": "MongoDB root username created on first initialization.",
      "secret": false,
      "strategy": "default",
      "default": "admin"
    }
  ],
  "deploy": {
    "mcp": {
      "server": "railway",
      "tool": "deploy_template",
      "args": {
        "template_code": "pipeshub"
      }
    },
    "cli": "railway deploy --template pipeshub",
    "api": {
      "method": "POST",
      "path": "/graphql/v2",
      "body": {
        "query": "mutation templateDeploy($input: TemplateDeployV2Input!) { templateDeployV2(input: $input) { projectId workflowId } }",
        "variables": {
          "input": {
            "templateId": "a4deddfb-26c3-45a6-82ca-69bfb26b4d8e",
            "serializedConfig": {
              "buckets": {},
              "services": {
                "47ae0c78-f97b-41ad-bcab-8c1578f5c670": {
                  "icon": "https://raw.githubusercontent.com/monotykamary/railway-template-pipeshub/d269a6cb46145a815d2ed6774a3db250921ec20c/assets/pipeshub-icon-v060.png",
                  "name": "Neo4j",
                  "deploy": {
                    "startCommand": null,
                    "healthcheckPath": null,
                    "restartPolicyType": "ON_FAILURE",
                    "restartPolicyMaxRetries": 10
                  },
                  "source": {
                    "repo": "https://github.com/monotykamary/railway-template-pipeshub",
                    "rootDirectory": "/neo4j"
                  },
                  "variables": {
                    "NEO4J_AUTH": {
                      "isOptional": false,
                      "description": "Neo4j username and generated password used for first initialization.",
                      "defaultValue": "neo4j/${{Neo4j.PIPESHUB_NEO4J_PASSWORD}}"
                    },
                    "NEO4J_PLUGINS": {
                      "isOptional": false,
                      "description": "JSON list of Neo4j plugins installed at startup.",
                      "defaultValue": "[\"apoc\"]"
                    },
                    "PIPESHUB_NEO4J_PASSWORD": {
                      "isOptional": false,
                      "description": "Generated password shared with the PipesHub Neo4j client.",
                      "defaultValue": "{{PIPESHUB_NEO4J_PASSWORD}}"
                    },
                    "NEO4J_server_memory_heap_max__size": {
                      "isOptional": false,
                      "description": "Maximum Neo4j Java heap size.",
                      "defaultValue": "2G"
                    },
                    "NEO4J_server_memory_pagecache_size": {
                      "isOptional": false,
                      "description": "Neo4j page-cache allocation.",
                      "defaultValue": "1G"
                    },
                    "NEO4J_server_memory_heap_initial__size": {
                      "isOptional": false,
                      "description": "Initial Neo4j Java heap size.",
                      "defaultValue": "1G"
                    },
                    "NEO4J_dbms_security_procedures_unrestricted": {
                      "isOptional": false,
                      "description": "Neo4j procedures allowed without sandbox restrictions.",
                      "defaultValue": "apoc.*"
                    }
                  },
                  "volumeMounts": {
                    "47ae0c78-f97b-41ad-bcab-8c1578f5c670": {
                      "mountPath": "/data",
                      "backupSchedules": [
                        "DAILY"
                      ]
                    }
                  }
                },
                "48ed9f9c-05e1-4fec-a386-f6aa5035cd64": {
                  "icon": "https://raw.githubusercontent.com/monotykamary/railway-template-pipeshub/d269a6cb46145a815d2ed6774a3db250921ec20c/assets/pipeshub-icon-v060.png",
                  "name": "PipesHub",
                  "deploy": {
                    "startCommand": null,
                    "healthcheckPath": "/api/v1/health/services",
                    "restartPolicyType": "ON_FAILURE",
                    "healthcheckTimeout": 600,
                    "restartPolicyMaxRetries": 10
                  },
                  "source": {
                    "repo": "https://github.com/monotykamary/railway-template-pipeshub",
                    "rootDirectory": "/app"
                  },
                  "variables": {
                    "HOME": {
                      "isOptional": false,
                      "description": "Writable home directory on the persistent PipesHub volume.",
                      "defaultValue": "/data/pipeshub"
                    },
                    "PORT": {
                      "isOptional": false,
                      "description": "Public HTTP port served by the PipesHub web application.",
                      "defaultValue": "3000"
                    },
                    "HF_HOME": {
                      "isOptional": false,
                      "description": "Persistent Hugging Face model cache directory.",
                      "defaultValue": "/data/pipeshub/.cache/huggingface"
                    },
                    "NODE_ENV": {
                      "isOptional": false,
                      "description": "Enables production behavior in the Node.js API.",
                      "defaultValue": "production"
                    },
                    "REDIS_DB": {
                      "isOptional": false,
                      "description": "Redis logical database used by PipesHub.",
                      "defaultValue": "0"
                    },
                    "LOG_LEVEL": {
                      "isOptional": false,
                      "description": "Application log verbosity.",
                      "defaultValue": "info"
                    },
                    "MONGO_URI": {
                      "isOptional": false,
                      "description": "Private MongoDB connection URI using the generated database password.",
                      "defaultValue": "mongodb://admin:${{MongoDB.MONGO_PASSWORD}}@${{MongoDB.RAILWAY_PRIVATE_DOMAIN}}:27017/?authSource=admin"
                    },
                    "NEO4J_URI": {
                      "isOptional": false,
                      "description": "Private Neo4j Bolt endpoint.",
                      "defaultValue": "bolt://${{Neo4j.RAILWAY_PRIVATE_DOMAIN}}:7687"
                    },
                    "REDIS_URL": {
                      "isOptional": false,
                      "description": "Private authenticated Redis connection URI.",
                      "defaultValue": "redis://:${{Redis.REDIS_PASSWORD}}@${{Redis.RAILWAY_PRIVATE_DOMAIN}}:6379"
                    },
                    "DATA_STORE": {
                      "isOptional": false,
                      "description": "Graph data-store provider selected for PipesHub.",
                      "defaultValue": "neo4j"
                    },
                    "MCP_SCOPES": {
                      "isOptional": false,
                      "description": "OAuth scopes exposed to PipesHub MCP clients.",
                      "defaultValue": "openid,profile,email,offline_access,semantic:write,conversation:write,conversation:chat,kb:read,team:read,user:read,config:read,agent:read,agent:execute,connector:read"
                    },
                    "REDIS_HOST": {
                      "isOptional": false,
                      "description": "Redis hostname on Railway private networking.",
                      "defaultValue": "${{Redis.RAILWAY_PRIVATE_DOMAIN}}"
                    },
                    "REDIS_PORT": {
                      "isOptional": false,
                      "description": "Redis TCP port.",
                      "defaultValue": "6379"
                    },
                    "SECRET_KEY": {
                      "isOptional": false,
                      "description": "Generated application encryption and signing secret.",
                      "defaultValue": "{{SECRET_KEY}}"
                    },
                    "QDRANT_HOST": {
                      "isOptional": false,
                      "description": "Qdrant hostname on Railway private networking.",
                      "defaultValue": "${{Qdrant.RAILWAY_PRIVATE_DOMAIN}}"
                    },
                    "QDRANT_PORT": {
                      "isOptional": false,
                      "description": "Qdrant HTTP API port.",
                      "defaultValue": "6333"
                    },
                    "STRICT_MODE": {
                      "isOptional": false,
                      "description": "Keeps the upstream optional strict validation mode disabled.",
                      "defaultValue": "false"
                    },
                    "SANDBOX_MODE": {
                      "isOptional": false,
                      "description": "Keeps untrusted code execution disabled when Railway provides no Docker daemon.",
                      "defaultValue": "docker"
                    },
                    "KV_STORE_TYPE": {
                      "isOptional": false,
                      "description": "Key-value store provider used by PipesHub.",
                      "defaultValue": "redis"
                    },
                    "MONGO_DB_NAME": {
                      "isOptional": false,
                      "description": "MongoDB database name used by PipesHub.",
                      "defaultValue": "es"
                    },
                    "QUERY_BACKEND": {
                      "isOptional": false,
                      "description": "Internal all-in-one query service endpoint.",
                      "defaultValue": "http://localhost:8000"
                    },
                    "REDIS_TIMEOUT": {
                      "isOptional": false,
                      "description": "Redis operation timeout in milliseconds.",
                      "defaultValue": "10000"
                    },
                    "MESSAGE_BROKER": {
                      "isOptional": false,
                      "description": "Redis Streams message-broker provider.",
                      "defaultValue": "redis"
                    },
                    "NEO4J_DATABASE": {
                      "isOptional": false,
                      "description": "Neo4j database selected by PipesHub.",
                      "defaultValue": "neo4j"
                    },
                    "NEO4J_PASSWORD": {
                      "isOptional": false,
                      "description": "Generated Neo4j password referenced from the Neo4j service.",
                      "defaultValue": "${{Neo4j.PIPESHUB_NEO4J_PASSWORD}}"
                    },
                    "NEO4J_USERNAME": {
                      "isOptional": false,
                      "description": "Neo4j username.",
                      "defaultValue": "neo4j"
                    },
                    "QDRANT_API_KEY": {
                      "isOptional": false,
                      "description": "Generated Qdrant API key referenced from the Qdrant service.",
                      "defaultValue": "${{Qdrant.QDRANT_API_KEY}}"
                    },
                    "REDIS_PASSWORD": {
                      "isOptional": false,
                      "description": "Generated Redis password referenced from the Redis service.",
                      "defaultValue": "${{Redis.REDIS_PASSWORD}}"
                    },
                    "ALLOWED_ORIGINS": {
                      "isOptional": false,
                      "description": "Public Railway origin allowed by application CORS policy.",
                      "defaultValue": "https://${{PipesHub.RAILWAY_PUBLIC_DOMAIN}}"
                    },
                    "OMP_NUM_THREADS": {
                      "isOptional": false,
                      "description": "OpenMP thread limit for local model workloads.",
                      "defaultValue": "2"
                    },
                    "REDIS_KV_PREFIX": {
                      "isOptional": false,
                      "description": "Namespace prefix for PipesHub Redis keys.",
                      "defaultValue": "pipeshub:kv:"
                    },
                    "DEFER_EXTRACTION": {
                      "isOptional": false,
                      "description": "Processes extraction immediately rather than deferring it.",
                      "defaultValue": "false"
                    },
                    "INDEXING_BACKEND": {
                      "isOptional": false,
                      "description": "Internal all-in-one indexing service endpoint.",
                      "defaultValue": "http://localhost:8091"
                    },
                    "QDRANT_GRPC_PORT": {
                      "isOptional": false,
                      "description": "Qdrant gRPC API port.",
                      "defaultValue": "6334"
                    },
                    "CONNECTOR_BACKEND": {
                      "isOptional": false,
                      "description": "Internal all-in-one connector service endpoint.",
                      "defaultValue": "http://localhost:8088"
                    },
                    "PIPESHUB_DATA_DIR": {
                      "isOptional": false,
                      "description": "Persistent directory used by the Railway bootstrap marker and app data.",
                      "defaultValue": "/data/pipeshub"
                    },
                    "PIPESHUB_ORG_NAME": {
                      "isOptional": false,
                      "description": "Name of the initial organization created on first deployment.",
                      "defaultValue": "PipesHub"
                    },
                    "SKIP_DOMAIN_CHECK": {
                      "isOptional": false,
                      "description": "Requires normal upstream domain validation.",
                      "defaultValue": "false"
                    },
                    "HIDE_SECRET_CONFIG": {
                      "isOptional": false,
                      "description": "Redacts secret configuration values from application responses.",
                      "defaultValue": "true"
                    },
                    "FRONTEND_PUBLIC_URL": {
                      "isOptional": false,
                      "description": "Generated public HTTPS URL used by the frontend and API.",
                      "defaultValue": "https://${{PipesHub.RAILWAY_PUBLIC_DOMAIN}}"
                    },
                    "PIPESHUB_ADMIN_NAME": {
                      "isOptional": false,
                      "description": "Display name of the initial administrator.",
                      "defaultValue": "Railway Admin"
                    },
                    "USE_PARSING_SERVICE": {
                      "isOptional": false,
                      "description": "Uses the bundled parser instead of an external parsing service.",
                      "defaultValue": "false"
                    },
                    "EMBEDDING_SERVER_URL": {
                      "isOptional": false,
                      "description": "Internal all-in-one embedding service endpoint.",
                      "defaultValue": "http://localhost:8002"
                    },
                    "PIPESHUB_ADMIN_EMAIL": {
                      "isOptional": false,
                      "description": "Required email address for the initial administrator. Enter this during deployment.",
                      "defaultValue": "{{PIPESHUB_ADMIN_EMAIL}}"
                    },
                    "REDIS_STREAMS_MAXLEN": {
                      "isOptional": false,
                      "description": "Approximate maximum length retained for Redis Streams.",
                      "defaultValue": "500000"
                    },
                    "SANDBOX_DOCKER_IMAGE": {
                      "isOptional": false,
                      "description": "Pinned upstream sandbox image used only when a Docker daemon is available.",
                      "defaultValue": "pipeshubai/pipeshub-sandbox:0.6.0-slim"
                    },
                    "REPLICA_SET_AVAILABLE": {
                      "isOptional": false,
                      "description": "Configures MongoDB as the tested single-node deployment.",
                      "defaultValue": "false"
                    },
                    "PIPESHUB_ADMIN_PASSWORD": {
                      "isOptional": false,
                      "description": "Generated password for the initial administrator. Retrieve it from service variables after deployment.",
                      "defaultValue": "{{PIPESHUB_ADMIN_PASSWORD}}"
                    },
                    "PIPESHUB_BOOTSTRAP_TIMEOUT": {
                      "isOptional": false,
                      "description": "Maximum seconds allowed for first-boot readiness and organization creation.",
                      "defaultValue": "600"
                    }
                  },
                  "networking": {
                    "serviceDomains": {
                      "<hasDomain>:3000": {
                        "port": 3000
                      }
                    }
                  },
                  "volumeMounts": {
                    "48ed9f9c-05e1-4fec-a386-f6aa5035cd64": {
                      "mountPath": "/data/pipeshub",
                      "backupSchedules": [
                        "DAILY"
                      ]
                    }
                  }
                },
                "72e7d320-997c-4ef6-96e7-2e00c2738f9f": {
                  "icon": "https://raw.githubusercontent.com/monotykamary/railway-template-pipeshub/d269a6cb46145a815d2ed6774a3db250921ec20c/assets/pipeshub-icon-v060.png",
                  "name": "Redis",
                  "deploy": {
                    "startCommand": null,
                    "healthcheckPath": null,
                    "restartPolicyType": "ON_FAILURE",
                    "restartPolicyMaxRetries": 10
                  },
                  "source": {
                    "repo": "https://github.com/monotykamary/railway-template-pipeshub",
                    "rootDirectory": "/redis"
                  },
                  "variables": {
                    "REDIS_PASSWORD": {
                      "isOptional": false,
                      "description": "Generated Redis password shared with PipesHub.",
                      "defaultValue": "{{REDIS_PASSWORD}}"
                    }
                  },
                  "volumeMounts": {
                    "72e7d320-997c-4ef6-96e7-2e00c2738f9f": {
                      "mountPath": "/data",
                      "backupSchedules": [
                        "DAILY"
                      ]
                    }
                  }
                },
                "c6f5a32f-e8b0-4cfa-8eb2-f95971a306a1": {
                  "icon": "https://raw.githubusercontent.com/monotykamary/railway-template-pipeshub/d269a6cb46145a815d2ed6774a3db250921ec20c/assets/pipeshub-icon-v060.png",
                  "name": "Qdrant",
                  "deploy": {
                    "startCommand": null,
                    "healthcheckPath": null,
                    "restartPolicyType": "ON_FAILURE",
                    "restartPolicyMaxRetries": 10
                  },
                  "source": {
                    "repo": "https://github.com/monotykamary/railway-template-pipeshub",
                    "rootDirectory": "/qdrant"
                  },
                  "variables": {
                    "QDRANT_API_KEY": {
                      "isOptional": false,
                      "description": "Generated API key shared with the PipesHub Qdrant client.",
                      "defaultValue": "{{QDRANT_API_KEY}}"
                    },
                    "QDRANT__SERVICE__API_KEY": {
                      "isOptional": false,
                      "description": "Qdrant server API key derived from the generated service secret.",
                      "defaultValue": "${{Qdrant.QDRANT_API_KEY}}"
                    },
                    "QDRANT__SERVICE__GRPC_PORT": {
                      "isOptional": false,
                      "description": "Qdrant gRPC listener port.",
                      "defaultValue": "6334"
                    },
                    "QDRANT__SERVICE__HTTP_PORT": {
                      "isOptional": false,
                      "description": "Qdrant HTTP listener port.",
                      "defaultValue": "6333"
                    },
                    "QDRANT__SERVICE__MAX_REQUEST_SIZE_MB": {
                      "isOptional": false,
                      "description": "Maximum accepted Qdrant request size in megabytes.",
                      "defaultValue": "64"
                    }
                  },
                  "volumeMounts": {
                    "c6f5a32f-e8b0-4cfa-8eb2-f95971a306a1": {
                      "mountPath": "/qdrant/storage",
                      "backupSchedules": [
                        "DAILY"
                      ]
                    }
                  }
                },
                "d5d2dc73-5a35-4490-8547-38ac103dd580": {
                  "icon": "https://raw.githubusercontent.com/monotykamary/railway-template-pipeshub/d269a6cb46145a815d2ed6774a3db250921ec20c/assets/pipeshub-icon-v060.png",
                  "name": "MongoDB",
                  "deploy": {
                    "startCommand": null,
                    "healthcheckPath": null,
                    "restartPolicyType": "ON_FAILURE",
                    "restartPolicyMaxRetries": 10
                  },
                  "source": {
                    "repo": "https://github.com/monotykamary/railway-template-pipeshub",
                    "rootDirectory": "/mongodb"
                  },
                  "variables": {
                    "GLIBC_TUNABLES": {
                      "isOptional": false,
                      "description": "Compatibility setting for MongoDB on Railway container hosts.",
                      "defaultValue": "glibc.pthread.rseq=0"
                    },
                    "MONGO_PASSWORD": {
                      "isOptional": false,
                      "description": "Generated MongoDB administrator password shared with PipesHub.",
                      "defaultValue": "{{MONGO_PASSWORD}}"
                    },
                    "MONGO_USERNAME": {
                      "isOptional": false,
                      "description": "MongoDB administrator username used in the private connection URI.",
                      "defaultValue": "admin"
                    },
                    "MONGO_INITDB_ROOT_PASSWORD": {
                      "isOptional": false,
                      "description": "MongoDB root password derived from the generated service secret.",
                      "defaultValue": "${{MongoDB.MONGO_PASSWORD}}"
                    },
                    "MONGO_INITDB_ROOT_USERNAME": {
                      "isOptional": false,
                      "description": "MongoDB root username created on first initialization.",
                      "defaultValue": "admin"
                    }
                  },
                  "volumeMounts": {
                    "d5d2dc73-5a35-4490-8547-38ac103dd580": {
                      "mountPath": "/data/db",
                      "backupSchedules": [
                        "DAILY"
                      ]
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "post_deploy": {
    "healthcheck": {
      "service": "PipesHub",
      "method": "GET",
      "path": "/api/v1/health/services",
      "expect_status": 200
    }
  },
  "resources": {
    "expected_services": 5,
    "needs_volume": true
  },
  "generated_at": "2026-09-10T16:14:52.212Z",
  "generator_version": "0.1.0"
}
