Model or dataset
mozilla-ai/any-agent avatar
mozilla-ai/any-agent

any-agent: One API Across Six Agent Frameworks, Now in Soft Deprecation

A single interface to use and evaluate different agent frameworks

1,258 stars109 forksPythonApache-2.0

At a glance

What is it?
Mozilla AI's any-agent wraps Agno, Google ADK, LangChain, LlamaIndex, OpenAI Agents SDK and smolagents behind a single AgentConfig and AnyAgent.create call, and adds tracing plus evaluation. The README now marks it as soft-deprecated in favour of mozilla-ai-tinyagent, which changes who should start a project on it.
Who is it for?
Use any-agent when the multi-framework comparison is the actual goal: you want to run or evaluate the same agent definition against Agno, Google ADK, LangChain, LlamaIndex, OpenAI Agents SDK and smolagents under one API, and you accept that no new features are planned. Do not start a new single-framework agent on it; the README points that case at mozilla-ai-tinyagent.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 13 days ago.
What is it written in?
Mainly Python, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on November 14, 2026, and from our analysis. They are not legal advice.

From daily snapshots

Star history

  • mozilla-ai/any-agent1,258 ★ · +59
Star history
Repository2026-09-112026-11-14
mozilla-ai/any-agent1.2k1.3k

59 Stars in the last 64 days, measured from the daily GitHub snapshot. Compare with other projects

Editorial analysis

The Multi-Framework Comparison Problem any-agent Was Built For

Choosing an agent framework usually means writing the same agent several times. Each framework has its own agent class, its own tool decorator, its own way of passing a model identifier and its own trace format, so a fair comparison costs a week of porting before you learn anything. any-agent collapses that porting work. The README describes it as "a single interface to use and evaluate different agent frameworks", and the supported list is explicit: TinyAgent, Google ADK, LangChain, LlamaIndex, OpenAI Agents SDK, smolagents and Agno. The audience is therefore narrow and specific. It is for engineers who need to run or evaluate agents across several of those frameworks under one API, not for someone who has already picked one and wants the shortest path to a working agent. The README's own soft deprecation notice draws exactly that line: reach for any-agent when you specifically need multiple frameworks, and use mozilla-ai-tinyagent when you only need the core agent loop.

How AnyAgent.create Dispatches to a Framework

The mechanism visible in the README is a string-keyed factory plus a shared configuration object. You import AgentConfig and AnyAgent from any_agent, then call AnyAgent.create with a framework name as the first argument and an AgentConfig as the second. In the quickstart that name is "tinyagent", and the README says all options are listed in the documentation. The AgentConfig carries model_id, instructions and tools. Tools come from any_agent.tools, which the example populates with search_web and visit_webpage, so the same tool objects are handed to whichever backend you selected. The return value is an agent whose run method takes a plain string and returns an agent_trace object. That trace object is the second half of the design: because the interface is uniform, the trace is uniform too, which is what makes cross-framework evaluation possible at all. The README also notes that multi-agent setups are expressed through Agents-As-Tools rather than a separate orchestration API, and that Model Context Protocol tools are covered by a dedicated cookbook. The trade-off is visible in the same design. A lowest-common-denominator surface means framework-specific features that do not fit AgentConfig have nowhere obvious to go.

Installing any-agent and Setting a Model

Requirements are Python 3.11 or newer. The quickstart install is a single command, pip install 'any-agent', with the README instructing you to update your pip install command to include the frameworks you plan to use and pointing at pyproject.toml for the available options. That phrasing matters: the extras are how per-framework dependencies arrive, and the README does not enumerate them inline. Model access is configured through environment variables. The example exports MISTRAL_API_KEY and pairs it with model_id="mistral:mistral-small-latest", noting that OPENAI_API_KEY and equivalents work for other providers, with model configuration documented separately. The minimal program is three lines of setup and one call: create the agent with instructions "Use the tools to find an answer", run it with a question string, print the returned trace. One environment quirk is documented rather than hidden. In Jupyter, the README says you may hit RuntimeError: This event loop is already running, and the fix is to import nest_asyncio and call nest_asyncio.apply() before running AnyAgent. It is described as a known limitation of Jupyter Notebooks, not of any-agent itself.

Soft Deprecation Is the Constraint That Should Shape Your Decision

The most consequential line in the repository is the deprecation notice, and it is unusually candid. any-agent is in soft deprecation. It began as a research project to compare agent frameworks and distil a minimal common surface, and that distillation has graduated to a separate package, mozilla-ai-tinyagent, published on PyPI as mozilla-ai-tinyagent. The README states that any-agent continues to be published and that security and bug-fix pull requests will be taken, but no new features are planned. For an adoption decision this is the whole ballgame. You are choosing a maintained but frozen surface. The supported framework list will not grow on its own; the README routes new framework requests to open GitHub tickets labelled frameworks and invites contributions, which is a way of saying the growth path is external. If your framework is not already on the list, the answer is not a roadmap date. It is a pull request you would have to write. Treat the frozen state as a design constraint, not a temporary condition.

Tracing, Serving and Evaluation as Separate Core Concepts

