Universal SDK for coding agents - One API for all AI coding tools.
One SDK to rule them all. Query Claude Code, Codex, Cursor, ChatGPT, Kiro, Antigravity, and OpenCode with the same API.
import { Agent, AgentSDK } from 'agent-sdk';
// Single agent
const claude = Agent.create('claude');
await claude.ask("fix this bug");
// Compare all agents
const sdk = new AgentSDK();
const result = await sdk.compare({ prompt: "write hello world" });
console.log(result.fastest);npm install agent-sdk# Query a specific agent
agent-sdk ask claude "What is 2 + 2?"
# Compare all agents
agent-sdk compare "Write a fibonacci function"
# List available providers
agent-sdk list
# Benchmark providers
agent-sdk bench "Sort an array" 5- 7 providers - Claude, Codex, Cursor, ChatGPT, Kiro, Antigravity, OpenCode
- Unified API - Same code works for all agents
- Auto-retry - Retry on failure with exponential backoff
- Caching - Cache responses to avoid duplicate calls
- Benchmarking - Compare speed and cost across providers
- TypeScript - Full type safety
- CLI - Use from terminal
import { Agent } from 'agent-sdk';
const claude = Agent.create('claude');
// Check if available
if (await claude.isAvailable()) {
// Ask
const response = await claude.ask("fix this bug");
console.log(response.content);
// Get capabilities
const caps = claude.getCapabilities();
console.log(caps.maxTokens); // 200000
}import { AgentSDK } from 'agent-sdk';
const sdk = new AgentSDK();
// Get available providers
const available = await sdk.getAvailableProviders();
console.log(available); // ['claude', 'codex', 'cursor', ...]
// Compare responses
const result = await sdk.compare({
prompt: "Write a fibonacci function"
});
console.log(result.fastest); // 'claude'
console.log(result.cheapest); // 'opencode'
// Pretty print
console.log(sdk.formatComparison(result));import { AgentSDK } from 'agent-sdk';
const sdk = new AgentSDK(['claude', 'codex']);
const response = await sdk.query('claude', {
prompt: 'Explain async/await',
model: 'claude-opus-4-20250514'
});import { AgentSDK } from 'agent-sdk';
const sdk = new AgentSDK();
const results = await sdk.benchmark("Sort an array", 5);
for (const result of results) {
console.log(`${result.provider}: ${result.averageLatency}ms, ${(result.successRate * 100)}% success`);
}import { AgentSDK } from 'agent-sdk';
const sdk = new AgentSDK({ cache: true, cacheTtl: 600000 }); // 10 min TTL
// First call - hits API
await sdk.query('claude', { prompt: 'Hello' });
// Second call - returns cached
const response = await sdk.query('claude', { prompt: 'Hello' });
console.log(response.cached); // trueimport { AgentSDK } from 'agent-sdk';
const sdk = new AgentSDK();
// Make some queries
await sdk.query('claude', { prompt: 'Hello' });
await sdk.query('codex', { prompt: 'Hello' });
// Get stats
const stats = sdk.getStats();
console.log(stats.totalRequests); // 2
console.log(stats.tokensByProvider.claude); // { input: 0, output: 25, total: 25 }Create a new agent.
const agent = Agent.create('claude', {
model: 'claude-opus-4-20250514',
retries: 3,
retryDelay: 1000
});Simple query.
const response = await agent.ask("Hello!");Advanced query.
const response = await agent.query({
prompt: "Fix this bug",
context: "Error in line 42",
model: 'claude-opus-4-20250514',
maxTokens: 4096
});Multi-agent manager.
const sdk = new AgentSDK({
providers: ['claude', 'codex', 'cursor'],
cache: true,
retries: 3
});{
content: "The response...",
provider: "claude",
model: "claude-sonnet-4-20250514",
tokens: { input: 150, output: 250, total: 400 },
latency: 1234,
files: [{ path: "src/main.ts", action: "update" }],
cached: false
}| Provider | CLI | Models |
|---|---|---|
| Claude | claude |
claude-sonnet-4-20250514, claude-opus-4-20250514 |
| Codex | codex |
o3, o4-mini, gpt-5 |
| Cursor | cursor-agent |
composer-2.5, composer-1.5 |
| ChatGPT | chatgpt |
gpt-4o, gpt-4o-mini, o3 |
| Kiro | kiro |
claude-sonnet-4-20250514, claude-opus-4-20250514 |
| Antigravity | antigravity |
gemini-2.5-pro, gemini-2.5-flash |
| OpenCode | opencode |
glm-4, minimax-m2.5 |
MIT