Smart AI model registry with hierarchical access and rich metadata
Project description
aimo
Proof of concept:
aimois an experimental model-registry package. It is useful enough to try, but there is no clear long-term maintenance plan yet. Expect API changes, stale upstream metadata, and rough edges until the project proves its shape.
Smart AI Model Registry — Hierarchical access to AI model identifiers with rich metadata.
Combines metadata from LiteLLM and models.dev.
Features
- ✨ Hierarchical access:
aimo.openai.gpt_4o,aimo.anthropic.claude_3_5_sonnet - 🧠 Rich objects that act like strings: pass them to DSPy, LiteLLM, LangChain, SDKs, etc.
- 📊 Metadata: context window, pricing, capabilities, vision support, and upstream raw fields
- 🔄 Explicit cache refresh from LiteLLM + models.dev via
aimo.update() - 🚀 Zero runtime dependencies; lazy startup with local caching
Installation
pip install aimo-registry
Usage
import aimo
# Hierarchical access. The first registry access loads cached data, or downloads it
# if the cache has not been populated yet.
model = aimo.openai.gpt_4o
model = aimo.anthropic.claude_3_5_sonnet_20240620
model = aimo.groq.llama3_70b_8192
# Works as a string.
print(model) # "gpt-4o"
assert isinstance(model, str)
# Human-readable summary when you want one.
print(model.pretty())
# Common attributes from LiteLLM + models.dev are available when present.
print(model.context) # e.g. 128000
print(model.input_price) # e.g. 2.5e-06
print(model.output_price) # e.g. 1e-05
print(model.supports_vision) # e.g. True
print(model.capabilities) # e.g. ['vision', 'function_calling']
# Full raw data.
print(list(model.raw.keys()))
# Use anywhere a string is expected.
# lm = dspy.LM(model)
# response = litellm.completion(model=model, messages=[...])
Search & Aliases
import aimo
# Search
models = aimo.search("claude")
models = aimo.search("gpt-4", provider="openai")
models = aimo.search(provider="groq")
# Popular aliases, when present in the upstream data
model = aimo.gpt4o
model = aimo.claude35
model = aimo.sonnet
model = aimo.haiku
model = aimo.o1
model = aimo.o3
Updating the Model List
import aimo
aimo.update() # Force refresh from LiteLLM + models.dev and update the registry in place.
By default, aimo stores upstream JSON files in ~/.cache/aimo. Set AIMO_CACHE_DIR to use a different cache directory.
License
MIT
Project details
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 aimo_registry-0.1.1.tar.gz.
File metadata
- Download URL: aimo_registry-0.1.1.tar.gz
- Upload date:
- Size: 62.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0a7728450059c59726b58dd3b5f910f355051281107e940aba93fb80145fe9f9
|
|
| MD5 |
e006bed8f6f62bd59304d8fa3a2b0271
|
|
| BLAKE2b-256 |
0c770104fa80a925256a9244fab222b68a4fa8d3ef6268394fc1e9519208f2fa
|
File details
Details for the file aimo_registry-0.1.1-py3-none-any.whl.
File metadata
- Download URL: aimo_registry-0.1.1-py3-none-any.whl
- Upload date:
- Size: 10.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6bb16f37311de24c947d503f47a502dd912ee2cdd863c252fa8683d4d38c34e1
|
|
| MD5 |
8569d9e877c75ec1781556b2aa227647
|
|
| BLAKE2b-256 |
33421b7e47b5ada119d8ec168c7acc5fa52470ebeb23b51d48431c9e1c6beca6
|