Headless y CI
Los valores por defecto de kovra asumen una persona frente a una Mac: la master key en el Keychain y las acciones sensibles protegidas detrás de un bioProve. Los entornos desatendidos — runners de CI, contenedores — no tienen ninguno de los dos. kovra también funciona ahí, en modo passphrase.
Modo passphrase (sin keyring)
Sección titulada «Modo passphrase (sin keyring)»Al definir KOVRA_PASSPHRASE, kovra deja de usar por completo el keyring del SO: deriva
la master key de 256 bits con Argon2id a partir de la passphrase más un salt estable y
no secreto guardado junto al vault (kdf.salt). Se inicializa el vault una vez
para crear el salt, y luego cada ejecución posterior deriva la misma clave:
export KOVRA_PASSPHRASE="$CI_VAULT_PASSPHRASE" # from your CI secret storekovra initConviene mantener la passphrase en el almacén de secretos del proveedor de CI — es lo único que desbloquea el vault, así que se la trata como la master key que deriva.
Confirmaciones sin biometría
Sección titulada «Confirmaciones sin biometría»Un bioProve necesita una persona. En un host sin hardware biométrico, kovra recurre al file broker: un comando protegido espera e imprime instrucciones, y una segunda sesión lo aprueba. En scripts se fuerza el canal de forma explícita:
export KOVRA_CONFIRMER=file # never attempt a biometric promptEsto tiene una consecuencia deliberada: las acciones high/prod no pueden automatizarse
por completo — siguen requiriendo a una persona, por diseño. Por eso, en CI:
- Los secretos
low/mediumse inyectan sin prompt — el camino cotidiano en CI. - La inyección de
high/prodsigue necesitando a una persona en el file broker — no hay bypass desatendido parakovra run.
El gate de lanzamiento del Dashboard puede omitirse en dev/CI/contenedores con --no-confirm
(o KOVRA_UI_NO_CONFIRM=1).
Un esquema de GitHub Actions
Sección titulada «Un esquema de GitHub Actions»jobs: test: runs-on: [self-hosted, macos] env: KOVRA_PASSPHRASE: ${ secrets.KOVRA_VAULT_PASSPHRASE } KOVRA_CONFIRMER: file steps: - uses: actions/checkout@v4 - name: Run tests with injected secrets run: kovra run --env dev -- npm testkovra run --env dev resuelve el .env.refs commiteado e inyecta los valores dev
(no high) directamente en npm test — sin escribir nada en disco, argv ni
el log.