Быстрый старт
Ядро — один бинарь, которому нужен только конфиг; БД (SQLite) он создаёт сам на старте, внешних сервисов не требуется.
cp config.example.yaml config.yaml # впиши llm.api_key и модель
eva-kernel --config config.yaml
Нет ключа под рукой — поставь llm.provider: mock, и ядро поднимется
впустую, для проверки:
cp config.example.yaml config.yaml # llm.provider: mock
nix develop -c cargo run -- --config config.yaml
curl 127.0.0.1:8090/health
Дальше вписываешь настоящий провайдер (anthropic, или openai — под ним
же Nous Portal, OpenRouter и любой локальный llama-server/vLLM через
base_url), персону в persona.file — и подключаешь клиентов к API.
Телеграм — отдельный модуль со своим токеном; ядру он
подключается через modules.servers.
Чем подключаться
Ядро — это API; человеку нужен клиент. Все они тонкие и ходят в одно и то
же ядро: чаты, память, навыки и личности общие, клиент — окно в один и тот
же список чатов; по полкам-folder его раскладывает Господин, а не клиенты.
| Клиент | Репозиторий | Стек | Кому |
|---|---|---|---|
| веб | eva/frontend | Nuxt 4 + Tailwind | с чего начать: браузер, ставить нечего (замок паролем — можно вешать наружу) |
| десктоп | eva/app | Tauri + Nuxt | окно с руками: файлы, команды и кодовые сессии на своей машине |
| андроид | eva/android | Kotlin + Compose | телефон; доверенный клиент со своими экранами памяти, крона и статистики |
| терминал | eva/tui | Python + Textual | по ssh и там, где GUI нет; тоже с руками и кодовым режимом |
| мастерская переводов | eva/mtl | Tauri + Nuxt | узкая задача: переводной патч к игре — движки, ресурсы, обратная запись |
Коротко: посмотреть — веб, работать руками — десктоп или терминал. Файлы и команды Господина исполняет сам клиент (клиентские операции), поэтому браузер их не трогает вовсе. Телеграм в этот список не входит — это не клиент, а поверхность-модуль со своим токеном.
Файлы конфига
Конфиг — YAML, TOML или JSON (формат по расширению файла).
--config (он же -c) можно указать несколько раз — файлы сливаются
в один, поздний перекрывает ранний; секции разных форматов смешиваются
свободно. Удобно: несекретная база отдельным файлом, секреты (api_key,
токен) — своим, с правами 600.
Поверх файлов накладываются переменные окружения с префиксом EVA_,
вложенность — через двойное подчёркивание, и env приоритетнее
файлов:
EVA_LLM__MODEL__GENERAL="moonshotai/kimi-k3" \
EVA_SERVER__LISTEN="0.0.0.0:8080" \
eva-kernel --config config.yaml
Полный аннотированный пример — config.example.yaml в корне репозитория.