Migrate Kamal secrets from 1Password to Bitwarden (consumer)#34
Merged
Conversation
Preserve the working 1Password setup so future-you can swap back with a single cp. The two new files are verbatim copies of .kamal/secrets and .kamal/secrets.beta as of the last 1P-driven deploy. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Same set of secret keys; only the storage backend changes. Prod fetches from a Bitwarden item `quantic-prod`; beta from `quantic-beta`. Each item holds the relevant secrets as custom fields. Why consumer Bitwarden over Bitwarden Secrets Manager (BWS): BWS Free caps at 3 projects per org, which would bite us as more services land. Consumer has no item cap on the free tier. LOGO_SERVICE_API_KEY stays prod-only (matching the prior 1P setup — beta-pulse doesn't call logo-service). This commit alone breaks deploy until the workflow change in the next commit, so don't deploy from this state. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
d8b867d to
f152501
Compare
This was referenced May 24, 2026
f152501 to
2161863
Compare
Replaces the 1Password CLI install step with `npm install -g @bitwarden/cli`, and the `OP_*` env block with `BW_CLIENTID` + `BW_CLIENTSECRET` + `BW_PASSWORD` pulled from repo-level GitHub Actions secrets. env.sample and README updated to reflect the new bootstrap flow. README also documents how to roll back to 1Password using the preserved `.kamal/secrets.*.1password.example` snapshots. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2161863 to
3af106d
Compare
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.
Third of three coordinated PRs migrating deploy secrets from 1Password to consumer Bitwarden Password Manager (free tier). Sister PRs:
Three commits
.kamal/secrets+.kamal/secrets.betaas.1password.example— verbatim, no behaviour change.bitwardenadapter. Prod fetches from a Bitwarden itemquantic-prod(custom fields); beta fromquantic-beta.bwCLI via npm on each run; env block swapped fromOP_*toBW_*;env.sampleand README updated.Before merging — operator prereqs
See dividend-portfolio#168 for the full setup (same Bitwarden vault covers all three services). Pulse-specific keys:
SECRET_KEY_BASE(both envs),LOGO_SERVICE_API_KEY(prod only).Test plan
bundle exec kamal secrets fetch --adapter bitwarden --from quantic-prod KAMAL_REGISTRY_PASSWORDreturns the valueSECRET_KEY_BASE)Rollback
cp .kamal/secrets.1password.example .kamal/secrets cp .kamal/secrets.beta.1password.example .kamal/secrets.beta # Then revert the workflow change manually.1P vault was never touched.
🤖 Generated with Claude Code