The documentation splits into agents, tools, tracing, serving and evaluation. Those last three are where any-agent does more than wrap constructors. Tracing is the substrate: because every run returns a trace object regardless of backend, you get a comparable record of what the agent did. Evaluation is built on top of that, and the cookbook includes a first-agent-evaluation walkthrough that the README says evaluates a web search agent using three different methods. Serving is the A2A story, with cookbooks for serving an agent over Agent-to-Agent communication and for building multi-agent systems where one A2A agent acts as a tool for another. This is the part of the project that has no obvious equivalent in the frameworks it wraps, since each of them exposes its own tracing and its own serving story. It is also the part most exposed to the deprecation: the evaluation and serving surfaces are what a research project accumulates, and they are the surfaces least likely to receive new work now. The README does not state a compatibility guarantee for trace formats across releases.

tinyagent Is the Alternative, and the Difference Is Scope

The named alternative is not a competitor framework. It is mozilla-ai-tinyagent, the package the README says this project's distillation graduated into. The difference in approach is scope, not quality. any-agent keeps a dispatch layer, a shared AgentConfig, a common trace and the evaluation and serving machinery needed to compare six backends. tinyagent is described as the leaner path for the core agent loop alone. If you have already decided on one framework, or you do not need a framework at all, the dispatch layer is pure overhead: an extra dependency, an extra indirection between your code and the backend, and a configuration object that must express your needs in a shared vocabulary. The README's recommendation is unambiguous on this point, stating that for new projects it recommends using tinyagent directly. Choosing any-agent for a single-backend agent means adopting a deprecated wrapper to get a feature you are not using.

Maintenance Cost, Licence and What to Verify Before Adopting

Maintenance cost here is mostly upgrade cost, and the shape of it is set by the extras model. Because frameworks are installed as options alongside the base package, a major release of Google ADK or LangChain can force a coordinated bump on your side, and the README does not promise that the shared surface will absorb breaking changes in a wrapped framework. The project is published under Apache-2.0, which permits commercial use and modification, but this is a description of the licence identifier in the repository metadata, not legal advice; read the licence text and your own obligations. The release cadence is frequent and recent, with 1.16.1, 1.17.0 and 1.18.0 appearing within about a week in February 2026, so pinning a version is worthwhile. Before adopting, verify the framework extra you need is actually installed, since the base install command in the README is bare. Verify your model_id prefix and API key pair resolve. And verify the framework you care about appears on the supported list, because the README's answer for anything missing is an open ticket, not a planned release.

Editorial conclusion

Use any-agent when the multi-framework comparison is the actual goal: you want to run or evaluate the same agent definition against Agno, Google ADK, LangChain, LlamaIndex, OpenAI Agents SDK and smolagents under one API, and you accept that no new features are planned. Do not start a new single-framework agent on it; the README points that case at mozilla-ai-tinyagent. Before committing, verify two things in your own environment: that the framework extra you need is installed alongside the base package, since pip install 'any-agent' alone does not pull in every integration, and that your chosen model_id prefix resolves with the matching API key exported. Check the open framework tickets if the framework you actually use is not on the supported list.

Frequently asked questions

What is Mozilla any-agent?

It is a Python package that puts a single interface over six agent frameworks, adding tracing, evaluation, serving, and protocol support on top. It is Apache-2.0 licensed, requires Python 3.11 or newer with an upper bound below 3.14, and its own version number is derived from git tags rather than written in the manifest.

Is any-agent deprecated?

It is in soft deprecation. It began as a research project comparing agent frameworks, and that work graduated into a separate leaner package that the documentation recommends for new projects. any-agent is still published and takes security and bug fix pull requests, but no new features are planned, and its successor is one of its own runtime dependencies.

Why is any-agent's MCP dependency capped below version 2?

A comment in the manifest says the version 2 release renamed a symbol that the successor package still uses, so that package fails at import time underneath it. Because any-agent is in soft deprecation it is not migrating, and the comment says the cap should only be lifted alongside that work.

Which agent frameworks does any-agent support?

Six, each behind its own optional dependency group: a hosted-model framework, Google's agent development kit, the chain and graph pair, the indexing framework, the hosted agents SDK, and a lightweight in-process library. Two further groups exist for the agent-to-agent protocol and for composition tooling, and neither is included in the group named all.

Does the any-agent quickstart cost anything to run?

Its web search tool depends on a commercial search API listed as a hard runtime dependency rather than an extra, so following the quickstart means obtaining an account with a third party first. The readme does not mention that, and it tells you to include your frameworks in the install command while showing a command with no extras.

Can I use any-agent in a Jupyter notebook?

Yes, after a two-line fix. Without patching the running event loop first you get a runtime error saying the loop is already running, which the readme attributes to a known notebook limitation and links to an older upstream issue. The workaround is importing a small helper package and applying it before the agent starts.

Official sources

  1. License: Apache-2.0
  2. mozilla-ai/any-agent on GitHub
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/mozilla-ai-any-agent.svg)](https://hysenlabs.com/projects/mozilla-ai-any-agent)

Star history chart for your README

markdown
[![Star history](https://hysenlabs.com/chart/mozilla-ai-any-agent.svg)](https://hysenlabs.com/projects/mozilla-ai-any-agent)

Was this useful?