{
  "manifest_version": "1.0.0",
  "template": {
    "id": "627fc2c3-f75a-4671-8c39-99f9dfa6f03f",
    "slug": "nodejs-multimodal-rag-starter",
    "name": "Node.js Starter with Advanced Auth, Prisma, Postgres (pgvector), background jobs and Multimodal RAG + more",
    "description": "Node.js, Postgres (pgvector), Redis & Prisma Production Starter",
    "url": "https://railway.com/deploy/nodejs-multimodal-rag-starter",
    "upstream": {
      "repo_url": "https://github.com/aymenkani/Node-enterprise-ai-template-light"
    }
  },
  "services": [
    {
      "name": "Node-enterprise-ai-template-light",
      "source": {
        "repo": "https://github.com/aymenkani/Node-enterprise-ai-template-light"
      },
      "needs_volume": false,
      "http": true
    },
    {
      "name": "db",
      "source": {
        "image": "pgvector/pgvector:pg18"
      },
      "needs_volume": true,
      "volume_mount_path": "/var/lib/postgresql/",
      "http": false
    },
    {
      "name": "redis",
      "source": {
        "image": "redis:7-alpine"
      },
      "needs_volume": true,
      "volume_mount_path": "/data",
      "http": false
    }
  ],
  "required_inputs": [
    {
      "key": "DEMO_MODE",
      "service": "Node-enterprise-ai-template-light",
      "description": "Toggle to enable or disable demonstration features and mock data within the application.",
      "secret": false,
      "strategy": "default",
      "default": "true"
    },
    {
      "key": "REDIS_URL",
      "service": "Node-enterprise-ai-template-light",
      "description": "The connection URL for the Redis service, used by BullMQ for task processing.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "SMTP_HOST",
      "service": "Node-enterprise-ai-template-light",
      "description": "The hostname of the SMTP server for Nodemailer.",
      "secret": false,
      "strategy": "default",
      "default": "smtp.test.com"
    },
    {
      "key": "SMTP_PASS",
      "service": "Node-enterprise-ai-template-light",
      "description": "Password or App Password for SMTP server authentication.",
      "secret": false,
      "strategy": "default",
      "default": "user_pass"
    },
    {
      "key": "SMTP_PORT",
      "service": "Node-enterprise-ai-template-light",
      "description": "The port used for SMTP (typically 587 for TLS).",
      "secret": false,
      "strategy": "default",
      "default": "587"
    },
    {
      "key": "SMTP_USER",
      "service": "Node-enterprise-ai-template-light",
      "description": "Username for SMTP server authentication.",
      "secret": false,
      "strategy": "default",
      "default": "your-email@example.com"
    },
    {
      "key": "AWS_REGION",
      "service": "Node-enterprise-ai-template-light",
      "description": "The physical location of the bucket; 'auto' is required for Cloudflare R2 compatibility.",
      "secret": false,
      "strategy": "default",
      "default": "auto"
    },
    {
      "key": "CLIENT_URL",
      "service": "Node-enterprise-ai-template-light",
      "description": "The production frontend URL, used for generating absolute links in emails.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "EMAIL_FROM",
      "service": "Node-enterprise-ai-template-light",
      "description": "The verified sender email address for outgoing system messages.",
      "secret": false,
      "strategy": "default",
      "default": "your-email@example.com"
    },
    {
      "key": "JWT_SECRET",
      "service": "Node-enterprise-ai-template-light",
      "description": "A long, random string used to sign and verify JSON Web Tokens (JWT).",
      "secret": true,
      "strategy": "default",
      "default": "affd6cc7f5def351f41094bcdaf8c479ecc802831e4ce69022b076b39e9014d0"
    },
    {
      "key": "ADMIN_EMAIL",
      "service": "Node-enterprise-ai-template-light",
      "description": "Default email address for the initial administrative account.",
      "secret": false,
      "strategy": "default",
      "default": "admin@example.com"
    },
    {
      "key": "CLIENT_HOST",
      "service": "Node-enterprise-ai-template-light",
      "description": "Local development host address.",
      "secret": false,
      "strategy": "default",
      "default": "localhost"
    },
    {
      "key": "CLIENT_PORT",
      "service": "Node-enterprise-ai-template-light",
      "description": "The port the client application runs on.",
      "secret": false,
      "strategy": "default",
      "default": "5001"
    },
    {
      "key": "AWS_ENDPOINT",
      "service": "Node-enterprise-ai-template-light",
      "description": "The S3-compatible API endpoint for Cloudflare R2 storage.",
      "secret": false,
      "strategy": "default",
      "default": "https://<ACCOUNT_ID>.r2.cloudflarestorage.com"
    },
    {
      "key": "DATABASE_URL",
      "service": "Node-enterprise-ai-template-light",
      "description": "Connection string using Railway internal networking to connect to the pgvector database service.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "AWS_S3_BUCKET",
      "service": "Node-enterprise-ai-template-light",
      "description": "The name of the storage bucket where files will be uploaded.",
      "secret": false,
      "strategy": "default",
      "default": "your_s3_bucket_name"
    },
    {
      "key": "ADMIN_PASSWORD",
      "service": "Node-enterprise-ai-template-light",
      "description": "Default password for the initial administrative account.",
      "secret": true,
      "strategy": "default",
      "default": "veRy1stronG2paSsWord3"
    },
    {
      "key": "EMAIL_PROVIDER",
      "service": "Node-enterprise-ai-template-light",
      "description": "The service used for sending emails (options: NODEMAILER, SENDGRID).",
      "secret": false,
      "strategy": "default",
      "default": "SENDGRID"
    },
    {
      "key": "JWT_EXPIRES_IN",
      "service": "Node-enterprise-ai-template-light",
      "description": "The general lifespan of the primary JWT.",
      "secret": false,
      "strategy": "default",
      "default": "1d"
    },
    {
      "key": "GOOGLE_CLIENT_ID",
      "service": "Node-enterprise-ai-template-light",
      "description": "Public identifier for the Google OAuth 2.0 application.",
      "secret": false,
      "strategy": "default",
      "default": "your_google_client_id.apps.googleusercontent.com"
    },
    {
      "key": "SENDGRID_API_KEY",
      "service": "Node-enterprise-ai-template-light",
      "description": "API key for authenticating requests to the SendGrid email service.",
      "secret": true,
      "strategy": "default",
      "default": "SG.your-sendgrid-api-key"
    },
    {
      "key": "AWS_ACCESS_KEY_ID",
      "service": "Node-enterprise-ai-template-light",
      "description": "The access key for AWS S3 or Cloudflare R2 authentication.",
      "secret": true,
      "strategy": "default",
      "default": "your_aws_access_key_id"
    },
    {
      "key": "SOCKET_CORS_ORIGIN",
      "service": "Node-enterprise-ai-template-light",
      "description": "Comma-separated list of allowed origins for Socket.IO Cross-Origin Resource Sharing.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    },
    {
      "key": "GOOGLE_CLIENT_SECRET",
      "service": "Node-enterprise-ai-template-light",
      "description": "Private client secret for the Google OAuth 2.0 application.",
      "secret": true,
      "strategy": "default",
      "default": "GOCSPD-your_google_client_secret"
    },
    {
      "key": "AWS_SECRET_ACCESS_KEY",
      "service": "Node-enterprise-ai-template-light",
      "description": "The secret key for AWS S3 or Cloudflare R2 authentication.",
      "secret": true,
      "strategy": "default",
      "default": "your_aws_secret_access_key"
    },
    {
      "key": "JWT_RESET_PASSWORD_SECRET",
      "service": "Node-enterprise-ai-template-light",
      "description": "A unique secret key specifically for signing password reset tokens.",
      "secret": true,
      "strategy": "default",
      "default": "your_very_strong_and_unique_reset_secret_key"
    },
    {
      "key": "JWT_REFRESH_EXPIRATION_DAYS",
      "service": "Node-enterprise-ai-template-light",
      "description": "Duration in days before a refresh token expires.",
      "secret": false,
      "strategy": "default",
      "default": "30"
    },
    {
      "key": "GOOGLE_GENERATIVE_AI_API_KEY",
      "service": "Node-enterprise-ai-template-light",
      "description": "API key for accessing Google's Generative AI (Gemini) features.",
      "secret": true,
      "strategy": "default",
      "default": "AIfLvblAfWbPaxrhy-s-gLsa8_rlqKM5iY0pWqsg"
    },
    {
      "key": "JWT_ACCESS_EXPIRATION_MINUTES",
      "service": "Node-enterprise-ai-template-light",
      "description": "Duration in minutes before an access token expires.",
      "secret": false,
      "strategy": "default",
      "default": "30"
    },
    {
      "key": "JWT_VERIFY_EMAIL_EXPIRATION_MINUTES",
      "service": "Node-enterprise-ai-template-light",
      "description": "Time window in minutes during which an email verification link remains valid.",
      "secret": false,
      "strategy": "default",
      "default": "10"
    },
    {
      "key": "JWT_RESET_PASSWORD_EXPIRATION_MINUTES",
      "service": "Node-enterprise-ai-template-light",
      "description": "Time window in minutes during which a password reset link remains valid.",
      "secret": true,
      "strategy": "default",
      "default": "10"
    },
    {
      "key": "PGDATA",
      "service": "db",
      "description": "Specific subdirectory within the volume where PostgreSQL data files are stored to avoid permission issues with the mount root.",
      "secret": false,
      "strategy": "default",
      "default": "/var/lib/postgresql/data/pgdata"
    },
    {
      "key": "POSTGRES_DB",
      "service": "db",
      "description": "The name of the default database created when the PostgreSQL container first initializes.",
      "secret": false,
      "strategy": "default",
      "default": "railway"
    },
    {
      "key": "POSTGRES_USER",
      "service": "db",
      "description": "The name of the default superuser created during initialization.",
      "secret": false,
      "strategy": "default",
      "default": "postgres"
    },
    {
      "key": "POSTGRES_PASSWORD",
      "service": "db",
      "description": "The superuser password for the PostgreSQL instance, required for the container to start.",
      "secret": true,
      "strategy": "default",
      "default": "lp8KIbZ~M7uPCrfoLa3s8iFj72npQB2E"
    },
    {
      "key": "REDISHOST",
      "service": "redis",
      "description": "The private internal host address for Redis. (Auto-filled by Railway).",
      "secret": false,
      "strategy": "default",
      "default": "${RAILWAY_PRIVATE_DOMAIN}"
    },
    {
      "key": "REDISPORT",
      "service": "redis",
      "description": "The port number Redis is listening on.",
      "secret": false,
      "strategy": "default",
      "default": "6379"
    },
    {
      "key": "REDISUSER",
      "service": "redis",
      "description": "The default Redis username (usually 'default').",
      "secret": false,
      "strategy": "default",
      "default": "default"
    },
    {
      "key": "REDIS_URL",
      "service": "redis",
      "description": "The private connection string constructed from the internal domain and credentials.",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "railway_private_domain"
    },
    {
      "key": "REDISPASSWORD",
      "service": "redis",
      "description": "The password for the Redis instance.",
      "secret": true,
      "strategy": "default",
      "default": "oqIXEaIkRzJPkSRLrgpYasiOyozpGnGw"
    },
    {
      "key": "REDIS_PASSWORD",
      "service": "redis",
      "description": "Alias for REDISPASSWORD, often used by client libraries.",
      "secret": true,
      "strategy": "default",
      "default": "oqIXEaIkRzJPkSRLrgpYasiOyozpGnGw"
    },
    {
      "key": "REDIS_PUBLIC_URL",
      "service": "redis",
      "description": "The public connection string accessible from outside Railway (via TCP Proxy).",
      "secret": false,
      "strategy": "railway_provided",
      "railway_source": "reference_variable"
    }
  ],
  "deploy": {
    "mcp": {
      "server": "railway",
      "tool": "deploy_template",
      "args": {
        "template_code": "nodejs-multimodal-rag-starter"
      }
    },
    "cli": "railway deploy --template nodejs-multimodal-rag-starter",
    "api": {
      "method": "POST",
      "path": "/graphql/v2",
      "body": {
        "query": "mutation templateDeploy($input: TemplateDeployV2Input!) { templateDeployV2(input: $input) { projectId workflowId } }",
        "variables": {
          "input": {
            "templateId": "627fc2c3-f75a-4671-8c39-99f9dfa6f03f",
            "serializedConfig": {
              "buckets": {},
              "services": {
                "334cc3ab-de31-4fcd-8f35-3658197a30ab": {
                  "icon": "https://pub-ce2718d3322e486d97486bc7e573557d.r2.dev/nodejs-enterprise-template_railway-icon.jpg",
                  "name": "Node-enterprise-ai-template-light",
                  "deploy": {
                    "startCommand": "node dist/server.js",
                    "healthcheckPath": "/api/v1/health",
                    "preDeployCommand": [
                      "sh -c 'npm run prisma:migrate:deploy:seed'"
                    ],
                    "restartPolicyType": "ON_FAILURE",
                    "restartPolicyMaxRetries": 10
                  },
                  "source": {
                    "repo": "https://github.com/aymenkani/Node-enterprise-ai-template-light",
                    "rootDirectory": null
                  },
                  "variables": {
                    "DEMO_MODE": {
                      "description": "Toggle to enable or disable demonstration features and mock data within the application.",
                      "defaultValue": "true"
                    },
                    "REDIS_URL": {
                      "isOptional": false,
                      "description": "The connection URL for the Redis service, used by BullMQ for task processing.",
                      "defaultValue": "${{redis.REDIS_URL}}"
                    },
                    "SMTP_HOST": {
                      "description": "The hostname of the SMTP server for Nodemailer.",
                      "defaultValue": "smtp.test.com"
                    },
                    "SMTP_PASS": {
                      "description": "Password or App Password for SMTP server authentication.",
                      "defaultValue": "user_pass"
                    },
                    "SMTP_PORT": {
                      "description": "The port used for SMTP (typically 587 for TLS).",
                      "defaultValue": "587"
                    },
                    "SMTP_USER": {
                      "description": "Username for SMTP server authentication.",
                      "defaultValue": "your-email@example.com"
                    },
                    "AWS_REGION": {
                      "description": "The physical location of the bucket; 'auto' is required for Cloudflare R2 compatibility.",
                      "defaultValue": "auto"
                    },
                    "CLIENT_URL": {
                      "description": "The production frontend URL, used for generating absolute links in emails.",
                      "defaultValue": "https://${{RAILWAY_STATIC_URL}}"
                    },
                    "EMAIL_FROM": {
                      "description": "The verified sender email address for outgoing system messages.",
                      "defaultValue": "your-email@example.com"
                    },
                    "JWT_SECRET": {
                      "isOptional": false,
                      "description": "A long, random string used to sign and verify JSON Web Tokens (JWT).",
                      "defaultValue": "affd6cc7f5def351f41094bcdaf8c479ecc802831e4ce69022b076b39e9014d0"
                    },
                    "ADMIN_EMAIL": {
                      "description": "Default email address for the initial administrative account.",
                      "defaultValue": "admin@example.com"
                    },
                    "CLIENT_HOST": {
                      "description": "Local development host address.",
                      "defaultValue": "localhost"
                    },
                    "CLIENT_PORT": {
                      "description": "The port the client application runs on.",
                      "defaultValue": "5001"
                    },
                    "AWS_ENDPOINT": {
                      "description": "The S3-compatible API endpoint for Cloudflare R2 storage.",
                      "defaultValue": "https://<ACCOUNT_ID>.r2.cloudflarestorage.com"
                    },
                    "DATABASE_URL": {
                      "isOptional": false,
                      "description": "Connection string using Railway internal networking to connect to the pgvector database service.",
                      "defaultValue": "postgresql://${{db.POSTGRES_USER}}:${{db.POSTGRES_PASSWORD}}@${{db.RAILWAY_PRIVATE_DOMAIN}}:5432/${{db.POSTGRES_DB}}"
                    },
                    "AWS_S3_BUCKET": {
                      "description": "The name of the storage bucket where files will be uploaded.",
                      "defaultValue": "your_s3_bucket_name"
                    },
                    "ADMIN_PASSWORD": {
                      "description": "Default password for the initial administrative account.",
                      "defaultValue": "veRy1stronG2paSsWord3"
                    },
                    "EMAIL_PROVIDER": {
                      "description": "The service used for sending emails (options: NODEMAILER, SENDGRID).",
                      "defaultValue": "SENDGRID"
                    },
                    "JWT_EXPIRES_IN": {
                      "description": "The general lifespan of the primary JWT.",
                      "defaultValue": "1d"
                    },
                    "GOOGLE_CLIENT_ID": {
                      "isOptional": false,
                      "description": "Public identifier for the Google OAuth 2.0 application.",
                      "defaultValue": "your_google_client_id.apps.googleusercontent.com"
                    },
                    "SENDGRID_API_KEY": {
                      "description": "API key for authenticating requests to the SendGrid email service.",
                      "defaultValue": "SG.your-sendgrid-api-key"
                    },
                    "AWS_ACCESS_KEY_ID": {
                      "description": "The access key for AWS S3 or Cloudflare R2 authentication.",
                      "defaultValue": "your_aws_access_key_id"
                    },
                    "SOCKET_CORS_ORIGIN": {
                      "description": "Comma-separated list of allowed origins for Socket.IO Cross-Origin Resource Sharing.",
                      "defaultValue": "http://localhost:3000,http://localhost:5173,https://${{RAILWAY_STATIC_URL}}"
                    },
                    "GOOGLE_CLIENT_SECRET": {
                      "isOptional": false,
                      "description": "Private client secret for the Google OAuth 2.0 application.",
                      "defaultValue": "GOCSPD-your_google_client_secret"
                    },
                    "AWS_SECRET_ACCESS_KEY": {
                      "description": "The secret key for AWS S3 or Cloudflare R2 authentication.",
                      "defaultValue": "your_aws_secret_access_key"
                    },
                    "JWT_RESET_PASSWORD_SECRET": {
                      "isOptional": false,
                      "description": "A unique secret key specifically for signing password reset tokens.",
                      "defaultValue": "your_very_strong_and_unique_reset_secret_key"
                    },
                    "JWT_REFRESH_EXPIRATION_DAYS": {
                      "isOptional": false,
                      "description": "Duration in days before a refresh token expires.",
                      "defaultValue": "30"
                    },
                    "GOOGLE_GENERATIVE_AI_API_KEY": {
                      "description": "API key for accessing Google's Generative AI (Gemini) features.",
                      "defaultValue": "AIfLvblAfWbPaxrhy-s-gLsa8_rlqKM5iY0pWqsg"
                    },
                    "JWT_ACCESS_EXPIRATION_MINUTES": {
                      "isOptional": false,
                      "description": "Duration in minutes before an access token expires.",
                      "defaultValue": "30"
                    },
                    "JWT_VERIFY_EMAIL_EXPIRATION_MINUTES": {
                      "isOptional": false,
                      "description": "Time window in minutes during which an email verification link remains valid.",
                      "defaultValue": "10"
                    },
                    "JWT_RESET_PASSWORD_EXPIRATION_MINUTES": {
                      "isOptional": false,
                      "description": "Time window in minutes during which a password reset link remains valid.",
                      "defaultValue": "10"
                    }
                  },
                  "networking": {
                    "serviceDomains": {
                      "<hasDomain>": {}
                    }
                  }
                },
                "449451fe-078c-4647-92d8-c03ce9cb9d05": {
                  "icon": "https://devicons.railway.com/i/postgresql.svg",
                  "name": "db",
                  "deploy": {
                    "startCommand": null,
                    "healthcheckPath": null,
                    "restartPolicyType": "ON_FAILURE",
                    "restartPolicyMaxRetries": 10
                  },
                  "source": {
                    "image": "pgvector/pgvector:pg18"
                  },
                  "variables": {
                    "PGDATA": {
                      "isOptional": true,
                      "description": "Specific subdirectory within the volume where PostgreSQL data files are stored to avoid permission issues with the mount root.",
                      "defaultValue": "/var/lib/postgresql/data/pgdata"
                    },
                    "POSTGRES_DB": {
                      "isOptional": true,
                      "description": "The name of the default database created when the PostgreSQL container first initializes.",
                      "defaultValue": "railway"
                    },
                    "POSTGRES_USER": {
                      "isOptional": true,
                      "description": "The name of the default superuser created during initialization.",
                      "defaultValue": "postgres"
                    },
                    "POSTGRES_PASSWORD": {
                      "isOptional": true,
                      "description": "The superuser password for the PostgreSQL instance, required for the container to start.",
                      "defaultValue": "lp8KIbZ~M7uPCrfoLa3s8iFj72npQB2E"
                    }
                  },
                  "volumeMounts": {
                    "449451fe-078c-4647-92d8-c03ce9cb9d05": {
                      "mountPath": "/var/lib/postgresql/"
                    }
                  }
                },
                "644b4289-d7fa-4b5f-b04c-2ac58614307c": {
                  "icon": "https://devicons.railway.com/i/redis.svg",
                  "name": "redis",
                  "deploy": {
                    "startCommand": null,
                    "healthcheckPath": null,
                    "restartPolicyType": "ON_FAILURE",
                    "restartPolicyMaxRetries": 10
                  },
                  "source": {
                    "image": "redis:7-alpine"
                  },
                  "variables": {
                    "REDISHOST": {
                      "isOptional": false,
                      "description": "The private internal host address for Redis. (Auto-filled by Railway).",
                      "defaultValue": "${RAILWAY_PRIVATE_DOMAIN}"
                    },
                    "REDISPORT": {
                      "isOptional": false,
                      "description": "The port number Redis is listening on.",
                      "defaultValue": "6379"
                    },
                    "REDISUSER": {
                      "isOptional": false,
                      "description": "The default Redis username (usually 'default').",
                      "defaultValue": "default"
                    },
                    "REDIS_URL": {
                      "isOptional": false,
                      "description": "The private connection string constructed from the internal domain and credentials.",
                      "defaultValue": "redis://default:oqIXEaIkRzJPkSRLrgpYasiOyozpGnGw@${{RAILWAY_PRIVATE_DOMAIN}}:6379"
                    },
                    "REDISPASSWORD": {
                      "isOptional": false,
                      "description": "The password for the Redis instance.",
                      "defaultValue": "oqIXEaIkRzJPkSRLrgpYasiOyozpGnGw"
                    },
                    "REDIS_PASSWORD": {
                      "isOptional": false,
                      "description": "Alias for REDISPASSWORD, often used by client libraries.",
                      "defaultValue": "oqIXEaIkRzJPkSRLrgpYasiOyozpGnGw"
                    },
                    "REDIS_PUBLIC_URL": {
                      "isOptional": false,
                      "description": "The public connection string accessible from outside Railway (via TCP Proxy).",
                      "defaultValue": "redis://default:oqIXEaIkRzJPkSRLrgpYasiOyozpGnGw@${{RAILWAY_TCP_PROXY_DOMAIN}}:6379"
                    }
                  },
                  "volumeMounts": {
                    "644b4289-d7fa-4b5f-b04c-2ac58614307c": {
                      "mountPath": "/data"
                    }
                  },
                  "haTemplateCode": "redis-ha",
                  "haConversionConfig": {
                    "edge": {
                      "label": "Reverse Proxies",
                      "options": [
                        1,
                        2
                      ],
                      "nodeLabel": "HAProxy",
                      "description": "HAProxy instances routing writes to the primary",
                      "defaultValue": 2
                    },
                    "replica": {
                      "label": "Redis Replicas",
                      "options": [
                        2,
                        3,
                        4,
                        5
                      ],
                      "nodeLabel": "Redis",
                      "description": "Nodes running Redis + colocated Sentinel",
                      "defaultValue": 2
                    },
                    "internal": null,
                    "description": "This will convert your Redis instance to an HA cluster with Sentinel failover and HAProxy routing to the primary."
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "post_deploy": {
    "healthcheck": {
      "service": "Node-enterprise-ai-template-light",
      "method": "GET",
      "path": "/api/v1/health",
      "expect_status": 200
    }
  },
  "resources": {
    "expected_services": 3,
    "needs_volume": true
  },
  "generated_at": "2026-09-23T10:14:44.639Z",
  "generator_version": "0.1.0",
  "status": "validated",
  "validated_at": "2026-09-23T09:58:12.693Z",
  "success_rate_30d": 0.8333,
  "validation": {
    "last_run_id": "run_d32a06d7aa7c4322bf57",
    "checks": [
      {
        "name": "workflow_completed",
        "passed": true
      },
      {
        "name": "all_services_deployed",
        "passed": true
      },
      {
        "name": "healthcheck",
        "passed": true
      },
      {
        "name": "stays_up",
        "passed": true
      }
    ],
    "typical_ready_seconds": 217,
    "typical_build_seconds": 112,
    "typical_start_seconds": 10,
    "slowest_service": "Node-enterprise-ai-template-light"
  }
}
