[Feat]: feat(transport): add stdio transport to run A2A protocol over process pipes
@muscariello is already working on this.
Since Oct 31, 2025.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 35/100
Research direction
Look at the existing transport implementations (likely HTTP, gRPC) in the SDK's transport module. Understand the ClientTransport interface and the A2A protocol's JSON-RPC message format. The work involves creating a new transport class that manages a child process, reads/writes line-delimited JSON over stdin/stdout, and integrates with the existing request/response and event streaming logic. Testing will require spawning an agent process with a --stdio flag.
Written by the indexing model from the issue text.
Description
Is your feature request related to a problem? Please describe.
Support a2a protocol over stdio in the Python SDK.
Describe the solution you'd like
A stdio transport for A2A lets the Python client speak the existing A2A protocol directly over a spawned process’s stdin/stdout instead of HTTP or gRPC, enabling fully local, port‑less, hermetic agent execution. The SDK would launch an agent (or model/runtime) with a --stdio flag, exchange line‑delimited JSON-RPC messages, and multiplex streaming task events through a single reader loop that dispatches responses and updates by request ID. This approach reduces overhead and dependencies (no network stack), improves security by narrowing exposure to a private child process, and unlocks embedding scenarios (CI, plugins, air‑gapped systems) while preserving the current ClientTransport interface, interceptors, telemetry, and error semantics.
Describe alternatives you've considered
No response
Additional context
No response
Code of Conduct
- I agree to follow this project's Code of Conduct
- Dominant language
- Python
- Stars
- 2.2k
- Forks
- 496
- Avg merge
- 1d 23h
- Merged PRs (30d)
- 16
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from a2aproject/a2a-python
-
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
a2aproject/a2a-python#1261 ·
-
component: server status:awaiting response
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
a2aproject/a2a-python#1237 · 1 comment · 1 assignee ·
-
component: server status:awaiting response status:stale
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
a2aproject/a2a-python#1215 · 2 comments · 1 assignee ·
-
component: server status:awaiting response status:stale
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
a2aproject/a2a-python#1205 · 3 comments · 1 assignee ·
-
component: server status:awaiting response status:stale
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
a2aproject/a2a-python#1204 · 2 comments · 1 assignee ·
All issues in a2aproject/a2a-python
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
-
enhancement
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100