mrcharles 325a36cc35 docs: upgrade README to the docs standard
Purpose kept; adds dated status line, scope/non-goals (no admin UI,
memory-only), today-vs-planned table, and navigable links into the
ukrrs/MOPAC design docs.

💘 Generated with Crush

Assisted-by: Crush:glm-5.2
2026-08-28 21:11:09 -05:00

mopac-keyproxy

A key-material proxy where the vault stays authoritative. Consumers receive opaque placeholder keys; real secrets live only in Bitwarden Secrets Manager and/or HashiCorp Vault and are resolved to real material at the wire, in memory, never persisted, with no admin UI to attack.

Status: 2026-08-28 — spec seed; design frozen, no code yet.

Scope

  • Placeholders in, real keys on the wire out: consumers (harness, CLIs, containers) hold mpk_... opaque refs only. A leaked placeholder is revoke-and-remap, not an incident — zero upstream exposure.
  • Backends: Bitwarden Secrets Manager REST (machine accounts) and HashiCorp Vault KV v2 + AppRole (official Go api pkg is MPL-2.0, vendored). Stdlib-first; NO official Bitwarden SDK (its source-available license is AGPL-incompatible).
  • Two shapes, one resolver: an HTTP hop for services, and a CLI (keyproxy get <ref>) for exec-style plumbing.
  • Memory-only material handling: fetch-on-demand, short TTL, never persisted, never written to logs; ref redaction everywhere.
  • Config-driven: generic, no organizational hosts/paths/defaults baked into code.

Non-goals

  • No admin UI — there is no admin surface at all; configuration only.
  • Not a secrets manager: the vault stays authoritative; keyproxy never becomes a second place secrets live.
  • No persistence of key material to disk, cache files, or crash dumps.
  • Not org-specific: TSYS policy lives outside this repo (loose-coupling rules for the MOPAC tool family).

Today vs planned

State
Today Spec only (this README + LICENSE). Design carried in the MOPAC harness DESIGN.md "Key proxy" section.
Planned Go implementation: placeholder->material resolver, Bitwarden Secrets Manager + Vault connectors, HTTP hop + get CLI, ref-redaction rules.

Design references

License

AGPLv3 — see LICENSE. (MIT fallback only if a license conflict still arises; none known today.)

S
Description
Vault-authoritative key proxy: placeholders to consumers, material only in Bitwarden/Vault. Go, AGPLv3. MOPAC family, standalone-composable.
Readme AGPL-3.0
83 KiB
Languages
Go 89.1%
Shell 5.6%
Python 4.8%
Makefile 0.5%