DeerFlow
Desplegar DeerFlow: loopback, estado explícito y un solo proceso
Examina la topología de Compose, los montajes de credenciales y la propiedad local de las ejecuciones antes de exponer una instancia.
Qué aprenderás
- Qué servicios debe iniciar make up
- Distingue configuración inmutable y datos modificables
- Escala después de identificar al propietario de la ejecución
Antes de empezar
- Conceptos básicos de Python, HTTP y contenedores
- Una tarea propia con criterios de aceptación
Explica el límite de implementación y aplica la lista o el ejercicio aislado del capítulo.
Conclusiones clave
- Loopback del host y escucha interna son distintos.
- Respalda el estado modificable además del código.
- Un proceso Gateway es la base documentada.
Qué servicios debe iniciar make up
El repositorio documenta make up para las imágenes y servicios de producción. El Compose inspeccionado define nginx, el frontend Next.js, un Gateway FastAPI y Redis, además de un aprovisionador opcional. El Gateway ejecuta uvicorn en su red de contenedores y utiliza un solo proceso por defecto. No es un frontend estático capaz de ejecutar agentes por sí mismo.
El puerto del host de nginx se vincula por defecto a 127.0.0.1:2026. Escuchar en 0.0.0.0 dentro del contenedor no equivale a exponer públicamente el host. Conserva loopback durante la inicialización. Publica únicamente detrás de tu frontera TLS y de autenticación; modificar BIND_HOST es una decisión de seguridad, no un arreglo rutinario para acceder desde otro equipo.
Distingue configuración inmutable y datos modificables
Compose monta config.yaml como solo lectura, pero permite escribir extensions_config.json porque las API del Gateway pueden actualizar MCP y configuración relacionada con habilidades. También monta el directorio persistente de DeerFlow y habilidades de solo lectura. La copia de seguridad debe reflejar esa diferencia: el código fuente no basta para restaurar datos ni cambios realizados desde la aplicación.
El frontend recibe BETTER_AUTH_SECRET y el Gateway utiliza un token interno diferente. La composición base no monta el socket Docker del host ni directorios personales de autenticación CLI; esas capacidades requieren superposiciones explícitas. Antes de habilitarlas, revisa imágenes, credenciales, montajes y alcance de red. La palabra contenedor no constituye una evaluación completa de aislamiento.
Escala después de identificar al propietario de la ejecución
Redis participa en el puente de eventos, pero el comentario del comando del Gateway explica que las ejecuciones activas permanecen en memoria del proceso. El README describe requisitos adicionales de Postgres, latidos de arrendamiento y eventos duraderos para varios procesos, junto con limitaciones de coordinación restantes. Aumentar GATEWAY_WORKERS por sí solo no garantiza cancelación, deduplicación ni recuperación fiables.
Comprueba por separado preparación, acceso autenticado, una tarea limitada, recuperación del archivo y reinicio. Fija el código y los digests de imágenes y prepara la restauración antes de actualizar. La lista siguiente no reemplaza Compose y no se ejecutó contra una instancia real; registra una base restrictiva y el estado de despliegue todavía no verificado.
Pasos de implementación
- 1
Revisa la configuración y los secretos necesarios sin registrar sus valores.
- 2
Inspecciona Compose con las rutas previstas y conserva loopback.
- 3
Utiliza make up solo en el entorno de evaluación preparado.
- 4
Prueba autenticación, archivos y restauración antes de la exposición pública.
Ejemplo para copiar
{"BIND_HOST":"127.0.0.1","PORT":2026,"GATEWAY_WORKERS":1,"dockerSocketMounted":false,"personalCliDirectoriesMounted":false,"runtimeVerified":false}Preguntas frecuentes
¿Redis vuelve seguras todas las operaciones entre procesos?
No. La entrega de eventos y la propiedad de ejecución son diferentes; la configuración documenta límites locales y coordinación adicional.
¿La configuración de extensiones es de solo lectura?
No en la composición revisada. El Gateway puede modificarla, por lo que debe incluirse en la gestión de estado y copias de seguridad.
Fuentes
- README.mdFuente verificada 2026-09-08
- LICENSEFuente verificada 2026-09-08
- backend/README.mdFuente verificada 2026-09-08
- backend/pyproject.tomlFuente verificada 2026-09-08
- backend/docs/middleware-execution-flow.mdFuente verificada 2026-09-08
- backend/packages/harness/deerflow/agents/lead_agent/agent.pyFuente verificada 2026-09-08
- backend/packages/harness/deerflow/agents/middlewares/loop_detection_middleware.pyFuente verificada 2026-09-08
- backend/packages/harness/deerflow/agents/middlewares/_bounded_dict.pyFuente verificada 2026-09-08
- backend/packages/harness/deerflow/config/loop_detection_config.pyFuente verificada 2026-09-08
- backend/packages/harness/deerflow/sandbox/local/local_sandbox_provider.pyFuente verificada 2026-09-08
- backend/app/gateway/auth_middleware.pyFuente verificada 2026-09-08
- backend/app/gateway/csrf_middleware.pyFuente verificada 2026-09-08
- docker/docker-compose.yamlFuente verificada 2026-09-08