Skip to main content

Universal SDK for interacting with AI Agent CLIs (Gemini, Copilot, etc.)

Project description

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

agent_cli_sdk-0.2.0.tar.gz (36.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

agent_cli_sdk-0.2.0-py3-none-any.whl (17.8 kB view details)

Uploaded Python 3

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

Hashes for agent_cli_sdk-0.2.0.tar.gz
Algorithm Hash digest
SHA256 9dbb07193162ece8cc5ea651efe0fed1b24531eeae2ccdd81598189b3b166ecd
MD5 88d94441345951b2ff12f6df35a8ea2b
BLAKE2b-256 a049cb1600cf72ea5c0dc02fce227febab8cd58c98f8469f4f6e2d2ca1d61851

See more details on using hashes here.

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

Hashes for agent_cli_sdk-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a76a5b6a32532a3ac5214931e0736458401b10c56c51c021dcf217a435e2842a
MD5 983658fa2cfd1cbd3b1b458ceed2b62a
BLAKE2b-256 082d303657ed73febf2980676192027605977c6fc82b217d5d94b3a5bae98cf6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page