Skip to main content
CloudFormation is Lowkey’s default deploy method. When you run the installer and pick “CloudFormation CLI” (or use -y without --method), install.sh calls aws cloudformation create-stack with the right parameters derived from your pack and profile choices. The template lives at deploy/cloudformation/template.yaml in the Lowkey repository.

What the stack creates

One CloudFormation stack creates all of the following:
  • VPC, public subnet, internet gateway, and route table — a fresh network by default; reusable if you pass ExistingVpcId
  • Security group — egress-all; inbound SSH disabled by default
  • IAM role and instance profile — scoped to your chosen profile
  • EC2 instance — ARM64 Graviton, sized per profile
  • SSM session preferences — for secure shell access without open ports
  • Security service subscriptions (optional) — Security Hub, GuardDuty, Inspector, Access Analyzer, Config recorder
The simplest path is to let the installer handle everything:
Or in non-interactive mode:
The installer computes all ~17 CloudFormation parameters from your choices and calls aws cloudformation create-stack for you.

Deploying the template manually

If you prefer to deploy directly, clone the repo and run aws cloudformation create-stack yourself:
Running the installer is almost always easier — it computes and validates all parameters for you.

Key template parameters

You rarely set these by hand. The installer computes them from your pack, profile, and flags. This table is the reference if you deploy the template directly or need to understand what was set.
LiteLLMApiKey and ProviderApiKey are NoEcho: true, so they won’t appear in describe-stacks output or the console. They still pass through UserData in Base64-encoded form, which is queryable via describe-instance-attribute. For production secrets, use the --kiro-from-secret / Secrets Manager pattern — only the secret reference flows through deploy state. See Managing secrets with AWS Secrets Manager.

Watching deploy progress

The installer streams stack events to your terminal. If you deployed manually, watch events with:
The bootstrap script also publishes progress to SSM Parameter Store as it runs:

Finding your instance ID after deploy

Once the stack reaches CREATE_COMPLETE, retrieve the instance ID from the stack Outputs:
Then connect via SSM:

Updating the stack

To change parameters after initial deploy — for example to upgrade the instance type — run update-stack:

Tear-down

Delete the stack to remove every resource it created — VPC, EC2, IAM role, security services, and all:
If you reused an existing VPC by passing ExistingVpcId, that VPC is not deleted when the stack is removed. You brought it, so you keep it.
Security service subscriptions (GuardDuty, Security Hub, Inspector) may persist briefly after stack deletion — AWS detaches them asynchronously.