Sobre el proyecto
Launchstack es un motor TypeScript para construir aplicaciones nativas de IA, que se distribuye junto con una aplicación de referencia Next.js que demuestra cómo encajan las piezas. El motor cubre ingesta, OCR, RAG, un grafo de conocimiento, abstracciones de LLM y trabajos en segundo plano, organizados como paquetes en capas detrás de puertos tipados.
Estructura del repositorio
El repositorio es un espacio de trabajo pnpm, no una aplicación en sí; los comandos de nivel raíz se limitan a lint, typecheck, format y scripts de Changesets, y los comandos de paquetes deben dirigirse con --filter. apps/web es el host de Next.js (UI, autenticación, aceptación de comandos, lecturas síncronas). apps/worker es el coordinador de flujos de trabajo duraderos que consume la cola de salida de ingesta y aloja trabajos en segundo plano. apps/landing es el sitio de marketing público separado y no forma parte de los despliegues autogestionados. El motor vive en packages/protocol, evidence, application y adapters, con packages/core como fachada de compatibilidad sobre ellos, y packages/features que contiene características verticales. services/ contiene servicios de cómputo que no son parte del espacio de trabajo (un convertidor de documentos Node, además de servicios de transcripción y edición de documentos en Python).
Arquitectura
Core expone puertos que el host conecta; las características dependen solo de esos puertos y nunca acceden a la aplicación o al framework. El host posee el entorno, la autenticación y el enrutamiento, e implementa puertos como almacenamiento (S3), despacho de trabajos (Inngest), créditos y RAG. createEngine(config) abre el grupo de conexiones de la base de datos y registra ranuras; varios subsistemas se configuran mediante llamadas de registro separadas. Las ranuras se leen de forma perezosa, por lo que deben establecerse antes del primer uso. El estado del motor se almacena en globalThis, lo que protege contra la re-evaluación de HMR de Next.js pero significa un motor por proceso. ESLint declara los límites de importación core/features/host y CI los hace cumplir; los paquetes del motor no leen process.env.
Ejecución
Los requisitos son Node 20+ y pnpm 10.15.1. Docker Compose es la ruta recomendada, con una pila ligera y un perfil OCR que añade Docling; los objetivos de make cubren up, logs, down y down-clean para limpiar volúmenes. Sin Docker, necesitas Postgres con la extensión pgvector, luego ejecutar migraciones, una semilla opcional, el servidor de desarrollo Next.js, el worker y, opcionalmente, la UI de desarrollo de Inngest. El servidor web de desarrollo acepta cargas pero no procesa nada, por lo que el worker debe ejecutarse junto a él o los documentos permanecen en cola. DATABASE_URL y BETTER_AUTH_SECRET son necesarios para arrancar.
Configuración del chat
El chat llega a un único endpoint que implementa el protocolo de chat-completions de OpenAI, con valor predeterminado al endpoint compatible con OpenAI de Google Gemini a través de GOOGLE_AI_API_KEY. Otros proveedores se alcanzan configurando CHAT_BASE_URL y opcionalmente CHAT_API_KEY; variables específicas del proveedor como OPENAI_API_KEY o OLLAMA_BASE_URL no configuran el chat. Qué modelo maneja el chat general, la extracción, el razonamiento y las imágenes se declara en una configuración YAML con ajustes preestablecidos y rutas; el comportamiento no se infiere de los IDs de modelo, y las rutas especializadas fallan de forma cerrada. La configuración del chat es independiente de embeddings, OCR, transcripción, reordenamiento y texto a voz.
Capacidades de la aplicación de referencia
La aplicación demuestra autenticación de primera parte con roles por espacio de trabajo, acceso a nivel de carpeta, invitaciones y un registro de auditoría; carga de documentos con OCR opcional a través de varios proveedores; PostgreSQL más recuperación semántica pgvector; chat de IA con salvaguardas que incluyen un filtro PII, fundamentación y una puerta de confianza; análisis predictivo de documentos (ocho tipos de documentos definidos, con el validador de solicitudes que actualmente acepta contrato, financiero, técnico, cumplimiento y general); un pipeline de marketing para Reddit, X, LinkedIn y Bluesky; trabajos en segundo plano respaldados por Inngest; y rastreo opcional de LangSmith.
Fuentes de ingesta
El pipeline lee exportaciones de Notion, Google Docs/Sheets, Google Drive Takeout, Slack y GitHub sin OAuth, junto con adaptadores de primera clase para PDF, DOCX, PPTX, XLSX, Markdown, HTML, texto e imágenes. Una advertencia documentada: ZipAdapter omite los adaptadores JSON e imagen para entradas dentro de un archivo, por lo que una exportación de Slack enviada como un ZIP de JSON no produce páginas.
Autogestión y estado
Los despliegues son autogestionados a menos que DEPLOYMENT_MODE=cloud; el uso se registra pero no se limita, no se cargan telemetría ni activos CDN, y el primer registro se convierte en el propietario del espacio de trabajo. Los paquetes del motor aún no se publican en npm; hasta el primer lanzamiento de Changesets, el motor se consume ejecutando el repositorio. El proyecto tiene licencia Apache-2.0 y acepta contribuciones, con un problema por PR y Changesets para cambios en el motor.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.