Skip to content

Lightsail as the default 1-click template, with the Remote Control name fix - #163

Open
defangdevs wants to merge 4 commits into
masterfrom
combine/lightsail-default
Open

Lightsail as the default 1-click template, with the Remote Control name fix#163
defangdevs wants to merge 4 commits into
masterfrom
combine/lightsail-default

Conversation

@defangdevs

Copy link
Copy Markdown
Owner

Combines #150 and #156 into one branch, rebased onto current master.

They belong together: #150 makes Lightsail the template the Launch buttons point at, and #156 fixes the Remote Control session name in that same template. Merging #150 alone would ship the new default while still advertising <user>@<stack name>; merging #156 alone leaves the fix on a template nobody launches.

What's here

Commit Origin
Revert "Revert Lightsail as the default 1-click template" #150, unchanged
fix(lightsail): derive Remote Control name from the public host #156, unchanged
docs(aws): point the publish/CI notes at both templates new, see below
docs(site): drop the stack-name Remote Control label from the launch page new, see below

Conflicts resolved

The two new commits

Both fix claims that this combination falsifies and that neither PR updated, because in isolation neither had reason to:

  • aws/README.md still said the Launch links point at template.yaml, verified a publish with a curl against template.yaml only, and described PR CI as running cfn-lint aws/template.yaml (aws-ci.yml on master already lints both).
  • docs/index.html — the public landing page — still told users the Claude apps show agent@agent-box and to rename the stack for a friendlier label. With remoteControlHost set on both templates the stack name no longer has any bearing on the session name, so that instruction sends users to do something with no effect.

Verification

  • cfn-lint aws/template.yaml aws/lightsail-template.yaml — clean (what aws-ci.yml runs).
  • Replayed publish-template.yml's default-injection awk against both templates and asserted all four Default: lines land — the workflow now pins lightsail-template.yaml too, and that step hard-fails if a template's parameter layout doesn't match. It matches. cfn-lint on both injected copies is also clean.
  • Cross-checked the new RemoteControlSession Output against WebUrl: both derive the host as Join['-', Split['.', StaticIp.IpAddress]], and the userdata bakes the same form into hostname (dom="$(echo "$ip" | tr . -).sslip.io", aws/lightsail-template.yaml:325) — so the advertised name is the one the box actually registers.
  • Confirmed against modules/agent-box.nix.in that remoteControlHost yields <user>-<session>@<host>, matching what the docs now claim.
  • Grepped the tree for surviving <stack name> Remote Control claims: none.
  • Built the same result two independent ways — merge commits vs. linear cherry-picks — and confirmed the trees are byte-identical (77e3e73). This branch is the linear one.

Not deploy-tested: no Lightsail stack launched, and #156's change lives in userdata that only runs on first boot. Inherited from #156, unchanged. A real launch before merge would confirm the Output end-to-end.

Closes #150. Closes #156.

🤖 Generated with Claude Code

https://claude.ai/code/session_01PsqGhkpjsb4kKAdVz25xKN

lionello and others added 4 commits August 2, 2026 07:29
The Lightsail template hardcoded remoteControlName = "<user>@<stack>",
so the entry in the Claude apps named the CloudFormation stack — which
says nothing about how to reach the box — and pinned one name for every
session the user runs, since remoteControlName is per-user rather than
per-session.

Drop it and set remoteControlHost = hostname instead, mirroring
aws/template.yaml. Sessions are then identifiable as
"<user>-<session>@<host>", where <host> is the sslip.io address the box
is actually reached at, and runtime-added sessions get distinct names.

The stack Output moves in lockstep (it advertised the old name), using
the same dashed-IP form the userdata bakes into the hostname and that
WebUrl already reports. The Fn::Sub StackName variable is now unused,
so it goes too.

README's EC2 walkthrough claimed the same <UserName>@<stack name> shape;
that has been stale since aws/template.yaml started setting
remoteControlHost, so it is corrected here as well.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PsqGhkpjsb4kKAdVz25xKN
PR #150 makes lightsail-template.yaml the template the Launch buttons use,
which falsifies three claims in aws/README.md that it left untouched: the
quick-create note and the publish-verification curl both named template.yaml
as the only published object, and the PR-validation section described a
cfn-lint invocation that aws-ci.yml already widened to both templates.
…page

The landing page still told users the Claude apps show "<user>@<stack name>"
and to rename the stack for a friendlier label. Both templates now set
remoteControlHost to the box's sslip.io address, so the name is derived per
session and the stack name has no bearing on it.
@lionello lionello changed the title Lightsail as the default 1-click template, with the Remote Control name fix (#150 + #156) Lightsail as the default 1-click template, with the Remote Control name fix Aug 2, 2026
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