> ## Documentation Index
> Fetch the complete documentation index at: https://bloodhound.specterops.io/llms.txt
> Use this file to discover all available pages before exploring further.

# GH_RunsOn

> [Workflow] Job can be scheduled on this self-hosted runner based on its static runs-on selector — GH_WorkflowJob → GH_Runner

<img noZoom src="https://mintcdn.com/specterops/tTIczgde9H07oLXf/assets/enterprise-AND-community-edition-pill-tag.svg?fit=max&auto=format&n=tTIczgde9H07oLXf&q=85&s=ad49a576589f4d2a8081df77d07fdf56" alt="Applies to BloodHound Enterprise and CE" width="482" height="45" data-path="assets/enterprise-AND-community-edition-pill-tag.svg" />

## Edge Schema

* Traversable: ❌

| Start                                                                | Kind       | End                                                        |
| -------------------------------------------------------------------- | ---------- | ---------------------------------------------------------- |
| [GH\_WorkflowJob](/opengraph/extensions/github/nodes/gh_workflowjob) | GH\_RunsOn | [GH\_Runner](/opengraph/extensions/github/nodes/gh_runner) |

```mermaid theme={null}
flowchart LR
    GH_Runner["GH_Runner"]
    GH_WorkflowJob["GH_WorkflowJob"]
    GH_WorkflowJob -- GH_RunsOn --> GH_Runner
```

## General Information

The non-traversable GH\_RunsOn edge represents that a GitHub Actions workflow job can be scheduled on a self-hosted runner based on the job's statically declared `runs-on` selector and the runner topology visible to the containing repository.

This edge is schedulability evidence, not historical execution evidence. It does not mean that the job has previously executed on the runner. It means that the runner satisfies the job's static label and runner-group requirements and is reachable through the repository's current runner access policy.

The collector emits GH\_RunsOn only for static selectors. Dynamic selectors that contain GitHub Actions expressions such as `${{ matrix.runner }}` or `${{ inputs.runner }}` are intentionally left unresolved in this first implementation.

## Edge Schema

| Source                                                               | Destination                                                | Traversable |
| -------------------------------------------------------------------- | ---------------------------------------------------------- | ----------- |
| [GH\_WorkflowJob](/opengraph/extensions/github/nodes/gh_workflowjob) | [GH\_Runner](/opengraph/extensions/github/nodes/gh_runner) | `false`     |

## Diagram

```mermaid theme={null}
graph LR
    n0["GH_WorkflowJob"]
    n1["GH_Runner"]
    n0 -.->|GH_RunsOn| n1
```
