Backend Secrets
Los Backend Secrets son secretos de runtime genéricos, definidos por ti, que referencias por nombre en tus endpoints y workflows. Están cifrados en reposo, son de solo escritura y nunca se envían al navegador — ideales para claves de firma de webhooks, tokens internos o cualquier valor sensible que tu backend necesite en ejecución.
Los gestionas en la página Variables (Ship → Frontend → Variables, ruta /variables), donde Backend Secrets es la pestaña por defecto.
Cifrados y de solo escritura
Los Backend Secrets se cifran con Fernet (clave por proyecto) y se descifran únicamente en el momento de la ejecución dentro del engine. Una vez guardado, no puedes volver a leer el valor desde el dashboard — solo sobrescribirlo o eliminarlo. Nunca aparecen en tu bundle de cliente.
Añadir un secreto
Abre la pestaña Backend Secrets
En el dashboard de tu proyecto ve a Frontend → Variables. La pestaña Backend Secrets está abierta por defecto.
Añade un secreto por nombre
Haz clic en Añadir secreto, introduce un nombre (por ejemplo STRIPE_WEBHOOK_SIGNING_KEY) y el valor, y guarda. El valor se cifra al instante.
Referéncialo en un workflow
Lee el secreto desde cualquier endpoint o workflow por su nombre — sin redeploy. Los secretos nuevos están disponibles para el engine de inmediato.
Referenciar un secreto
Usa el nombre del secreto de dos formas equivalentes dentro de tus endpoints y workflows:
${ secrets.STRIPE_WEBHOOK_SIGNING_KEY }
Ambas formas se resuelven al valor descifrado en el momento de la ejecución. Los secretos se conectan al engine a través de /api/engine/{id}/secrets.
El nodo de código no puede leer Backend Secrets
El nodo de workflow javascript_code usa sus propias env_vars en texto plano, expuestas como ctx.env — no tiene acceso a ctx.secrets ni a Credenciales tipadas. Mantén los valores sensibles fuera de env_vars; usa mejor Backend Secrets en los nodos de workflow que lo rodean.
Tres sitios para configurar
DYPAI tiene tres almacenes distintos. Los Backend Secrets quedan en el medio — valores privados de runtime, pero genéricos (no atados a un proveedor concreto).
| Almacén | Dónde | Visibilidad | Úsalo para |
|---|---|---|---|
| Variables Frontend (Build) | Frontend → Variables → Frontend (Build) | Público — integrado en el bundle del navegador | URL base de API, claves públicas (pk_), feature flags |
| Backend Secrets | Frontend → Variables → Backend Secrets | Privado — cifrado, nunca llega al navegador | Secretos de runtime por nombre, leídos como ctx.secrets.X / ${ secrets.X } |
| Credenciales | Build → Credentials | Privado — cifrado, tipado | Claves de proveedores de terceros (Stripe sk_, OpenAI, Slack…) usadas por los nodos de integración |
¿Secreto o Credencial?
Si un valor pertenece a una integración concreta que tiene su propio nodo (Stripe, Slack, Resend…), guárdalo como Credencial tipada. Si es un secreto de runtime genérico que solo necesitas leer por nombre — una clave de firma, un token de API interno — usa un Backend Secret.
Editar o eliminar un secreto
- Actualizar: Haz clic en el secreto, introduce un valor nuevo y guarda. Sobrescribes el valor cifrado (no puedes leer el anterior).
- Eliminar: Haz clic en el icono de papelera. El secreto se elimina y deja de resolverse en los workflows.