ACP adapter for pydantic-ai agents.
Project description
pydantic-acp
pydantic-acp adapts pydantic_ai.Agent instances to the ACP agent interface.
Entry Points
run_acp(...)create_acp_agent(...)AdapterConfigAcpSessionContextMemorySessionStoreFileSessionStore
What It Covers
pydantic-acp includes:
- ACP session lifecycle and replay
- session-local model control
- providers for host-owned models, modes, config options, and plans
- native deferred approval bridging
- projection maps for filesystem diffs and bash previews
- capability bridges for hooks, history processors, prepare-tools, and MCP metadata
- hook introspection and
HookProjectionMap - client-backed filesystem and terminal helpers
Compatibility Policy
pydantic-acp currently pins pydantic-ai-slim==1.83.0.
That pin is still deliberate, but the adapter no longer imports Pydantic AI
private history-processor modules directly. ACP Kit defines its own
history-processor callable aliases and wires them into the public
Agent(..., history_processors=...) surface.
Practical implication:
- upgrades should still be treated as deliberate compatibility work
- ACP Kit is no longer coupled to
pydantic_ai._history_processorimports - history processor integrations should use ACP Kit's exported aliases or plain callable functions, not upstream private modules
Slash commands are available for:
/model/tools/hooks/mcp-servers
Quick Start
from pydantic_ai import Agent
from pydantic_acp import run_acp
agent = Agent("openai:gpt-5", name="demo-agent")
run_acp(agent=agent)
Configured Runtime
from pathlib import Path
from pydantic_ai import Agent
from pydantic_acp import (
AdapterConfig,
FileSessionStore,
NativeApprovalBridge,
run_acp,
)
agent = Agent("openai:gpt-5", name="configured-agent")
run_acp(
agent=agent,
config=AdapterConfig(
session_store=FileSessionStore(root=Path(".acp-sessions")),
approval_bridge=NativeApprovalBridge(enable_persistent_choices=True),
),
)
Projection Maps
Filesystem projection:
from pydantic_acp import FileSystemProjectionMap, run_acp
run_acp(
agent=agent,
projection_maps=(
FileSystemProjectionMap(
default_read_tool="read_file",
default_write_tool="write_file",
default_bash_tool="execute",
),
),
)
Hook projection:
from pydantic_acp import HookProjectionMap, run_acp
run_acp(
agent=agent,
projection_maps=(
HookProjectionMap(
hidden_event_ids=frozenset({"after_model_request"}),
event_labels={"before_tool_execute": "Starting Tool"},
),
),
)
Factories, Providers, And Host Backends
Use agent_factory or AgentSource when the session context should influence agent creation.
Use providers when models, modes, config options, or plans belong to the host layer. Use
ClientHostContext when tools should talk back to the ACP client's filesystem or terminal.
Examples
See examples/pydantic/README.md for focused SDK examples and the full runnable demo.
Key examples:
- examples/pydantic/static_agent.py
- examples/pydantic/hook_projection.py
- examples/pydantic/strong_agent.py
For full workspace documentation, see:
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 pydantic_acp-0.8.1.tar.gz.
File metadata
- Download URL: pydantic_acp-0.8.1.tar.gz
- Upload date:
- Size: 68.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f8b5d63348415e9847125f610c848d5e8a8da91a574223775a66a37bfb6995de
|
|
| MD5 |
5be6b9661e221164e47c118500d4cc64
|
|
| BLAKE2b-256 |
d798e98f52b031d5ecbb9135f3550d47283772e6a01bb0c614c112e366b4dd63
|
File details
Details for the file pydantic_acp-0.8.1-py3-none-any.whl.
File metadata
- Download URL: pydantic_acp-0.8.1-py3-none-any.whl
- Upload date:
- Size: 98.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b459ee5dccd6637fd73c5c50c80c9016981d948bdb46e84c93a0059c8cd12987
|
|
| MD5 |
93589545453d3f5e3b7b16e564b5dad3
|
|
| BLAKE2b-256 |
aad993e827bfbee07fcbf4c9629fd1073a44000994a9e9f083535c7e5a0d46cb
|