Deuz SDK 2.0 is out — stores, guardrails, handoffs, and zero-config MCP. What is new in 2.0
v2.0.0 — Persistent stores, guardrails, handoffs & zero-config MCP

One canonical wire for every AI provider

Pure · Web-first · Multi-provider AI SDK for TypeScript

29 providers behind one StreamPart delta stream. Zero runtime dependencies — SQLite, Redis and Postgres packs, guardrails and handoffs in the loop, MCP that connects itself. Runs anywhere fetch runs.

npm install @deuz-sdk/core
provider ids
29
subpaths
53
database packs
3
mostly additive
1.9 → 2.0

One API surface across

  • Anthropic
  • OpenAI
  • Google Gemini
  • xAI Grok
  • Azure
  • Bedrock
  • Ollama
  • LM Studio

+ 21 more, including Ollama and LM Studio

Canonical delta stream

Every provider response is normalized to one typed StreamPart stream before your code sees it. No raw SSE ever leaks through.

Agentic loop, now with policy

Parallel self-healing tools, nested sub-agents, plus 2.0 guardrails (pass / block / rewrite) and handoff() to transfer the whole run.

Point persistence at a database

SQLite, Redis and Postgres packs behind memory, chat, session and run seams. FTS5 + pgvector when you want them — zero deps when you do not.

Zero-config MCP

Name servers on the call; the loop connects, namespaces, hot-refreshes and closes them. OAuth 2.0, sampling, roots and ping-verified reconnect.

Edge-safe core

Web APIs only — no node:*, no Buffer, no ambient state. Node, Deno, Bun, Vercel Edge and Cloudflare Workers.

Speech, transcription, video

generateSpeech, transcribe and generateVideo as their own model kinds — OpenAI, ElevenLabs, Deepgram, and any OpenAI-Videos relay.

Streaming in three lines

streamChat returns synchronously and never throws — the request starts lazily on first read. Swap the factory to change provider; nothing else moves.

Get started
// swap the factory to swap providers
import { streamChat } from '@deuz-sdk/core';
import { createAnthropic } from '@deuz-sdk/core/anthropic';

const anthropic = createAnthropic({ apiKey });
const res = streamChat({
  model: anthropic('claude-opus-4-8'),
  messages: [{ role: 'user', content: 'Hello!' }],
});

for await (const chunk of res.textStream) {
  process.stdout.write(chunk);
}

For your coding agent

Your coding agent already knows this SDK

Two Agent Skills ship with the repository, so an agent writes against the real surface instead of reconstructing it from memory. Every symbol in them is resolved against the export table on each commit and every example is compiled, so a name that does not exist cannot be merged.

How they are verified
$ npx skills add Deuz-AI/Deuz-SDK
  • deuz-sdk

    The whole surface: the invariants, a task-to-file router, and thirteen reference files loaded only when a task needs them.

  • migrate-from-ai-sdk

    The verified name-by-name port from ai and @ai-sdk packages.