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
- 🧩 Static
.pyistubs for LSP autocomplete of commonaimo.openai.gpt_4opaths
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
Metadata
Release files for aimo-registry 0.1.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| aimo_registry-0.1.3.tar.gz | 96.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| aimo_registry-0.1.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 139.7 kB
Release files / aimo_registry-0.1.3.tar.gz
| Download URL | aimo_registry-0.1.3.tar.gz |
|---|---|
| Size | 96.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b88e9696fd66465351d8623f7434954a1befb20ff24b4dc145a6c0c12cd7c150
|
|
BLAKE2b-256 checksum How to use checksums |
57cea9d03fc5c8aed11a91291e183725428a82280e0b7b8f5f54e7c9731ba22e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.3
|
Release files / aimo_registry-0.1.3-py3-none-any.whl
| Download URL | aimo_registry-0.1.3-py3-none-any.whl |
|---|---|
| Size | 43.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
bf04ee06cc0057d9095f7b7a4288c511d36b025853f3b2bfa790843414e1390d
|
|
BLAKE2b-256 checksum How to use checksums |
f190a975f41c202d15351c2146b8b590739879be5e805d6bb8ba8c61d465385d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.3
|