Об этом проекте

Launchstack — это движок на TypeScript для создания AI-приложений, поставляемый вместе с эталонным приложением на Next.js, которое демонстрирует, как всё это работает вместе. Движок охватывает приём данных, OCR, RAG, граф знаний, абстракции LLM и фоновые задачи, организованные в виде многоуровневых пакетов за типизированными портами. Структура репозитория Репозиторий представляет собой рабочее пространство pnpm, а не само приложение; команды корневого уровня ограничены lint, typecheck, format и скриптами Changesets, а команды пакетов должны запускаться с --filter. apps/web — это хост Next.js (UI, аутентификация, приём команд, синхронное чтение). apps/worker — это координатор долговечных рабочих процессов, который потребляет outbox приёма данных и размещает фоновые задачи. apps/landing — это отдельный публичный маркетинговый сайт, не входящий в self-hosted развёртывания. Движок находится в packages/protocol, evidence, application и adapters, при этом packages/core служит фасадом совместимости над ними, а packages/features содержит вертикальные функции. services/ содержит вычислительные сервисы вне рабочего пространства (конвертер документов на Node, а также сервисы транскрипции и редактирования документов на Python). Архитектура Core предоставляет порты, которые подключает хост; функции зависят только от этих портов и никогда не обращаются к приложению или фреймворку. Хост владеет окружением, аутентификацией и маршрутизацией и реализует такие порты, как storage (S3), job dispatch (Inngest), credits и RAG. createEngine(config) открывает пул базы данных и регистрирует слоты; несколько подсистем настраиваются через отдельные вызовы регистрации. Слоты читаются лениво, поэтому они должны быть установлены до первого использования. Состояние движка хранится в globalThis, что защищает от повторной оценки HMR в Next.js, но означает один движок на процесс. ESLint объявляет границы импорта core/features/host, и CI их обеспечивает; пакеты движка не читают process.env. Запуск Требования — Node 20+ и pnpm 10.15.1. Docker Compose — рекомендуемый путь, с lite-стеком и профилем OCR, который добавляет Docling; цели make охватывают up, logs, down и down-clean с очисткой томов. Без Docker вам нужен Postgres с расширением pgvector, затем запустите миграции, необязательный seed, dev-сервер Next.js, worker и, при желании, dev-UI Inngest. Веб-сервер разработки принимает загрузки, но ничего не обрабатывает, поэтому worker должен работать рядом с ним, иначе документы останутся в очереди. DATABASE_URL и BETTER_AUTH_SECRET обязательны для запуска. Конфигурация чата Чат обращается к одной конечной точке, реализующей протокол chat-completions OpenAI, по умолчанию к OpenAI-совместимой конечной точке Google Gemini через GOOGLE_AI_API_KEY. Другие провайдеры доступны при установке CHAT_BASE_URL и, при необходимости, CHAT_API_KEY; переменные отдельных поставщиков, такие как OPENAI_API_KEY или OLLAMA_BASE_URL, не настраивают чат. Какая модель обрабатывает общий чат, извлечение, рассуждения и изображения, объявляется в конфигурации YAML с пресетами и маршрутами; поведение не выводится из идентификаторов моделей, а специализированные маршруты отказывают безопасно. Конфигурация чата независима от embeddings, OCR, транскрипции, reranking и text-to-speech. Возможности эталонного приложения Приложение демонстрирует собственную аутентификацию с ролями на уровне рабочего пространства, доступом на уровне папок, приглашениями и журналом аудита; загрузку документов с необязательным OCR через нескольких провайдеров; семантический поиск PostgreSQL плюс pgvector; AI-чат с ограничениями, включая фильтр PII, заземление и порог уверенности; прогнозный анализ документов (определено восемь типов документов, при этом валидатор запросов в настоящее время принимает contract, financial, technical, compliance и general); маркетинговый конвейер для Reddit, X, LinkedIn и Bluesky; фоновые задачи на базе Inngest; и необязательную трассировку LangSmith. Источники приёма данных Конвейер читает экспорты из Notion, Google Docs/Sheets, Google Drive Takeout, Slack и GitHub без OAuth, наряду с полноценными адаптерами PDF, DOCX, PPTX, XLSX, Markdown, HTML, текста и изображений. Задокументированное предостережение: ZipAdapter пропускает адаптеры JSON и изображений для записей внутри архива, поэтому экспорт Slack, поставляемый как ZIP с JSON, не даёт страниц. Self-hosting и статус Развёртывания являются self-hosted, если только DEPLOYMENT_MODE=cloud; использование записывается, но не ограничивается, телеметрия или ресурсы CDN не загружаются, а первая регистрация становится владельцем рабочего пространства. Пакеты движка ещё не опубликованы в npm; до первого релиза Changesets движок используется путём запуска репозитория. Проект лицензирован под Apache-2.0 и приветствует вклад, с одной задачей на PR и Changesets для изменений движка.