Skip to content

Latest commit

 

History

30 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LLM Butler

LLM Butler - это учебный C++20 CLI-проект, с которого начинается разработка будущего local-first runtime manager для LLM backend'ов.

Сейчас это ранний V0-скелет:

  • проект собирается в один CLI-бинарь;
  • поддерживает базовые команды help, init, status;
  • init создаёт базовую структуру каталогов в ~/Butler и безопасно работает при повторном запуске;
  • status только проверяет состояние workspace и не меняет файловую систему.

Возможности V0

  • butler help и butler --help показывают справку по доступным командам.
  • butler init создаёт ~/Butler и базовые подпапки logs, artifacts, runtime.
  • повторный butler init не считается ошибкой, если директории уже существуют.
  • butler status проверяет root, logs, artifacts, runtime и сообщает итог: Butler is initialized или Butler is not initialized.
  • неизвестная команда возвращает ошибку и подсказывает вызвать help.

Сборка Через CMake

cmake -S . -B build
cmake --build build

После сборки бинарь будет доступен как build/butler.

Тесты

ctest --test-dir build --output-on-failure

Ручная Сборка

# нужно еще заранее установить библиотеку <nlohmann/json.hpp> 
# т.к она не является дефолтной в с++, на arch linux делается следующим образом 
# sudo pacman -S nlohmann-json
mkdir -p build
g++ -std=c++20 apps/cli/main.cpp src/cli/commands.cpp src/fs/filesystem.cpp src/fs/filesystem_ops.cpp src/fs/app_paths.cpp src/fs/butler_config.cpp -Iinclude -o build/butler

Запуск

./build/butler
./build/butler --help
./build/butler help
./build/butler init
./build/butler status
./build/butler abracadabra

Описание команд

butler init

  • создаёт директории ~/Butler, ~/Butler/logs, ~/Butler/artifacts, ~/Butler/runtime;
  • печатает отдельные сообщения для созданных или уже существующих директорий;
  • завершает работу сообщением Butler is initialized, только если все обязательные директории в корректном состоянии.

butler status

  • печатает путь до workspace Butler;
  • сообщает статус каждой обязательной директории;
  • не создаёт и не исправляет каталоги;
  • завершает работу сообщением Butler is initialized или Butler is not initialized.

Структура Проекта

apps/cli/main.cpp                 # точка входа CLI
include/butler/cli/commands.hpp  # объявления CLI-команд
include/butler/fs/app_paths.hpp  # пути приложения Butler
include/butler/fs/filesystem.hpp # файловые утилиты и базовый root path Butler
include/butler/fs/filesystem_ops.hpp # операции с директориями Butler
src/cli/commands.cpp             # реализация CLI-команд
src/fs/app_paths.cpp             # реализация путей приложения
src/fs/filesystem.cpp            # реализация базовых файловых утилит
src/fs/filesystem_ops.cpp        # реализация операций с директориями Butler
CMakeLists.txt                   # конфигурация сборки через CMake

About

local-first и self-hosted runtime-manager для LLM backend'ов и model artifacts

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages