BeeAI Framework

Framework · Last verified 2026-09-30

TL;DR

BeeAI Framework is an Apache-2.0 agent library for Python and TypeScript, first written by IBM developers and now developed by BeeAI contributors under the Linux Foundation AI & Data program. Its RequirementAgent enforces rules on tool use, and agents can be served over A2A or MCP. It suits teams wanting rule-constrained agents on local or hosted models.

Key facts

BeeAI Framework key facts. Data as of 2026-09-30.
Type Framework
Languages / SDKs Python, TypeScript
License Apache-2.0
Pricing model Open source, free
Orchestration pattern Supervisor
GitHub stars 3,423 (as of 2026-09-30)
GitHub forks 509
Last push 2026-09-28
Latest release python_v0.1.85
Repository i-am-bee/beeai-framework
Website framework.beeai.dev
Documentation framework.beeai.dev
Last verified 2026-09-30

Key features

  • RequirementAgent constrains tool use with declarative rules, such as forcing a tool at a given step, allowing a tool only after another, or capping invocations. (source)
  • HandoffTool wraps a specialist agent as a tool, so a lead agent can consult several specialists in one run. (source)
  • Workflows hold a typed state object and named steps that return the next step, NEXT, SELF or END; AgentWorkflow chains agents as steps. (source)
  • Memory strategies: unconstrained, sliding window of the last k entries, token-budgeted, and a single running summary. (source)
  • Serve module hosts agents over A2A, MCP, ACP for the Zed editor, IBM watsonx Orchestrate, and OpenAI Chat Completions or Responses-compatible endpoints. (source)
  • MCPTool consumes tools from MCP servers, and MCPServer exposes BeeAI tools, agents or chat models over MCP. (source)
  • A2AAgent calls remote A2A agents and A2AServer publishes a BeeAI agent over A2A. (source)
  • A Serializer saves and rebuilds framework objects, which is how agent state is persisted between sessions. (source)

Architecture and orchestration pattern

Pattern: Supervisor

The main agent type is RequirementAgent: a tool-calling loop whose choices are narrowed by requirements. A ConditionalRequirement can force a tool at a given step, allow it only after another tool, forbid consecutive calls, or set minimum and maximum invocation counts; middleware such as GlobalTrajectoryMiddleware observes every step through the event emitter.

