Представлен Janus: один Go-бинарник запускает GGUF-модели через Vulkan

Проект Janus выложен на GitHub (репозиторий Vibra-Ingenn/Janus) и показан на Hacker News в формате Show HN. По описанию в README, это один бинарник на Go, который запускает модели в формате .gguf на вашей машине, на видеокарте или на процессоре, и предоставляет OpenAI-совместимый API. Python, Docker и Ollama для этого не требуются.
Инференс (локальный запуск модели) выполняет llama.cpp: через Vulkan на видеокартах AMD, Intel и Nvidia либо в режиме запасного варианта на CPU. Сервер отдаёт эндпоинты /v1/chat/completions и /v1/models; в примерах он слушает локальный адрес 127.0.0.1 на порту 8990. Подключить его можно к Cursor, Cline или любому клиенту OpenAI, а также вызывать из командной строки (curl, PowerShell, скрипты). В клиентах в поле API Key ничего вводить не нужно.
Среди возможностей, перечисленных в README: горячая смена моделей (файл .gguf меняется без перезапуска сервера), поддержка «думающих» моделей (рассуждения отделяются в поле reasoning_content), автоопределение шаблона чата по метаданным GGUF, а на Windows, единственный .exe без зависимостей.
Установка на Windows: клонировать репозиторий и запустить build.ps1, скрипт скачивает готовые DLL llama.cpp с Vulkan и собирает dist\janus.exe. Модель кладётся в папку models; в проекте есть загрузчик cmd/modelget для скачивания с Hugging Face (в примере, Llama-3.2-3B-Instruct в квантовании Q8_0), можно взять и любой другой GGUF. Затем копируется .env.example в .env, где задаются INFERENCE_BACKEND=vulkan, путь к модели JANUS_MODEL_PATH и лимит JANUS_MAX_TOKENS (в примере 4096). После запуска janus.exe в браузере открывается http://127.0.0.1:8990, а проверить работу можно запросом на /health.
На Linux описан путь сборки из исходников: go mod tidy, go build, копирование .env.example в .env; если Vulkan нет, в .env ставится INFERENCE_BACKEND=cpu. Рядом с бинарником или в LD_LIBRARY_PATH должна лежать libllama.so. По диску нужно рассчитывать на размер модели (часто 2, 8 ГБ на модель) плюс примерно 50 МБ на Janus и llama.dll. Структура кода: cmd/janus (сервер), cmd/modelget (загрузчик), internal/engine (бэкенд llama.cpp Vulkan/CPU), internal/bridge (загрузчик DLL и привязки FFI), internal/singleton (защита от второго экземпляра). Лицензия, MIT, вклад приветствуется.
Ключевые факты
- Janus, один бинарник на Go, запускающий .gguf-модели локально на GPU или CPU; Python, Docker и Ollama не требуются.
- Инференс идёт через llama.cpp: Vulkan на AMD, Intel и Nvidia либо запасной режим на процессоре.
- OpenAI-совместимый API (/v1/chat/completions, /v1/models) подключается к Cursor, Cline и другим клиентам OpenAI; есть горячая смена моделей и поддержка «думающих» моделей с полем reasoning_content.
- Под Windows сборка делается скриптом build.ps1; под Linux описана только сборка из исходников и нужна libllama.so.
- На диске нужно место под модель (часто 2, 8 ГБ) плюс около 50 МБ на Janus и llama.dll; лицензия MIT.
Почему это важно
Janus упрощает запуск локальных моделей: вместо связки из Python, Docker или Ollama здесь один Go-бинарник, который умеет работать на видеокартах трёх производителей через Vulkan и на процессоре. Для тех, у кого нет видеокарты Nvidia, это удобный вариант. Но сам проект, ещё один запуск llama.cpp с OpenAI-совместимым API, и в README нет данных о том, чем он быстрее или лучше уже существующих решений.
Кому это важно
Разработчикам, которые хотят подключить локальную модель к Cursor, Cline или своему коду через привычный OpenAI-совместимый API. Пользователям Windows с видеокартами AMD или Intel, которым нужен простой запуск без Python и Docker. Тем, кто хочет менять .gguf-модели без перезапуска сервера.
Как это применить
На Windows: клонировать репозиторий, запустить .\build.ps1 (скрипт скачает DLL llama.cpp с Vulkan и соберёт dist\janus.exe), положить .gguf-файл в models\ (можно взять загрузчик modelget или скачать с Hugging Face), скопировать .env.example в .env и указать INFERENCE_BACKEND, JANUS_MODEL_PATH и JANUS_MAX_TOKENS, затем запустить janus.exe. В клиенте указать Base URL http://127.0.0.1:8990/v1, а поле API Key оставить пустым. На Linux нужны Go, сборка из исходников и libllama.so рядом с бинарником или в LD_LIBRARY_PATH. Лицензия MIT.
Можно ли доверять
Пересказ основан на README репозитория. Авторы и команда, стоящие за Janus, в нём не названы: Vibra-Ingenn фигурирует только в адресе репозитория. Бенчмарков, замеров скорости в токенах в секунду и сравнений с llama.cpp, Ollama или LM Studio в источнике нет, поэтому утверждения о производительности и совместимости с конкретными видеокартами и драйверами проверить по нему нельзя.
Риски и подводные камни
В README нет списка проверенных видеокарт, драйверов и моделей: в примере использована только Llama-3.2-3B-Instruct. О поддержке macOS ничего не сказано, описаны лишь Windows и Linux. Для Linux приведена только сборка из исходников, готовый бинарник не упомянут, а libllama.so нужно обеспечить самостоятельно. Номер версии и дата релиза в источнике не указаны, так что зрелость проекта по README оценить сложно.