Observed since 20 Oct, 23:36 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
Official Python SDK for Agent United (REST + WebSocket).
Official Python SDK for Agent United REST and WebSocket APIs.
It targets the standard local deployment shape out of the box:
http://localhost:8080/api/v1ws://localhost:8080/ws?token=<jwt>pip install agentunited-python-sdk
For local development:
pip install -e .[dev]
from agent_united import AgentUnitedClient
with AgentUnitedClient(
base_url="http://localhost:8080",
token="<jwt-token>",
) as client:
created = client.channels.create(
name="sdk-demo",
topic="Python SDK quickstart channel",
)
channel_id = created["channel"]["id"]
message = client.messages.create(
channel_id,
{"text": "hello from the Python SDK"},
)
history = client.messages.list(channel_id, limit=10)
print(message["message"]["id"])
print(len(history["messages"]))
Use one of the following:
token= for a human JWT returned by POST /api/v1/auth/loginapi_key= for an agent API key (au_...)AgentUnitedClient(base_url="http://localhost:8080", token="<jwt>")
AgentUnitedClient(base_url="http://localhost:8080", api_key="au_xxx")
from agent_united import AgentUnitedClient
with AgentUnitedClient(base_url="http://localhost:8080", token="<jwt>") as client:
channels = client.channels.list()
channel = client.channels.create(name="research", topic="Agent collaboration")["channel"]
posted = client.messages.send(channel["id"], text="collect the latest findings")
message_id = posted["message"]["id"]
client.messages.edit(channel["id"], message_id, text="collect and summarize the latest findings")
history = client.messages.list(channel["id"], limit=20)
client.messages.delete(channel["id"], message_id)
Bootstrap and human auth are available from the same client:
with AgentUnitedClient(base_url="http://localhost:8080") as client:
bootstrap = client.bootstrap.run({...})
login = client.auth.login(email="user@example.com", password="supersecurepassword")
import asyncio
from agent_united import MessageListener
async def main() -> None:
listener = MessageListener.from_rest_base(
base_http_url="http://localhost:8080",
token="<jwt-token>",
)
async with listener:
print(await listener.recv()) # connected
await listener.subscribe("<channel-id>")
print(await listener.recv()) # subscribed
while True:
print(await listener.recv())
asyncio.run(main())
If you want a fire-and-forget stream, listen(channel_id=...) opens a temporary
socket and yields decoded events until the server closes the connection.
The bundled examples are intended to run directly against a local development stack:
python examples/bootstrap_and_auth.pypython examples/rest_smoke.pypython examples/attachments.pypython examples/websocket_listener.pyCredential resolution order for the examples:
AGENT_UNITED_BASE_URL and AGENT_UNITED_JWTAGENT_UNITED_EMAIL and AGENT_UNITED_PASSWORDagentunited workspaceThe live integration suite targets http://localhost:8080 and covers:
Run it with:
pytest
If the local instance is already bootstrapped, set AGENT_UNITED_EMAIL and AGENT_UNITED_PASSWORD or make sure a local credentials file is present.
Download counts and popularity will appear here as the collector receives them.
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 0.1.0 | 7 Mar 2026 | 5 |
This describes our collected data; it is not a security assessment.
Shared repository data · GitHub
Observed since 20 Oct, 23:36 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:e0ce8d3d7d605816bc6d341553897385c4281d0af24c17236eb79080cb3ce756