Qué entrega el panel. Se combinan por coma:
SNAKE_ORM_DEBUG=ssr,envelope,timing
ssr · panel HTML inyectado en la respuesta
envelope · el debug en el JSON, bajo la clave snakeorm
timing · cabecera Server-Timing
sidecar · un token y su propia página en /__snake__/{token}
otel · DECLARADO y sin implementar: encenderlo no entrega nada y avisa
Solo sugiere índices para queries más lentas que X ms (por debajo, un índice no cambia nada):
SNAKE_ORM_ADVISE_MS=10
O tipado en código: SnakeDebugConfig(advise_min_ms=25)
La regla: si la aplicación lo necesita para funcionar, va en config; si solo lo necesita esa invocación, va en flag.
SnakeOrmConfig · databases, debug, advise_ms, migrations_dir, language
Flags del comando: --out, --schema, --keep-underscores
--database no sobrescribe nada: ELIGE una de las conexiones que declara la config. Un nombre que no esté no se puede crear desde el comando.
En Django no se declara aparte: el CLI sube hasta manage.py, lee su DJANGO_SETTINGS_MODULE y traduce settings.DATABASES + settings.SNAKEORM al mismo objeto.
Los que entregan el SQL a quien pide —ssr, envelope y sidecar— se caen con production=True, aunque los configures. timing se queda: mide, no cuenta.
SNAKE_ORM_PRODUCTION=true
Del entorno no se adivina nada: si hay un canal de riesgo encendido y nadie lo ha declarado —ni esta variable, ni production= en el middleware, ni SnakeDebugConfig— el arranque se niega en vez de elegir un defecto.