A model aggregator service for multiple LLM backends.
Project description
LLM Aggregator
A comprehensive model aggregator service for discovering, enriching, and cataloging Large Language Models (LLMs) from multiple local backends. Provides a web interface to browse and manage your model collection with detailed metadata.
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 with filtering and sorting
- 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 Source
git clone https://github.com/Wuodan/llm-aggregator.git
cd llm-aggregator
pip install -e .
Install from PyPI
pip install llm-aggregator
Configuration
See config.yaml.
Configuration Options
- host/port: Server binding address
- brain: Configuration for the enrichment LLM
host: Base URL of the enrichment model serverport: Port where enrichment model runsid: Model identifier for enrichmentapi_key: Optional API key for authenticationmax_batch_size: Models to enrich per batch
- time: Timing configurations for background tasks
- providers: List of LLM servers to monitor
base_url: Base endpoint for the providerport: Port number for model discovery
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
The web interface will be available at http://localhost:8888
Web Interface
The web catalog displays:
- Model: Model identifier
- Port: Provider port
- Types: Model capabilities (llm, vlm, embedder, etc.)
- Family: Model architecture family
- Context: Context window size
- Quant: Quantization level
- Param: Parameter count
- Summary: Brief model description
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.0.2.tar.gz.
File metadata
- Download URL: llm_aggregator-0.0.2.tar.gz
- Upload date:
- Size: 27.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0ee96c646930e6c49cd986999b2f33ab696517d0b351675c11d6cda84a6b4556
|
|
| MD5 |
91126eb13433ea2e8f0771ef0314379c
|
|
| BLAKE2b-256 |
b9f3ecc1d8d44c742f1e9f5b46fcff4d62d04dce31dd56f52b8e8e7415f6224d
|
Provenance
The following attestation bundles were made for llm_aggregator-0.0.2.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.0.2.tar.gz -
Subject digest:
0ee96c646930e6c49cd986999b2f33ab696517d0b351675c11d6cda84a6b4556 - Sigstore transparency entry: 704240248
- Sigstore integration time:
-
Permalink:
Wuodan/llm-aggregator@08732ec0d65147e0f52035d4921102b9f382da3f -
Branch / Tag:
refs/tags/0.0.2 - Owner: https://github.com/Wuodan
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yml@08732ec0d65147e0f52035d4921102b9f382da3f -
Trigger Event:
push
-
Statement type:
File details
Details for the file llm_aggregator-0.0.2-py3-none-any.whl.
File metadata
- Download URL: llm_aggregator-0.0.2-py3-none-any.whl
- Upload date:
- Size: 24.3 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 |
2b283b567217ae1e1a563b1ae6c4a5ddeb0c8034980f20db63287f284df580e9
|
|
| MD5 |
7dc10976a1132c27f2196d6711a23e2a
|
|
| BLAKE2b-256 |
4618c22c5f559bab5ac76a40d6317904ffc754f2977889e17fd04839d573697e
|
Provenance
The following attestation bundles were made for llm_aggregator-0.0.2-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.0.2-py3-none-any.whl -
Subject digest:
2b283b567217ae1e1a563b1ae6c4a5ddeb0c8034980f20db63287f284df580e9 - Sigstore transparency entry: 704240301
- Sigstore integration time:
-
Permalink:
Wuodan/llm-aggregator@08732ec0d65147e0f52035d4921102b9f382da3f -
Branch / Tag:
refs/tags/0.0.2 - Owner: https://github.com/Wuodan
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yml@08732ec0d65147e0f52035d4921102b9f382da3f -
Trigger Event:
push
-
Statement type: