Running agents and tasks on ARM architecture
This is an advanced feature that is not required for the vast majority of self-hosted setups.
ARM support is a beta feature, and some details may change before it's generally released. We'd love
to hear any feedback or requests at hello@airplane.dev.
By default, all Airplane agent binaries and task images are designed for running on AMD64
(alternatively, referred to as
x64
or x86-64
) CPUs. Some organizations may prefer to use ARM64
infrastructure, however, for cost or performance reasons. Airplane supports these environments for
self-hosted agent setups provided that the corresponding agents and tasks are configured for ARM.Agent setup
AWS ECS
The CPU architecture to use is configurable via a parameter in the Airplane
Terraform and
CloudFormation configs. To switch from AMD64
(the default) to ARM64, set the appropriate parameter for the configuration type you're using:
- Terraform: Set the
cpu_architecture
input variable set toARM64
. - CloudFormation: Set the
CPUArchitecture
stack parameter toARM64
.
Then, apply (or re-apply) the updated configs.
Kubernetes
If you're running in Kubernetes, no explicit configuration changes are
required in the Airplane Kubernetes manifests. Each Kubernetes node should pull an image for the
platform it's running on; provided that an ARM64 image is available (see the sections below), this
should work without any problems.
Images
Airplane agent and built-ins
The images for the Airplane agent and standard built-ins (used for email,
GraphQL, MongoDB, REST, Slack, and SQL tasks) are built for multiple platforms by default. Nothing
additional is required to use these on ARM.
JavaScript and Python tasks
By default, JavaScript and Python tasks are built for AMD64 only. To also build for ARM64, update
the
javascript
and/or python
sections of your
project airplane.yaml
file to include the extra platform:yamlCopied1# For JavaScript tasks2javascript:3buildPlatforms:4- linux/amd645- linux/arm6467# For Python tasks8python:9buildPlatforms:10- linux/amd6411- linux/arm64
You can omit the
linux/amd64
lines if your architecture is 100% ARM-based and you don't want to
build for AMD64 at all.Shell tasks
Shell tasks can be configured to use multi-platform builds via an extra environment variable in the
task config YAML:
yamlCopied1shell:2envVars:3_AIRPLANE_BUILD_PLATFORM:4value: "linux/amd64,linux/arm64"
Limitations and known issues
- Tasks using the workflow runtime are not yet supported for ARM