self-serve secrets #2
Labels
No labels
bug
discussion
duplicate
enhancement
goal
help wanted
horizon:backlog
horizon:governance
horizon:mvp
invalid
operator-decision
question
roadmap
wontfix
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
open-platform/mitosis#2
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
users should be able to configure their own environment variables. use vault as the backend
STATUS: self-serve secrets is DELIVERED (as of this session). Handoff context for the next agent.
What shipped (merged to
mainon origin):sync-envworkflow reads them via${{ toJSON(secrets) }}-> mcpsecrets-cliseals them into<app>-user-env(sops) -> app consumes via chartextraEnvFrom-> pod auto-rolls. Validated end-to-end (weather app).PLAT_DEVlists secret NAMES that are "development"; those seal into<owner>--<app>--devand the dispatcher injects them into the Claude builder's run env (throwaway tokens the--dangerously-skip-permissionsagent may use freely while coding). Loud seam: a PLAT_DEV name with no secret is a HARD sync failure + a reconciliation table.mint_agent_tokenMCP bearer (mcp authorizes per-(owner,app)), and.forgejo/workflows/**is branch-protected so it can't add atoJSON(secrets)-exfil workflow. RED-TEAM VALIDATED on gc.local (all 5 guarantees PASS, app still builds). #16 is CLOSED.Version map (all merged to main): mcp 0.23.15 (secrets-cli + dev-scope + #16 authz) · agents 0.7.3 (dev inject + spawnEnv allowlist + resilience + #16 deploy-key/scoped-MCP) · _app-template (sync-env + PLAT_DEV + auto-roll) · mitosis (DNS coredns fix #12).
DEPLOY STATE — READ THIS:
ssh vxrail-> clusterk3d-platgold2(READ-ONLY for diagnosis; the host's default kubectl targets it). NEVER touch espo/nix01.Open PRs:
plat/mitosis#20(refreshed bundled seed carrying the stack — toward #14),#18(#16 germinate provisioning — HAS A CONFLICT, needs rebase onto main). Non-secrets efforts still in PRs: Grafana (#8, mcp#1, gitops#2), agent-work (agents#2), docs (#9, #10).Next steps: (1) validate a fresh germination from the refreshed seed once #19 is fixed, then merge #20. (2) deploy the stack to open-platform.sh when the owner wants (order: mcp 0.23.15 FIRST, then agents 0.7.3 together; add
config.forgejoSsh: forgejo-ssh.forgejo.svc.cluster.local:22to the agents HelmRelease; openssh-client already in the agents image; post-deploy assert a fresh app rejects a workflow push + agent env has no PAT). (3) harden #19. (4) rebase #18. (5) preview-scope secrets (Phase 3 of #15) + streaming (#17) remain.Audit (team-board): DELIVERED and validated end-to-end — closing.
Shipped (all merged):
secrets-cliseals sops<app>-user-env→ chartextraEnvFrom→ pod auto-rollssync-envworkflow + auto-roll460a9dd4) — the #16 credential boundary that makes the scoping enforceable (red-teamed)Behavior verified live: end-to-end on real apps (weather; wb-rob2 clockface first-try); today's wb-gate daughter:
rotate_age_keypreserves a live app secret, old key decrypts nothing.Backend note: the body suggested Vault; the shipped model is sops + Forgejo-native (Actions secrets as the write surface, fork-resealing preserves sovereignty) — rationale in the SEC-3 threat model. Open PR #9 carries the older Vault proposal for this issue (no closing keyword — safe); treat it as superseded.
Remaining tightenings live on their own issues: #13 (FQDN egress), #17 (observability), #42/#43 (policy Enforce flip).