Skip to content
Proud to collaborate with Microsoft for Startups

runner.pool-launch-fargate ​

Launch one warm (non-ephemeral) runner on ECS Fargate and record it as a RunnerInstance. Started by runner.pool-reconcile-fargate when the warm pool is below its floor; the runner stays registered with GitHub and serves multiple jobs until reaped.

Launch one non-ephemeral ECS task and register it as a warm instance.

Overview ​

PropertyValue
Workflow typeLinear
LibraryApp-runners-aws
Version1.0

Input Schema ​

FieldTypeRequiredDefaultDescription
runner_group_uuiduuidYes—UUID of the RunnerGroup this action operates on, picked from the organization's list of runner groups.
organization_uuiduuidYes—UUID of the caller's organization, injected server-side from the authenticated request; scopes the operation to the correct tenant.
execution_uuiduuidNo—UUID of an existing RunnerExecution to reuse instead of creating a new one, picked from the group's executions. Optional — a new execution is created when absent.
environmentdictNo—Environment variables to pass to container
commandlistNo—Optional command override for container
runner_imagestringNo—Optional custom container image for this execution (overrides runner_group config)
github_workflow_run_refintegerNo—GitHub workflow run reference — external GitHub identifier
run_attemptintegerNo—GitHub run attempt number — used to build the claim-watch workflow ID for retries
extra_tagsdictNo—Additional AWS resource tags to attach to the ECS task (e.g. AgentSessionUuid)

Output Schema ​

FieldTypeRequiredDefaultDescription
runner_group_uuiduuidNo—UUID of the RunnerGroup this action operates on, picked from the organization's list of runner groups; echoed on output alongside terminal/error payloads.
organization_uuiduuidNo—UUID of the caller's organization, injected server-side from the authenticated request; scopes the operation to the correct tenant. Echoed on output alongside terminal/error payloads.
runner_execution_uuiduuidNo—UUID of the RunnerExecution this action operates on, picked from the organization's (optionally group-scoped) list of executions; echoed on output alongside terminal/error payloads.
workflow_uuidstringNo—Engine workflow-run identifier (or, for GitHub-Actions-triggered flows, an external GitHub Actions run id) associated with this record; not a platform entity foreign key despite the name. No source is attached since there is no list/query workflow for an internal run id.
statusstringNo——
outcomestringNo——
initiated_atstringNo——
completed_atstringNo——
failed_atstringNo——
failure_reasonstringNo——
errorstringNo——
error_typestringNo——
actor_uuiduuidNo—UUID of the user or service actor who triggered this action, injected server-side from the authenticated request when available; used for audit/attribution only. Optional — omitted for system or service-triggered actions with no human actor.
reasonstringNo——
workflow_run_uuidstringNo—Engine-stamped correlation/run id for this DAG execution (ADR-015/E1 plumbing), written into state_data by action_start; not a foreign key to any business entity. No source is attached since there is no list/query workflow for an internal run id.
retry_countintegerNo——
retried_fromstringNo——
failed_stepjsonNo——
failed_layerjsonNo——
failed_at_statejsonNo——
compensation_triggerjsonNo——
comp_current_layerjsonNo——
comp_queuejsonNo——
comp_retry_countjsonNo——
cluster_arnstringNo——
task_arnstringNo——
task_definition_arnstringNo——
log_group_namestringNo——
container_namestringNo——
runner_imagestringNo——
needs_custom_imagebooleanNo——
registration_tokenstringNo——
runner_namestringNo——
runtime_envdictNo——
start_commandlistNo——
claim_watch_workflow_uuidstringNo—Engine run id of the runner.execution-claim-watch workflow started for this launch, when a github_workflow_run_ref was provided. Internal engine correlation id, not a platform entity foreign key.
last_statusstringNo——
execution_uuiduuidNo—UUID of an existing RunnerExecution to reuse instead of creating a new one, picked from the group's executions. Optional — a new execution is created when absent.
commandlistNo——
environmentdictNo——
run_attemptintegerNo——
extra_tagsdictNo——
github_workflow_run_refintegerNo——
runner_instance_uuiduuidNo—UUID of the RunnerInstance created for this warm runner — the long-lived ADR-001 entity the warm-pool controller reconciles against.
warm_pool_launchbooleanNo—Always true for this workflow — records that the runner agent was configured non-ephemerally and will serve more than one job.

States ​

StateInitialTerminalSuccessAuto-advanceDescription
initiatedYesNo—prepare—
building_start_commandNoNo—launch_task—
getting_registration_tokenNoNo—build_start_command—
launching_taskNoNo—complete—
preparingNoNo—get_registration_token—
completedNoYesYes——
failedNoYesNo——

State Diagram ​

Transitions ​

FromActionToDescription
initiatedpreparepreparing—
preparingget_registration_tokengetting_registration_token—
getting_registration_tokenbuild_start_commandbuilding_start_command—
building_start_commandlaunch_tasklaunching_task—
launching_taskcompletecompleted—
* (any state)failfailed—

API Usage ​

bash
POST /api/workflows/start
Content-Type: application/json

{
  "workflow_type": "runner.pool-launch-fargate",
  "initial_data": {
    "runner_group_uuid": "value",
    "organization_uuid": "value"
  }
}