Skip to main content

Donkey Development Kit (DDK)

Donkey Development Kit

An SDK for consuming Agent Fabric capabilities — governed model and tool access — from your own agent framework, in your own IDE, without adopting Mule.

Project status — alpha. This is v0.1.0, the first release (Development Status :: 3 - Alpha). The LLM data plane is live-verified; most other surfaces are verification-gated (see What's verified below). Install it from PyPI with pip install donkey-kit — see Install. Unofficial: an independent project, not affiliated with or endorsed by Salesforce or MuleSoft.

Already integrated the pre-rebrand SDK? The move to Donkey Development Kit is a clean break — no import shims, env fallbacks, or OpenTelemetry dual-emit. The migration guide maps every renamed import, class, CLI, config key, and environment variable, and calls out the breaking OpenTelemetry attribute-namespace change.

Support & trademark statement (please read)

"Agent Fabric" is a MuleSoft (Salesforce) product name, not a generic term. MuleSoft, Anypoint, Omni Gateway, and Agent Fabric are Salesforce trademarks.

Maintainer & support. This is an independent, community-maintained project, published under the org-scoped Donkey-Development-Kit name — it is not affiliated with, endorsed by, or supported by Salesforce or MuleSoft. It is provided as-is, without warranty of any kind; the maintainers triage issues and pull requests on a best-effort basis, with no SLA. Because it ships under a distinct, org-scoped name, only the descriptive form ("an SDK for MuleSoft Agent Fabric") appears in prose — the package does not represent itself as a first-party, official-status SDK.

Licensed under Apache-2.0. See docs/unsupported-boundary.md for exactly which platform APIs this SDK calls and their support classification.

Documentation

Two audiences, two doc sets:

  • Use the SDK → the documentation site: https://donkey-development-kit.github.io/donkey-development-kit/. Install and configure, per-framework model access, the governed error taxonomy, and what to trust today — everything you need to point your agent at a governed proxy.
  • See it run → runnable demos live in the companion repo donkey-development-kit-demos: the framework-free client, native framework objects, the governed error taxonomy, and the screen-recording scripts.
  • Understand or contribute to the repo:
    • ARCHITECTURE.md — how the SDK is built: the layered stack, the framework-free core, verification discipline, the error taxonomy, and framework tiering.
    • CONTRIBUTING.md — how to work in the repo: the branch/PR/release workflow, the testing strategy, coding conventions, and the docs-sync rule.
    • docs/verified-apis.md — the verification ledger: the single source of truth for what is confirmed against a real sandbox and what is still blocked.

Install

pip install "donkey-kit[llm,langgraph]"   # base + raw client + one framework

To work on the SDK itself, install from source instead:

git clone https://github.com/Donkey-Development-Kit/donkey-development-kit.git
cd donkey-development-kit/python
pip install -e ".[llm,langgraph]"

Extras are one per framework (langgraph, adk, strands, agent_framework, openai-agents, anthropic, crewai, llamaindex) plus mcp, a2a, otel, cli, local, test (the conformance pytest plugin — pytest --donkey-conformance --agent=my_app.agent:build), and all. Configuration and first-agent walkthroughs live on the documentation site.

Framework support

The roster is deliberately one deep, seven shallow (BG §1.8): one adapter held to the full conformance bar, the rest supported through the three-line connection_kwargs() escape hatch. Every framework below returns its framework's own native object — never a wrapper.

Tier Frameworks What it means
Conformance-tested The raw client (donkey.llm.client()) and LangGraph Held to the conformance suite in CI — the governed contract is proven end to end.
Supported via connection_kwargs() Google ADK, Strands, Microsoft Agent Framework, OpenAI Agents SDK, Anthropic SDK, CrewAI, LlamaIndex Governed kwargs verified at the connection_kwargs() level, not conformance-tested.

connection_kwargs() works for all eight; a second deep adapter is promoted from demand evidence, one at a time (#223/#244) — never guessed up front. See the framework pages for each.

What's verified (verification discipline)

The LLM data plane — governed model access through the Omni Gateway proxy — is live-verified against a real Anypoint sandbox, and both the framework-free client and the framework adapters are wired to that verified contract — LangGraph is held to the conformance suite, the other seven are supported at the connection_kwargs() level (see Framework support). Everything still gated raises NotImplementedError("blocked on verification: …") rather than guessing at an unverified endpoint, header, or class name — that currently includes Exchange→MCP tool discovery, the provisioning control-plane, and the exact framework adapter class names/kwargs.

The discipline behind this is documented in ARCHITECTURE.md → Verification discipline; the row-by-row worklist is docs/verified-apis.md.

Conformance exemptions

The conformance plugin holds the SDK to the same bar it asks of your agent. Where a framework legitimately cannot satisfy a scenario, the reason is asserted in code (KNOWN_LIMITATIONS) and published here as credibility — never a silent skip (the conformance kit):

Framework Scenario Why it's exempt
ADK, CrewAI correlation ID propagated LiteLLM owns the transport, so the SDK's httpx client cannot be injected — the correlation ID ends up per-client, not per-run. A LiteLLM logger callback may recover trace correlation later.
LlamaIndex, Microsoft Agent Framework correlation ID propagated These adapters receive a static default_headers snapshot, which deliberately excludes the per-run correlation ID. Without the SDK's httpx client, donkey.run(id=...) cannot update their request headers.
ADK, CrewAI gateway identity observed LiteLLM owns the transport, so no response reaches the SDK's _on_response hook. When every resolved adapter is non-observing, donkey.last_call reports UNAVAILABLE and names them in surface.
LlamaIndex, Microsoft Agent Framework gateway identity observed These adapters receive default_headers, not the SDK's httpx client, so no response reaches _on_response. When every resolved adapter is non-observing, donkey.last_call reports UNAVAILABLE and names them in surface.

Release files for donkey-kit 0.1.0

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

Source distribution (sdist)

Source distribution for donkey-kit 0.1.0
File Size Uploaded
donkey_kit-0.1.0.tar.gz 327.6 kB Details

Built distribution (wheel)

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

Total release size: 548.3 kB

Release files / donkey_kit-0.1.0.tar.gz

Download URL donkey_kit-0.1.0.tar.gz
Size 327.6 kB
Tags Source
SHA-256 checksum
How to use checksums
3ca66fd58d20ba0d1ebe196c4871e65de28e8e678309cf15e7c052a45ed3c16b
BLAKE2b-256 checksum
How to use checksums
ce044eb1be645f1fa740d1285568f7d186421955d7ce3367dce6a3d10c967ee0
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 Sep 25, 2026.

Transparency log

Release files / donkey_kit-0.1.0-py3-none-any.whl

Download URL donkey_kit-0.1.0-py3-none-any.whl
Size 220.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c8699936d729a4b3ed5b95047fd4fc244c6804072be986eb3b2c4bdd8f67eb58
BLAKE2b-256 checksum
How to use checksums
910b51f4e157565140fe15bde8bdd7518a147a86a2e1961e31a806335081a032
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 Sep 25, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

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