{
  "manifest_version": "1.0.0",
  "template": {
    "id": "eba2c586-3854-468c-97e2-35c660d42d7e",
    "slug": "HxvQtm",
    "name": "LibreChat",
    "description": "LibreChat is a free, open source AI chat platform.",
    "url": "https://railway.com/deploy/HxvQtm",
    "upstream": {
      "image": "ghcr.io/danny-avila/librechat:v0.8.7@sha256:c5db3331b845e1f289f8d04c0c77936c4bbe372f76730a804abc1c37e44d23a9"
    }
  },
  "services": [
    {
      "name": "MongoDB",
      "source": {
        "image": "mongo@sha256:e0ce8c35124d4a9f9785532d1f268f39e9728ffa1cb38f46fa482436424c4bd3"
      },
      "needs_volume": true,
      "volume_mount_path": "/data/db",
      "http": false
    },
    {
      "name": "LibreChat",
      "source": {
        "image": "ghcr.io/danny-avila/librechat:v0.8.7@sha256:c5db3331b845e1f289f8d04c0c77936c4bbe372f76730a804abc1c37e44d23a9"
      },
      "needs_volume": false,
      "http": true
    },
    {
      "name": "Meilisearch",
      "source": {
        "image": "getmeili/meilisearch:v1.53.2@sha256:c94e58ca09662dd6e65e8f1b0fd145767be3da7d5422a863a27b8d2b68e090c9"
      },
      "needs_volume": true,
      "volume_mount_path": "/meili_data",
      "http": false
    },
    {
      "name": "RAG-API",
      "source": {
        "image": "ghcr.io/danny-avila/librechat-rag-api-dev-lite:v0.9.0@sha256:18a8dffa9316276b924bf3fd23bfb4544b0f68f8f6b14c048affb35c01721a35"
      },
      "needs_volume": false,
      "http": true
    },
    {
      "name": "pgvector",
      "source": {
        "image": "pgvector/pgvector:pg16@sha256:ccc6e83d6e35e931dc7c5def2022729d5a6c370318d099181995567ff1fb4d6b"
      },
      "needs_volume": true,
      "volume_mount_path": "/var/lib/postgresql/data",
      "http": false
    }
  ],
  "required_inputs": [
    {
      "key": "MONGOHOST",
      "service": "MongoDB",
      "description": "Hostname for MongoDB, using Railway's private domain",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "MONGOPORT",
      "service": "MongoDB",
      "description": "Default port for MongoDB connections",
      "secret": false,
      "strategy": "default",
      "default": "27017"
    },
    {
      "key": "MONGOUSER",
      "service": "MongoDB",
      "description": "Username for MongoDB connections, referencing the root username",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "MONGO_URL",
      "service": "MongoDB",
      "description": "Public MongoDB connection URL using root credentials and Railway's TCP proxy",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "MONGOPASSWORD",
      "service": "MongoDB",
      "description": "Password for MongoDB connections, referencing the root password",
      "secret": true,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "MONGO_PRIVATE_URL",
      "service": "MongoDB",
      "description": "Private MongoDB connection URL using root credentials and Railway's private domain",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "MONGO_INITDB_ROOT_PASSWORD",
      "service": "MongoDB",
      "description": "Randomly generated 32-character secret for the MongoDB root password",
      "secret": true,
      "strategy": "generate",
      "generate": "strong_password"
    },
    {
      "key": "MONGO_INITDB_ROOT_USERNAME",
      "service": "MongoDB",
      "description": "Root username for MongoDB initialization",
      "secret": false,
      "strategy": "default",
      "default": "mongo"
    },
    {
      "key": "HOST",
      "service": "LibreChat",
      "description": "Host address to bind the server to",
      "secret": false,
      "strategy": "default",
      "default": "0.0.0.0"
    },
    {
      "key": "SEARCH",
      "service": "LibreChat",
      "description": "enables search in messages and conversations",
      "secret": false,
      "strategy": "default",
      "default": "true"
    },
    {
      "key": "CREDS_IV",
      "service": "LibreChat",
      "description": "Initialization vector for credential encryption",
      "secret": false,
      "strategy": "generate",
      "generate": "random_base64_32"
    },
    {
      "key": "NO_INDEX",
      "service": "LibreChat",
      "description": "https://docs.librechat.ai/install/configuration/dotenv.html#meilisearch-current-default-search-",
      "secret": false,
      "strategy": "default",
      "default": "true"
    },
    {
      "key": "APP_TITLE",
      "service": "LibreChat",
      "description": "https://docs.librechat.ai/install/configuration/dotenv.html#customization",
      "secret": false,
      "strategy": "default",
      "default": "LibreChat"
    },
    {
      "key": "CREDS_KEY",
      "service": "LibreChat",
      "description": "Key for credential encryption",
      "secret": true,
      "strategy": "generate",
      "generate": "random_base64_32"
    },
    {
      "key": "ENDPOINTS",
      "service": "LibreChat",
      "description": "customize the available endpoints in LibreChat",
      "secret": false,
      "strategy": "default",
      "default": "openAI,azureOpenAI,bingAI,chatGPTBrowser,google,gptPlugins,anthropic"
    },
    {
      "key": "LOGIN_MAX",
      "service": "LibreChat",
      "description": "The max amount of logins allowed per LOGIN_WINDOW",
      "secret": false,
      "strategy": "default",
      "default": "7"
    },
    {
      "key": "MONGO_URI",
      "service": "LibreChat",
      "description": "MongoDB connection URI",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "GOOGLE_KEY",
      "service": "LibreChat",
      "description": "API key for Google services",
      "secret": true,
      "strategy": "default",
      "default": "user_provided"
    },
    {
      "key": "JWT_SECRET",
      "service": "LibreChat",
      "description": "Secret for JWT tokens",
      "secret": true,
      "strategy": "generate",
      "generate": "random_base64_32"
    },
    {
      "key": "MEILI_HOST",
      "service": "LibreChat",
      "description": "Host address for Meilisearch",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "CONFIG_PATH",
      "service": "LibreChat",
      "description": "Here you can add a local path of a config file or a URL, The best way to use this is to upload the file on GitHub and paste here the link of the file",
      "secret": false,
      "strategy": "default",
      "default": "https://raw.githubusercontent.com/fuegovic/lc-config-yaml/main/librechat-rw.yaml"
    },
    {
      "key": "RAG_API_URL",
      "service": "LibreChat",
      "description": "URL for the RAG (Retrieval-Augmented Generation) API",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_domain"
    },
    {
      "key": "TITLE_CONVO",
      "service": "LibreChat",
      "description": "Whether to enable conversation titles",
      "secret": false,
      "strategy": "default",
      "default": "true"
    },
    {
      "key": "BAN_DURATION",
      "service": "LibreChat",
      "description": "How long the user will be banned when their score reaches/exceeds the threshold",
      "secret": false,
      "strategy": "default",
      "default": "1000 * 60 * 60 * 2"
    },
    {
      "key": "BAN_INTERVAL",
      "service": "LibreChat",
      "description": "The user will be banned every time their score reaches/exceeds over this interval threshold",
      "secret": false,
      "strategy": "default",
      "default": "20"
    },
    {
      "key": "BINGAI_TOKEN",
      "service": "LibreChat",
      "description": "https://docs.librechat.ai/install/configuration/dotenv.html#bing",
      "secret": true,
      "strategy": "default",
      "default": "user_provided"
    },
    {
      "key": "DEBUG_OPENAI",
      "service": "LibreChat",
      "description": "Set to true to enable debug mode for the OpenAI endpoint",
      "secret": false,
      "strategy": "default",
      "default": "false"
    },
    {
      "key": "GROQ_API_KEY",
      "service": "LibreChat",
      "description": "API key for Groq service",
      "secret": true,
      "strategy": "default",
      "default": "user_provided"
    },
    {
      "key": "LOGIN_WINDOW",
      "service": "LibreChat",
      "description": "In minutes, determines the window of time for LOGIN_MAX logins",
      "secret": false,
      "strategy": "default",
      "default": "5"
    },
    {
      "key": "REGISTER_MAX",
      "service": "LibreChat",
      "description": "In minutes, determines the window of time for REGISTER_MAX registrations",
      "secret": false,
      "strategy": "default",
      "default": "5"
    },
    {
      "key": "AZURE_API_KEY",
      "service": "LibreChat",
      "description": "https://docs.librechat.ai/install/configuration/dotenv.html#azure",
      "secret": true,
      "strategy": "default",
      "default": "user_provided"
    },
    {
      "key": "CHECK_BALANCE",
      "service": "LibreChat",
      "description": "https://docs.librechat.ai/install/configuration/dotenv.html#balance",
      "secret": false,
      "strategy": "default",
      "default": "false"
    },
    {
      "key": "DEBUG_CONSOLE",
      "service": "LibreChat",
      "description": "Enable verbose server output in the console with 'true', though it's not recommended due to high verbosity",
      "secret": false,
      "strategy": "default",
      "default": "false"
    },
    {
      "key": "DEBUG_LOGGING",
      "service": "LibreChat",
      "description": "https://docs.librechat.ai/install/configuration/dotenv.html#logging",
      "secret": false,
      "strategy": "default",
      "default": "true"
    },
    {
      "key": "DEBUG_PLUGINS",
      "service": "LibreChat",
      "description": "Set to true to disable debug mode for plugins",
      "secret": false,
      "strategy": "default",
      "default": "true"
    },
    {
      "key": "BAN_VIOLATIONS",
      "service": "LibreChat",
      "description": "Whether or not to enable banning users for violations (they will still be logged)",
      "secret": false,
      "strategy": "default",
      "default": "true"
    },
    {
      "key": "MESSAGE_IP_MAX",
      "service": "LibreChat",
      "description": "The max amount of messages an IP can send per MESSAGE_IP_WINDOW",
      "secret": false,
      "strategy": "default",
      "default": "40"
    },
    {
      "key": "OPENAI_API_KEY",
      "service": "LibreChat",
      "description": "API key for OpenAI service",
      "secret": true,
      "strategy": "generate",
      "generate": "random_base64_32"
    },
    {
      "key": "OPENROUTER_KEY",
      "service": "LibreChat",
      "description": "API key for OpenRouter service",
      "secret": true,
      "strategy": "default",
      "default": "user_provided"
    },
    {
      "key": "SESSION_EXPIRY",
      "service": "LibreChat",
      "description": "Session expiry time in milliseconds",
      "secret": false,
      "strategy": "default",
      "default": "1000 * 60 * 15"
    },
    {
      "key": "MISTRAL_API_KEY",
      "service": "LibreChat",
      "description": "API key for Mistral AI service",
      "secret": true,
      "strategy": "default",
      "default": "user_provided"
    },
    {
      "key": "REGISTER_WINDOW",
      "service": "LibreChat",
      "description": "The max amount of registrations allowed per REGISTER_WINDOW",
      "secret": false,
      "strategy": "default",
      "default": "60"
    },
    {
      "key": "ANYSCALE_API_KEY",
      "service": "LibreChat",
      "description": "API key for Anyscale service",
      "secret": true,
      "strategy": "default",
      "default": "user_provided"
    },
    {
      "key": "LIMIT_MESSAGE_IP",
      "service": "LibreChat",
      "description": "Whether to limit the amount of messages an IP can send per MESSAGE_IP_WINDOW",
      "secret": false,
      "strategy": "default",
      "default": "true"
    },
    {
      "key": "MEILI_MASTER_KEY",
      "service": "LibreChat",
      "description": "Master key for Meilisearch",
      "secret": true,
      "strategy": "generate",
      "generate": "random_base64_32"
    },
    {
      "key": "MESSAGE_USER_MAX",
      "service": "LibreChat",
      "description": "Provide a value for MESSAGE_USER_MAX.",
      "secret": false,
      "strategy": "default",
      "default": "The max amount of messages an IP can send per MESSAGE_USER_WINDOW"
    },
    {
      "key": "ALLOW_EMAIL_LOGIN",
      "service": "LibreChat",
      "description": "Email login. Set to true or false to enable or disable Only email login",
      "secret": false,
      "strategy": "default",
      "default": "true"
    },
    {
      "key": "ANTHROPIC_API_KEY",
      "service": "LibreChat",
      "description": "https://docs.librechat.ai/install/configuration/dotenv.html#anthropic",
      "secret": true,
      "strategy": "default",
      "default": "user_provided"
    },
    {
      "key": "FIREWORKS_API_KEY",
      "service": "LibreChat",
      "description": "API key for Fireworks AI service",
      "secret": true,
      "strategy": "default",
      "default": "user_provided"
    },
    {
      "key": "MESSAGE_IP_WINDOW",
      "service": "LibreChat",
      "description": "In minutes, determines the window of time for MESSAGE_IP_MAX messages",
      "secret": false,
      "strategy": "default",
      "default": "1"
    },
    {
      "key": "OPENAI_MODERATION",
      "service": "LibreChat",
      "description": "Set to true or false. Whether or not to enable OpenAI moderation on the OpenAI API endpoint",
      "secret": false,
      "strategy": "default",
      "default": "false"
    },
    {
      "key": "ALLOW_REGISTRATION",
      "service": "LibreChat",
      "description": "Email registration of new users. Set to true or false to enable or disable",
      "secret": false,
      "strategy": "default",
      "default": "true"
    },
    {
      "key": "ALLOW_SOCIAL_LOGIN",
      "service": "LibreChat",
      "description": "Allow users to connect to LibreChat with various social networks, see below, set to true or false to enable or disable",
      "secret": false,
      "strategy": "default",
      "default": "false"
    },
    {
      "key": "JWT_REFRESH_SECRET",
      "service": "LibreChat",
      "description": "Secret for JWT refresh tokens",
      "secret": true,
      "strategy": "generate",
      "generate": "random_base64_32"
    },
    {
      "key": "LIMIT_MESSAGE_USER",
      "service": "LibreChat",
      "description": "Whether to limit the amount of messages an IP can send per MESSAGE_USER_WINDOW",
      "secret": false,
      "strategy": "default",
      "default": "false"
    },
    {
      "key": "MEILI_NO_ANALYTICS",
      "service": "LibreChat",
      "description": "disable anonymized telemetry analytics for MeiliSearch for absolute privacy",
      "secret": false,
      "strategy": "default",
      "default": "true"
    },
    {
      "key": "OPENAI_TITLE_MODEL",
      "service": "LibreChat",
      "description": "OpenAI model used for generating conversation titles",
      "secret": false,
      "strategy": "default",
      "default": "gpt-3.5-turbo"
    },
    {
      "key": "PERPLEXITY_API_KEY",
      "service": "LibreChat",
      "description": "API key for Perplexity AI service",
      "secret": true,
      "strategy": "default",
      "default": "user_provided"
    },
    {
      "key": "TOGETHERAI_API_KEY",
      "service": "LibreChat",
      "description": "API key for Together AI service",
      "secret": true,
      "strategy": "default",
      "default": "user_provided"
    },
    {
      "key": "AZURE_OPENAI_MODELS",
      "service": "LibreChat",
      "description": "Comma-separated list of available Azure OpenAI models",
      "secret": false,
      "strategy": "default",
      "default": "gpt-3.5-turbo,gpt-4"
    },
    {
      "key": "GITHUB_CALLBACK_URL",
      "service": "LibreChat",
      "description": "Callback URL for GitHub OAuth",
      "secret": false,
      "strategy": "default",
      "default": "/oauth/github/callback"
    },
    {
      "key": "GOOGLE_CALLBACK_URL",
      "service": "LibreChat",
      "description": "Callback URL for Google OAuth",
      "secret": false,
      "strategy": "default",
      "default": "/oauth/google/callback"
    },
    {
      "key": "MESSAGE_USER_WINDOW",
      "service": "LibreChat",
      "description": "In minutes, determines the window of time for MESSAGE_USER_MAX messages",
      "secret": false,
      "strategy": "default",
      "default": "1"
    },
    {
      "key": "DISCORD_CALLBACK_URL",
      "service": "LibreChat",
      "description": "Callback URL for Discord OAuth",
      "secret": false,
      "strategy": "default",
      "default": "/oauth/discord/callback"
    },
    {
      "key": "REFRESH_TOKEN_EXPIRY",
      "service": "LibreChat",
      "description": "Expiry time for refresh tokens in milliseconds",
      "secret": true,
      "strategy": "default",
      "default": "(1000 * 60 * 60 * 24) * 7"
    },
    {
      "key": "FACEBOOK_CALLBACK_URL",
      "service": "LibreChat",
      "description": "Callback URL for Facebook OAuth",
      "secret": false,
      "strategy": "default",
      "default": "/oauth/facebook/callback"
    },
    {
      "key": "LOGIN_VIOLATION_SCORE",
      "service": "LibreChat",
      "description": "Score added for login violations",
      "secret": false,
      "strategy": "default",
      "default": "1"
    },
    {
      "key": "CONCURRENT_MESSAGE_MAX",
      "service": "LibreChat",
      "description": "The max amount of messages a user can send per request",
      "secret": false,
      "strategy": "default",
      "default": "2"
    },
    {
      "key": "MESSAGE_VIOLATION_SCORE",
      "service": "LibreChat",
      "description": "Score added for message violations",
      "secret": false,
      "strategy": "default",
      "default": "1"
    },
    {
      "key": "ALLOW_SOCIAL_REGISTRATION",
      "service": "LibreChat",
      "description": "Enable or disable registration of new user using various social network. Set to true or false to enable or disable",
      "secret": false,
      "strategy": "default",
      "default": "false"
    },
    {
      "key": "LIMIT_CONCURRENT_MESSAGES",
      "service": "LibreChat",
      "description": "Whether to limit the amount of messages a user can send per request",
      "secret": false,
      "strategy": "default",
      "default": "true"
    },
    {
      "key": "CONCURRENT_VIOLATION_SCORE",
      "service": "LibreChat",
      "description": "Score added for concurrent message violations",
      "secret": false,
      "strategy": "default",
      "default": "1"
    },
    {
      "key": "NON_BROWSER_VIOLATION_SCORE",
      "service": "LibreChat",
      "description": "Score added for non-browser violations",
      "secret": false,
      "strategy": "default",
      "default": "20"
    },
    {
      "key": "REGISTRATION_VIOLATION_SCORE",
      "service": "LibreChat",
      "description": "Score added for registration violations",
      "secret": false,
      "strategy": "default",
      "default": "1"
    },
    {
      "key": "MEILI_ENV",
      "service": "Meilisearch",
      "description": "Set Meilisearch environment to production mode",
      "secret": false,
      "strategy": "default",
      "default": "production"
    },
    {
      "key": "MEILI_DB_PATH",
      "service": "Meilisearch",
      "description": "File path for Meilisearch database storage",
      "secret": false,
      "strategy": "default",
      "default": "/meili_data/data.ms"
    },
    {
      "key": "MEILI_HTTP_ADDR",
      "service": "Meilisearch",
      "description": "HTTP address and port for Meilisearch to listen on, allowing connections from any IP",
      "secret": false,
      "strategy": "default",
      "default": ":::7700"
    },
    {
      "key": "MEILI_MASTER_KEY",
      "service": "Meilisearch",
      "description": "Master key for Meilisearch, referencing the key set in LibreChat configuration",
      "secret": true,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "MEILI_NO_ANALYTICS",
      "service": "Meilisearch",
      "description": "Disable anonymized telemetry analytics for Meilisearch for absolute privacy",
      "secret": false,
      "strategy": "default",
      "default": "true"
    },
    {
      "key": "PORT",
      "service": "RAG-API",
      "description": "Port on which the RAG API server will run",
      "secret": false,
      "strategy": "default",
      "default": "8000"
    },
    {
      "key": "DB_HOST",
      "service": "RAG-API",
      "description": "Hostname for the vector database, using Railway's private domain",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "DB_PORT",
      "service": "RAG-API",
      "description": "Default port for PostgreSQL database connections",
      "secret": false,
      "strategy": "default",
      "default": "5432"
    },
    {
      "key": "JWT_SECRET",
      "service": "RAG-API",
      "description": "Secret key for JWT token generation/validation, shared with LibreChat",
      "secret": true,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "POSTGRES_DB",
      "service": "RAG-API",
      "description": "Name of the PostgreSQL database, fetched from VectorDB service",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "DEBUG_RAG_API",
      "service": "RAG-API",
      "description": "Disables debug mode for the Retrieval-Augmented Generation (RAG) API",
      "secret": false,
      "strategy": "default",
      "default": "false"
    },
    {
      "key": "POSTGRES_USER",
      "service": "RAG-API",
      "description": "Username for PostgreSQL database access, fetched from VectorDB service",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "OPENAI_API_KEY",
      "service": "RAG-API",
      "description": "API key for OpenAI services, left blank to be provided by the user or fetched from another source",
      "secret": true,
      "strategy": "generate",
      "generate": "random_base64_32"
    },
    {
      "key": "POSTGRES_PASSWORD",
      "service": "RAG-API",
      "description": "Password for PostgreSQL database access, fetched from VectorDB service",
      "secret": true,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "EMBEDDINGS_PROVIDER",
      "service": "RAG-API",
      "description": "Specifies OpenAI as the provider for generating embeddings",
      "secret": false,
      "strategy": "default",
      "default": "openai"
    },
    {
      "key": "PGDATA",
      "service": "pgvector",
      "description": "Directory where PostgreSQL will store its data files",
      "secret": false,
      "strategy": "default",
      "default": "/var/lib/postgresql/data/pgdata"
    },
    {
      "key": "POSTGRES_DB",
      "service": "pgvector",
      "description": "Name of the default database to be created upon PostgreSQL initialization",
      "secret": false,
      "strategy": "default",
      "default": "railway"
    },
    {
      "key": "POSTGRES_USER",
      "service": "pgvector",
      "description": "Default superuser name for PostgreSQL database",
      "secret": false,
      "strategy": "default",
      "default": "postgres"
    },
    {
      "key": "POSTGRES_PASSWORD",
      "service": "pgvector",
      "description": "Randomly generated 16-character password for the PostgreSQL superuser, using uppercase letters and numbers",
      "secret": true,
      "strategy": "generate",
      "generate": "strong_password"
    }
  ],
  "deploy": {
    "mcp": {
      "server": "railway",
      "tool": "deploy_template",
      "args": {
        "template_code": "HxvQtm"
      }
    },
    "cli": "railway deploy --template HxvQtm",
    "api": {
      "method": "POST",
      "path": "/graphql/v2",
      "body": {
        "query": "mutation templateDeploy($input: TemplateDeployV2Input!) { templateDeployV2(input: $input) { projectId workflowId } }",
        "variables": {
          "input": {
            "templateId": "eba2c586-3854-468c-97e2-35c660d42d7e",
            "serializedConfig": {
              "services": {
                "36790565-5050-49de-b783-1e20af187b62": {
                  "icon": "https://www.mongodb.com/assets/images/global/favicon.ico",
                  "name": "MongoDB",
                  "deploy": {
                    "startCommand": "docker-entrypoint.sh mongod --ipv6 --bind_ip ::,0.0.0.0",
                    "healthcheckPath": null
                  },
                  "source": {
                    "image": "mongo@sha256:e0ce8c35124d4a9f9785532d1f268f39e9728ffa1cb38f46fa482436424c4bd3"
                  },
                  "variables": {
                    "MONGOHOST": {
                      "isOptional": false,
                      "description": "Hostname for MongoDB, using Railway's private domain",
                      "defaultValue": "${{RAILWAY_PRIVATE_DOMAIN}}"
                    },
                    "MONGOPORT": {
                      "isOptional": false,
                      "description": "Default port for MongoDB connections",
                      "defaultValue": "27017"
                    },
                    "MONGOUSER": {
                      "isOptional": false,
                      "description": "Username for MongoDB connections, referencing the root username",
                      "defaultValue": "${{MONGO_INITDB_ROOT_USERNAME}}"
                    },
                    "MONGO_URL": {
                      "isOptional": false,
                      "description": "Public MongoDB connection URL using root credentials and Railway's TCP proxy",
                      "defaultValue": "mongodb://${{MONGO_INITDB_ROOT_USERNAME}}:${{MONGO_INITDB_ROOT_PASSWORD}}@${{RAILWAY_TCP_PROXY_DOMAIN}}:${{RAILWAY_TCP_PROXY_PORT}}"
                    },
                    "MONGOPASSWORD": {
                      "isOptional": false,
                      "description": "Password for MongoDB connections, referencing the root password",
                      "defaultValue": "${{MONGO_INITDB_ROOT_PASSWORD}}"
                    },
                    "MONGO_PRIVATE_URL": {
                      "isOptional": false,
                      "description": "Private MongoDB connection URL using root credentials and Railway's private domain",
                      "defaultValue": "mongodb://${{MONGO_INITDB_ROOT_USERNAME}}:${{MONGO_INITDB_ROOT_PASSWORD}}@${{RAILWAY_PRIVATE_DOMAIN}}:27017"
                    },
                    "MONGO_INITDB_ROOT_PASSWORD": {
                      "isOptional": false,
                      "description": "Randomly generated 32-character secret for the MongoDB root password",
                      "defaultValue": "{{MONGO_INITDB_ROOT_PASSWORD}}"
                    },
                    "MONGO_INITDB_ROOT_USERNAME": {
                      "isOptional": false,
                      "description": "Root username for MongoDB initialization",
                      "defaultValue": "mongo"
                    }
                  },
                  "volumeMounts": {
                    "36790565-5050-49de-b783-1e20af187b62": {
                      "mountPath": "/data/db"
                    }
                  }
                },
                "3c7bf8a1-6466-4e3a-9451-1217104db17b": {
                  "icon": "https://raw.githubusercontent.com/danny-avila/LibreChat/refs/heads/main/client/public/assets/favicon-32x32.png",
                  "name": "LibreChat",
                  "deploy": {
                    "startCommand": null,
                    "healthcheckPath": "/health"
                  },
                  "source": {
                    "image": "ghcr.io/danny-avila/librechat:v0.8.7@sha256:c5db3331b845e1f289f8d04c0c77936c4bbe372f76730a804abc1c37e44d23a9"
                  },
                  "variables": {
                    "HOST": {
                      "isOptional": false,
                      "description": "Host address to bind the server to",
                      "defaultValue": "0.0.0.0"
                    },
                    "Proxy": {
                      "isOptional": true,
                      "description": "PROXY is to be used by all endpoints",
                      "defaultValue": ""
                    },
                    "SEARCH": {
                      "isOptional": false,
                      "description": "enables search in messages and conversations",
                      "defaultValue": "true"
                    },
                    "CREDS_IV": {
                      "isOptional": false,
                      "description": "Initialization vector for credential encryption",
                      "defaultValue": "{{CREDS_IV}}"
                    },
                    "NO_INDEX": {
                      "isOptional": false,
                      "description": "https://docs.librechat.ai/install/configuration/dotenv.html#meilisearch-current-default-search-",
                      "defaultValue": "true"
                    },
                    "APP_TITLE": {
                      "isOptional": false,
                      "description": "https://docs.librechat.ai/install/configuration/dotenv.html#customization",
                      "defaultValue": "LibreChat"
                    },
                    "CREDS_KEY": {
                      "isOptional": false,
                      "description": "Key for credential encryption",
                      "defaultValue": "{{CREDS_KEY}}"
                    },
                    "ENDPOINTS": {
                      "isOptional": false,
                      "description": "customize the available endpoints in LibreChat",
                      "defaultValue": "openAI,azureOpenAI,bingAI,chatGPTBrowser,google,gptPlugins,anthropic"
                    },
                    "LOGIN_MAX": {
                      "isOptional": false,
                      "description": "The max amount of logins allowed per LOGIN_WINDOW",
                      "defaultValue": "7"
                    },
                    "MONGO_URI": {
                      "isOptional": false,
                      "description": "MongoDB connection URI",
                      "defaultValue": "${{MongoDB.MONGO_PRIVATE_URL}}"
                    },
                    "GOOGLE_KEY": {
                      "isOptional": false,
                      "description": "API key for Google services",
                      "defaultValue": "user_provided"
                    },
                    "JWT_SECRET": {
                      "isOptional": false,
                      "description": "Secret for JWT tokens",
                      "defaultValue": "{{JWT_SECRET}}"
                    },
                    "MEILI_HOST": {
                      "isOptional": false,
                      "description": "Host address for Meilisearch",
                      "defaultValue": "http://${{Meilisearch.RAILWAY_PRIVATE_DOMAIN}}:7700"
                    },
                    "CONFIG_PATH": {
                      "isOptional": false,
                      "description": "Here you can add a local path of a config file or a URL, The best way to use this is to upload the file on GitHub and paste here the link of the file",
                      "defaultValue": "https://raw.githubusercontent.com/fuegovic/lc-config-yaml/main/librechat-rw.yaml"
                    },
                    "RAG_API_URL": {
                      "isOptional": false,
                      "description": "URL for the RAG (Retrieval-Augmented Generation) API",
                      "defaultValue": "https://${{RAG-API.RAILWAY_PUBLIC_DOMAIN}}"
                    },
                    "TITLE_CONVO": {
                      "isOptional": false,
                      "description": "Whether to enable conversation titles",
                      "defaultValue": "true"
                    },
                    "BAN_DURATION": {
                      "isOptional": false,
                      "description": "How long the user will be banned when their score reaches/exceeds the threshold",
                      "defaultValue": "1000 * 60 * 60 * 2"
                    },
                    "BAN_INTERVAL": {
                      "isOptional": false,
                      "description": "The user will be banned every time their score reaches/exceeds over this interval threshold",
                      "defaultValue": "20"
                    },
                    "BINGAI_TOKEN": {
                      "isOptional": false,
                      "description": "https://docs.librechat.ai/install/configuration/dotenv.html#bing",
                      "defaultValue": "user_provided"
                    },
                    "DEBUG_OPENAI": {
                      "isOptional": false,
                      "description": "Set to true to enable debug mode for the OpenAI endpoint",
                      "defaultValue": "false"
                    },
                    "GROQ_API_KEY": {
                      "isOptional": false,
                      "description": "API key for Groq service",
                      "defaultValue": "user_provided"
                    },
                    "LOGIN_WINDOW": {
                      "isOptional": false,
                      "description": "In minutes, determines the window of time for LOGIN_MAX logins",
                      "defaultValue": "5"
                    },
                    "REGISTER_MAX": {
                      "isOptional": false,
                      "description": "In minutes, determines the window of time for REGISTER_MAX registrations",
                      "defaultValue": "5"
                    },
                    "AZURE_API_KEY": {
                      "isOptional": true,
                      "description": "https://docs.librechat.ai/install/configuration/dotenv.html#azure",
                      "defaultValue": "user_provided"
                    },
                    "CHATGPT_TOKEN": {
                      "isOptional": true,
                      "description": "https://docs.librechat.ai/install/configuration/dotenv.html#chatgpt",
                      "defaultValue": ""
                    },
                    "CHECK_BALANCE": {
                      "isOptional": false,
                      "description": "https://docs.librechat.ai/install/configuration/dotenv.html#balance",
                      "defaultValue": "false"
                    },
                    "CUSTOM_FOOTER": {
                      "isOptional": true,
                      "description": "change the default \"All AI conversations in one place\"",
                      "defaultValue": ""
                    },
                    "DEBUG_CONSOLE": {
                      "isOptional": false,
                      "description": "Enable verbose server output in the console with 'true', though it's not recommended due to high verbosity",
                      "defaultValue": "false"
                    },
                    "DEBUG_LOGGING": {
                      "isOptional": false,
                      "description": "https://docs.librechat.ai/install/configuration/dotenv.html#logging",
                      "defaultValue": "true"
                    },
                    "DEBUG_PLUGINS": {
                      "isOptional": false,
                      "description": "Set to true to disable debug mode for plugins",
                      "defaultValue": "true"
                    },
                    "BAN_VIOLATIONS": {
                      "isOptional": false,
                      "description": "Whether or not to enable banning users for violations (they will still be logged)",
                      "defaultValue": "true"
                    },
                    "MESSAGE_IP_MAX": {
                      "isOptional": false,
                      "description": "The max amount of messages an IP can send per MESSAGE_IP_WINDOW",
                      "defaultValue": "40"
                    },
                    "OPENAI_API_KEY": {
                      "isOptional": false,
                      "description": "API key for OpenAI service",
                      "defaultValue": "{{OPENAI_API_KEY}}"
                    },
                    "OPENROUTER_KEY": {
                      "isOptional": false,
                      "description": "API key for OpenRouter service",
                      "defaultValue": "user_provided"
                    },
                    "SESSION_EXPIRY": {
                      "isOptional": false,
                      "description": "Session expiry time in milliseconds",
                      "defaultValue": "1000 * 60 * 15"
                    },
                    "MISTRAL_API_KEY": {
                      "isOptional": false,
                      "description": "API key for Mistral AI service",
                      "defaultValue": "user_provided"
                    },
                    "REGISTER_WINDOW": {
                      "isOptional": false,
                      "description": "The max amount of registrations allowed per REGISTER_WINDOW",
                      "defaultValue": "60"
                    },
                    "ANYSCALE_API_KEY": {
                      "isOptional": false,
                      "description": "API key for Anyscale service",
                      "defaultValue": "user_provided"
                    },
                    "GITHUB_CLIENT_ID": {
                      "isOptional": true,
                      "description": "https://docs.librechat.ai/install/configuration/dotenv.html#github-authentication",
                      "defaultValue": ""
                    },
                    "GOOGLE_CLIENT_ID": {
                      "isOptional": true,
                      "description": "https://docs.librechat.ai/install/configuration/dotenv.html#google-authentication",
                      "defaultValue": ""
                    },
                    "LIMIT_MESSAGE_IP": {
                      "isOptional": false,
                      "description": "Whether to limit the amount of messages an IP can send per MESSAGE_IP_WINDOW",
                      "defaultValue": "true"
                    },
                    "MEILI_MASTER_KEY": {
                      "isOptional": false,
                      "description": "Master key for Meilisearch",
                      "defaultValue": "{{MEILI_MASTER_KEY}}"
                    },
                    "MESSAGE_USER_MAX": {
                      "isOptional": false,
                      "defaultValue": "The max amount of messages an IP can send per MESSAGE_USER_WINDOW"
                    },
                    "ALLOW_EMAIL_LOGIN": {
                      "isOptional": false,
                      "description": "Email login. Set to true or false to enable or disable Only email login",
                      "defaultValue": "true"
                    },
                    "ANTHROPIC_API_KEY": {
                      "isOptional": false,
                      "description": "https://docs.librechat.ai/install/configuration/dotenv.html#anthropic",
                      "defaultValue": "user_provided"
                    },
                    "DISCORD_CLIENT_ID": {
                      "isOptional": true,
                      "description": "https://docs.librechat.ai/install/configuration/dotenv.html#discord-authentication",
                      "defaultValue": ""
                    },
                    "FIREWORKS_API_KEY": {
                      "isOptional": false,
                      "description": "API key for Fireworks AI service",
                      "defaultValue": "user_provided"
                    },
                    "MESSAGE_IP_WINDOW": {
                      "isOptional": false,
                      "description": "In minutes, determines the window of time for MESSAGE_IP_MAX messages",
                      "defaultValue": "1"
                    },
                    "OPENAI_MODERATION": {
                      "isOptional": false,
                      "description": "Set to true or false. Whether or not to enable OpenAI moderation on the OpenAI API endpoint",
                      "defaultValue": "false"
                    },
                    "ALLOW_REGISTRATION": {
                      "isOptional": false,
                      "description": "Email registration of new users. Set to true or false to enable or disable",
                      "defaultValue": "true"
                    },
                    "ALLOW_SOCIAL_LOGIN": {
                      "isOptional": false,
                      "description": "Allow users to connect to LibreChat with various social networks, see below, set to true or false to enable or disable",
                      "defaultValue": "false"
                    },
                    "FACEBOOK_CLIENT_ID": {
                      "isOptional": true,
                      "description": "https://docs.librechat.ai/install/configuration/dotenv.html#facebook-authentication",
                      "defaultValue": ""
                    },
                    "JWT_REFRESH_SECRET": {
                      "isOptional": false,
                      "description": "Secret for JWT refresh tokens",
                      "defaultValue": "{{JWT_REFRESH_SECRET}}"
                    },
                    "LIMIT_MESSAGE_USER": {
                      "isOptional": false,
                      "description": "Whether to limit the amount of messages an IP can send per MESSAGE_USER_WINDOW",
                      "defaultValue": "false"
                    },
                    "MEILI_NO_ANALYTICS": {
                      "isOptional": false,
                      "description": "disable anonymized telemetry analytics for MeiliSearch for absolute privacy",
                      "defaultValue": "true"
                    },
                    "OPENAI_TITLE_MODEL": {
                      "isOptional": false,
                      "description": "OpenAI model used for generating conversation titles",
                      "defaultValue": "gpt-3.5-turbo"
                    },
                    "OPENROUTER_API_KEY": {
                      "isOptional": true,
                      "description": "https://docs.librechat.ai/install/configuration/dotenv.html#openrouter",
                      "defaultValue": ""
                    },
                    "PERPLEXITY_API_KEY": {
                      "isOptional": false,
                      "description": "API key for Perplexity AI service",
                      "defaultValue": "user_provided"
                    },
                    "TOGETHERAI_API_KEY": {
                      "isOptional": false,
                      "description": "API key for Together AI service",
                      "defaultValue": "user_provided"
                    },
                    "AZURE_OPENAI_MODELS": {
                      "isOptional": false,
                      "description": "Comma-separated list of available Azure OpenAI models",
                      "defaultValue": "gpt-3.5-turbo,gpt-4"
                    },
                    "GITHUB_CALLBACK_URL": {
                      "isOptional": false,
                      "description": "Callback URL for GitHub OAuth",
                      "defaultValue": "/oauth/github/callback"
                    },
                    "GOOGLE_CALLBACK_URL": {
                      "isOptional": false,
                      "description": "Callback URL for Google OAuth",
                      "defaultValue": "/oauth/google/callback"
                    },
                    "MESSAGE_USER_WINDOW": {
                      "isOptional": false,
                      "description": "In minutes, determines the window of time for MESSAGE_USER_MAX messages",
                      "defaultValue": "1"
                    },
                    "OPENAI_FORCE_PROMPT": {
                      "isOptional": true,
                      "description": "For Local LLM APIs, sometimes use prompt payload (not messages) to mimic /v1/completions instead of /v1/chat/completions for specific LocalAI models",
                      "defaultValue": ""
                    },
                    "OPENAI_ORGANIZATION": {
                      "isOptional": true,
                      "description": "Organization ID for OpenAI API",
                      "defaultValue": ""
                    },
                    "DISCORD_CALLBACK_URL": {
                      "isOptional": false,
                      "description": "Callback URL for Discord OAuth",
                      "defaultValue": "/oauth/discord/callback"
                    },
                    "GITHUB_CLIENT_SECRET": {
                      "isOptional": true,
                      "description": "https://docs.librechat.ai/install/configuration/dotenv.html#github-authentication",
                      "defaultValue": ""
                    },
                    "GOOGLE_CLIENT_SECRET": {
                      "isOptional": true,
                      "description": "https://docs.librechat.ai/install/configuration/dotenv.html#google-authentication",
                      "defaultValue": ""
                    },
                    "REFRESH_TOKEN_EXPIRY": {
                      "isOptional": false,
                      "description": "Expiry time for refresh tokens in milliseconds",
                      "defaultValue": "(1000 * 60 * 60 * 24) * 7"
                    },
                    "CHATGPT_REVERSE_PROXY": {
                      "isOptional": true,
                      "description": "https://docs.librechat.ai/install/configuration/dotenv.html#chatgpt",
                      "defaultValue": ""
                    },
                    "DISCORD_CLIENT_SECRET": {
                      "isOptional": true,
                      "description": "https://docs.librechat.ai/install/configuration/dotenv.html#discord-authentication",
                      "defaultValue": ""
                    },
                    "FACEBOOK_CALLBACK_URL": {
                      "isOptional": false,
                      "description": "Callback URL for Facebook OAuth",
                      "defaultValue": "/oauth/facebook/callback"
                    },
                    "LOGIN_VIOLATION_SCORE": {
                      "isOptional": false,
                      "description": "Score added for login violations",
                      "defaultValue": "1"
                    },
                    "CONCURRENT_MESSAGE_MAX": {
                      "isOptional": false,
                      "description": "The max amount of messages a user can send per request",
                      "defaultValue": "2"
                    },
                    "FACEBOOK_CLIENT_SECRET": {
                      "isOptional": true,
                      "description": "https://docs.librechat.ai/install/configuration/dotenv.html#facebook-authentication",
                      "defaultValue": ""
                    },
                    "AZURE_AI_SEARCH_API_KEY": {
                      "isOptional": true,
                      "description": "API key for Azure AI Search",
                      "defaultValue": ""
                    },
                    "MESSAGE_VIOLATION_SCORE": {
                      "isOptional": false,
                      "description": "Score added for message violations",
                      "defaultValue": "1"
                    },
                    "ALLOW_SOCIAL_REGISTRATION": {
                      "isOptional": false,
                      "description": "Enable or disable registration of new user using various social network. Set to true or false to enable or disable",
                      "defaultValue": "false"
                    },
                    "LIMIT_CONCURRENT_MESSAGES": {
                      "isOptional": false,
                      "description": "Whether to limit the amount of messages a user can send per request",
                      "defaultValue": "true"
                    },
                    "AZURE_AI_SEARCH_INDEX_NAME": {
                      "isOptional": true,
                      "description": "Index name for Azure AI Search",
                      "defaultValue": ""
                    },
                    "AZURE_OPENAI_DEFAULT_MODEL": {
                      "isOptional": true,
                      "description": "Default model for Azure OpenAI",
                      "defaultValue": ""
                    },
                    "CONCURRENT_VIOLATION_SCORE": {
                      "isOptional": false,
                      "description": "Score added for concurrent message violations",
                      "defaultValue": "1"
                    },
                    "AZURE_AI_SEARCH_API_VERSION": {
                      "isOptional": true,
                      "description": "API version for Azure AI Search",
                      "defaultValue": ""
                    },
                    "NON_BROWSER_VIOLATION_SCORE": {
                      "isOptional": false,
                      "description": "Score added for non-browser violations",
                      "defaultValue": "20"
                    },
                    "REGISTRATION_VIOLATION_SCORE": {
                      "isOptional": false,
                      "description": "Score added for registration violations",
                      "defaultValue": "1"
                    },
                    "AZURE_AI_SEARCH_SERVICE_ENDPOINT": {
                      "isOptional": true,
                      "description": "Service endpoint for Azure AI Search",
                      "defaultValue": ""
                    },
                    "AZURE_AI_SEARCH_SEARCH_OPTION_TOP": {
                      "isOptional": true,
                      "description": "Top option for Azure AI Search",
                      "defaultValue": ""
                    },
                    "AZURE_USE_MODEL_AS_DEPLOYMENT_NAME": {
                      "isOptional": true,
                      "description": "Whether to use the model name as the deployment name",
                      "defaultValue": ""
                    },
                    "AZURE_AI_SEARCH_SEARCH_OPTION_SELECT": {
                      "isOptional": true,
                      "description": "Select option for Azure AI Search",
                      "defaultValue": ""
                    },
                    "AZURE_AI_SEARCH_SEARCH_OPTION_QUERY_TYPE": {
                      "isOptional": true,
                      "description": "Query type for Azure AI Search",
                      "defaultValue": ""
                    }
                  },
                  "networking": {
                    "serviceDomains": {
                      "<hasDomain>": {}
                    }
                  }
                },
                "7cbc0b8d-e8bb-442d-abd6-61d5d0646652": {
                  "icon": "https://www.meilisearch.com/favicon.ico",
                  "name": "Meilisearch",
                  "deploy": {
                    "startCommand": null,
                    "healthcheckPath": null
                  },
                  "source": {
                    "image": "getmeili/meilisearch:v1.53.2@sha256:c94e58ca09662dd6e65e8f1b0fd145767be3da7d5422a863a27b8d2b68e090c9"
                  },
                  "variables": {
                    "MEILI_ENV": {
                      "isOptional": false,
                      "description": "Set Meilisearch environment to production mode",
                      "defaultValue": "production"
                    },
                    "MEILI_DB_PATH": {
                      "isOptional": false,
                      "description": "File path for Meilisearch database storage",
                      "defaultValue": "/meili_data/data.ms"
                    },
                    "MEILI_HTTP_ADDR": {
                      "isOptional": false,
                      "description": "HTTP address and port for Meilisearch to listen on, allowing connections from any IP",
                      "defaultValue": ":::7700"
                    },
                    "MEILI_MASTER_KEY": {
                      "isOptional": false,
                      "description": "Master key for Meilisearch, referencing the key set in LibreChat configuration",
                      "defaultValue": "${{LibreChat.MEILI_MASTER_KEY}}"
                    },
                    "MEILI_NO_ANALYTICS": {
                      "isOptional": false,
                      "description": "Disable anonymized telemetry analytics for Meilisearch for absolute privacy",
                      "defaultValue": "true"
                    }
                  },
                  "volumeMounts": {
                    "7cbc0b8d-e8bb-442d-abd6-61d5d0646652": {
                      "mountPath": "/meili_data"
                    }
                  }
                },
                "c0bb5887-e41a-4ebc-a388-7f62cab52ecb": {
                  "icon": "https://raw.githubusercontent.com/danny-avila/LibreChat/refs/heads/main/client/public/assets/favicon-32x32.png",
                  "name": "RAG-API",
                  "deploy": {
                    "startCommand": null,
                    "healthcheckPath": "/health"
                  },
                  "source": {
                    "image": "ghcr.io/danny-avila/librechat-rag-api-dev-lite:v0.9.0@sha256:18a8dffa9316276b924bf3fd23bfb4544b0f68f8f6b14c048affb35c01721a35"
                  },
                  "variables": {
                    "PORT": {
                      "isOptional": false,
                      "description": "Port on which the RAG API server will run",
                      "defaultValue": "8000"
                    },
                    "DB_HOST": {
                      "isOptional": false,
                      "description": "Hostname for the vector database, using Railway's private domain",
                      "defaultValue": "${{pgvector.RAILWAY_PRIVATE_DOMAIN}}"
                    },
                    "DB_PORT": {
                      "isOptional": false,
                      "description": "Default port for PostgreSQL database connections",
                      "defaultValue": "5432"
                    },
                    "JWT_SECRET": {
                      "isOptional": false,
                      "description": "Secret key for JWT token generation/validation, shared with LibreChat",
                      "defaultValue": "${{LibreChat.JWT_SECRET}}"
                    },
                    "POSTGRES_DB": {
                      "isOptional": false,
                      "description": "Name of the PostgreSQL database, fetched from VectorDB service",
                      "defaultValue": "${{pgvector.POSTGRES_DB}}"
                    },
                    "DEBUG_RAG_API": {
                      "isOptional": false,
                      "description": "Disables debug mode for the Retrieval-Augmented Generation (RAG) API",
                      "defaultValue": "false"
                    },
                    "POSTGRES_USER": {
                      "isOptional": false,
                      "description": "Username for PostgreSQL database access, fetched from VectorDB service",
                      "defaultValue": "${{pgvector.POSTGRES_USER}}"
                    },
                    "OPENAI_API_KEY": {
                      "isOptional": false,
                      "description": "API key for OpenAI services, left blank to be provided by the user or fetched from another source",
                      "defaultValue": "{{OPENAI_API_KEY}}"
                    },
                    "POSTGRES_PASSWORD": {
                      "isOptional": false,
                      "description": "Password for PostgreSQL database access, fetched from VectorDB service",
                      "defaultValue": "${{pgvector.POSTGRES_PASSWORD}}"
                    },
                    "EMBEDDINGS_PROVIDER": {
                      "isOptional": false,
                      "description": "Specifies OpenAI as the provider for generating embeddings",
                      "defaultValue": "openai"
                    }
                  },
                  "networking": {
                    "serviceDomains": {
                      "<hasDomain>": {}
                    }
                  }
                },
                "dccef75f-a3ff-400e-9412-5e9f23afa176": {
                  "icon": "https://www.postgresql.org/favicon.ico",
                  "name": "pgvector",
                  "deploy": {
                    "startCommand": null,
                    "healthcheckPath": null
                  },
                  "source": {
                    "image": "pgvector/pgvector:pg16@sha256:ccc6e83d6e35e931dc7c5def2022729d5a6c370318d099181995567ff1fb4d6b"
                  },
                  "variables": {
                    "PGDATA": {
                      "isOptional": false,
                      "description": "Directory where PostgreSQL will store its data files",
                      "defaultValue": "/var/lib/postgresql/data/pgdata"
                    },
                    "POSTGRES_DB": {
                      "isOptional": false,
                      "description": "Name of the default database to be created upon PostgreSQL initialization",
                      "defaultValue": "railway"
                    },
                    "POSTGRES_USER": {
                      "isOptional": false,
                      "description": "Default superuser name for PostgreSQL database",
                      "defaultValue": "postgres"
                    },
                    "POSTGRES_PASSWORD": {
                      "isOptional": false,
                      "description": "Randomly generated 16-character password for the PostgreSQL superuser, using uppercase letters and numbers",
                      "defaultValue": "{{POSTGRES_PASSWORD}}"
                    }
                  },
                  "volumeMounts": {
                    "dccef75f-a3ff-400e-9412-5e9f23afa176": {
                      "mountPath": "/var/lib/postgresql/data"
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "post_deploy": {
    "healthcheck": {
      "service": "LibreChat",
      "method": "GET",
      "path": "/health",
      "expect_status": 200
    }
  },
  "resources": {
    "expected_services": 5,
    "needs_volume": true
  },
  "generated_at": "2026-09-21T22:14:44.200Z",
  "generator_version": "0.1.0",
  "status": "validated",
  "validated_at": "2026-09-21T11:33:28.723Z",
  "success_rate_30d": 1,
  "validation": {
    "last_run_id": "run_1206d04814be4105a153",
    "checks": [
      {
        "name": "workflow_completed",
        "passed": true
      },
      {
        "name": "all_services_deployed",
        "passed": true
      },
      {
        "name": "healthcheck",
        "passed": true
      },
      {
        "name": "stays_up",
        "passed": true
      }
    ],
    "typical_ready_seconds": 172,
    "typical_build_seconds": 0,
    "typical_start_seconds": 41,
    "slowest_service": "LibreChat"
  }
}
