AWS Copilot CLI reached end of support in June 2026. Comparing ECS Express Mode, the AWS CDK, Encore, OpenTofu and SST for teams with Copilot-managed ECS services.
AWS Copilot gave teams a short path to ECS on Fargate: copilot init for a load balanced service, a worker on a queue or a scheduled job, plus environments and pipelines. It reached end of support on June 12, 2026, and the repository is archived.
Existing services keep running, since they are CloudFormation stacks. The question is what manages the next deploy, the next environment and the next worker.
What you need to decide:
ECS Express Mode creates a Fargate service with a load balancer, HTTPS and scaling from a container image, and is what AWS recommends for Copilot's simple web services.
It covers the load balanced service. Workers, queues, schedules and environments are set up separately, which were the parts Copilot packaged.
The CDK's ECS patterns, such as ApplicationLoadBalancedFargateService and QueueProcessingFargateService, are close to Copilot's service types, written in TypeScript or Python.
You own the stacks, environments and pipelines that Copilot generated, and local development is still Docker plus a cloud account.
Encore is an open source infrastructure SDK for TypeScript, Python, Go and Rust that declares infrastructure in code, deploying services to ECS in your own AWS account along with the databases, SNS and SQS queues and schedules they declare. The Copilot service types map directly: a load balanced service is an API, a worker is a Pub/Sub subscription and a scheduled job is a cron job.
import { api } from "encore.dev/api";
import { Topic, Subscription } from "encore.dev/pubsub";
import { CronJob } from "encore.dev/cron";
interface Job {
id: string;
}
// The Copilot "worker service" queue: SNS and SQS on AWS.
export const jobs = new Topic<Job>("jobs", { deliveryGuarantee: "at-least-once" });
// The "load balanced web service".
export const submit = api(
{ expose: true, method: "POST", path: "/jobs" },
async (job: Job): Promise<Job> => {
await jobs.publish(job);
return job;
},
);
const done = new Set<string>(); // Stand-in for a table with a unique key.
// The "worker service": at-least-once delivery, so skip ids already handled.
const _ = new Subscription(jobs, "run-job", {
handler: async (job) => {
if (done.has(job.id)) return;
done.add(job.id);
},
});
// The "scheduled job".
export const cleanup = api({ expose: false }, async () => {
done.clear();
});
const __ = new CronJob("nightly-cleanup", { schedule: "0 2 * * *", endpoint: cleanup });
encore run runs the API and delivers Pub/Sub messages locally, and cron jobs do not fire locally. Copilot environments become Encore environments, each deployed to AWS in your account, and Encore provisions an IAM role for the service. Preview environments replace per-branch Copilot environments.
An agent asked to add a worker writes a subscription in the same change as the code that publishes to it.
Copilot deployed any container, while Encore apps are written with its SDK, so services are ported rather than redeployed as images. See the migration guide for moving off existing infrastructure.
OpenTofu is an open source infrastructure as code tool compatible with Terraform configurations, with community modules for ECS services.
Everything Copilot generated becomes HCL you write and review, and importing existing Copilot stacks takes care.
SST defines AWS resources in a TypeScript config file, with components for services, queues and cron.
It is centered on serverless, and ECS support is newer than its Lambda support.
The AWS docs for installing and deploying with Copilot remain useful for understanding what the existing stacks contain before you migrate.
You can deploy your first Encore app to try the workflow before moving any services.
Yes. AWS Copilot CLI reached end of support on June 12, 2026, and its GitHub repository is archived. Existing CloudFormation stacks it created keep running, but the CLI receives no fixes or updates.
AWS recommends ECS Express Mode for simple container services and CDK constructs for more control. Encore is an alternative that defines the services, databases, queues and cron jobs in application code and deploys them to ECS in your own AWS account, which covers the load balanced services, workers and scheduled jobs Copilot handled.
They are ordinary CloudFormation stacks with ECS services, so they keep running. Moving off Copilot means taking over those stacks with another tool, or deploying new ones and switching traffic.
The last release still works against the AWS APIs it was built for, but new AWS features and security fixes will not arrive, so plan a migration rather than relying on it.
Deploy to your cloud on AWS and Google Cloud
without managing infrastructure
Encore lets developers and agents define application infrastructure directly in code, then automatically provisions it from local development to production in your AWS or GCP account.