Multi-agent setups come in two forms. With HandoffTool, a lead agent treats specialist agents as tools, calls them, and uses their answers in its own reply (the README's multi-agent example). With workflows, a Workflow holds a typed state model and named steps, each returning the next step or NEXT, SELF or END, and workflows can nest; AgentWorkflow adds agents as sequential steps so a final agent can combine earlier results.

Each agent carries a memory object: UnconstrainedMemory, SlidingMemory, TokenMemory or SummarizeMemory. Longer-lived state is handled by the Serializer, and servers such as A2AServer keep per-session memory through a memory manager (an LRU manager in the example).

Human in the loop

In Python, AskPermissionRequirement marks tools that need approval before they run; by default the approval is a simple prompt in the terminal, and a custom handler can route the decision to an external system or UI. The docs state this requirement is not yet implemented in TypeScript. No other interrupt or edit-state mechanism is described on the pages read.

Protocols

MCP, A2A and AG-UI support for BeeAI Framework. See the full matrix.
ProtocolSupportNote
MCP Yes evidence
checked 2026-09-30
Client and server: MCPTool consumes tools from MCP servers and MCPServer exposes BeeAI tools, agents or chat models, with Python and TypeScript examples.
A2A Yes evidence
checked 2026-09-30
Client (A2AAgent) and server (A2AServer, one agent per server). The page carries a 'Supported in Python only' note but also shows TypeScript examples, and the repo has a TypeScript a2a adapter.
AG-UI Unknown
checked 2026-09-30
Searched README, docs llms.txt, GitHub code and issues for ag-ui / agui, and the AG-UI README integration list; nothing found.

Best for

  • Agents that must follow a fixed tool order or call limits regardless of which model runs them.
  • Teams building agents in TypeScript as well as Python from one framework.
  • Running on local models through Ollama, as the README multi-agent example does.
  • Publishing an agent to other systems over A2A, MCP or an OpenAI-compatible API.

Not for

  • Projects that need a vendor support commitment; the README says IBM has no obligation to maintain or support the code.
  • TypeScript projects that need tool approval gates; AskPermissionRequirement is Python-only for now.
  • Teams wanting a stable 1.x API; both libraries are still at 0.1.x.

Quickstart

pip install beeai-framework

Install not yet verified by this site. What this means

import asyncio

from beeai_framework.agents.requirement import RequirementAgent
from beeai_framework.backend import ChatModel
from beeai_framework.tools.handoff import HandoffTool
from beeai_framework.tools.weather import OpenMeteoTool


async def main() -> None:
    llm = ChatModel.from_name("ollama:granite4.1:8b")  # local model served by Ollama
    weather = RequirementAgent(llm=llm, tools=[OpenMeteoTool()], role="Weather Specialist",
                               instructions="Give short forecasts for a named city.")
    lead = RequirementAgent(name="Lead", llm=llm, tools=[
        HandoffTool(weather, name="WeatherLookup", description="Ask the weather specialist.")])
    result = await lead.run("Should I pack an umbrella for Rome this weekend?")
    print(result.last_message.text)


asyncio.run(main())

Common pitfalls

  • The Python package requires Python >=3.11 and <3.14.
  • Protocol integrations are extras: pip install 'beeai-framework[a2a]', [mcp], [agentstack] or [acp-zed].
  • The README example needs Ollama running with granite4.1:8b pulled; hosted models use provider:model names such as openai:gpt-5-mini plus the provider's API key.
  • The docs quickstart uses the starter repositories (uv sync for Python, npm ci for TypeScript) rather than a bare install.
  • AskPermissionRequirement is not implemented in TypeScript, and an A2A server hosts only one agent.

Official quickstart

Pros

  • Python and TypeScript libraries live in one repository with matching module names. (source)
  • RequirementAgent gives explicit, testable control over tool order and call counts. (source)
  • One serve module exposes agents over A2A, MCP, ACP (Zed), watsonx Orchestrate and OpenAI-style APIs. (source)
  • Both MCP directions (consume and expose) are documented for Python and TypeScript. (source)
  • Governed as a Linux Foundation AI & Data project rather than by a single vendor. (source)

Cons

  • The README's legal notice says IBM provided the code as an open-source project, not an IBM product, with no obligation to provide updates or support. (source)
  • TypeScript lags Python: AskPermissionRequirement (tool approval) is not implemented in TypeScript. (source)
  • An open issue tracks bringing recoverable tool timeouts, already added in Python, to TypeScript. (source)
  • Still pre-1.0 in both languages (python_v0.1.85 and typescript_v0.1.31 in September 2026). (source)
  • An A2A server can host only one agent. (source)

Alternatives

FAQ

Does BeeAI Framework support MCP and A2A?

Yes to both. MCPTool and MCPServer cover consuming and exposing MCP tools; A2AAgent and A2AServer cover calling and publishing A2A agents. AG-UI support was not found.

Is BeeAI Framework free?

Yes. It is Apache-2.0 licensed and no paid tier of the framework is documented. You pay only for any hosted model you choose; local models run through Ollama.

Which languages does BeeAI Framework support?

Python (3.11 to 3.13) and TypeScript. Some features, such as AskPermissionRequirement, exist only in Python so far.

Is BeeAI Framework still maintained by IBM?

The README's legal notice says IBM has no obligation to support the code and will not maintain it going forward; development continues through BeeAI contributors under the Linux Foundation AI & Data program, with releases as recent as September 2026.

How do multiple BeeAI agents work together?

Either a lead agent calls specialist agents through HandoffTool, or a Workflow/AgentWorkflow runs agents as steps over a shared typed state.

Sources

Unknown fields: protocols.agui is unknown: README, docs llms.txt, GitHub code search and issue search for ag-ui / agui returned nothing, and BeeAI is not in the AG-UI README integration list.