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
| Property | Type | Description |
|---|---|---|
runnerCpu | string | Number of CPU cores. Passed as docker run --cpus. Default: "4". |
runnerMemory | string | Memory limit in Docker format (e.g. "8g", "16g"). Passed as docker run --memory. Default: "8g". |
maxConcurrentRunners | number | Maximum 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
| Property | Type | Description |
|---|---|---|
repo | string | Full "owner/repo" string (e.g. "MyOrg/my-app"). Required. |
runnerCpu | string | null | Override CPU cores for this repo. null = inherit from org default. |
runnerMemory | string | null | Override memory for this repo. null = inherit from org default. |
maxConcurrentRunners | number | null | Override 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-appThe
repo field must exactly match the GitHub repository full name (case-sensitive, e.g. SylphxAI/SaaS). URL-encode slashes when using the DELETE endpoint.