A collection of TypeScript example applications demonstrating the jambonz voice platform using the @jambonz/sdk.
- Node.js 22+
- A jambonz instance (v10+)
- Speech provider credentials configured in the jambonz portal (as needed per example)
This is an npm workspaces monorepo. Install all dependencies from the root:
npm installEach example runs directly from TypeScript using tsx — there is no build step. To run an example:
# From the root
npx tsx examples/say/basic/src/index.ts
# Or from within an example directory
cd examples/say/basic
npm startBy default, examples listen on port 3000. Override with the PORT environment variable:
PORT=8080 npm startMost examples also support LOG_LEVEL (default info) for controlling pino log verbosity.
- Start the example application
- In the jambonz portal, create or edit an application
- Set the application URL to
ws://your-server:3000/ - If the example declares
envVars, the portal will auto-discover configurable settings via an OPTIONS request — fill them in as needed - Assign the application to a phone number and make a test call
# Lint all examples
npm run lint
# Lint with auto-fix
npm run lint:fix| Category | Example | Description |
|---|---|---|
| say | basic | Text-to-speech with loop and verb chaining |
| gather | dtmf-menu | IVR menu with single-digit DTMF routing |
| gather | echo | Speech recognition that echoes back with confidence scores |
| dial | outbound | Collect phone number via DTMF, then dial it |
| conference | basic | Named conference room with join/leave beeps and status events |
| listen | audio-stream | Stream call audio to an external WebSocket server |
| transcribe | realtime | Live call transcription using Deepgram |
| transcribe | realtime-translator | Bidirectional real-time translation using Microsoft STT, Google Translate, and dub tracks |
Each S2S example connects the caller directly to a real-time voice model using the s2s verb. The LLM vendor is set via the vendor property.
| Example | Vendor | Description |
|---|---|---|
| gemini | Gemini 3.1 Flash Live | |
| openai | OpenAI | Realtime API with server VAD and Whisper transcription |
| deepgram | Deepgram | Voice Agent with Nova-3 STT and GPT-4o-mini |
| elevenlabs | ElevenLabs | Conversational AI (agent configured in ElevenLabs dashboard) |
| ultravox | Ultravox | Ultravox voice agent |
Pipeline examples use the pipeline verb to compose separate STT, LLM, and TTS providers. The LLM vendor and model are selectable via application variables — choose from OpenAI or Anthropic models in a portal dropdown.
| Example | STT | TTS | Notes |
|---|---|---|---|
| deepgram-cartesia | Deepgram Nova-3 | Cartesia | Krisp turn detection, early generation |
| deepgramflux-elevenlabs | Deepgram Flux | ElevenLabs Flash v2.5 | Native STT turn detection |
| speechmatics-rime | Speechmatics | Rime | Native STT turn detection |
| using-tools | Deepgram Nova-3 | Cartesia | Tool calling with get_weather via toolHook |
| using-mcp-server | Deepgram Nova-3 | Cartesia | External MCP server for live football scores |
| Example | Description |
|---|---|
| say-basic | Basic text-to-speech using HTTP webhook transport |
Runnable scripts that demonstrate the jambonz REST API (not call-handling servers).
| Example | Description |
|---|---|
| create-call | Create an outbound call using JambonzClient (includes curl equivalent) |
MIT