feat(remote): add auth --store for a persistent control-plane credential - #186
Merged
Merged
Conversation
The control plane stack now creates an IAM user with a stack-owned managed policy scoped to day-to-day control, and spinloop remote auth --store keeps an access key for it in the OS keystore (an owner-only file where no keystore is reachable). Resolution is per region: explicit environment credentials or a profile first, then the stored key, then the standard chain. Control planes deployed before this change need a re-bootstrap to gain the user.
# Conflicts: # go.mod # go.sum
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
spinloop remote auth --storekeeps a long-lived access key for the control plane's own IAM user in the machine's OS keystore, so day-to-day remote control and fleet operations keep working between SSO log-ins.Summary
cloud-vm-llm-remote-cli) with a stack-owned managed policy scoped to day-to-day control: invoke the control URLs, read instance logs, discover the stack, price an instance, and manage the user's own access keysspinloop remote authsubcommand: report the stored credential,--store(creates and verifies a new key, or rotates with the stored key alone),--clear(removes the entry and deletes the key on the AWS side)AWS_PROFILEfirst, then the stored key, then the standard chain; fleet operations on remote environments sign through the same resolutionSPINLOOP_REMOTE_KEYSTORE=fileselects the file storeInvalidClientTokenIdon an exponential backoff — a freshly issued key takes seconds to become resolvableremote-authcapability,endpoint-provisioningandremote-endpointupdated, change archived as2026-09-08-persistent-aws-credsImplementation details
ServiceLimitExceeded); the managed limit is 6,144auth --storeagainst one fails namingspinloop remote bootstrap, which is safe to re-runCloses #172