Run Aether in an AWS Lambda MicroVM
This crate provides the lifecycle hook server needed to run Aether as a one-shot coding agent in a Lambda MicroVM.
Build a MicroVM image
1. Create a Dockerfile containing Aether, the hook server, Git, and the GitHub CLI:
FROM rust:1.97-bookworm AS build
RUN cargo install --locked aether-agent-cli
RUN cargo install --locked lambda-microvm-hook-server
FROM debian:bookworm-slim
RUN apt-get update && apt-get install -y --no-install-recommends ca-certificates git gh \
&& rm -rf /var/lib/apt/lists/*
COPY --from=build /usr/local/cargo/bin/aether /usr/local/bin/
COPY --from=build /usr/local/cargo/bin/lambda-microvm-hook-server /usr/local/bin/
CMD ["lambda-microvm-hook-server"]
2. Upload it to S3:
3. Create the microVM image
Replace the bucket, Region, account ID, and role name:
4. Wait for AWS to build your microVM image
Wait until state is CREATED:
Run your agent
Create a short-lived fine-grained GitHub token with Contents: read/write and Pull requests: read/write, then export it with your model provider's key:
The setup script is supplied dynamically for each run. This example clones the requested repository and passes the user's prompt directly to Aether:
Build the run payload. OWNER/REPOSITORY may be public or private as long as the token can access it.
Run the agent:
Aether clones the repository, completes the task, and opens the PR. Watch the image's CloudWatch logs or run gh pr list --repo OWNER/REPOSITORY to see when it appears.
When Aether finishes, the hook server exits and Lambda terminates the MicroVM. The maximum duration is only a guardrail for a stuck agent. The run payload contains credentials, so use narrowly scoped, short-lived tokens.