Skip to content

feat(fwdctl/launch): add scenario-driven deploy, list/kill instance management, and dry-run planning (3/4)#1664

Open
AminR443 wants to merge 42 commits intomainfrom
amin/fwd-launcher-pr-3
Open

feat(fwdctl/launch): add scenario-driven deploy, list/kill instance management, and dry-run planning (3/4)#1664
AminR443 wants to merge 42 commits intomainfrom
amin/fwd-launcher-pr-3

Conversation

@AminR443
Copy link
Contributor

@AminR443 AminR443 commented Feb 9, 2026

Why this should be merged

This PR upgrades fwdctl launch from deploy/monitor-only into a full lifecycle management tool. It adds planning (--dry-run), managed instance operations (list, kill), and scenario-based launches.

How this works

The launch CLI now supports:

  • fwdctl launch list to show ManagedBy=fwdctl instances (with --running / --mine)
  • fwdctl launch kill to terminate a specific instance, your instances, or all managed instances
  • fwdctl launch deploy --scenario <name> to pick a scenario from benchmark/launch/launch-stages.yaml
  • fwdctl launch deploy --dry-run [plan|plan-with-cloud-init] to preview actions without creating resources
  • fwdctl launch deploy --follow [follow|follow-with-progress] for log/progress streaming modes

How this was tested

Some UT. mostly manually launching and ensuring all the cases work fine.

Design Notes

  1. list/kill are intentionally scoped to ManagedBy=fwdctl resources to avoid accidental operations on unrelated instances.
  2. plan-with-cloud-init was added so generated cloud-init can be inspected/reviewed before launch.

@AminR443 AminR443 changed the base branch from main to amin/fwd-launcher-pr-2 February 9, 2026 08:32
@AminR443 AminR443 marked this pull request as ready for review February 9, 2026 08:43
Base automatically changed from amin/fwd-launcher-pr-2 to main February 11, 2026 16:25
Copy link
Member

@rkuris rkuris left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a really big PR that will require another pass.

libevm_repo: "https://github.com/ava-labs/libevm.git"
s3_bucket: "avalanchego-bootstrap-testing"

stages:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is difficult or impossible to review since I can't compare the original script to what you've got here without doing a lot of work. Suggestions welcome.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd suggest doing a dry-run with cloud-init dump so you could inspect the resulting cloud init manually. It'll be a little bit hard still because of progress tracking commands, but you could remove them and then do the comparison.

To do this:

AWS_PROFILE=<your-profile> cargo run --bin fwdctl --features launch -- launch deploy --dry-run=plan-with-cloud-init

You can check this diff to that I generated:
https://www.diffchecker.com/GglAZd0v/

Note: The branch args are not present because I ran the default configuration.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's pretty easy to verify with the diff that the original commands are mostly untouched. The rust install changed because one of the original commands had non-successful exit code, couldn't write to the specified directory.

@AminR443 AminR443 requested a review from rkuris February 13, 2026 11:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants