A model aggregator service for multiple LLM backends.
Project description
LLM Aggregator
LLM Aggregator keeps a live list of every model exposed by your local OpenAI-compatible servers.
Web Interface
The UI is a single table plus a small RAM widget, so you immediately see what is running:
| Model | Base URL | Types | Family | Context | Quant | Params | Summary |
|---|---|---|---|---|---|---|---|
| llama3.1:8b | http://10.7.2.100:11434/v1 |
llm | Llama 3.1 | 8K | Q4_K_M | 8B | General chat tuned for balance |
| qwen2.5:14b | http://10.7.2.100:8080/v1 |
llm,embed | Qwen 2.5 | 32K | Q5_0 | 14B | Multilingual reasoning focused |
Columns:
Model– identifier reported by the provider.Base URL– where the model is served.Types– capabilities (LLM, VLM, embedder, etc.).Family– base architecture inferred by the helper LLM.Context– approximate context window in tokens.Quant– quantization hinted by the model name or docs.Params– estimated parameter count.Summary– one-line description generated by the helper LLM.
Features
- Multi-Provider Discovery: Automatically discovers models from multiple LLM servers running on different ports
- AI-Powered Enrichment: Uses a configurable "brain" LLM to enrich model metadata with details like model family, context size, quantization, and capabilities
- Web Catalog Interface: Clean web UI for browsing your model collection
- Real-time Statistics: Monitors system resources like RAM usage
- REST API: Programmatic access to model data and statistics
- Background Processing: Continuous model discovery and enrichment without blocking the UI
- OpenAI-Compatible: Works with any LLM server that implements the OpenAI
/v1/modelsAPI
Installation
Prerequisites
- Python 3.10 or higher
- One or more running LLM servers (Ollama, llama.cpp, nexa, etc.) with OpenAI-compatible APIs
Install from PyPI
pip install llm-aggregator
Configuration
All runtime behavior is controlled through the YAML file pointed to by the LLM_AGGREGATOR_CONFIG environment variable.
Use config.yaml as a reference template.
Configuration Options
- host / port – Where the FastAPI server and static frontend bind.
- log_level – Logging verbosity (
DEBUG,INFO,WARNING,ERROR,CRITICAL). Defaults toINFOif omitted. - log_format – Optional
loggingformat string. When omitted the service leaves existing logging configuration untouched. - logger_overrides – Map of logger names to override their logging level
(e.g.,
httpx: WARNING). - brain – Settings for the enrichment LLM:
base_url– HTTP endpoint of the enrichment provider.id– Model identifier passed to the provider.api_key– Optional bearer token injected into requests.max_batch_size– Number of models to enrich at once (defaults to 1).
- time – Background scheduling knobs (all in seconds):
fetch_models_intervalfetch_models_timeoutenrich_models_timeoutenrich_idle_sleep
- providers – Each entry describes an OpenAI-compatible backend to query:
base_url– Public URL returned via the REST API.internal_base_url– Optional internal URL used for server-to-server calls; defaults tobase_urlwhen omitted.
- model_info_sources – Ordered list of external websites where markdown context is fetched for enrichment prompts.
Each entry requires a human-readable
name(shown to the LLM) and aurl_templatethat contains{model_id}.
Usage
Set the LLM_AGGREGATOR_CONFIG environment variable to point at your config.yaml and the service will
load it on startup.
Starting the Service
export LLM_AGGREGATOR_CONFIG=/path/to/config.yaml
llm-aggregator
Or run directly:
export LLM_AGGREGATOR_CONFIG=/path/to/config.yaml
python -m llm_aggregator
By default, the web interface will be available at http://localhost:8888.
Project details
Release history Release notifications | RSS feed
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 llm_aggregator-0.1.3.tar.gz.
File metadata
- Download URL: llm_aggregator-0.1.3.tar.gz
- Upload date:
- Size: 41.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bab22cb1a4efbf7bfc96660245c726a966f2b3983a38e6c90cf99a3ccde37397
|
|
| MD5 |
7ace8d8d34520bdf04d2643aa94decc2
|
|
| BLAKE2b-256 |
436b4d9a07ab7eff9a41ac7801466e059bb13a62a0f73ba197e562e9c1413d37
|
Provenance
The following attestation bundles were made for llm_aggregator-0.1.3.tar.gz:
Publisher:
ci.yml on Wuodan/llm-aggregator
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
llm_aggregator-0.1.3.tar.gz -
Subject digest:
bab22cb1a4efbf7bfc96660245c726a966f2b3983a38e6c90cf99a3ccde37397 - Sigstore transparency entry: 709040284
- Sigstore integration time:
-
Permalink:
Wuodan/llm-aggregator@c6250fb5761d440adbbd9ed2d0a9116e9950a6a1 -
Branch / Tag:
refs/tags/0.1.3 - Owner: https://github.com/Wuodan
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yml@c6250fb5761d440adbbd9ed2d0a9116e9950a6a1 -
Trigger Event:
push
-
Statement type:
File details
Details for the file llm_aggregator-0.1.3-py3-none-any.whl.
File metadata
- Download URL: llm_aggregator-0.1.3-py3-none-any.whl
- Upload date:
- Size: 31.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5a5e7b6526f4d16d51bf7698d647d2f9db594c279e52bfdc1cb6f79b1729ad21
|
|
| MD5 |
f07a8d948d8fee4a919f8cea915245c9
|
|
| BLAKE2b-256 |
07ef7cf8f0be42e1a750ccc59435c50330bd266a8e1b5ddf780f6d07526fe4f8
|
Provenance
The following attestation bundles were made for llm_aggregator-0.1.3-py3-none-any.whl:
Publisher:
ci.yml on Wuodan/llm-aggregator
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
llm_aggregator-0.1.3-py3-none-any.whl -
Subject digest:
5a5e7b6526f4d16d51bf7698d647d2f9db594c279e52bfdc1cb6f79b1729ad21 - Sigstore transparency entry: 709040285
- Sigstore integration time:
-
Permalink:
Wuodan/llm-aggregator@c6250fb5761d440adbbd9ed2d0a9116e9950a6a1 -
Branch / Tag:
refs/tags/0.1.3 - Owner: https://github.com/Wuodan
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yml@c6250fb5761d440adbbd9ed2d0a9116e9950a6a1 -
Trigger Event:
push
-
Statement type: