Skip to content
Console
Menu

Getting Started

Authentication

KV Store

Compute & delivery

CI Runner Settings

Configure JIT GitHub Actions runner resource limits per-org and per-repo. Settings cascade: repo override → org default → env vars → hardcoded defaults.

Scope
per-org · per-repo
Cascade
repo → org → env → defaults
API
api.sylphx.com/v1/ci-settings

Before you start

  • An organisation on Sylphx with GitHub-connected repositories
  • A service token for the API path, or the console for the UI path
  • The repository full name when overriding one repo (case-sensitive, e.g. SylphxAI/SaaS)

Overview

Sylphx spawns ephemeral Just-In-Time (JIT) GitHub Actions runners as Docker containers on the platform host. Each runner is pre-registered to a single workflow job and is automatically destroyed when the job completes.

CI Runner Settings let you control the resource limits (CPU, memory) and the maximum concurrency of these runners at two levels:

  • Org default — applies to all repos in the org
  • Per-repo override — overrides specific fields for a single repo; unset fields fall back to the org default

Note

The billing unit for CI minutes is always the org. Per-repo settings only control resource allocation, not billing attribution.

Fallback Chain

When a JIT runner is spawned, settings are resolved in this order. The first non-null value wins for each field independently.

text
Resolution order for org "MyOrg", repo "MyOrg/big-app":

1. repo_ci_settings WHERE org_id = <myorg-id> AND repo = "MyOrg/big-app"
   → runnerCpu: null (inherit), runnerMemory: "32g", maxConcurrentRunners: null (inherit)

2. org_ci_settings WHERE org_id = <myorg-id>
   → runnerCpu: "8", runnerMemory: "16g", maxConcurrentRunners: 10

3. Env vars: RUNNER_CPU, RUNNER_MEMORY, MAX_JIT_RUNNERS

4. Hardcoded defaults: cpu="4", memory="8g", maxRunners=5

Final resolved settings:
  runnerCpu: "8"      (from org — repo had null)
  runnerMemory: "32g" (from repo override)
  maxConcurrentRunners: 10 (from org — repo had null)

Configuring in the Console

Step 1. Open CI Config

Navigate to Console → [Your Org] → Settings → CI Config. This page is only visible to org admins.

Step 2. Set Org Defaults

In the Org Default Runner Config section, configure CPU cores, memory, and max concurrent runners. Click Save Org Defaults.

Step 3. Add Per-Repo Overrides (optional)

In the Per-Repo Overrides section, enter the full owner/repo name and specify which fields to override. Leave fields blank to inherit from the org default.

Step 4. Delete an Override

Click the trash icon next to a repo override to remove it and revert to the org default.

Org Default Settings

PropertyTypeDescription
runnerCpustringNumber of CPU cores. Passed as docker run --cpus. Default: "4".
runnerMemorystringMemory limit in Docker format (e.g. "8g", "16g"). Passed as docker run --memory. Default: "8g".
maxConcurrentRunnersnumberMaximum number of JIT runner containers allowed to run simultaneously for this org. Default: 5.
json
// GET https://api.sylphx.com/v1/ci-settings
// Returns:
{
  "isDefault": false,
  "runnerCpu": "8",
  "runnerMemory": "16g",
  "maxConcurrentRunners": 10
}

// PUT https://api.sylphx.com/v1/ci-settings
{
  "runnerCpu": "8",
  "runnerMemory": "16g",
  "maxConcurrentRunners": 10
}

Per-Repo Override Settings

PropertyTypeDescription
repostringFull "owner/repo" string (e.g. "MyOrg/my-app"). Required.
runnerCpustring | nullOverride CPU cores for this repo. null = inherit from org default.
runnerMemorystring | nullOverride memory for this repo. null = inherit from org default.
maxConcurrentRunnersnumber | nullOverride max concurrent runners for this repo. null = inherit from org default.
json
// POST https://api.sylphx.com/v1/ci-settings/repos
{
  "repo": "MyOrg/my-app",
  "runnerCpu": "16",
  "runnerMemory": "32g",
  "maxConcurrentRunners": null   // null = inherit from org
}

// DELETE https://api.sylphx.com/v1/ci-settings/repos/MyOrg%2Fmy-app

Careful

The repo field must exactly match the GitHub repository full name (case-sensitive, e.g. SylphxAI/SaaS). URL-encode slashes when using the DELETE endpoint.

Related