
Security News
Lovable’s OJ Rewrites Vite’s Dev Server in Rust as AI Lowers the Cost of Forking Open Source
Lovable’s OJ rewrites Vite’s dev server in Rust, reducing memory use and preview times as AI lowers the cost of open source reimplementation.
@dobbyai/sdk
Advanced tools
Official JavaScript/TypeScript SDK for the Dobby AI Platform — Home for your AI agents
Official JavaScript/TypeScript SDK for the Dobby AI Platform — Home for your AI agents.
npm install @dobbyai/sdk
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);
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 || '');
}
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' });
const pending = await dobby.approvals.list({ status: 'pending' });
await dobby.approvals.approve('task_abc123', 'LGTM');
await dobby.approvals.reject('task_def456', 'Needs tests');
// 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');
// 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,
});
const costs = await dobby.costs.summary({ period: '30d' });
const agentCosts = await dobby.costs.byAgent({ period: '7d' });
const keys = await dobby.keys.list();
const newKey = await dobby.keys.create({
name: 'production-key',
scopes: ['llm:chat', 'mcp:tools'],
});
| 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 |
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');
}
}
MIT
FAQs
Official JavaScript/TypeScript SDK for the Dobby AI Platform — Home for your AI agents
We found that @dobbyai/sdk demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Security News
Lovable’s OJ rewrites Vite’s dev server in Rust, reducing memory use and preview times as AI lowers the cost of open source reimplementation.

Security News
It has been one year since Shai-Hulud made its first appearance on npm.

Research
/Security News
Operators behind PolinRider used a compromised GitHub account to plant malware in four development versions of a Packagist package with 700,000+ downloads.