Python SDK for the Yutha agent-coordination control plane.
Project description
yutha
Async Python client for Yutha — open-source infrastructure for groups of AI agents. Identity, capability, accountability, and norms — built once, framework-agnostic.
Status — early-stage pre-release. Currently
v0.1.0-alpha.1. Solid enough to play with end-to-end, intentionally pre-1.0. Wire formats and API surfaces may shift before 1.0; pin tightly if you build on it.
The Python SDK gives you signed agent identities, capability-gated message sending, structured envelopes, and access to the append-only receipt log of the Yutha control plane. Adapters for LangGraph and CrewAI ship as optional extras, so the same SDK works regardless of how you build the agents above it.
Install
pip install yutha # core SDK only
pip install 'yutha[langgraph]' # + LangGraph adapter
pip install 'yutha[crewai]' # + CrewAI adapter
Python 3.11+ required. The core install pulls in grpcio, protobuf,
cryptography, and pydantic; the framework extras pull in their
respective dependencies (LangChain core, CrewAI, etc.).
Quickstart
A 60-second tour of what the SDK looks like — signing keys, passports, and the client surface. Full end-to-end with a live control plane is in the LangGraph guide.
import yutha
# An agent's cryptographic identity.
signing_key = yutha.SigningKey.generate()
# Its signed passport — the artifact that lets it join a swarm.
passport = yutha.Passport(
spec_version="1.0.0",
agent_id=yutha.AgentId.new(),
swarm_id=yutha.SwarmId.new(),
agent_public_key=signing_key.public_key(),
owner="example.com/my-agent",
framework="langgraph",
framework_version="0.2.0",
accepted_constitution_version="1.0.0",
tier=yutha.PassportTier.MINIMAL,
issued_at=yutha.Timestamp.now(),
expires_at=yutha.Timestamp(wall_clock="2099-01-01T00:00:00Z", monotonic_ns=2**62),
).sign(signing_key)
# Connect to a running control plane and register.
async with yutha.YuthaClient.connect(
"127.0.0.1:50051",
agent_id=passport.agent_id,
swarm_id=passport.swarm_id,
signing_key=signing_key,
) as client:
await client.admission.register(passport)
# ... send envelopes, issue capabilities, query receipts ...
What's next
- 15-minute LangGraph walkthrough — build a five-agent workflow with capability gating and a full audit trail.
- CrewAI walkthrough — the same SDK with CrewAI idioms.
- Worked examples — three runnable end-to-end demos covering customer support, code review with security boundaries, and AP / invoice processing.
- Concepts — passports, envelopes, capabilities, receipts, and the Cedar-based constitution layer in fifteen minutes.
How it fits together
┌──────────────────────────────────────────┐
│ yutha.YuthaClient │
│ ───────────────── │
│ .admission → AdmissionService stub │
│ .capability → CapabilityService stub │
│ .envelope → EnvelopeService stub │
│ .receipt → ReceiptService stub │
│ .constitution → ConstitutionService │
└─────────────────┬────────────────────────┘
│
┌─────────────────▼─────────────────┐
│ yutha.auth.BearerSession │ ← mints + refreshes
│ (Ed25519 over canonical bytes) │ AgentBearerToken
└─────────────────┬─────────────────┘
│
┌─────────────────▼───────────────┐
│ yutha._proto.* (grpcio stubs) │
└─────────────────────────────────┘
The client is a thin async wrapper over five gRPC services. Bearer tokens are short-lived, Ed25519-signed over the request's canonical bytes; the session handles minting and refresh transparently.
License
Apache 2.0. See LICENSE.
Contributing
Contributor setup, codegen, and the integration-test workflow are documented in the repository's CONTRIBUTING guide.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file yutha-0.1.0a1.tar.gz.
File metadata
- Download URL: yutha-0.1.0a1.tar.gz
- Upload date:
- Size: 82.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
efef80c5957cc43553f8e396bfc7a118a13d6e1dcb93080c83796d9702bd75d8
|
|
| MD5 |
ea225fd4eef5baa24a87f8f68dc4127b
|
|
| BLAKE2b-256 |
3655238eacf6b12916059f5985b4a43b41cd6cdbae7bab311472790cb909cc90
|
File details
Details for the file yutha-0.1.0a1-py3-none-any.whl.
File metadata
- Download URL: yutha-0.1.0a1-py3-none-any.whl
- Upload date:
- Size: 109.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ce363472d24fad5707ee1a729133585ca7a9d570f79677f39de4748cb67358a7
|
|
| MD5 |
7740bc9f95b33617993bbbefdb03b06d
|
|
| BLAKE2b-256 |
423c2d2a3ada7abd11cd8e12add22f08e439b328dc833d3d1649a69287d2549a
|