Pre-launch — limited early access

The production stack for AI phone agents.

Define an agent in one TypeScript file — prompt, process, memory, handoff. VoiceLayer runs the governed STT → LLM → TTS pipeline, structured workflows, and post-call processing so you ship voice operations, not glue code.

You're on the list

Work emails preferred. No spam. We'll reach out when access opens.

agents/intake.ts
import { defineAgent } from '@voicelayer/sdk';

export default await defineAgent({
  name: 'intake',
  prompt: 'Calm, accurate first-notice-of-loss agent.',
  process: { /* declarative field capture */ },
  triggers: { /* deterministic routing */ },
  handoff: { fallback: '+15555550100' },
  memory: { scope: 'caller', retentionDays: 90 },
}).start(import.meta.url);
That's the whole agent.~14 lines

Why VoiceLayer

Voice platforms hand you a tape recorder. We hand you a runtime.

Other tools wire a chatbot to a phone number. VoiceLayer treats process, memory, and human escalation as first-class primitives — the things that decide whether an AI agent actually runs a business call or just performs one.

One file. One SDK.

Define an agent end-to-end in a single TypeScript file — prompt, process, triggers, handoff, memory. No glue services, no orchestrator to wire up.

Process as a primitive.

Structured field capture, deterministic branching, and policy-aware tool actions live in the agent definition — not buried in prompts.

Memory built in.

Per-caller and per-tenant memory with explicit retention. Context is loaded before the first response, not bolted on after the call.

Production runtime.

Governed STT → LLM → TTS pipeline with hot-path latency budgets, safe human handoff, and async post-call processing off the audio path.

No vendor lock-in.

Every external provider — STT, LLM, TTS, carrier — sits behind a contract. Swap Deepgram for Whisper, OpenAI for Anthropic, in one line.

Ten internal primitives.

Voice infra, audio, speech, memory, process schema, intent, transcript, handoff, event routing, security — unified, not stitched.

The SDK

The whole agent fits on one screen.

No orchestrator service, no Python worker, no separate memory store to provision. defineAgent() declares the workflow; the SDK absorbs telephony, runtime wiring, observability, and the cold path.

  • process— declarative field capture & deterministic branching, not prompt scaffolding
  • memory — scoped to caller or tenant, with explicit retention policy
  • triggers — typed events that route to tools or escalation paths
  • handoff — transcript, intent and workflow state travel with the call
agents/intake.ts
import { defineAgent } from '@voicelayer/sdk';

export default await defineAgent({
  name: 'intake',
  prompt: 'Calm, accurate first-notice-of-loss agent.',
  process: { /* declarative field capture */ },
  triggers: { /* deterministic routing */ },
  handoff: { fallback: '+15555550100' },
  memory: { scope: 'caller', retentionDays: 90 },
}).start(import.meta.url);

How it works

A governed execution path for every call.

01

Route the call

Inbound call hits VoiceLayer, resolves the tenant, picks the right agent definition, and spins up a runtime.

02

Load context

Caller history, account state, and prior memory load before the agent speaks — not mid-conversation.

03

Execute within policy

Speech, reasoning, structured process steps, and tool actions run inside the governed runtime with safety controls always on.

04

Resolve or hand off

Complete the task end-to-end, or transfer to a human with full transcript, intent, and workflow state preserved.

The difference

What you ship instead of stitching.

Stitch STT, LLM, TTS, telephony, memory, and workflow across five vendors.
One SDK. One runtime. Everything ships in the agent definition.
Workflow lives in prompt strings — brittle, untestable, drifts silently.
Workflow is declarative TypeScript — typed, reviewable, version-controlled.
Memory is a vector DB you maintain. Context loads after the caller waits.
Memory is a primitive. Context is ready before the first audio frame.
Human handoff drops state. Agents repeat themselves to the caller.
Handoff carries transcript, intent, and process state — continuity is the default.

Build voice agents that run real business processes.

VoiceLayer is in private beta. Join the waitlist and we'll reach out as access opens for design partners.

You're on the list