Les deux modes
elding run
Injecte les secrets en variables d’environnement (
process.env). Simple, comme un
dotenv amélioré. La clé est en mémoire de ton app.elding proxy
Ton app utilise des placeholders ; le proxy injecte la vraie clé dans la requête sortante.
La clé n’entre jamais dans la mémoire de ton app.
Comparaison
elding run | elding proxy | |
|---|---|---|
| Types de secrets | tous (clés API, DB, config) | clés d’API HTTP uniquement |
| Langages | tous (Python, Go, Ruby…) | tout ce qui passe par HTTP |
| Clé en mémoire de l’app | Oui | Non |
| Protège contre une IA / dépendance vérolée | Non | Oui |
| Simplicité | Maximale | une ligne de SDK (configure) |
| Cas d’usage | DB, config, scripts, CI, autres langages | dev avec IA, clés d’API HTTP |
Le proxy n’intercepte que le trafic HTTP sortant : il protège les clés d’API HTTP
(OpenAI, Stripe…). Une connexion à une base de données (
DATABASE_URL) passe en TCP, hors
de portée du proxy → elle s’utilise via run ou secret().Quand utiliser quoi
run: pour un job ponctuel (migration, build CI) où la simplicité prime.proxy: au quotidien quand tu codes avec une IA, ou en production pour que la clé reste hors de la mémoire de l’app.
Le mode
run peut être désactivé au niveau de l’organisation (allowEnvMode) pour forcer
le proxy zero-.env.En production
Le proxy a besoin de tourner comme un process à côté de ton app. Ça marche sur un conteneur, une VM ou Kubernetes, mais pas en serverless (Vercel, Lambda), où aucun process ne peut rester actif en continu.| Où tu déploies | Proxy possible ? | Ce qui se passe |
|---|---|---|
| Conteneur / VM / Kubernetes | Oui | Proxy : la clé reste hors de l’app. |
| Serverless (Vercel, Lambda) | Non | Bascule en mode client : la clé est récupérée en mémoire. |
Pas de panique : en production, il n’y a pas d’agent IA dans la boucle. La menace que
le proxy règle (ton IA qui voit tes clés) est une menace de développement. En serverless,
le mode client est donc suffisant, et tu gagnes quand même : plus de
.env, un seul token,
rotation et révocation centralisées.configure(), tu n’as rien à changer : le SDK utilise le proxy
s’il tourne, sinon il bascule en mode client automatiquement. Même code en dev et en prod.