Skip to main content

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.

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
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.

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

0

Open CI Config

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

Set Org Defaults

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

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.
0

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.
// GET /api/console/v1/ci-settings
// Returns:
{
  "isDefault": false,
  "runnerCpu": "8",
  "runnerMemory": "16g",
  "maxConcurrentRunners": 10
}

// PUT /api/console/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.
// POST /api/console/v1/ci-settings/repos
{
  "repo": "MyOrg/my-app",
  "runnerCpu": "16",
  "runnerMemory": "32g",
  "maxConcurrentRunners": null   // null = inherit from org
}

// DELETE /api/console/v1/ci-settings/repos/MyOrg%2Fmy-app
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.