{"adoption": {"forks": 216, "observed_at": "2026-08-28T04:06:21.713852+00:00", "stars": 2171}, "canonical_url": "https://ross.abutalabs.com/products/any-llm", "card": {"archived": false, "artifact_type": "library", "description": "Communicate with an LLM provider using a single interface", "domain": ["large-language-models", "artificial-intelligence", "developer-tools", "apis"], "enriched": true, "function": ["llm-inference", "sdk", "http-client"], "health_score": 100, "homepage": "https://docs.mozilla.ai/any-llm", "language": "Python", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["mozilla-ai/any-llm"], "name": "mozilla-ai/any-llm", "platform": ["python", "cross-platform"], "pushed_at": "2026-08-26T15:16:43+00:00", "repo": "mozilla-ai/any-llm", "stars": 2171, "tags": ["unified-api", "llm-providers", "openai-compatible", "provider-agnostic", "litellm-alternative", "streaming", "tool-calling", "embeddings"], "topics": ["inference", "llm", "text-completion", "ai", "anthropic", "developer-tools", "openai", "python"], "urls": [], "use_cases": ["switch between openai and anthropic without changing code", "unified python api for multiple llm providers", "call local ollama models with the same code as openai", "migrate from litellm to a lighter sdk", "compare llm provider costs with one interface", "add streaming and tool calling across providers", "build a library that lets users pick their llm provider"], "what_it_is": "any-llm is a Python library from Mozilla.ai that provides a single, unified interface for calling many LLM providers (OpenAI, Anthropic, Mistral, Ollama, Azure, and more) via one completion/embedding API. Switching providers requires only changing a provider parameter and API key, with unified exception handling, streaming, and tool calling support.", "when_to_avoid": ["you only ever call a single provider's official SDK", "you need features like provider-side routing, caching, or spend tracking that gateway platforms offer", "you're not using Python 3.11+"], "when_to_choose": ["you want a lightweight, provider-agnostic LLM client in Python", "you need to swap or benchmark multiple LLM providers with minimal code changes", "you want unified exception handling and streaming across providers", "you're migrating from LiteLLM and want compatible env vars and model strings"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/any-llm", "repo": "mozilla-ai/any-llm", "role": "main", "score": 80}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:21.713852+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:49:15.569703+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c4e36a5d66f42a501be8639d50cd80eef7a2fd3ae304ad0ce67af0f3a1136aaa", "fetched_at": "2026-08-28T04:06:21.713852+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mozilla-ai/any-llm"}, {"content_hash": "383a948c569afba1f015f2f827c79c9762653b1f49f10823f13dcbd0a411b37c", "fetched_at": "2026-08-29T10:29:24.135914+00:00", "kind": "homepage", "missing": false, "url": "https://docs.mozilla.ai/any-llm"}, {"content_hash": "1e4b7f312c5230769f8eb183cee887a04ba5960bd65e3cb2d653f9d00a542249", "fetched_at": "2026-08-29T10:29:24.144981+00:00", "kind": "site_page", "missing": false, "url": "https://docs.mozilla.ai/quickstart"}, {"content_hash": "27bbab8b628d1637c0f9738f0542735cb7d914e28801fa57db15f0a667c12cba", "fetched_at": "2026-08-29T10:29:24.146976+00:00", "kind": "site_page", "missing": false, "url": "https://docs.mozilla.ai/cookbooks/any-llm-getting-started"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:21.713852+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:49:15.569703+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c4e36a5d66f42a501be8639d50cd80eef7a2fd3ae304ad0ce67af0f3a1136aaa", "fetched_at": "2026-08-28T04:06:21.713852+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mozilla-ai/any-llm"}, {"content_hash": "383a948c569afba1f015f2f827c79c9762653b1f49f10823f13dcbd0a411b37c", "fetched_at": "2026-08-29T10:29:24.135914+00:00", "kind": "homepage", "missing": false, "url": "https://docs.mozilla.ai/any-llm"}, {"content_hash": "1e4b7f312c5230769f8eb183cee887a04ba5960bd65e3cb2d653f9d00a542249", "fetched_at": "2026-08-29T10:29:24.144981+00:00", "kind": "site_page", "missing": false, "url": "https://docs.mozilla.ai/quickstart"}, {"content_hash": "27bbab8b628d1637c0f9738f0542735cb7d914e28801fa57db15f0a667c12cba", "fetched_at": "2026-08-29T10:29:24.146976+00:00", "kind": "site_page", "missing": false, "url": "https://docs.mozilla.ai/cookbooks/any-llm-getting-started"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:49:15.569703+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c4e36a5d66f42a501be8639d50cd80eef7a2fd3ae304ad0ce67af0f3a1136aaa", "fetched_at": "2026-08-28T04:06:21.713852+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mozilla-ai/any-llm"}, {"content_hash": "383a948c569afba1f015f2f827c79c9762653b1f49f10823f13dcbd0a411b37c", "fetched_at": "2026-08-29T10:29:24.135914+00:00", "kind": "homepage", "missing": false, "url": "https://docs.mozilla.ai/any-llm"}, {"content_hash": "1e4b7f312c5230769f8eb183cee887a04ba5960bd65e3cb2d653f9d00a542249", "fetched_at": "2026-08-29T10:29:24.144981+00:00", "kind": "site_page", "missing": false, "url": "https://docs.mozilla.ai/quickstart"}, {"content_hash": "27bbab8b628d1637c0f9738f0542735cb7d914e28801fa57db15f0a667c12cba", "fetched_at": "2026-08-29T10:29:24.146976+00:00", "kind": "site_page", "missing": false, "url": "https://docs.mozilla.ai/cookbooks/any-llm-getting-started"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:06:21.713852+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:21.713852+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:21.713852+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:49:15.569703+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c4e36a5d66f42a501be8639d50cd80eef7a2fd3ae304ad0ce67af0f3a1136aaa", "fetched_at": "2026-08-28T04:06:21.713852+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mozilla-ai/any-llm"}, {"content_hash": "383a948c569afba1f015f2f827c79c9762653b1f49f10823f13dcbd0a411b37c", "fetched_at": "2026-08-29T10:29:24.135914+00:00", "kind": "homepage", "missing": false, "url": "https://docs.mozilla.ai/any-llm"}, {"content_hash": "1e4b7f312c5230769f8eb183cee887a04ba5960bd65e3cb2d653f9d00a542249", "fetched_at": "2026-08-29T10:29:24.144981+00:00", "kind": "site_page", "missing": false, "url": "https://docs.mozilla.ai/quickstart"}, {"content_hash": "27bbab8b628d1637c0f9738f0542735cb7d914e28801fa57db15f0a667c12cba", "fetched_at": "2026-08-29T10:29:24.146976+00:00", "kind": "site_page", "missing": false, "url": "https://docs.mozilla.ai/cookbooks/any-llm-getting-started"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:21.713852+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:21.713852+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:49:15.569703+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c4e36a5d66f42a501be8639d50cd80eef7a2fd3ae304ad0ce67af0f3a1136aaa", "fetched_at": "2026-08-28T04:06:21.713852+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mozilla-ai/any-llm"}, {"content_hash": "383a948c569afba1f015f2f827c79c9762653b1f49f10823f13dcbd0a411b37c", "fetched_at": "2026-08-29T10:29:24.135914+00:00", "kind": "homepage", "missing": false, "url": "https://docs.mozilla.ai/any-llm"}, {"content_hash": "1e4b7f312c5230769f8eb183cee887a04ba5960bd65e3cb2d653f9d00a542249", "fetched_at": "2026-08-29T10:29:24.144981+00:00", "kind": "site_page", "missing": false, "url": "https://docs.mozilla.ai/quickstart"}, {"content_hash": "27bbab8b628d1637c0f9738f0542735cb7d914e28801fa57db15f0a667c12cba", "fetched_at": "2026-08-29T10:29:24.146976+00:00", "kind": "site_page", "missing": false, "url": "https://docs.mozilla.ai/cookbooks/any-llm-getting-started"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:21.713852+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:21.713852+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:21.713852+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:49:15.569703+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c4e36a5d66f42a501be8639d50cd80eef7a2fd3ae304ad0ce67af0f3a1136aaa", "fetched_at": "2026-08-28T04:06:21.713852+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mozilla-ai/any-llm"}, {"content_hash": "383a948c569afba1f015f2f827c79c9762653b1f49f10823f13dcbd0a411b37c", "fetched_at": "2026-08-29T10:29:24.135914+00:00", "kind": "homepage", "missing": false, "url": "https://docs.mozilla.ai/any-llm"}, {"content_hash": "1e4b7f312c5230769f8eb183cee887a04ba5960bd65e3cb2d653f9d00a542249", "fetched_at": "2026-08-29T10:29:24.144981+00:00", "kind": "site_page", "missing": false, "url": "https://docs.mozilla.ai/quickstart"}, {"content_hash": "27bbab8b628d1637c0f9738f0542735cb7d914e28801fa57db15f0a667c12cba", "fetched_at": "2026-08-29T10:29:24.146976+00:00", "kind": "site_page", "missing": false, "url": "https://docs.mozilla.ai/cookbooks/any-llm-getting-started"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:21.713852+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:21.713852+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:49:15.569703+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c4e36a5d66f42a501be8639d50cd80eef7a2fd3ae304ad0ce67af0f3a1136aaa", "fetched_at": "2026-08-28T04:06:21.713852+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mozilla-ai/any-llm"}, {"content_hash": "383a948c569afba1f015f2f827c79c9762653b1f49f10823f13dcbd0a411b37c", "fetched_at": "2026-08-29T10:29:24.135914+00:00", "kind": "homepage", "missing": false, "url": "https://docs.mozilla.ai/any-llm"}, {"content_hash": "1e4b7f312c5230769f8eb183cee887a04ba5960bd65e3cb2d653f9d00a542249", "fetched_at": "2026-08-29T10:29:24.144981+00:00", "kind": "site_page", "missing": false, "url": "https://docs.mozilla.ai/quickstart"}, {"content_hash": "27bbab8b628d1637c0f9738f0542735cb7d914e28801fa57db15f0a667c12cba", "fetched_at": "2026-08-29T10:29:24.146976+00:00", "kind": "site_page", "missing": false, "url": "https://docs.mozilla.ai/cookbooks/any-llm-getting-started"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:49:15.569703+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c4e36a5d66f42a501be8639d50cd80eef7a2fd3ae304ad0ce67af0f3a1136aaa", "fetched_at": "2026-08-28T04:06:21.713852+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mozilla-ai/any-llm"}, {"content_hash": "383a948c569afba1f015f2f827c79c9762653b1f49f10823f13dcbd0a411b37c", "fetched_at": "2026-08-29T10:29:24.135914+00:00", "kind": "homepage", "missing": false, "url": "https://docs.mozilla.ai/any-llm"}, {"content_hash": "1e4b7f312c5230769f8eb183cee887a04ba5960bd65e3cb2d653f9d00a542249", "fetched_at": "2026-08-29T10:29:24.144981+00:00", "kind": "site_page", "missing": false, "url": "https://docs.mozilla.ai/quickstart"}, {"content_hash": "27bbab8b628d1637c0f9738f0542735cb7d914e28801fa57db15f0a667c12cba", "fetched_at": "2026-08-29T10:29:24.146976+00:00", "kind": "site_page", "missing": false, "url": "https://docs.mozilla.ai/cookbooks/any-llm-getting-started"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:49:15.569703+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c4e36a5d66f42a501be8639d50cd80eef7a2fd3ae304ad0ce67af0f3a1136aaa", "fetched_at": "2026-08-28T04:06:21.713852+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mozilla-ai/any-llm"}, {"content_hash": "383a948c569afba1f015f2f827c79c9762653b1f49f10823f13dcbd0a411b37c", "fetched_at": "2026-08-29T10:29:24.135914+00:00", "kind": "homepage", "missing": false, "url": "https://docs.mozilla.ai/any-llm"}, {"content_hash": "1e4b7f312c5230769f8eb183cee887a04ba5960bd65e3cb2d653f9d00a542249", "fetched_at": "2026-08-29T10:29:24.144981+00:00", "kind": "site_page", "missing": false, "url": "https://docs.mozilla.ai/quickstart"}, {"content_hash": "27bbab8b628d1637c0f9738f0542735cb7d914e28801fa57db15f0a667c12cba", "fetched_at": "2026-08-29T10:29:24.146976+00:00", "kind": "site_page", "missing": false, "url": "https://docs.mozilla.ai/cookbooks/any-llm-getting-started"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:49:15.569703+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c4e36a5d66f42a501be8639d50cd80eef7a2fd3ae304ad0ce67af0f3a1136aaa", "fetched_at": "2026-08-28T04:06:21.713852+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mozilla-ai/any-llm"}, {"content_hash": "383a948c569afba1f015f2f827c79c9762653b1f49f10823f13dcbd0a411b37c", "fetched_at": "2026-08-29T10:29:24.135914+00:00", "kind": "homepage", "missing": false, "url": "https://docs.mozilla.ai/any-llm"}, {"content_hash": "1e4b7f312c5230769f8eb183cee887a04ba5960bd65e3cb2d653f9d00a542249", "fetched_at": "2026-08-29T10:29:24.144981+00:00", "kind": "site_page", "missing": false, "url": "https://docs.mozilla.ai/quickstart"}, {"content_hash": "27bbab8b628d1637c0f9738f0542735cb7d914e28801fa57db15f0a667c12cba", "fetched_at": "2026-08-29T10:29:24.146976+00:00", "kind": "site_page", "missing": false, "url": "https://docs.mozilla.ai/cookbooks/any-llm-getting-started"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 29, "rhythm": 86}, "computed_at": "2026-09-03T02:39:23.370411+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 415, "days_push": 7, "days_rel": 16, "gap_med": 2.0, "n_releases_24m": 79}, "score": 80, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}