A unified Python interface to interact with popular coding agents.
Project description
Blocks Control SDK
A unified Python interface to interact with popular coding agents.
Think of it like litellm, but for coding agents
Supported Agents
- Claude Code - Anthropic's Claude
- Gemini CLI - Google's Gemini
- Codex CLI - OpenAI's Codex
- Cursor CLI - Cursor's AI agent
- OpenCode - OpenCode CLI agent
- Kimi CLI - Kimi's AI agent
Installation
pip install blocks-control-sdk
You must also have the dependent agent packages installed to use a specific agent.
npm i -g @anthropic-ai/claude-code # For Claude Code
npm i -g @google/gemini-cli # For Gemini CLI
npm i -g @openai/codex-cli # For Codex CLI
npm i -g @anthropic-ai/cursor-cli # For Cursor CLI (if applicable)
Usage
Async Streaming
import asyncio
from blocks_control_sdk import ClaudeCode
async def main():
agent = ClaudeCode()
async for message in agent.stream("Write a python script to print 'Hello, World!'"):
if isinstance(message, tuple):
tool_name, args = message
print(f"Tool call: {tool_name} with args {args}")
else:
print(message.content)
if __name__ == "__main__":
asyncio.run(main())
Sync with Callbacks
from blocks_control_sdk import Codex
agent = Codex()
def on_message(notification):
print(notification.message.content)
agent.register_notification(agent.notifications.NOTIFY_MESSAGE_V2, on_message)
agent.query("Write a python script to print 'Hello, World!'")
Synchronous Blocking Query (Beta)
from blocks_control_sdk import ClaudeCode
agent = ClaudeCode()
result = agent.query_sync_beta("Write a python script to print 'Hello, World!'", timeout=120)
print(result) # Prints the agent's final message
query_sync_beta(prompt, timeout=None) blocks until the agent completes and returns the final message as a string. Pass an optional timeout in seconds — raises TimeoutError if exceeded, RuntimeError if the agent is interrupted.
All Agents
from blocks_control_sdk import ClaudeCode, Codex, GeminiCLI, CursorCLI, OpenCode, KimiCLI
# Claude
claude = ClaudeCode()
# Gemini
gemini = GeminiCLI()
# Codex
codex = Codex()
# Cursor
cursor = CursorCLI()
# OpenCode
opencode = OpenCode()
# Kimi
kimi = KimiCLI()
Environment Variables
export ANTHROPIC_API_KEY="your-key" # For Claude
export GEMINI_API_KEY="your-key" # For Gemini
export OPENAI_API_KEY="your-key" # For Codex
export CURSOR_API_KEY="your-key" # For Cursor
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
blocks_control_sdk-0.2.0rc11.tar.gz
(140.6 kB
view details)
File details
Details for the file blocks_control_sdk-0.2.0rc11.tar.gz.
File metadata
- Download URL: blocks_control_sdk-0.2.0rc11.tar.gz
- Upload date:
- Size: 140.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dabe8a15b315130463ae64952133c7e969aab261803f45e5ab108accc540fbed
|
|
| MD5 |
ef19be1a8b8de0227cc1ec76692a14a8
|
|
| BLAKE2b-256 |
f99755d5f07650e50e22c0c40fc3e04f0dfe1bf8201f8270caf5a1bb9d328ab6
|