Docs

Platforms

This page lists what each resource becomes on AWS, Google Cloud, Azure, Kubernetes, Linux servers, and Local (alien dev), and which combinations aren't supported. In .platforms() they're aws, gcp, azure, kubernetes, machines, and local.

alien.ts
import * as alien from "@alienplatform/core"

export default new alien.Stack("acme")
  .platforms(["aws", "gcp", "azure", "kubernetes"])
  .build()

.platforms() limits where a stack can deploy. Omit it to allow all platforms. Unsupported resource and platform combinations are refused before anything is deployed.

In the tables, an external binding points a resource at a service the customer already runs. A frozen resource is created once by the customer's admin at initial setup; see Lifecycles.

Compute

ResourceAWSGoogle CloudAzureKubernetesLinux serversLocal
WorkerLambdaCloud RunContainer AppsDeployment and Service. No queue, storage, or schedule triggers.Not supportedLocal process
ContainerEC2 machines in a ComputeClusterCompute Engine machinesAzure VMsDeployment, or StatefulSet when statefulStateless only, no public endpointsDocker
DaemonOne per EC2 machineOne per Compute Engine machineOne per VMDaemonSetOne per hostLocal process
ComputeClusterAuto Scaling group per poolManaged instance group per poolVM Scale Set per poolLogical pools on existing nodes. No GPUs or nested virtualization.Pools are host labelsDocker network
SandboxLambda MicroVMsAgent Platform sandboxesContainer Apps sandboxesPods with a sandboxed RuntimeClassNot supportedDocker

Data

ResourceAWSGoogle CloudAzureKubernetesLinux serversLocal
StorageS3Cloud StorageBlob StorageExternal bindingExternal binding, frozenDirectory
KvDynamoDBFirestoreTable StorageExternal bindingExternal binding, frozenSQLite
QueueSQSPub/SubService BusExternal bindingExternal binding, frozenLocal queue
VaultSSM Parameter StoreSecret ManagerKey VaultKubernetes SecretsExternal binding, frozenJSON file
PostgresAurora Serverless v2Cloud SQLFlexible ServerExternal bindingExternal binding, frozenNative PostgreSQL
KeyKMSCloud KMSKey Vault keysOnly on a cloud base platformNot supportedNot supported

Services

ResourceAWSGoogle CloudAzureKubernetesLinux serversLocal
AIAmazon BedrockVertex AIAzure AI FoundryExternal AI bindingExternal AI bindingYour OpenAI key or local server
EmailSESNot supportedNot supportedNot supportedNot supportedNot supported

Infrastructure

ResourceAWSGoogle CloudAzureKubernetesLinux serversLocal
ArtifactRegistryECRArtifact RegistryContainer RegistryExternal bindingNot provisionedLocal registry
BuildCodeBuildCloud BuildContainer Apps jobsKubernetes JobsNot supportedNot supported
ServiceAccountIAM roleService accountManaged identityHelm chart ServiceAccountsNot supportedLocal identity
NetworkVPCVPCVNetCluster networkHost networkHost network

External bindings

On Kubernetes and Linux servers, Alien doesn't create cloud data services. The deployer points each resource at an existing service with an external binding, supplied through Helm values or deployment settings.

PlatformResources that need an external binding
KubernetesStorage, Kv, Queue, ArtifactRegistry. Postgres and AI too, when declared.
Linux serversStorage, Kv, Queue, Vault, Postgres. They must also be "frozen".

An external binding can point at another platform's service, for example S3 or an S3-compatible endpoint such as MinIO for Storage on Kubernetes.

Lifecycles

Frozen resources are created once at initial setup by the customer's admin; live ones are updated by Alien on every release. See Frozen and live.

ResourceAllowed lifecycles
Worker, Container, DaemonLive
ComputeCluster, ArtifactRegistry, Key, Build, ServiceAccount, Network, EmailFrozen
SandboxFrozen. Live on AWS.
Storage, Kv, Queue, Vault, Postgres, AIFrozen or live

Storage with an encryption key must be frozen. On Linux servers, resources that use external bindings must be frozen.

Next

On this page