lllm3090
Local LLM serving for a single RTX 3090, with a browser control panel.
A llama.cpp engine, a web UI on loopback that starts and stops it and downloads models, and a curated model list where every entry has been checked to fit 24 GB with a usable context left over.
Install
Debian 13 or a derivative (Ubuntu 24.04 / 26.04), an RTX 3090, and the NVIDIA driver already working:
# uv, if you do not have it: https://docs.astral.sh/uv/getting-started/installation/
curl -LsSf https://astral.sh/uv/install.sh | sh
uv tool install lllm3090
lllm3090 setup
setup checks the hardware, installs the one apt package the engine needs,
fetches a pinned llama.cpp build and starts the panel as a user service. It is
safe to re-run and skips whatever is already done.
It touches nothing outside $HOME except libvulkan1, and downloads no model
weights — you pick those from the panel.
Then open http://127.0.0.1:8080, download Qwen3-8B (5 GB) to prove the
install works, and Qwen3.8-27B (15 GB) for real use.
Use
lllm3090 models # what exists, what fits, what is downloaded
lllm3090 start Qwen3.8-27B
lllm3090 status
lllm3090 claude # launch Claude Code against the local model
lllm3090 stop # free the VRAM
The engine exposes both the OpenAI API (/v1/chat/completions) and Anthropic's
(/v1/messages) on 127.0.0.1:1919, so Claude Code and OpenAI-compatible
clients both work against it without a translation proxy.
Why it is scoped to one GPU
Every figure in the model catalogue — download size, resident VRAM, KV cache cost per token, achievable context, expected tokens per second — is computed for 24 GB of GDDR6X at compute capability 8.6. On another card the software would still run and every number would be wrong, so the installer checks and warns.
Documentation
https://gilesknap.github.io/lllm3090
The panel
Engine state and VRAM at the top, the models you have with start/stop, the curated list with what fits this card and what it will do, and the engine log streaming underneath. Downloads run in the background with progress, and resume from a part file if interrupted.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file lllm3090-0.4.0.tar.gz.
File metadata
- Download URL: lllm3090-0.4.0.tar.gz
- Upload date:
- Size: 311.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
60971367fc1a1afc58d041dd5b24cbf39d8503a1391e6ebc1b9d3de271899787
|
|
| MD5 |
9ffcf83d4faaeaee6787b664062d75ea
|
|
| BLAKE2b-256 |
112a5c50b5d90da222b407c9524f488e143cc9f99a2549dde44af82a29e82e45
|
File details
Details for the file lllm3090-0.4.0-py3-none-any.whl.
File metadata
- Download URL: lllm3090-0.4.0-py3-none-any.whl
- Upload date:
- Size: 38.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
92c6b981231782b26959f8f42020b18a6b73c56648cdff27d925ab7c0d9920e0
|
|
| MD5 |
5aa485cf8a75b344138882ed052927ed
|
|
| BLAKE2b-256 |
f3785f85a692b2dea4cccd5a3cfa65641c1b1b3f59fd335975b1468a643ce593
|