ag-ui-claude-agent-sdk
Implementation of the AG-UI protocol for the Anthropic Claude Agent SDK (Python).
Installation
pip install -e .
Usage
The adapter manages the SDK lifecycle internally — just call adapter.run(input_data):
from ag_ui_claude_sdk import ClaudeAgentAdapter, add_claude_fastapi_endpoint
adapter = ClaudeAgentAdapter(name="my_agent", options={"model": "claude-haiku-4-5"})
add_claude_fastapi_endpoint(app=app, adapter=adapter, path="/my_agent")
Features
- Full lifecycle management - Handles client pooling, message extraction, and event translation internally
- Interrupt support - Call
adapter.interrupt()to stop a running query - Dynamic frontend tools - Client-provided tools automatically added as MCP server with auto-granted permissions
- Frontend tool halting - Streams pause after frontend tool calls for client-side execution (human-in-the-loop)
- Streaming tool arguments - Real-time TOOL_CALL_ARGS emission as JSON arguments stream in
- Bidirectional state sync - Shared state management via ag_ui_update_state tool
- Context injection - Context and state injected into prompts for agent awareness
- Event cleanup - Hanging events (tool calls, reasoning blocks) automatically closed on stream end
- Custom tools via MCP - Define custom tools using Claude SDK's @tool decorator
- Forwarded props - Per-run option overrides with security whitelist
Examples
The integration includes 5 example agents:
| Route | Description | Features |
|---|---|---|
/agentic_chat |
Basic conversational assistant | Simple chat |
/backend_tool_rendering |
Weather tool (backend MCP) | Backend tool execution, tool rendering |
/shared_state |
Recipe collaboration | Bidirectional state sync, ag_ui_update_state |
/human_in_the_loop |
Task planning with approval | Frontend tools, step tracking, approval workflow |
/tool_based_generative_ui |
Frontend tool rendering | Dynamic frontend tools, generative UI |
Running the Examples
# Install dependencies
cd integrations/claude-agent-sdk/python
pip install -e .
# Start server (port 8019)
cd examples
ANTHROPIC_API_KEY=sk-ant-xxx python server.py
# Start Dojo (in another terminal)
cd apps/dojo
pnpm dev
Visit http://localhost:3000 and select "Claude Agent SDK (Python)"
Session Persistence
Claude SDK maintains conversation state in the .claude/ directory. For production deployments:
- Development: Sessions persist locally in
.claude/{session_id}/ - Production: Mount
.claude/as a persistent volume in your container - Resumption: Pass
resume=<session_id>via the options dict orforwarded_props
See Claude SDK Hosting Guide for deployment patterns.
Links
Metadata
Release files for ag-ui-claude-sdk 0.1.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| ag_ui_claude_sdk-0.1.5.tar.gz | 58.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ag_ui_claude_sdk-0.1.5-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 90.0 kB
Release files / ag_ui_claude_sdk-0.1.5.tar.gz
| Download URL | ag_ui_claude_sdk-0.1.5.tar.gz |
|---|---|
| Size | 58.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1ed02d8ed592f893b1b8c60fcb1386a0480a2f633daba566c09a3c41e090bf77
|
|
BLAKE2b-256 checksum How to use checksums |
33280c89e553bfa67c83c7e1b713c3ff3bdf60889327ade9371649a884683699
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.19 {"installer":{"name":"uv","version":"0.11.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / ag_ui_claude_sdk-0.1.5-py3-none-any.whl
| Download URL | ag_ui_claude_sdk-0.1.5-py3-none-any.whl |
|---|---|
| Size | 32.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ac9fe30ed60b4f33d04b370e9a070a8ddd37487906fcc4f65a08fdc6f4139a06
|
|
BLAKE2b-256 checksum How to use checksums |
26717148c23b945a8d7ab2347e0a9dcd9416a392d0d142c2cab972a1c358084c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.19 {"installer":{"name":"uv","version":"0.11.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|