Skip to main content

llama-buddy

A friendly CLI wrapper for llama.cpp

Manage, download, and serve local LLMs with a single command. Think of it as an ollama-like experience built on top of llama-server.

Python 3.10+ License: MIT PyPI


Features

  • Background server — start/stop/restart llama-server as a daemon
  • Multi-model routing — uses llama.cpp's own preset file, so nothing llb writes is llb-specific
  • Interactive downloads — search HuggingFace, pick a quant, download with progress and resume
  • Rich terminal UI — tables, panels, interactive selectors, and live search
  • GGUF inspector — view model metadata, architecture, and sampling parameters
  • Server props — inspect active sampling parameters on loaded models
  • Sampling sync — automatically applies GGUF-recommended sampling params to your preset
  • Per-model settings — context size, GPU layers, flash attention, and more
  • Multi-token prediction — models that ship an MTP head get speculative decoding switched on by themselves. A head shipped as a separate file is downloaded with the model and only wired in once the installed llama.cpp is confirmed to load it; the check runs again after every llama.cpp upgrade
  • Idle sleeping — llama-server releases the weights of a model after a configurable idle timeout
  • VRAM tracking — automatically parses server logs to show memory usage per model
  • Live changes — downloads, removals and settings changes reload the running router's model list instead of restarting it

Screenshots

Model listing — llb models

llb models

Interactive download — llb download

llb download

llb download quantization

Model info — llb info

llb info

Installation

pipx install llama-buddy

Or with uv:

uv tool install llama-buddy

This installs the llb command into an isolated environment and adds it to your PATH.

Prerequisites

  • Python 3.10+
  • llama.cpp installed and llama-server on your PATH

Quick start

# Download a model (interactive search)
llb download

# Or specify directly
llb download mistralai/Ministral-3-3B-Instruct-2512-GGUF:Q4_K_M

# Start the server
llb start

# List all models
llb models

# Chat with a model (uses llama-cli)
llb chat

# Inspect model metadata
llb info

# Show active sampling params for a loaded model
llb props

# Apply GGUF-recommended sampling params to all models
llb info --apply-sampling

# Configure settings (interactive TUI)
llb settings

# Open the web UI in your browser
llb open

# Stop the server
llb stop

Commands

Command Description
llb start Start llama-server in the background. Extra args are forwarded.
llb stop Stop the running server.
llb restart Restart the server.
llb status Show whether the server is running.
llb models List all models with status, size, VRAM usage, and grouping. Supports --sort size.
llb download [model] Download a model. Interactive HF search when no model given.
llb remove [model] Remove a model with confirmation dialog. --keep-files to preserve GGUFs.
llb info [model] Show GGUF metadata. Interactive selector when no model given.
llb info --apply-sampling [model] Write GGUF sampling params into the preset. All models when no model given.
llb props [model] Show active server sampling params for a loaded model.
llb settings Interactive editor for the preset's [*] section and per-model sections.
llb chat [model] Interactive chat via llama-cli. Model selector when no model given.
llb open Open the llama-server web UI in your browser.
llb logs Tail the server log file.

Configuration

llb keeps no configuration format of its own. Settings live in llama.cpp's preset file, which llama-server --models-preset reads, and the port lives in llama.cpp's config.ini. Anything llb writes works the same without llb.

File Purpose
~/.config/llama/models.ini The preset file, unless you already have one (see below)
~/.config/llama.cpp/config.ini llama.cpp's own config; llb only writes port there, and only when it is not 8080

The router lists every cached model by itself, so the preset only has a section for a model whose settings differ from the defaults. [*] holds the settings for all models; a model's own section overrides them. Defaults are llama-server's own: context from the model (shrunk to fit memory), no idle sleep. llb edits the file line by line, so comments and hand-written keys survive.

Using your own preset file

If you already point llama-server at a preset, llb uses that one instead. It looks at LLAMA_ARG_MODELS_PRESET, then models-preset in ~/.config/llama.cpp/config.ini. Sections can give a model any name and point it at an HF repo or a local file:

[*]
sleep-idle-seconds = 300

[coder]
hf-repo = unsloth/Qwen3.8-27B-GGUF:Q8_0
temp = 0.6

[laguna]
model = /data/models/laguna-s-2.1-Q4_K_M.gguf

Per-model settings

Run llb settings and select Model Settings to configure per-model overrides:

  • Context size, GPU layers, flash attention
  • Custom aliases
  • Any llama-server parameter

Other files in ~/.config/llama/ are llb's own state: server.pid, server.log, models.effective.ini (the copy the router reads, with context clamped to each model's maximum), and caches for VRAM usage, MTP detection and llama-server's flags.

Development

# Clone and install
git clone https://github.com/thilomichael/llama-buddy.git
cd llama-buddy
uv sync

# Run
uv run llb <command>

# Test
uv run pytest

# Lint
uv run ruff check src/ tests/

License

MIT

Metadata

Release files for llama-buddy 0.1.16

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for llama-buddy 0.1.16
File Size Uploaded
llama_buddy-0.1.16.tar.gz 47.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for llama-buddy 0.1.16
File Interpreter ABI Platform
llama_buddy-0.1.16-py3-none-any.whl Python 3 none any Details

Total release size: 104.4 kB

Release files / llama_buddy-0.1.16.tar.gz

Download URL llama_buddy-0.1.16.tar.gz
Size 47.7 kB
Tags Source
SHA-256 checksum
How to use checksums
2fe7512a763b08d00fee57bce547f7f3e545434d7cf0cc22dafb95f4d6d3f55f
BLAKE2b-256 checksum
How to use checksums
7d9328e31ffd0a4c4ee285e8f77586a1ea9f5d8f9752a3be08b95fed7fefbc99
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / llama_buddy-0.1.16-py3-none-any.whl

Download URL llama_buddy-0.1.16-py3-none-any.whl
Size 56.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a7c673b80329346802af04ae84891d01883d26f632d4c446fa86e1273b05d82d
BLAKE2b-256 checksum
How to use checksums
88b67a5ab091c0ff6736d4abe27f058e421cc1f3eb2030f02dc62e3719236228
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

This release

0.1.16 This release

2 release files

0.1.15

2 release files

0.1.14

2 release files

0.1.13

2 release files

0.1.12

2 release files

0.1.11

2 release files

0.1.9

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page