llm-discovery
LLM model discovery and tracking system for real-time monitoring of available models across multiple providers (OpenAI, Google AI Studio/Vertex AI, Anthropic).
Features
- Zero-Configuration Quick Start: Use prebuilt model data without API keys (max 24h old)
- Real-time Model Discovery: Fetch available models from multiple LLM providers
- Automatic Data Source Switching: Seamlessly switches between API and prebuilt data
- Multi-format Export: Export model data in JSON, CSV, YAML, Markdown, and TOML formats
- Change Detection: Track model additions and removals over time
- Data Source Transparency: See whether data comes from API or prebuilt sources with timestamps
- CI/CD Integration: Easy integration with GitHub Actions and other CI/CD systems
- Python API: Use as a library in your Python applications
- Offline Mode: Cache-first operation for offline usage
Installation
Method 1: uvx (No Installation Required - Recommended)
# Fetch and cache models
uvx llm-discovery update
# Display cached models
uvx llm-discovery list
Method 2: pip
pip install llm-discovery
Quick Start
Without API Keys (Zero Configuration)
Try llm-discovery instantly without any API keys using prebuilt model data (updated daily):
# Display models using prebuilt data (no API keys required)
uvx llm-discovery list
# Export prebuilt data
uvx llm-discovery export --format json --output models.json
The data source and timestamp are displayed in the output, showing whether data comes from API or prebuilt sources.
With API Keys (Real-time Data)
Set up API keys for the providers you want to use:
# OpenAI
export OPENAI_API_KEY="sk-..."
# Google AI Studio
export GOOGLE_API_KEY="AIza..."
# Google Vertex AI (alternative to AI Studio)
export GOOGLE_GENAI_USE_VERTEXAI=true
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/gcp-credentials.json"
Basic Usage
# Fetch and cache models from all providers
uvx llm-discovery update
# Display cached models in a table
uvx llm-discovery list
# Detect changes from previous snapshot
uvx llm-discovery update --detect-changes
# Export to JSON
uvx llm-discovery export --format json --output models.json
Python API
import asyncio
from llm_discovery import DiscoveryClient
from llm_discovery.models.config import Config
async def main():
# Load configuration from environment variables
config = Config.from_env()
client = DiscoveryClient(config)
# Fetch models from all providers
provider_snapshots = await client.fetch_all_models()
# Display all models
for provider in provider_snapshots:
for model in provider.models:
print(f"{model.provider_name}/{model.model_id}: {model.model_name}")
asyncio.run(main())
Documentation
For detailed documentation, visit our documentation site or see:
- Quick Start Guide
- Installation Guide
- API Reference (Technical Contract)
- CLI Reference (Technical Contract)
Development
Setup
# Clone the repository
git clone https://github.com/drillan/llm-discovery.git
cd llm-discovery
# Install with development dependencies
uv sync --all-extras --all-groups
# Run tests
uv run pytest
# Run linting
ruff check .
# Run type checking
mypy llm_discovery/
License
MIT License - see LICENSE for details.
Contributing
Contributions are welcome! Please see CONTRIBUTING.md for guidelines.
Metadata
Release files for llm-discovery 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| llm_discovery-0.1.0.tar.gz | 251.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| llm_discovery-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 291.0 kB
Release files / llm_discovery-0.1.0.tar.gz
| Download URL | llm_discovery-0.1.0.tar.gz |
|---|---|
| Size | 251.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2f1c606844fb06105de00a8ce0f25c64b745d442baba8714302f0f80afa4b40f
|
|
BLAKE2b-256 checksum How to use checksums |
fd1cbdf93b802ea5014766ba29fc2b10835d35bd84014783b5c0fff94f1b70c2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 19, 2025.
Transparency logRelease files / llm_discovery-0.1.0-py3-none-any.whl
| Download URL | llm_discovery-0.1.0-py3-none-any.whl |
|---|---|
| Size | 39.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c9c8efccc7d3ae3abd8c3d9670e36e060e304d18bbf4072e12fc7b431c1af1fd
|
|
BLAKE2b-256 checksum How to use checksums |
934cb630621f5fc85cf1d76b29ab3ec735a5174968bb92625ef8ddd15b65953d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 19, 2025.
Transparency log