Jambonz starters
Ready-to-run jambonz starter applications. Use when the user wants to clone or scaffold a complete working voice app rather than assemble one from recipes — voice AI agents (OpenAI Realtime, Deepgram, ElevenLabs, Ultravox, Retell, Bedrock, AssemblyAI), IVR menus, dialers, recording, queuing, real-time translation, and more. Points at the @jambonz/sdk examples directory with one-line clone commands.From its SKILL.md
npx -y skills add jambonz/skills --skill jambonz-startersAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 4 stars4 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its file declares
Copied from the file, not written here
The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
5.5 KB, as published. Nobody here has run it
jambonz Starter Applications
The @jambonz/sdk repository ships 18+ runnable starter apps in its examples/ directory. Each is a self-contained, copy-and-run project you can use as a base.
How to Choose a Starter
- Just learning? →
hello-world(webhook) — single say + hangup - Building a voice AI agent and have a vendor preference? → vendor-specific s2s starter (see "Voice AI Agents" table below)
- Building a general voice agent? →
agent(fully featured: OpenAI + Deepgram + tool calling) - Building an IVR / phone menu? →
ivr-menu - Routing or transferring calls? →
dialortwo-stage-dialer - Need to record calls? →
call-recordingorlisten-record - Support center / contact queue? →
queue-with-hold - Something exotic? → see the full table below
Cloning a Starter
Use degit to grab a single example folder without the rest of the repo:
npx degit jambonz/node-sdk/examples/<starter-name> my-app
cd my-app
npm install
Then read the starter's app.ts (or ws-app.ts for WebSocket starters) and package.json to see the dependencies and entry point.
Voice AI Agents
| Starter | Transport | What it shows |
|---|---|---|
agent | WebSocket | Full voice agent: OpenAI LLM + Deepgram STT/TTS + Silero VAD + tool calling (get_weather) |
voice-agent | WebSocket | Generic conversational AI voice agent powered by an LLM |
openai-realtime | WebSocket | OpenAI Realtime API speech-to-speech integration |
deepgram-voice-agent | WebSocket | Deepgram deepgram_s2s end-to-end |
elevenlabs-voice-agent | WebSocket | ElevenLabs elevenlabs_s2s (uses agent_id auth — model & prompt live in the ElevenLabs dashboard) |
ultravox-voice-agent | WebSocket | Ultravox ultravox_s2s |
retell-hosted | Webhook | Retell-hosted agent via jambonz |
bedrock-agent | WebSocket | AWS Bedrock-backed voice agent |
assemblyai-autogenerate-prompt | WebSocket | AssemblyAI with dynamic prompt generation |
llm-streaming | WebSocket | LLM token-streaming with say TTS |
IVR, Routing, Call Control
| Starter | Transport | What it shows |
|---|---|---|
hello-world | Webhook + WS | The simplest jambonz application: answer, greet, hang up. Ships both a webhook (app.ts) and WebSocket (ws-app.ts) version side-by-side. |
ivr-menu | Webhook | A classic interactive voice response menu that routes callers based on DTMF or speech input |
dial | Webhook | Bridge an incoming call to a phone number, SIP endpoint, or registered user |
two-stage-dialer | Webhook | Outbound dial that confirms the called party before bridging |
echo | Webhook | Echo test — answers and plays back what the caller says |
Recording, Queueing, Streaming
| Starter | Transport | What it shows |
|---|---|---|
call-recording | Webhook | Mid-call recording control: incoming call is bridged to an agent, recording can be started/stopped dynamically |
listen-record | Webhook | Combine listen (audio streaming) with recording |
queue-with-hold | Webhook | Support queue: callers placed in queue with hold music and position announcements. Agents connect separately to dequeue. |
realtime-translator | WebSocket | Real-time bidirectional speech translation between two parties |
After Cloning
Every starter expects a few application environment variables (set them in the jambonz portal under your application's settings). The starter's app.ts declares the expected variables at the top via envVars: { ... } — read that block, then create matching values in the portal.
For configuration patterns, load jambonz-recipes and read references/env-vars.md.