Voice AI
All recipes
TypeScriptIntermediate

Breath Companion

Build a guided breathing and voice-agent experience with Agora.

Recipe prompt

Paste into Cursor, Claude Code, v0, or your coding agent
Use with your coding agent
You are implementing the "Breath Companion" recipe in this project.

Read the recipe markdown first:
https://raw.githubusercontent.com/anandwana001/agora-breath-companion/main/docs/ai/RECIPE.md

Use the source repository for cross-reference:
https://github.com/anandwana001/agora-breath-companion

Build this recipe into the user's app using the markdown as the implementation guide. Inspect related source files through the repository links when the recipe points to them. Ask before installing new dependencies.

Recipe

Rendered from the configured recipe markdown.

Raw

recipeversion: 0.1.0 recipestatus: stable extension_points:

  • api.routes
  • prompts.system
  • pipeline.providers
  • ui.conversation

invariants:

  • baseline.official-sample
  • tokens.rtc-rtm
  • lifecycle.strict-mode
  • transcript.uid-remap

stable_contracts:

  • env.required
  • api.token
  • api.invite-agent
  • api.stop-conversation

Breath Companion Recipe Profile

This repo is a reusable Breath Companion sample for building browser voice-agent experiences with Agora Conversational AI Engine.

Recipe Role

  • Role: base recipe.
  • Target audience: developers bootstrapping a production-style Next.js voice agent app.
  • Reuse model: clone, bind project, run, then customize prompt/pipeline/UI.

Recipe Scope

This base recipe provides a copyable browser voice-agent starter with:

  • browser RTC audio and RTM event transport
  • server-side token, invite, stop, and optional custom LLM routes
  • managed default STT, LLM, and TTS provider configuration
  • pre-call, in-call, transcript, metrics, and connection-status UI

Baseline Implementation Guidance

This repository is the official Breath Companion baseline for this recipe. Agents should use this repo's source and progressive disclosure docs as the starting point, then customize.

Do not recreate Agora ConvoAI integration from memory. Provider schemas, SDK builder fields, token behavior, and RTM event details can drift. For a new baseline implementation, follow L1/L2/from_scratch_bootstrap.md while copying verified patterns from this repo.

Extension Points

  • api.routes: add browser-facing routes under app/api, with shared request/response types in types/conversation.ts when the client consumes them.
  • prompts.system: edit ADA_PROMPT and GREETING in app/api/invite-agent/route.ts.
  • pipeline.providers: adjust the DeepgramSTT, OpenAI, and MiniMaxTTS builder chain, or enable the commented BYOK blocks.
  • ui.conversation: customize the breath-companion shell/home/session components and the in-call QuickstartConversationLayout, QuickstartTranscriptPanel, and QuickstartPipelineMetrics.

Invariants

  • Keep RtcTokenBuilder.buildTokenWithRtm for RTM-capable tokens.
  • Treat this repo as the official baseline; customize after preserving a working token, invite, RTC, RTM, and transcript flow.
  • Preserve StrictMode isReady guard for join/mic initialization.
  • Preserve UID remap (uid="0") and INTERRUPTED message-list inclusion.
  • Keep documentation synchronized when workflows/contracts change.

Stable Contracts

  • GET /api/generate-agora-token returns { token, uid, channel }.
  • POST /api/invite-agent accepts { requester_id, channel_name } and returns the agent id/state payload.
  • POST /api/stop-conversation accepts { agent_id } and treats already-stopping sessions as success.
  • Required env vars are NEXT_PUBLIC_AGORA_APP_ID and NEXT_AGORA_APP_CERTIFICATE.
  • components/LandingPage.tsx owns pre-call bootstrap and RTM client lifecycle.
  • components/ConversationComponent.tsx owns joined-session RTC/toolkit lifecycle.
  • lib/conversation.ts owns transcript normalization helpers.

Internal / Subject to Change

  • Visual styling and copy in the Breath Companion UI.
  • The exact reseller defaults for STT, LLM, and TTS models.
  • Connection issue display heuristics and metric chip presentation.

Consumer Onboarding Recipe

  1. Clone or scaffold from template.
  2. Bind Agora project and write .env.local.
  3. Run pnpm run doctor and pnpm run dev.
  4. Validate with pnpm run verify before sharing modifications.
  5. Customize agent behavior and UI using the supported surfaces above.