Skip to content
Sengi

Switching a repository to Sengi

Updated September 30, 2026. Switch a repository to Sengi by changing runs-on in your workflows, yourself or with the Sengi prompt in your coding agent. Everything else in your workflows stays exactly as it is.

Connect GitHub · Agent prompt · Help · Service terms

Install the App and connect the repository

Sign in to Sengi and choose your project. You need permission to manage GitHub connections in that project. Signing in with GitHub does not install the Sengi App.

Choose Set up GitHub connection to install the Sengi GitHub App on the personal account or organization that owns the repository. Choose Only select repositories to limit its access. The account or organization owner may have to approve the App. Connecting the installation to your project is what lets Sengi run that repository's jobs, at any of the runner sizes below; the connections page lists the repositories and the labels you can use.

Edit runs-on yourself and push

The edit is one line per job. A job's runs-on: ubuntu-latest, runs-on: ubuntu-24.04 or your current provider's label becomes one of the three Sengi labels:

jobs:
  build:
    runs-on: sengi-standard-4-ubuntu-2404
    steps:
      - uses: actions/checkout@v5
      - run: npm ci
      - run: npm test

Nothing else in the job changes: steps, services, env, permissions, timeout-minutes and your triggers are untouched. Push and merge it through your own review; existing branch rules and approvals still apply.

Runner labelWhat the job getsDiskFree at job start
sengi-standard-2-ubuntu-24042 vCPU, 8 GB memory75 GiB12 GB
sengi-standard-4-ubuntu-24044 vCPU, 16 GB memory150 GiB85 GB
sengi-standard-8-ubuntu-24048 vCPU, 32 GB memory200 GiB133 GB

The disk column is the volume the runner is given; the last column is what the runner reported free on / and on $RUNNER_TEMP when a job started, read on September 13, 2026. The image and its tool cache take the difference, so plan a sengi-standard-2-ubuntu-2404 job around roughly 12 GB for your checkout, caches and build output. The 4 vCPU size was read on September 14, 2026. A runner also sees a little less memory than it is given: 7 GB on the 2 vCPU size and 31 GB on the 8 vCPU size.

Memory is a hard limit, not a soft one. A job that exhausts its runner's memory is ended by the host before the guest's own out-of-memory killer gets to act (measured on all three sizes on September 14, 2026), so GitHub shows that job as failed or cancelled rather than as an out-of-memory step; run it again on the next size up.

Write exactly one of these three labels, literally, as the whole value of runs-on. All three are Ubuntu 24.04 x64 from the same image. If your repository lints workflows with actionlint, declare the label you use in .github/actionlint.yaml first, or that check fails before the job ever reaches Sengi.

Or let your coding agent do it

Copy the Sengi prompt into Claude Code, Codex, Cursor or another coding agent with access to the repository, or fetch it with curl -s https://sengi.run/agent.md. It finds the jobs Sengi can run, changes only their runs-on lines and opens a pull request you review and merge. It does not connect GitHub for you: install and connect the App first.

What the runner looks like from inside a job

Each job gets its own fresh virtual machine running an ordinary self-hosted Actions runner, and the machine is destroyed afterwards. A job on the 2 vCPU and the 8 vCPU sizes reported these values on September 13, 2026:

What your job readsValue
runner.osLinux
runner.archX64
RUNNER_ENVIRONMENTself-hosted
ImageOSubuntu24
ImageVersion20260910.1.0
/etc/os-releaseUbuntu 24.04.5 LTS
RUNNER_TOOL_CACHE and AGENT_TOOLSDIRECTORY/opt/hostedtoolcache
RUNNER_TEMP/home/runner/work/_temp

Because runner.os and runner.arch read the same as they do on a GitHub-hosted Linux x64 runner, a cache key built from them keeps the same shape on Sengi. Caches are served by Sengi's own cache: actions/cache, the setup actions' caches and Docker's type=gha layer cache work with no workflow changes, and a job's first run on Sengi fills that cache. See Docker layer caching on Sengi. RUNNER_ENVIRONMENT reads self-hosted, not github-hosted, so a workflow that branches on it takes the self-hosted branch.

  • actions/setup-node with node-version: 22 resolved Node v22.23.2 out of the tool cache on both sizes. actions/setup-python resolves from the same cache.
  • actions/cache cold, warm and fallback restores, actions/upload-artifact and actions/download-artifact, job services: containers over mapped host ports, repository secrets with step and job scoping, and OIDC token issuance under id-token: write have each passed on sengi-standard-8-ubuntu-2404.
  • Docker, Docker Compose v2.38.2 and Buildx v0.37.0 are installed, and a Compose service lifecycle and a Buildx build were exercised on sengi-standard-2-ubuntu-2404.

Each case ran on the size named above. Run one of your own jobs to confirm its toolchain. The image version moves when the image is rebuilt, and the Node version it carries moves with it.

Watch the result, usage and history

Your project's Job history page lists every job Sengi has received updates for, hand-edited or not. Each job shows its state, runner size, image, label, start delay and execution time, its lifecycle timestamps from admission through GitHub's finish, and links to the run and job on GitHub. Logs stay in GitHub. A job whose title has gone missing after 90 days without updates still shows its number and result.

Each job starts as soon as a runner is ready. A job waiting for a runner stays in GitHub's queue and starts on its own; waiting is not a failure.

Pricing and the free allowance

Runner sizeRunner labelRate per job-minuteFree credits per job-minute
2 vCPU / 8 GBsengi-standard-2-ubuntu-2404$0.0031
4 vCPU / 16 GBsengi-standard-4-ubuntu-2404$0.0062
8 vCPU / 32 GBsengi-standard-8-ubuntu-2404$0.0124

The funding account shares 3,000 free credits per UTC calendar month across its projects, with no carryover. That is 3,000 standard-2-equivalent minutes, weighted 1/2/4 for the sizes above. Each job is rounded up once to whole execution minutes; boot and teardown are unbilled. Signup is cardless. When the allowance is exhausted, new free jobs are refused until the next month; jobs already admitted may finish within their normal timeout, and Sengi absorbs the overrun. Your account's concurrency limit applies as usual.

A card on file lifts that wait: your jobs keep running past 3,000 credits. Usage beyond the free grant is charged to the card on file monthly; there is no pre-authorisation or hold. Invoices, billing details and payment methods are available on your project's billing page. Read the funding account shown in your preview and the service terms before enabling.

Stop running jobs on Sengi

Change runs-on back, or revert the pull request that switched it, and your next job runs on GitHub's runners again. To stop Sengi placing new jobs for a repository without editing workflows, choose Stop new Sengi jobs for it on your project's GitHub connections page; jobs already running can finish and your job history stays. Jobs whose runs-on still names a Sengi label then wait in GitHub's queue with nothing to run them, so change those lines back too. Uninstalling the App removes GitHub access and is a separate action from changing labels.

Supported labels and platforms

  • Use one of the three labels above, written literally. Any other label is not a Sengi runner, and no alias for them exists.
  • Use one Sengi label per job. A job whose runs-on carries two labels Sengi recognises is held as ambiguous rather than resolved.
  • Write the label literally rather than as an expression in runs-on.
  • All three runners are Ubuntu 24.04 on x64, at 2, 4 and 8 vCPU. Keep arm64, macOS, Windows and other Ubuntu releases on their current runners.

Getting help

For a job that stays queued, a connection that will not verify or anything else unresolved, use Help with the repository and the GitHub run and job links. Never send a token, password or session cookie.