14 skills · 80 min
Skills
Skill 11 of 14
Clone a ready-to-run Deepgram demo app and start building on top of it.
5 minutes · 1,009 words · 10 sections
Install
npx skills add deepgram/skills --skill startersnpx skills add deepgram/skills/plugin marketplace add deepgram/skillsThe first command installs just this skill, by the name in its SKILL.md; the second installs the whole repository.
Clone a working demo and start building. Every starter is a minimal, runnable app you can extend.
What do you want to build?
transcription — send audio/video, get text back (REST, Nova)live-transcription — real-time speech-to-text (WebSocket, Nova)text-to-speech — send text, get audio back (REST, Aura)live-text-to-speech — real-time text-to-audio (WebSocket, Aura)text-intelligence — sentiment, topics, intents, summaries over text you
already have (REST, /v1/read)voice-agent — conversational AI agent (WebSocket, agent.deepgram.com)flux — Deepgram Flux STT for voice agents and interactive assistants (WebSocket, /v2/listen)flux-tts — Deepgram Flux TTS, streaming synthesis with barge-in (WebSocket, /v2/speak)There is no audio-intelligence starter. text-intelligence is text-only — it posts text you
already have to /v1/read. No {framework}-audio-intelligence repository exists in
deepgram-starters for any framework, so don’t construct those URLs. To run intelligence features
(summarization, sentiment, topics, intents) over audio, they are query parameters on
/v1/listen, not a separate starter: clone the transcription starter for your framework and add
the parameters to its existing request. See the api skill for which features /v1/listen
supports.
Nova vs Flux STT for speech-to-text: use transcription or live-transcription (Nova, /v1/listen) for general-purpose transcription, captions, and batch workloads. Use flux (Flux STT, /v2/listen) when you need built-in turn detection for conversational audio. See the api skill for a full comparison.
Aura vs Flux TTS for text-to-speech: use text-to-speech or live-text-to-speech (Aura, /v1/speak) for one-shot synthesis, non-English voices, and compressed audio. Use flux-tts (Flux TTS, /v2/speak) when you’re streaming LLM output to a speaker and need a turn lifecycle and barge-in. See the api skill for a full comparison.
Flux TTS starters exist for node, flask, fastapi, django, and java only — these are the five apps Deepgram officially publishes at Flux TTS template apps (opens in a new tab). There is no flux-tts starter for the other frameworks; don’t construct those URLs. For an unsupported framework, start from the api skill’s Flux TTS section and the SDK skills instead.
| Language | Frameworks |
|---|---|
| JavaScript | node |
| TypeScript | bun, deno |
| Python | fastapi, flask, django |
| Go | go |
| Java | java |
| C# | csharp |
| Rust | rust |
| Ruby | ruby |
| PHP | php |
| C++ | cpp |
Every starter lives at https://github.com/deepgram-starters/{framework}-{feature} — framework
first, feature second. Clone with submodules; each starter vendors two git submodules — its
browser frontend at frontend/ and the shared starter contracts at contracts/ — and a plain
git clone leaves both directories empty and the app unrunnable:
git clone --recurse-submodules https://github.com/deepgram-starters/{framework}-{feature}.git
cd {framework}-{feature}Both submodule URLs in .gitmodules are SSH (git@github.com:...) even though both repositories
are public, so --recurse-submodules fails with Host key verification failed unless the user
has a GitHub SSH key. Without one, rewrite SSH to HTTPS for the clone:
git -c url."https://github.com/".insteadOf="git@github.com:" \
clone --recurse-submodules https://github.com/deepgram-starters/{framework}-{feature}.gitThe starter’s own make init runs git submodule update --init --recursive and installs
dependencies, but it inherits the same SSH URLs — it fails identically without a key, so it is
the path for users who have SSH set up, not a workaround for users who don’t.
Set your API key and follow the README:
export DEEPGRAM_API_KEY=your_key_hereGet an API key at https://console.deepgram.com (opens in a new tab).
The Deepgram CLI (opens in a new tab) has a scaffolder that finds and clones a starter for you:
dg init --list # browse templates
dg init --list --search python # filter
dg init node-transcription # clone into ./node-transcription
dg init node-transcription --dir ./my-appdg init does not solve the submodule problem. It runs a plain clone, so frontend/ and
contracts/ land empty, and it still prints Done! … is ready and "status": "success". Adding
--install runs the starter’s make check-prereqs && make init, which hits the same SSH URLs and
fails with Host key verification failed — and dg init reports success anyway. Without a GitHub
SSH key, finish the checkout by hand after dg init:
cd my-app
git -c url."https://github.com/".insteadOf="git@github.com:" \
submodule update --init --recursivedg init is also marked alpha, and its templates gallery is a separate list from the matrix
below rather than a subset of it. It carries 44 templates with no flux or flux-tts entries;
it still lists sinatra-transcription, whose repository is archived; and it lists nextjs-*
templates that now redirect out of deepgram-starters to deepgram-devs, which is why there is
no nextjs row below. Treat the matrix as authoritative and fall back to git clone. See the
cli skill for installing deepctl and for the rest of dg init.
{feature}-html repos are not startersThe deepgram-starters org also contains transcription-html, live-transcription-html,
text-to-speech-html, live-text-to-speech-html, text-intelligence-html, voice-agent-html,
flux-html, and flux-tts-html. Do not clone these and do not offer them as starters. Each
is the shared browser frontend that a backend starter pulls in as its frontend/ submodule —
node-transcription vendors transcription-html, flask-voice-agent vendors voice-agent-html,
node-flux-tts and java-flux-tts both vendor flux-tts-html, and so on. Seven of the eight
say so in their own README (“This is a frontend submodule - do not use directly”); flux-tts-html
carries no such warning but is vendored the same way. None of them serve an API, so none of them
run standalone. Clone the backend starter instead and the right frontend arrives with it.
They also invert the naming rule. The starter pattern is {framework}-{feature}, but these are
{feature}-html — and the mirror-image names do not exist, so do not construct them:
deepgram-starters/html-transcription is a 404. There is no vanilla-HTML row in the matrix
because there is no standalone browser starter; for browser-only work, clone the node starter
for the feature you want and read its frontend/ directory.
“I want to build a voice agent in Python”
→ git clone --recurse-submodules https://github.com/deepgram-starters/fastapi-voice-agent.git
“I need live transcription in my Node app”
→ git clone --recurse-submodules https://github.com/deepgram-starters/node-live-transcription.git
“I want to add text-to-speech to my Go service”
→ git clone --recurse-submodules https://github.com/deepgram-starters/go-text-to-speech.git
“I want to analyze audio for sentiment in C#”
→ git clone --recurse-submodules https://github.com/deepgram-starters/csharp-text-intelligence.git
“I want streaming TTS with barge-in for my Node voice agent”
→ git clone --recurse-submodules https://github.com/deepgram-starters/node-flux-tts.git
“I want a plain browser/HTML demo”
→ There is no standalone HTML starter. Clone node-{feature} and work in its frontend/
directory — that is the same browser code the {feature}-html submodule holds.
Every URL below is a real, published, non-archived repository, and the table is the complete
set: 13 frameworks × 7 features, plus flux-tts for the five frameworks that have it. A cell
showing — means that starter does not exist; don’t construct the URL.
| transcription | live-transcription | text-to-speech | live-text-to-speech | text-intelligence | voice-agent | flux | flux-tts | |
|---|---|---|---|---|---|---|---|---|
| node | repo (opens in a new tab) | repo (opens in a new tab) | repo (opens in a new tab) | repo (opens in a new tab) | repo |
recipes skill → https://github.com/deepgram/recipes (opens in a new tab)examples skill → https://github.com/deepgram/examples (opens in a new tab)npx skills add deepgram/deepgram-{lang}-sdk — see the api skill for the 6 SDKs whose skills are publicly installable.api: consolidated REST + WebSocket API referencerecipes: minimal runnable feature snippets per languageexamples: full integration examples with third-party platformsdocs: documentation findercli: deepctl, including dg init for scaffolding a template from the terminalsetup-mcp: Deepgram MCP server installationClone a ready-to-run Deepgram demo app and start building on top of it. Use whenever someone wants a quick working demo, needs to prototype with Deepgram, or is starting a new project that uses speech-to-text, text-to-speech, voice agents, audio intelligence, or live streaming. Match the user's language, framework, and desired Deepgram feature to the right starter.
The verbatim description from this skill’s front matter — the string an agent matches on to decide whether to load it.
main, last pushed 20 September 2026.SKILL.md, not by matching a directory convention. One layout observed: skills/*/SKILL.md.h1 and no skipped levels:.claude-plugin/marketplace.json by Deepgram Developer Relations, declaring 7 plugins. It is read for editorial metadata only — never as the skill index, which is always the repository tree.| repo (opens in a new tab) |
| repo (opens in a new tab) |
| repo (opens in a new tab) |
| bun | repo (opens in a new tab) | repo (opens in a new tab) | repo (opens in a new tab) | repo (opens in a new tab) | repo (opens in a new tab) | repo (opens in a new tab) | repo (opens in a new tab) | — |
| deno | repo (opens in a new tab) | repo (opens in a new tab) | repo (opens in a new tab) | repo (opens in a new tab) | repo (opens in a new tab) | repo (opens in a new tab) | repo (opens in a new tab) | — |
| go | repo (opens in a new tab) | repo (opens in a new tab) | repo (opens in a new tab) | repo (opens in a new tab) | repo (opens in a new tab) | repo (opens in a new tab) | repo (opens in a new tab) | — |
| csharp | repo (opens in a new tab) | repo (opens in a new tab) | repo (opens in a new tab) | repo (opens in a new tab) | repo (opens in a new tab) | repo (opens in a new tab) | repo (opens in a new tab) | — |
| rust | repo (opens in a new tab) | repo (opens in a new tab) | repo (opens in a new tab) | repo (opens in a new tab) | repo (opens in a new tab) | repo (opens in a new tab) | repo (opens in a new tab) | — |
| ruby | repo (opens in a new tab) | repo (opens in a new tab) | repo (opens in a new tab) | repo (opens in a new tab) | repo (opens in a new tab) | repo (opens in a new tab) | repo (opens in a new tab) | — |
| php | repo (opens in a new tab) | repo (opens in a new tab) | repo (opens in a new tab) | repo (opens in a new tab) | repo (opens in a new tab) | repo (opens in a new tab) | repo (opens in a new tab) | — |
| cpp | repo (opens in a new tab) | repo (opens in a new tab) | repo (opens in a new tab) | repo (opens in a new tab) | repo (opens in a new tab) | repo (opens in a new tab) | repo (opens in a new tab) | — |
/deepgram/skills.md.md