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.
Release files for agent-cli-sdk 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| agent_cli_sdk-0.2.0.tar.gz | 36.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| agent_cli_sdk-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 53.8 kB
Release files / agent_cli_sdk-0.2.0.tar.gz
| Download URL | agent_cli_sdk-0.2.0.tar.gz |
|---|---|
| Size | 36.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9dbb07193162ece8cc5ea651efe0fed1b24531eeae2ccdd81598189b3b166ecd
|
|
BLAKE2b-256 checksum How to use checksums |
a049cb1600cf72ea5c0dc02fce227febab8cd58c98f8469f4f6e2d2ca1d61851
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Release files / agent_cli_sdk-0.2.0-py3-none-any.whl
| Download URL | agent_cli_sdk-0.2.0-py3-none-any.whl |
|---|---|
| Size | 17.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a76a5b6a32532a3ac5214931e0736458401b10c56c51c021dcf217a435e2842a
|
|
BLAKE2b-256 checksum How to use checksums |
082d303657ed73febf2980676192027605977c6fc82b217d5d94b3a5bae98cf6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|