Agent Relay Python SDK
Python SDK for two workflows:
Orchestratemode spawns and manages AI agents from Python.Communicatemode puts an existing agent framework on Relaycast withRelay+on_relay().
Installation
Orchestrate
pip install agent-relay-sdk
Communicate
pip install "agent-relay-sdk[communicate]"
The SDK ships per-platform wheels with the broker binary embedded. pip install is the network boundary — no downloads happen at import or first use. Communicate mode also needs the framework package you want to wrap, such as claude-agent-sdk, google-adk, agno, swarms, or crewai.
Requirements
-
Python 3.10+
-
A supported platform (the wheel ships a prebuilt
agent-relay-broker):Platform Wheel tag macOS Apple Silicon macosx_11_0_arm64macOS Intel macosx_10_12_x86_64Linux x86_64 manylinux_2_17_x86_64.manylinux2014_x86_64Linux aarch64 manylinux_2_17_aarch64.manylinux2014_aarch64Linux binaries are built statically against musl, so they install on glibc and musl distros (Debian, Ubuntu, RHEL, Alpine, …). Other platforms (Windows, FreeBSD, linux-armv7) are unsupported —
pip installwill fail with "no matching distribution found".To override the bundled binary (e.g. for local development against a custom broker build), set
BROKER_BINARY_PATHorAGENT_RELAY_BINto an absolute path.
Development
For an editable install (pip install -e packages/sdk-py), build the broker locally and copy it into the wheel tree:
cargo build --release --bin agent-relay-broker
packages/sdk-py/scripts/sync-broker-dev.sh
The destination (src/agent_relay/bin/) is gitignored. Alternatively, set BROKER_BINARY_PATH=$(pwd)/target/release/agent-relay-broker in your shell.
Choose a Mode
Orchestrate
Use AgentRelay when you want Python to spawn agents, wait for readiness, route messages, and shut everything down.
import asyncio
from agent_relay import AgentRelay, Models
async def main():
relay = AgentRelay(channels=["dev"])
relay.on_message_received = lambda msg: print(f"[{msg.from_name}]: {msg.text}")
await relay.claude.spawn(
name="Reviewer",
model=Models.Claude.OPUS,
channels=["dev"],
task="Review the PR and suggest improvements",
)
await relay.codex.spawn(
name="Builder",
model=Models.Codex.GPT_5_3_CODEX,
channels=["dev"],
task="Implement the suggestions",
)
await asyncio.gather(
relay.wait_for_agent_ready("Reviewer"),
relay.wait_for_agent_ready("Builder"),
)
await relay.shutdown()
asyncio.run(main())
Communicate
Use Relay + on_relay() when your framework already owns the runtime and you only want Relaycast messaging.
relay = Relay("Researcher")
agent = FrameworkAgent(...)
agent = on_relay(agent, relay)
Supported Python adapters:
- OpenAI Agents
- Claude Agent SDK
- Google ADK
- Agno
- Swarms
- CrewAI
The wrapped agent gets Relay tools for direct messages, channel posts, inbox reads, and agent discovery. Framework-specific receive hooks are added automatically.
API
AgentRelay
The main Orchestrate entry point. Pass channels to subscribe to message channels.
relay = AgentRelay(channels=["dev", "planning"])
Spawning Agents
Use runtime-specific spawners:
await relay.claude.spawn(name="Agent1", model=Models.Claude.SONNET, channels=["dev"], task="...")
await relay.codex.spawn(name="Agent2", model=Models.Codex.GPT_5_3_CODEX, channels=["dev"], task="...")
await relay.gemini.spawn(name="Agent3", model=Models.Gemini.GEMINI_2_5_PRO, channels=["dev"], task="...")
worker = await relay.claude.spawn(
name="HookedWorker",
channels=["dev"],
on_start=lambda ctx: print(f"spawning {ctx['name']}"),
on_success=lambda ctx: print(f"spawned {ctx['name']} ({ctx['runtime']})"),
on_error=lambda ctx: print(f"failed to spawn {ctx['name']}: {ctx['error']}"),
)
await worker.release(
"done",
on_start=lambda ctx: print(f"releasing {ctx['name']}"),
on_success=lambda ctx: print(f"released {ctx['name']}"),
)
Relay
The Communicate-mode client. Configure it directly or via RELAY_WORKSPACE, RELAY_API_KEY, and RELAY_BASE_URL.
from agent_relay import Relay
relay = Relay("Researcher")
await relay.send("Lead", "Status update")
await relay.post("docs", "Wave 5.1 complete")
messages = await relay.inbox()
human = relay.system()
await human.send_message(
to="Agent1",
text="Please start the analysis",
# wait (default) queues for the next safe idle boundary and can remain
# unread while the recipient is busy. steer requests immediate injection
# and may interrupt active work. Send success confirms enqueue only.
mode="wait",
)
on_relay()
Wrap a framework-owned agent or options object and keep the runtime you already use.
from agent_relay import Relay, on_relay
relay = Relay("Researcher")
wrapped = on_relay(framework_agent_or_options, relay)
Event Hooks
relay.on_message_received = lambda msg: ... # New message
relay.on_agent_ready = lambda agent: ... # Agent connected
relay.on_agent_exited = lambda agent: ... # Agent exited
relay.on_agent_spawned = lambda agent: ... # Agent spawned
relay.on_worker_output = lambda data: ... # Agent output
relay.on_agent_idle = lambda agent: ... # Agent idle
Models
Models.Claude.OPUS
Models.Claude.SONNET
Models.Claude.HAIKU
Models.Codex.GPT_5_2_CODEX
Models.Codex.GPT_5_3_CODEX
Models.Gemini.GEMINI_2_5_PRO
Models.Gemini.GEMINI_2_5_FLASH
License
Apache-2.0
Metadata
Release files for agent-relay-sdk 13.1.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
| File | Actions Reset | |||
|---|---|---|---|---|
| agent_relay_sdk-13.1.3-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl | Python 3 | none | Linux glibc 2.17+ x86-64 | Details for agent_relay_sdk-13.1.3-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl |
| agent_relay_sdk-13.1.3-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl | Python 3 | none | Linux glibc 2.17+ ARM64 | Details for agent_relay_sdk-13.1.3-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl |
| agent_relay_sdk-13.1.3-py3-none-macosx_11_0_arm64.whl | Python 3 | none | macOS 11.0+ ARM64 | Details for agent_relay_sdk-13.1.3-py3-none-macosx_11_0_arm64.whl |
| agent_relay_sdk-13.1.3-py3-none-macosx_10_12_x86_64.whl | Python 3 | none | macOS 10.12+ x86-64 | Details for agent_relay_sdk-13.1.3-py3-none-macosx_10_12_x86_64.whl |
Total release size: 31.9 MB
Release files / agent_relay_sdk-13.1.3-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
| Download URL | agent_relay_sdk-13.1.3-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl |
|---|---|
| Size | 8.0 MB |
| Tags | Linux glibc 2.17+ x86-64 Python 3 |
|
SHA-256 checksum How to use checksums |
2ad07f123479b9c8f54d711bc0b3df268fa7b7bb4af359aae257fc9dfc3b70c5
|
|
BLAKE2b-256 checksum How to use checksums |
b2d0457be394926574f926aec1bcba851369c88ebba3743d7e1352f4b5b21be7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 7, 2026.
Transparency logRelease files / agent_relay_sdk-13.1.3-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
| Download URL | agent_relay_sdk-13.1.3-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl |
|---|---|
| Size | 8.9 MB |
| Tags | Linux glibc 2.17+ ARM64 Python 3 |
|
SHA-256 checksum How to use checksums |
2cd703a56f7e473e46e761944bb23f48c7120b0f3e800881605993d4de6ec5d5
|
|
BLAKE2b-256 checksum How to use checksums |
dc3dd89d3055e53a8de7cdb3a64b8a3215b13f7c7b0303f72cb1244b3e7f0ba5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 7, 2026.
Transparency logRelease files / agent_relay_sdk-13.1.3-py3-none-macosx_11_0_arm64.whl
| Download URL | agent_relay_sdk-13.1.3-py3-none-macosx_11_0_arm64.whl |
|---|---|
| Size | 7.2 MB |
| Tags | Python 3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
df3160e36851c5723eedbcf0bdac613f4f4cc0a15388cfebe41e6e5868babd67
|
|
BLAKE2b-256 checksum How to use checksums |
2457f69ed0b5d61bcb5268f2bf2930599c11bc2ce8e0a623434e017443e3bf6e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 7, 2026.
Transparency logRelease files / agent_relay_sdk-13.1.3-py3-none-macosx_10_12_x86_64.whl
| Download URL | agent_relay_sdk-13.1.3-py3-none-macosx_10_12_x86_64.whl |
|---|---|
| Size | 7.8 MB |
| Tags | Python 3 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
98c38e66280d6522647e232a29295064b288e707459ee610d6ad3975748f71b5
|
|
BLAKE2b-256 checksum How to use checksums |
82051897fa019f0ee594e3922fc89cb7d0ed37612bfd09458f663239418c9aba
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 7, 2026.
Transparency logSecurity for agent-relay-sdk 13.1.3
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 4 files in this release have been uploaded with provenance metadata.
Attestation for agent_relay_sdk-13.1.3-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 7, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.