Fundamental breaking changes are happening now, affecting protocol, transport, and APIs. Consider this version experimental. Join Alpha discussions to help shape it.

Adding providers

Agent provider is a process that exposes one or more agents over a standardized interface - the ACP protocol. This guide will show how to register different types of providers to the platform.

You can add providers by using the CLI, few basic commands:

  • beeai provider list - list providers
  • beeai provider info <ID> - show provider info (ID can be either SHORT ID from beeai provider list or unique short name such as official/beeai-framework)
  • beeai provider remove <ID> - remove provider
  • beeai provider add <location>, where location is a filesystem path to the provider manifest, for example:
    # Github repository
    beeai provider add 'https://github.com/org/repo'
    # Specific version-tag and path inside github repository
    beeai provider add 'https://github.com/org/repo@version-tag#path=/sub/directory/custom-provider.yaml'
    
    # Local providers
    # if you have `beeai-provider.yaml` in the current directory:
    beeai provider add 'file://.'
    # Absolute path
    beeai provider add 'file:///absolute/path/to/beeai-provider.yaml'
    

Provider manifest

The manifest file (typically named beeai-provider.yaml) determines how to instantiate the provider connection. The beeai-platform server typically uses it to spawn a new provider process. The supported kinds of providers are:

Python provider

Requires uv installed globally (requirement is satisfied when installing beeai through brew)

manifestVersion: 1
driver: python
pythonVersion: "3.11" # optional, will be installed if not found on machine

# Package location that can be used in a `uvx --from` clause
# see  (https://docs.astral.sh/uv/guides/tools)
# For example a package published on PyPI:
# package: "my-pypi-package@0.0.1"
#
# Or a package from GitHub:
package: "git+https://github.com/org/repo@agents-v0.0.1"

 # Executable command to run provider (must be part of the package)
command: [ "gpt-researcher-agent" ]

# These options are the recommended configuration
# stdio serverType is supported, but highly experimental:
serverType: http
mcpTransport: sse
mcpEndpoint: /sse

env: # Environment variables consumed by this provider
  - name: "LLM_API_KEY"
    description: "Secret key for accessing model"
    required: True

NodeJs provider

Requires nodejs installed globally (requirement is satisfied when installing beeai through brew)

manifestVersion: 1
driver: nodejs

# Package location that can be used in a `npx` clause or a GitHub URL
# For example a package published on NPM:
# package: "my-npm-opackage@0.0.1"
#
# Or a package from GitHub
package: "git+https://github.com/org/repo@agents-v0.0.1"

# Executable command to run provider (must be part of the package)
command: [ "server" ]

# These options are the recommended configuration
# stdio serverType is supported, but highly experimental:
serverType: http
mcpTransport: sse
mcpEndpoint: /sse

env: [] # Environment variables (see above in python provider above)

Container provider

Requires docker, podman or similar runtime installed, we recommend Rancher Desktop.


manifestVersion: 1
driver: container

# Public docker image (identifier that can be used in docker run)
image: docker.io/something/here:1.0.0

# These options are the recommended configuration
# stdio serverType is supported, but highly experimental:
serverType: http
mcpTransport: sse
mcpEndpoint: /sse

env: [] # Environment variables (see above in python provider above)

Unmanaged provider

This is a special kind of provider where the platform does not manage the lifecycle of the provider process. Instead, you may have a provider server running on a certain address:port already, and you simply want to connect it to the platform. This is especially useful when developing agents locally or for quick implementation.

For example, if you have an agent server running locally when you clone the provider template and run uv run beeai-agents, you can register it using the following manifest:

manifestVersion: 1
driver: unmanaged
serverType: http
mcpTransport: sse
mcpEndpoint: /sse

# env: []
# Not valid for unmanaged provider as the provider process is already
# running, instead inject env directly when starting the provider server,
# for example: env MY_VARIABLE=MY_VALUE uv run beeai-agents