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

# Run Your First GitHub Job

> Connect GitHub, turn on a private repository, change one runs-on line, and watch the job run in a BoxRouter sandbox.

When GitHub queues a job whose `runs-on` is a BoxRouter label, BoxRouter starts a fresh sandbox for it and registers a runner in it. GitHub still starts the workflow and keeps its logs, artifacts, and secrets.

**Before You Begin:** A private GitHub repository you administer, and a connected provider key or Credits in a BoxRouter workspace where you are an administrator.

## Add a Test Workflow

Save this as `.github/workflows/boxrouter-smoke.yml` and commit it to the repository's default branch. GitHub requires the file there for [manual runs](https://docs.github.com/en/actions/how-tos/manage-workflow-runs/manually-run-a-workflow). It does not check out your code.

```yaml theme={"theme":"css-variables"}
name: BoxRouter smoke test
on:
  workflow_dispatch:

jobs:
  smoke:
    runs-on: boxrouter-ubuntu-24.04
    steps:
      - run: |
          uname -sm
          nproc
```

`boxrouter-ubuntu-24.04` requests the default size. [Runners](https://boxrouter.ai/docs/actions/runners.md#runner-labels) lists its CPU and memory floors and the other sizes.

## Connect GitHub and Turn the Repository On

**1. Connect**

In BoxRouter, open **GitHub Actions** and connect the account or organization that owns the repository. [Connect GitHub](https://boxrouter.ai/docs/github/connect.md) covers the permissions and the existing-installation path.

**2. Turn the Repository On**

Under **Choose Repositories**, turn on the switch beside your repository. The row shows **Turning On…** while BoxRouter prepares it, then **On**. For any other status, see [repository status](https://boxrouter.ai/docs/actions/troubleshooting.md#repository-status).

## Run It

On GitHub, open **Actions**, choose **BoxRouter smoke test**, and select **Run workflow**. The job runs on a runner named like `brx-…`. If it stays queued, see [Job stays queued](https://boxrouter.ai/docs/actions/troubleshooting.md#job-stays-queued).

Output

```text theme={"theme":"css-variables"}
Linux x86_64
4
```

Your CPU count can differ from the `4` shown here. On routes that enforce CPU with a quota, `nproc` reports the host's count; see [worker counts](https://boxrouter.ai/docs/actions/runners.md#set-worker-counts-yourself).

In BoxRouter, the run is at the top of the **GitHub Actions** table. Open it to see the provider, size, and timeline. Check the cleanup status to confirm the sandbox was deleted. To follow the sandbox itself, see [Find a run](https://boxrouter.ai/docs/actions/runs.md).

## Limits to Know First

Before moving another workflow, check [runner limits](https://boxrouter.ai/docs/actions/runners.md#what-works-today) for supported jobs, time limits, and available tools.

## Next Steps

> [card] [Move a Workflow](https://boxrouter.ai/docs/actions/migrate.md)
>
> Pick a label, check the diff, and roll back.

> [card] [How Actions Works](https://boxrouter.ai/docs/actions/how-it-works.md)
>
> What happens between a queued job and a finished one.

> [card] [Choose a Runner](https://boxrouter.ai/docs/actions/runners.md)
>
> The labels, sizes, and time limits.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.