Skip to main content

Agent CLI SDK

CI License: MIT Python 3.8+

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 UniversalAgent and 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-cli shoud be login
  • Copilot: brew install copilot-cli shoud 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:

  1. Auto-detect your environment (checking if gemini or copilot is installed).
  2. Allow you to select a Driver Engine.
  3. 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-json support.
  • 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)

Source distribution for agent-cli-sdk 0.2.0
File Size Uploaded
agent_cli_sdk-0.2.0.tar.gz 36.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for agent-cli-sdk 0.2.0
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page