@dobbyai/sdk
v0.2.1
Published
Official JavaScript/TypeScript SDK for the Dobby AI Platform — Home for your AI agents
Maintainers
Readme
@dobbyai/sdk
Official JavaScript/TypeScript SDK for the Dobby AI Platform — Home for your AI agents.
Installation
npm install @dobbyai/sdkQuick Start
import { DobbyClient } from '@dobbyai/sdk';
const dobby = new DobbyClient({
apiKey: 'gk_user_...', // or set DOBBY_API_KEY env var
orgId: 'org_...',
tenantId: 'tenant_...',
});
// LLM completions (OpenAI-compatible)
const response = await dobby.chat.completions.create({
model: 'claude-sonnet-4-20250514',
messages: [{ role: 'user', content: 'Hello!' }],
});
console.log(response.choices[0].message.content);Features
LLM Gateway (OpenAI-compatible)
Route LLM calls through Dobby's unified gateway with cost tracking, policy enforcement, and audit trail.
// Streaming
const stream = await dobby.chat.completions.create({
model: 'gpt-4o-mini',
messages: [{ role: 'user', content: 'Explain AI agents' }],
stream: true,
});
for await (const chunk of stream) {
process.stdout.write(chunk.choices[0]?.delta?.content || '');
}Task Management
const task = await dobby.tasks.create({
title: 'Review PR #42',
description: 'Security review for auth changes',
priority: 'high',
});
const tasks = await dobby.tasks.list({ status: 'pending' });Human-in-the-Loop Approvals
const pending = await dobby.approvals.list({ status: 'pending' });
await dobby.approvals.approve('task_abc123', 'LGTM');
await dobby.approvals.reject('task_def456', 'Needs tests');Agent Fleet Management
// List all agents
const fleet = await dobby.agents.list();
// Register an external agent
await dobby.agents.register({
name: 'content-writer',
framework: 'crewai',
endpoint_url: 'https://my-agent.example.com/webhook',
});
// Pause / resume
await dobby.agents.pause('ext_abc123');
await dobby.agents.resume('ext_abc123');External Agent Triggers & Schedules
// Trigger an agent immediately
const result = await dobby.agents.trigger('ext_abc123', {
payload: { topic: 'AI governance' },
});
// Create a recurring schedule
await dobby.agents.createSchedule('ext_abc123', {
name: 'Daily Blog Writer',
schedule_config: { frequency: 'daily', time: '09:00' },
task_title: 'Write blog post',
trigger_payload: { topic: 'AI governance' },
});
// Get trigger history
const history = await dobby.agents.triggers('ext_abc123', {
include_stats: true,
});Cost Tracking
const costs = await dobby.costs.summary({ period: '30d' });
const agentCosts = await dobby.costs.byAgent({ period: '7d' });Gateway API Keys
const keys = await dobby.keys.list();
const newKey = await dobby.keys.create({
name: 'production-key',
scopes: ['llm:chat', 'mcp:tools'],
});Configuration
| Option | Env Variable | Default | Description |
|--------|-------------|---------|-------------|
| apiKey | DOBBY_API_KEY | - | Gateway API key (required) |
| baseUrl | DOBBY_BASE_URL | https://dobby-ai.com | Platform URL |
| orgId | DOBBY_ORG_ID | - | Organization ID |
| tenantId | DOBBY_TENANT_ID | - | Tenant/workspace ID |
| timeout | - | 120000 | Request timeout (ms) |
| maxRetries | - | 2 | Max retry attempts |
Error Handling
import { DobbyClient, DobbyAuthError, DobbyRateLimitError, DobbyBudgetExceededError } from '@dobbyai/sdk';
try {
await dobby.chat.completions.create({ ... });
} catch (err) {
if (err instanceof DobbyAuthError) {
console.error('Invalid or expired API key');
} else if (err instanceof DobbyRateLimitError) {
console.error('Rate limit hit, retry later');
} else if (err instanceof DobbyBudgetExceededError) {
console.error('Budget limit reached');
}
}Links
License
MIT
