Deployment inputs
When your software runs inside your customer's cloud, it needs real values to start: endpoints, connection strings, API keys. Some of them are yours. Some only the customer's admin has.
Deployment inputs let you declare every one of them in alien.ts. Each input
says what it is, how it's validated, and who provides it.
const inputs = alien.inputs({
databaseUrl: alien.string({
providedBy: "deployer",
required: true,
label: "Database URL",
description: "Postgres connection string inside the customer's network.",
pattern: "^postgres://",
env: "DATABASE_URL",
}),
controlPlaneApiKey: alien.secret({
providedBy: "developer",
required: true,
label: "Control plane API key",
description: "Authorizes this deployment with your control plane.",
env: "CONTROL_PLANE_API_KEY",
}),
})The important part is providedBy, which decides who gets asked:
developervalues are collected on your side, and the customer never sees them.deployervalues are asked of the customer's admin at install time, because they're specific to their own environment.
From that one declaration, Alien validates each value and collects it everywhere setup happens: the dashboard, deployment portal, CLI, CloudFormation, Terraform, and Helm. Types cover strings, secrets, numbers, integers, booleans, enums, and lists, and secrets stay masked, encrypted at rest, and out of generated IaC and logs.