Universal SDK for interacting with AI Agent CLIs (Gemini, Copilot, etc.)
Project description
Agent CLI SDK
Note: This project is currently in Technical Preview.
The agent-cli-sdk provides a universal, programmable interface for interacting with AI Agent CLIs like GitHub Copilot and Google Gemini.
By leveraging your local CLI tools as the "runtime engine," this SDK allows you to build sophisticated agentic applications while reusing existing authentication, session persistence, and local context without managing complex API keys or HTTP clients manually.
🚀 Key Features
- Universal Agent Interface: Write your business logic once using
UniversalAgentand switch between drivers (CopilotDriver,GeminiDriver,MockDriver) seamlessly. - CLI as a Runtime: Reuses local binary capabilities (auth, tool execution, context awareness).
- Full Protocol Support:
- GitHub Copilot: Full JSON-RPC support (LSP-style framing) with bidirectional tool execution.
- Google Gemini: Robust CLI wrapper with streaming JSON event parsing.
- ReAct Loop & Custom Tools: Register any Python function as a tool; the SDK handles the thought-action-observation loop automatically.
- Stateful Sessions: Built-in support for capturing and resuming CLI session IDs across application restarts.
📦 Installation
pip install agent-cli-sdk
Ensure you have the corresponding CLI installed:
- Gemini:
brew install gemini-clishoud be login - Copilot:
brew install copilot-clishoud be login
🛠 Quick Start
One logic, any engine. Here is how you run a simple chat with Gemini:
import asyncio
from agent_sdk.core.agent import UniversalAgent
from agent_sdk.drivers.gemini_driver import GeminiDriver
async def main():
# 1. Choose your engine
driver = GeminiDriver()
# 2. Initialize the Universal Agent
agent = UniversalAgent(driver)
# 3. Stream responses
print("User: Explain quantum computing.")
async for event in agent.stream("Explain quantum computing."):
if event.type.name == "CONTENT":
print(event.payload, end="", flush=True)
if __name__ == "__main__":
asyncio.run(main())
🎮 Explore Universal Demos
We provide a Guided Launcher to explore all SDK capabilities across different drivers.
python3 examples/demo_launcher.py
The launcher will:
- Auto-detect your environment (checking if
geminiorcopilotis installed). - Allow you to select a Driver Engine.
- Let you select a Task (Chat, Custom Tools, Session Persistence, etc.) to run on that engine.
🏗 Architecture
The SDK follows a modular "Driver-Controller" pattern:
UniversalAgent: The high-level controller. Manages message history, tool registration, and the ReAct execution loop.AgentDriver: The abstraction layer.CopilotDriver: Implements JSON-RPC 2.0 over Stdio (LSP framing). Supports server-side requests (the CLI asking the SDK to run a tool).GeminiDriver: Implements the CLI wrapper pattern with-o stream-jsonsupport.
JsonRpcClient: A robust, async-first JSON-RPC client designed for high-concurrency CLI communication.
🧪 Development & Testing
We maintain a high-quality codebase with extensive test coverage.
- Unit & Integration Tests: 100% pass rate across 29 core test cases.
- Code Coverage: 82% (targeting 90%+).
- Stability: Built-in execution timeouts and automated cleanup for subprocesses.
Running Tests
# Run all tests with coverage report
pytest --cov=src/agent_sdk tests/ --ignore=tests/e2e --cov-report=term-missing --timeout=5
E2E Testing
E2E tests require authenticated local CLIs:
# Run Gemini E2E
pytest tests/e2e/test_gemini_e2e.py
📄 License
Distributed under the MIT License. See LICENSE for more information.
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 agent_cli_sdk-0.2.0.tar.gz.
File metadata
- Download URL: agent_cli_sdk-0.2.0.tar.gz
- Upload date:
- Size: 36.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9dbb07193162ece8cc5ea651efe0fed1b24531eeae2ccdd81598189b3b166ecd
|
|
| MD5 |
88d94441345951b2ff12f6df35a8ea2b
|
|
| BLAKE2b-256 |
a049cb1600cf72ea5c0dc02fce227febab8cd58c98f8469f4f6e2d2ca1d61851
|
File details
Details for the file agent_cli_sdk-0.2.0-py3-none-any.whl.
File metadata
- Download URL: agent_cli_sdk-0.2.0-py3-none-any.whl
- Upload date:
- Size: 17.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a76a5b6a32532a3ac5214931e0736458401b10c56c51c021dcf217a435e2842a
|
|
| MD5 |
983658fa2cfd1cbd3b1b458ceed2b62a
|
|
| BLAKE2b-256 |
082d303657ed73febf2980676192027605977c6fc82b217d5d94b3a5bae98cf6
|