Run your CI in your cloud
Get fully managed GitHub Actions runners in your own cloud with autoscaling, build caching, warm runner pools, and more.
airship-buildAWSc7i.xlargespotus-east-1busy2m 41sairship-gpuGCPg2-standard-8spotus-central1-blaunching0m 12sairship-buildAWSm7i.xlargeus-east-1running0m 38sairship-windowsAzureStandard_D4s_v5eastusbusy6m 02sairship-smallAWSt4g.mediumspotus-west-2pending—airship-armAWSc7g.2xlargespoteu-west-1finished4m 19sjobs:
test:
runs-on: airship-build--${{ github.run_id }}
steps:
- uses: actions/checkout@v5
- run: make testCloud Native
Run CI in your AWS, GCP, or Azure account using existing cloud credits.
Faster CI
Right-size instances and automatically scale runners to match demand.
Faster Builds
Speed up builds with caching, warm pools, and optimized compute.
Managed Runners
No runner provisioning, management, or maintenance required.
Features
Built for every workload
From simple tests to complex builds, everything you need to run and scale CI in your own cloud.
runners:
- name: build
cloud: aws # or gcp · azure
instance_type: c7i.xlarge
region: us-east-1
labels: [airship-build]
- name: windows
cloud: azure
instance_type: Standard_D4s_v5
machine_image:
publisher: MicrosoftWindowsServer
offer: WindowsServer
sku: 2022-datacenter-g2
labels: [airship-windows]Launching airship-build
- 1c7i.xlargespotInsufficientInstanceCapacity×
- 2m7i.xlargespotMaxSpotInstanceCountExceeded×
- 3c7a.xlargeon-demandi-0a3f…e21 running✓
Idle runners · mon-fri 9-17 → 4, otherwise 1
A job takes a warm runner; a new one boots behind it.
runners:
- name: gpu
cloud: gcp
instance_type: n1-standard-8
region: us-central1 # any zone with capacity
gpu: nvidia-tesla-t4
preemptible: true
labels: [airship-gpu]$ nvidia-smi --query-gpu=name,memory.total
name, memory.total [MiB]
Tesla T4, 15360 MiB
machine_image:
ubuntu2404Canonical, newestami-0123…cdef0your AMIWindows Server 2022Windows boot scriptc7g · t4g · AmpereARM64galleries/ci/images/buildAzure galleryprojects/acme/global/images/ciGCE image
- uses: actions/cache@v4 # unchanged
with:
path: ~/.cargo
key: cargo-${{ hashFiles('Cargo.lock') }}$ curl -H "Authorization: Bearer $AIRSHIP_TOKEN" \
https://api.airshipci.com/api/v1/repo \
-d '{"repository": "acme/web", "active": true}'
{"fullName": "acme/web", "activated": true, ...}How it works
Fully Managed GitHub Actions Runners
Run GitHub Actions on AWS, GCP, or Azure without managing the underlying infrastructure.
Connect a cloudOn-Demand Provisioning
Airship automatically provisions runners in your cloud as GitHub Actions jobs are queued.
RunInstances→ droppedSecure Cloud Access
Airship securely provisions and manages runners in your account.
pendinglaunchingrunningbusyfinished
finished, and why
completedcancelledidlelaunch_failedlostmax_lifetime
Automatic Runner Cleanup
Airship automatically cleans up idle or orphaned machines.
- AWSEC2 · S3 cacheconnected
- Google CloudCompute Engine · GPUsconnected
- AzureVirtual Machinesconnected
Multi-Cloud Support
Configure runner machine types, regions, operating systems, and images to match your workloads.
Security
Secure by Design
Run GitHub Actions within your own cloud environment, without exposing your code or secrets to third-party runners.
- ISOLATED BUILDSEach job runs on its own machine
- YOUR NETWORKRun within your own VPCs and subnets
- EPHEMERAL RUNNERSAutomatically terminated after each job
- SCOPED CACHE ACCESSTemporary access to designated cache storage
- SELF-HOSTED CONTROL PLANEDeploy the control plane in your environment
Get started
Your first runner in four steps.
- 1Install the GitHub App
- 2Connect a cloud
- 3Activate a repository
- 4Commit airship.yaml
runners:
- name: build
cloud: aws
instance_type: [c7i.xlarge, m7i.xlarge]
preemptible: [true, false]
labels: [airship-build]
extra_config:
cache: true