Remote Team

Demonstrates calling and streaming a team hosted on a remote AgentOS instance.

remote_team.py
"""
Remote Team
=============================

Demonstrates calling and streaming a team hosted on a remote AgentOS instance.
"""

import asyncio
import socket

from agno.exceptions import RemoteServerUnavailableError
from agno.team import RemoteTeam

# ---------------------------------------------------------------------------
# Create Team
# ---------------------------------------------------------------------------
remote_team = RemoteTeam(
    base_url="http://localhost:7778",
    team_id="research-team",
)


# ---------------------------------------------------------------------------
# Run Team
# ---------------------------------------------------------------------------
async def remote_team_example() -> None:
    response = await remote_team.arun(
        "What is the capital of France?",
        user_id="user-123",
        session_id="session-456",
    )
    print(response.content)


async def remote_streaming_example() -> None:
    async for chunk in remote_team.arun(
        "Tell me a 2 sentence horror story",
        session_id="session-456",
        user_id="user-123",
        stream=True,
    ):
        if hasattr(chunk, "content") and chunk.content:
            print(chunk.content, end="", flush=True)


async def main() -> None:
    print("=" * 60)
    print("RemoteTeam Examples")
    print("=" * 60)

    print("\n1. Remote Team Example:")
    await remote_team_example()

    print("\n2. Remote Streaming Example:")
    await remote_streaming_example()


if __name__ == "__main__":
    try:
        asyncio.run(main())
    except (
        ConnectionError,
        TimeoutError,
        OSError,
        socket.gaierror,
        RemoteServerUnavailableError,
    ) as exc:
        print(
            "\nRemoteTeam server is not available. Start a remote AgentOS instance at "
            "http://localhost:7778 and rerun this cookbook."
        )
        print(f"Original error: {exc}")

Start the matching AgentOS server

Save this as research_server.py. It registers the research-team ID on port 7778, matching the client above.

research_server.py
from agno.agent import Agent
from agno.models.openai import OpenAIResponses
from agno.os import AgentOS
from agno.team import Team

research_team = Team(
    id="research-team",
    model=OpenAIResponses(id="gpt-5.6-luna"),
    members=[Agent(name="Researcher", model=OpenAIResponses(id="gpt-5.6-luna"))],
)
agent_os = AgentOS(teams=[research_team])
app = agent_os.get_app()

if __name__ == "__main__":
    agent_os.serve(app=app, host="127.0.0.1", port=7778)

Set OPENAI_API_KEY in the server terminal and run python research_server.py. Leave it running, then run remote_team.py in a second terminal. The API key is used by the server's models. The client passes IDs, but conversation history requires a database and history configuration on the hosted team; this minimal server does not persist it.

Run the Example

Set up your virtual environment

uv venv --python 3.12
source .venv/bin/activate

Install dependencies

uv pip install -U agno openai fastapi uvicorn

Run the example

Save the code above as remote_team.py, then run:

python remote_team.py

Full source: cookbook/03_teams/14_run_control/remote_team.py