TypeScript SDK (@wave-av/adk on npm) for building AI agents that interact with WAVE's live video infrastructure: 5 ready-made agent templates, an MCP toolkit exposing 10 tools, a production agent runtime (health/heartbeat/graceful-shutdown), and adapters for Mastra, LangGraph, LiveKit, and Kernel.sh.
This README is machine-generated from WAVE's grounded Single Source of Truth — every factual claim below traces to a resolver that
npm run verifychecks against the live repo and live endpoints. Nothing here is asserted without a receipt.
npm install @wave-av/adkimport { StreamMonitorAgent } from '@wave-av/adk';
const monitor = new StreamMonitorAgent({
apiKey: process.env.WAVE_AGENT_KEY,
agentName: 'my-quality-monitor',
streamIds: ['stream_abc123'],
autoRemediate: true,
onQualityDrop: async (alert) => {
console.log(`Quality drop on ${alert.streamId}: ${alert.metric}`);
},
});
await monitor.start();The video layer for AI agents. Build agents that see, produce, and deliver video. WAVE ADK is the complete toolkit for AI agents to interact with live video infrastructure. Like Stripe is for payments and Resend is for email — WAVE is for live streaming and video.
stateDiagram-v2
[*] --> Init: new AgentRuntime(agent)
Init --> Starting: runtime.start()
Starting --> Running: agent registered + health server up
Running --> Running: heartbeat every 30s
Running --> Stopping: SIGTERM / SIGINT / runtime.stop()
Stopping --> [*]: cleanup + flush logs
state Running {
[*] --> Healthy
Healthy --> Degraded: quality drop
Degraded --> Healthy: auto-remediate
Healthy --> Processing: tool invoked
Processing --> Healthy: result returned
}
Endpoints while running:
GET /health— liveness probe ({ status: "healthy", uptime: 12345 })GET /ready— readiness probe ({ ready: true })GET /metrics— usage stats ({ totalCalls: 42, totalDurationMs: 1200 })
Beta. The core SDK is real and implemented: 5 agent templates, the 10-tool MCP toolkit, AgentRuntime's health/heartbeat/shutdown lifecycle, and the four framework adapters all exist as working source in src/ and are covered by tests. Two README-advertised surfaces are not yet delivered, however: the 6 tree-shakeable subpath exports (only the root "." is declared in package.json's exports map and built into dist/), and the wave-adk CLI binary (declared in package.json's bin field but dist/cli/ has never been built). Both are marked planned rather than ga to keep this SSOT honest. The README's '$19/month usage-based pricing' claim is marketing copy with no billing config in this repo to verify it against, so it is omitted from claims here.
| Template | What It Does |
|---|---|
StreamMonitorAgent |
Watches quality, auto-remediates degradation |
AutoProducerAgent |
AI-powered live show direction (camera switching, graphics) |
ClipFactoryAgent |
Detects highlights, auto-creates social clips |
ModerationAgent |
AI content moderation for chat and video |
CaptionAgent |
Real-time transcription and multi-language captions |
import { AgentToolkit } from '@wave-av/adk/tools';
const toolkit = new AgentToolkit({ apiKey: process.env.WAVE_AGENT_KEY });
// Get MCP-compatible tool definitions
const tools = toolkit.toMCPTools();
// → wave_create_stream, wave_monitor_stream, wave_create_clip,
// wave_switch_camera, wave_show_graphic, wave_moderate_chat,
// wave_start_captions, wave_analyze_quality, wave_mark_highlight,
// wave_control_cameraProduction-ready lifecycle with health endpoint, heartbeat, and structured logging:
import { StreamMonitorAgent, AgentRuntime } from '@wave-av/adk';
const agent = new StreamMonitorAgent({ /* config */ });
const runtime = new AgentRuntime(agent, {
healthPort: 8080, // GET /health, /ready, /metrics
heartbeatIntervalMs: 30000, // Platform heartbeat
logLevel: 'info', // Structured JSON logs
});
await runtime.start(); // Handles SIGTERM/SIGINT gracefullyImport only what you need for smaller bundles. Note: only the root . entry is currently built into dist/ — the /tools, /agents, /adapters, /templates, and /types subpaths shown below are declared in the README's intended API but not yet resolvable at runtime (see Status; tracked as capability subpath-exports, status planned).
// Tools only
import { AgentToolkit, WaveToolError } from '@wave-av/adk/tools';
// Agents only
import { WaveAgent, AgentRuntime } from '@wave-av/adk/agents';
// Framework adapters only
import { createMastraTools } from '@wave-av/adk/adapters';
// Agent templates
import { StreamMonitorAgent, ClipFactoryAgent } from '@wave-av/adk/templates';
// Type definitions
import type { StreamQualityAlert, ClipHighlight } from '@wave-av/adk/types';// Mastra — native TypeScript, MCP-first
import { createMastraTools } from '@wave-av/adk/adapters';
// LangGraph — LangChain state machines
import { createLangGraphTools } from '@wave-av/adk/adapters';
// LiveKit Agents — real-time voice/video
import { createLiveKitWaveTools } from '@wave-av/adk/adapters';
// Kernel.sh — cloud browser automation
import { createKernelTools } from '@wave-av/adk/adapters';Or use the MCP server with ANY framework:
{ "wave": { "command": "npx", "args": ["@wave-av/mcp-server"] } }- 10 MCP tools — plug into Claude, Cursor, or any MCP client
- 5 agent templates — start producing in minutes, not weeks
- 6 subpath exports — tree-shake to only what you need (planned — see Status)
- Real infrastructure — not a wrapper, actual video processing
- Enterprise-ready — multi-region architecture, designed for scale
(The README also advertises "usage-based pricing, plans from $19/month" — that is marketing copy with no billing config in this repo to verify it against, so it is omitted here per the SSOT grounding law; see Status.)
Module not found with subpath imports — ensure "moduleResolution": "node16" or "nodenext" in your tsconfig.json.
ESM required error — ADK is ESM-first. Add "type": "module" to your package.json, or use a dynamic import (see the code sample below). CJS consumers can use require() — the package exports .cjs files via the require condition.
const { AgentToolkit } = await import("@wave-av/adk/tools");| Package | Description |
|---|---|
| @wave-av/sdk | https://www.npmjs.com/package/@wave-av/sdk — TypeScript SDK (34 API modules) |
| @wave-av/mcp-server | https://www.npmjs.com/package/@wave-av/mcp-server — MCP server for AI tools |
| @wave-av/create-app | https://www.npmjs.com/package/@wave-av/create-app — Scaffold a new agent project |
| @wave-av/cli | https://www.npmjs.com/package/@wave-av/cli — Command-line interface |
| Method | Path | Does |
|---|---|---|
GET |
/health |
Liveness probe returning { status, uptime } while an AgentRuntime is running. |
GET |
/ready |
Readiness probe returning { ready: true } while an AgentRuntime is running. |
GET |
/metrics |
Usage stats returning { totalCalls, totalDurationMs } while an AgentRuntime is running. |
Exposes the MCP tool AgentToolkit.toMCPTools over stdio.
Every claim below is checked by npm run verify against the live repo or endpoint — a non-pass verdict fails the gate.
| Claim | How it's verified |
|---|---|
| package.json declares a wave-adk CLI binary at ./dist/cli/index.mjs (not yet present in the built dist/). | resolved by grepping package.json |
| Built as dual esm/cjs output via tsup. | resolved by grepping package.json |
| AgentRuntime handles SIGTERM for graceful shutdown. | resolved by grepping src/agents/AgentRuntime.ts |
| AgentRuntime defaults heartbeatIntervalMs to 30 seconds. | resolved by grepping src/agents/AgentRuntime.ts |
| License is Apache-2.0. | resolved by grepping package.json |
| capabilities.json declares lifecycle beta. | resolved by grepping capabilities.json |
| Published on npm as @wave-av/adk, currently at version 1.0.2. | resolved by grepping package.json |
| AgentToolkit exposes MCP tool definitions via toMCPTools(). | resolved by grepping src/tools/AgentToolkit.ts |
agents · sdk · video · streaming · mcp · ai · developer-kit · typescript
Built by WAVE Online, LLC · wave.online · Docs · LinkedIn