Add asyncio client using grpc.aio
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 8.7k
- Forks
- 1.3k
- Avg merge
- 2d 11h
- Merged PRs (30d)
- 253
Description
Motivation
The current Python SDK is sync-oriented. Agent runtimes and web services often run on asyncio, so an async client would make OpenShell easier to integrate without thread pools or blocking calls.
Proposed change
Add an asyncio client built on grpc.aio that mirrors the sync client surface where practical.
Example shape:
async with openshell.AsyncClient.from_env() as client:
result = await client.execute("print('hello')")
Acceptance criteria
- Add async connect/execute/close flows using
grpc.aio. - Mirror the sync API surface where practical and document any differences.
- Add async unit tests.
- Ensure sync APIs remain unchanged.
Notes
This is expected to be SDK-only unless gaps in the generated gRPC bindings are discovered.
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.
Research direction
Start by locating the Python sync SDK and its generated gRPC bindings, then trace the existing connect, execute, and close flows. Add the asyncio client with grpc.aio, cover the async flows with unit tests, document practical API differences, and verify the sync APIs remain unchanged.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- grpc, python
- Domain
- api
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 52/100