A fresh plan is a different decision.
Replanning during apply can produce different actions from the artifact a reviewer approved.
A public guide to what Argus Deploy installs, how work moves from code to an exact apply, and what remains inside your AWS accounts.
The hard part is proving that the infrastructure change somebody reviewed is the change that eventually ran—with the same source code and infrastructure target.
Replanning during apply can produce different actions from the artifact a reviewer approved.
Regional workers exist only for their task and return to zero when the work finishes.
State, plans, credentials, logs, and execution remain in accounts the customer owns.
Imagine an on-call engineer applies an urgent infrastructure fix from an incident branch, but the pull request has not been merged. The shared state now records the emergency change while the default branch still describes the old configuration.
A system that replans from the old branch during the next apply can interpret the incident fix as drift and propose removing it. Argus Deploy does not silently make that new decision. A previously saved plan references the earlier state generation; if another Terraform/OpenTofu operation updated that state, the saved plan is stale and apply fails. The team must review a fresh plan that includes the incident work instead of accidentally overwriting it.
Argus Deploy is delivered as a versioned infrastructure module plus immutable runner and dashboard images. The platform is installed by a human from a dedicated bootstrap root; it never manages its own installation through its runners.
An infrastructure repository, AWS account(s), target mappings and network coordinates, GitHub identity, customer-created token and license secrets, and permission to publish the provided images into customer ECR.
Begin from isolated local state, create the protected S3/KMS backend, then migrate the same root into that customer-owned backend.
Copy the supplied runner and dashboard release images into source ECR in the primary account. Regional execution pulls from customer ECR.
The primary account creates the dashboard, plans storage, orchestrator, source repositories, and regional workers. Workload accounts create only their local execution plane.
The module can create the ALB by default or attach Argus Deploy to a customer-provided ALB. A supplied ACM certificate selects HTTPS on port 443.
A small GitHub-hosted launch job uses OIDC only to start the customer-resident orchestrator. The actual infrastructure work does not run on GitHub-hosted compute. With the default 1 vCPU / 2 GiB worker, current public list prices put raw Fargate task compute at roughly one-seventh of GitHub's standard 2-core Linux runner minute. Included GitHub minutes, different CPU sizes, image startup, and other AWS charges can change the real ratio.
module "argus_deploy" {
source = "git::https://github.com/.../bootstrap?ref=<release>"
infrastructure_repository = "acme/infrastructure"
execution_folders = ["network", "compute", "dns"]
env_order = ["dev", "staging", "prod"]
gated_envs = ["staging", "prod"]
regions = {
us-west-1 = {
vpc_id = "vpc-..."
subnet_ids = ["subnet-a", "subnet-b"]
root_folder = "stacks"
}
}
}
Customers register each execution target with an environment label, AWS account,
region, and repository root. Names such as dev,
staging, and prod are customer-defined labels; Argus
Deploy does not infer an environment from its AWS account. The
gated_envs policy selects which labels require approval, and applies
to every registered target carrying that label.
env_order = ["dev", "staging", "prod"]
gated_envs = ["staging", "prod"]
orchestration_targets = [
{
environment = "dev"
account_id = "111111111111"
region = "us-west-1"
root_folder = "stacks/dev"
},
{
environment = "staging"
account_id = "222222222222"
region = "us-west-1"
root_folder = "stacks/staging"
}
]
In this example, staging is gated because its environment label appears in
gated_envs—not because it uses account 222222222222.
Each execution folder is resolved beneath the registered target root.
Argus Deploy installs one central dashboard and orchestrator in your chosen primary AWS account. It dispatches short-lived workers into the customer accounts and Regions you register. Your GitHub repository supplies the code and the event that starts the run.
A merge identifies the exact commit. A small workflow sends an OIDC-backed launch signal; infrastructure planning stays in customer AWS.
Chooses targets, orders work, starts regional workers, and tracks each result.
Keeps saved plans, approvals, and results in customer-owned AWS storage.
Shows changes and history in one place. A reviewer approves the exact saved plan.
Plans or applies the assigned infrastructure change with local customer IAM access.
The same isolated execution path can run in another account or Region, then scale back to zero.
The dashboard is the review surface; the orchestrator runs the workflow. Approval applies only to the saved plan reviewers saw, and the later worker executes that plan without making a replacement. Normal runs do not require a _fromTheCode-hosted control plane.
One small GitHub trigger starts the process. Everything that reads credentials, plans infrastructure, or changes AWS runs inside the customer boundary.
A pull request or merge identifies the repository and exact commit. A small trigger starts the customer-resident orchestrator; it does not choose targets or run infrastructure changes.
Inside your primary AWS account, it chooses targets, applies your sequencing and approval policy, dispatches regional workers, and tracks each result.
The worker runs in the target account and Region, uses the exact source commit, and produces a saved plan with resource changes your team can review.
The proposed changes and the approval remain tied to the plan that will be applied. Plans and review history stay in customer-owned AWS storage.
Routine environments may continue automatically. Protected environments wait for a person to approve the saved plan; approval does not authorize a future recalculation.
When your configured apply process is ready, a regional worker executes the saved plan your team approved. If it has gone stale, the run fails instead of making a new plan.
Status, actor, timestamps, SHA, and apply output remain in customer storage and logs. The task exits after completion, returning the regional worker count to zero.
Your repository contains the infrastructure code and the small trigger workflow. GitHub reports status and identifies the event, repository, ref, and SHA. It launches the customer orchestrator through OIDC, but the infrastructure plan and apply do not execute on GitHub-hosted machines.
The dashboard, orchestrator, plans bucket, KMS key, and source ECR repositories live in the customer's chosen primary account. The dashboard is stateless; review history and plan state remain in customer storage.
Regional ECS workers, application-state access, CloudWatch logs, security groups, and regional image caches live alongside the infrastructure they operate. Cross-account work uses customer IAM and customer EventBridge, not vendor credentials.
We deliver versioned module code, immutable images, and signed offline licenses. Normal planning, approval, and apply do not depend on a vendor-hosted API or control plane.
Argus Deploy does not need a _fromTheCode-hosted control plane, telemetry service, or online license-validation call to operate in customer AWS.
Reviewers see the proposed changes and approve that exact plan. A later apply cannot silently substitute a different set of changes.
The worker executes the approved saved plan. If infrastructure state changes make that plan stale, the run fails and asks for a new review.
Before apply begins, cancellation prevents execution. Once apply has started, cancellation does not interrupt that infrastructure change.
Environment and stack ordering can require upstream success and exact-SHA lineage. Every transition and result remains visible in customer storage and CloudWatch.
Argus Deploy does not charge per workflow or per run. Customers pay the fixed Argus Deploy subscription plus their own short-lived AWS compute and storage costs.
Argus uses a 1 vCPU / 2 GiB Fargate task. Using current public US list prices, its task runtime is roughly one-seventh of GitHub's standard 2-core Linux hosted-runner minute.
GitHub charges hosted-runner jobs by the minute after the plan's included allowance, and each job is rounded up to the next minute. Fargate charges for requested CPU and memory by the second with a one-minute minimum. Argus workers exist only while planning or applying and return to zero afterward.
The platform still has customer AWS costs: the dashboard service, S3, KMS, logs, ECR, networking, and the short-lived tasks themselves. The Argus subscription is flat rather than metered by run, so increased adoption does not create an additional Argus workflow bill.
GitHub may be cheaper when private usage stays inside included minutes, and public-repository Actions can be free. GitHub's standard runner also has more CPU than the current default Argus worker. The stronger case for Argus is the combination of private VPC execution, customer-owned credentials, exact-plan approval, and predictable platform pricing—not a promise that every possible job costs seven times less.
Cost depends on region, task size, job duration, included GitHub minutes, and the AWS services a customer enables. Use the linked pricing pages for a customer-specific estimate.
Argus Deploy starts with the assumption that infrastructure credentials should not cross a vendor boundary.
Regional workers receive temporary customer IAM credentials inside the target AWS account. The GitHub launch job uses narrow OIDC permissions to start the customer orchestrator and never receives application-infrastructure credentials.
Plans, approvals, review history, and logs stay in customer AWS storage and logging services. The dashboard reads them there rather than copying them into a vendor service.
Regional workers start for a coordinate, execute, report, and exit. Platform bootstrap state is isolated and cannot be changed by the same runners that manage application infrastructure.
The customer stores a signed license token in its own Secrets Manager. Each new central orchestrator verifies it locally before dispatching work. The dashboard never reads the secret.
New orchestration proceeds normally. Fourteen days before expiration, the dashboard begins displaying a warning so renewal does not become a surprise.
New work remains available while the dashboard shows the expired-but-in-grace state. The token is still checked locally; no request is made to _fromTheCode.
New central orchestration is refused. An orchestrator or worker already admitted before the cutoff is allowed to finish, so licensing never interrupts Terraform/OpenTofu halfway through an apply.
No. Runtime credentials are issued and used inside customer AWS. There is no vendor runtime control plane.
That is configurable. Routine environments may continue automatically after promotion checks. Protected environments wait for approval of the saved plan, then continue through the customer-configured apply process—immediately, manually, or on a schedule.
The saved plan may be refused by the runtime. Argus Deploy records the failure instead of generating and applying a replacement plan.
Yes. Supply the ALB and security-group coordinates; Argus Deploy creates the target group, attachment, traffic rules, and—when needed—the listener.
Yes. One primary control plane coordinates regional execution planes across registered customer accounts.
No. Argus Deploy does not charge per workflow or execution. Customer AWS usage is billed by AWS.