{
  "manifest_version": "1.0.0",
  "template": {
    "id": "200566ad-2187-49c6-b2e5-1d9ba0f706ac",
    "slug": "pXId5Q",
    "name": "Github Actions Runner",
    "description": "Deploy a scalable self-hosted GitHub Actions Runner.",
    "url": "https://railway.com/deploy/pXId5Q",
    "upstream": {
      "image": "myoung34/github-runner"
    }
  },
  "services": [
    {
      "name": "myoung34/github-runner",
      "source": {
        "image": "myoung34/github-runner"
      },
      "needs_volume": false,
      "http": false
    }
  ],
  "required_inputs": [
    {
      "key": "LABELS",
      "service": "myoung34/github-runner",
      "description": "A comma (no spaces!) delimited list of labels for the runner.",
      "secret": false,
      "strategy": "default",
      "default": "railway,default"
    },
    {
      "key": "EPHEMERAL",
      "service": "myoung34/github-runner",
      "description": "Flag to configure runner with --ephemeral option. Options: 'true', 'false'",
      "secret": false,
      "strategy": "default",
      "default": "false"
    },
    {
      "key": "GITHUB_HOST",
      "service": "myoung34/github-runner",
      "description": "URL of dotcom or your Github Enterprise server (e.g. github.mycompany.com)",
      "secret": false,
      "strategy": "default",
      "default": "github.com"
    },
    {
      "key": "ACCESS_TOKEN",
      "service": "myoung34/github-runner",
      "description": "A fine-grained PAT giving the runner access to register itself. Setup -> https://github.com/settings/personal-access-tokens",
      "secret": true,
      "strategy": "generate",
      "generate": "random_base64_32"
    },
    {
      "key": "DISABLE_AUTOMATIC_DEREGISTRATION",
      "service": "myoung34/github-runner",
      "description": "Flag to disable signal catching for deregistration. Options: 'true' or 'false'",
      "secret": false,
      "strategy": "default",
      "default": "true"
    }
  ],
  "deploy": {
    "mcp": {
      "server": "railway",
      "tool": "deploy_template",
      "args": {
        "template_code": "pXId5Q"
      }
    },
    "cli": "railway deploy --template pXId5Q",
    "api": {
      "method": "POST",
      "path": "/graphql/v2",
      "body": {
        "query": "mutation templateDeploy($input: TemplateDeployV2Input!) { templateDeployV2(input: $input) { projectId workflowId } }",
        "variables": {
          "input": {
            "templateId": "200566ad-2187-49c6-b2e5-1d9ba0f706ac",
            "serializedConfig": {
              "services": {
                "fb9af338-ec06-4658-bc9b-2a420829d3f3": {
                  "icon": "https://cdn.jsdelivr.net/gh/devicons/devicon@latest/icons/githubactions/githubactions-original.svg",
                  "name": "myoung34/github-runner",
                  "source": {
                    "image": "myoung34/github-runner"
                  },
                  "variables": {
                    "LABELS": {
                      "isOptional": false,
                      "description": "A comma (no spaces!) delimited list of labels for the runner.",
                      "defaultValue": "railway,default"
                    },
                    "ORG_NAME": {
                      "isOptional": true,
                      "description": "The organization name. Requires RUNNER_SCOPE to be 'org'.",
                      "defaultValue": ""
                    },
                    "EPHEMERAL": {
                      "isOptional": true,
                      "description": "Flag to configure runner with --ephemeral option. Options: 'true', 'false'",
                      "defaultValue": "false"
                    },
                    "GITHUB_HOST": {
                      "isOptional": true,
                      "description": "URL of dotcom or your Github Enterprise server (e.g. github.mycompany.com)",
                      "defaultValue": "github.com"
                    },
                    "ACCESS_TOKEN": {
                      "isOptional": false,
                      "description": "A fine-grained PAT giving the runner access to register itself. Setup -> https://github.com/settings/personal-access-tokens",
                      "defaultValue": "{{ACCESS_TOKEN}}"
                    },
                    "RUNNER_SCOPE": {
                      "isOptional": true,
                      "description": "The scope the runner will be registered on. Valid values are 'repo', 'org', or 'ent'. For 'org' and 'ent', ACCESS_TOKEN is required and REPO_URL is unnecessary. If 'org', requires ORG_NAME; if 'ent', requires ENTERPRISE_NAME.",
                      "defaultValue": ""
                    },
                    "ENTERPRISE_NAME": {
                      "isOptional": true,
                      "description": "The enterprise name for the runner. Requires RUNNER_SCOPE to be 'enterprise'.",
                      "defaultValue": ""
                    },
                    "DISABLE_AUTOMATIC_DEREGISTRATION": {
                      "isOptional": true,
                      "description": "Flag to disable signal catching for deregistration. Options: 'true' or 'false'",
                      "defaultValue": "true"
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "post_deploy": {},
  "resources": {
    "expected_services": 1,
    "needs_volume": false
  },
  "generated_at": "2026-09-21T16:15:12.787Z",
  "generator_version": "0.1.0",
  "status": "degraded",
  "validated_at": "2026-09-21T07:50:04.628Z",
  "success_rate_30d": 0,
  "validation": {
    "last_run_id": "run_b3acdfc536a0439cae1d",
    "checks": [
      {
        "name": "workflow_completed",
        "passed": true
      },
      {
        "name": "all_services_deployed",
        "passed": true
      },
      {
        "name": "stays_up",
        "passed": false,
        "detail": "1 service(s) crashed within 30s"
      }
    ]
  }
}
