Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

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.3. 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, CrewAI, OpenAI Agents, and Microsoft Agent Framework 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
pip install 'yutha[openai-agents]'      # + OpenAI Agents adapter
pip install 'yutha[maf]'                # + Microsoft Agent Framework 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, OpenAI Agents, Microsoft Agent Framework, 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.
  • OpenAI Agents research-crew example — end-to-end OpenAI Agents adapter walkthrough (handoff bridging, citation-enforcing constitution, cap-gated function_tools).
  • Microsoft Agent Framework DevOps example — end-to-end MAF adapter walkthrough (SRE countersign, schema-change quarantine, ChatAgent integration).
  • Worked examples — runnable end-to-end demos covering customer support, code review with security boundaries, AP / invoice processing, research-crew citation enforcement, and DevOps incident-response.
  • 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.

Metadata

Release files for yutha 0.1.0a4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for yutha 0.1.0a4
File Size Uploaded
yutha-0.1.0a4.tar.gz 122.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for yutha 0.1.0a4
File Interpreter ABI Platform
yutha-0.1.0a4-py3-none-any.whl Python 3 none any Details

Total release size: 278.9 kB

Release files / yutha-0.1.0a4.tar.gz

Download URL yutha-0.1.0a4.tar.gz
Size 122.2 kB
Tags Source
SHA-256 checksum
How to use checksums
46e688ea215cb80e5ac30dd130257a0098228bb88063c91202a996bd15c79163
BLAKE2b-256 checksum
How to use checksums
e98294db4ae4b1ddde4d858813811f7285ad0651274c834ebc879bcfa2bb0ba5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.13 {"installer":{"name":"uv","version":"0.11.13","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / yutha-0.1.0a4-py3-none-any.whl

Download URL yutha-0.1.0a4-py3-none-any.whl
Size 156.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e35f42dc3e8bc8ec8e5ad483a1619488c8ba5d27ca23a5841d893b2dffe0302a
BLAKE2b-256 checksum
How to use checksums
6e0a33f75077c052dd951922233a69c09118dbee7242d45ed8790127fffd9cb4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.13 {"installer":{"name":"uv","version":"0.11.13","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page