> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.nvidia.com/nemo/labs-voice-agent/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.nvidia.com/nemo/labs-voice-agent/_mcp/server.

# Build Voice Agents

Start with configuration when the shipped pipeline already supports the behavior you need. Add tools or
custom pipeline code only when configuration is not enough.

## Choose an Area

Choose the smallest surface that supports the behavior you want to add.

| Area | Use It to |
| --- | --- |
| [Configure](/nemo/labs-voice-agent/build-voice-agents/configure/overview) | Select component configs, prompts, model-registry entries, and audio logging. |
| Model serving | [Serve with vLLM](/nemo/labs-voice-agent/build-voice-agents/model-serving/serving-with-v-llm), [configure vLLM plugins](/nemo/labs-voice-agent/build-voice-agents/model-serving/v-llm-plugins), or [use NVIDIA NIM and Riva](/nemo/labs-voice-agent/build-voice-agents/model-serving/nvidia-nim-riva). |
| Tools | [Enable tool calling](/nemo/labs-voice-agent/build-voice-agents/tools/tool-calling) or [write direct and component-owned tools](/nemo/labs-voice-agent/build-voice-agents/tools/writing-your-own-tools). |
| [Extend](/nemo/labs-voice-agent/build-voice-agents/extend/overview) | Add processors, assemble a custom pipeline, or integrate through RTVI. |

## Recommended Order

Use this order to move from a working example to the smallest maintainable customization.

1. Confirm the current behavior in the [Quickstart](/nemo/labs-voice-agent/get-started/quickstart).
2. Make the smallest configuration change that satisfies the requirement.
3. Add a tool for a discrete action or a processor for a new pipeline transformation.
4. Build a custom pipeline only when the shipped assembly cannot express the design.

## Key Concepts

The extension surface you choose determines where the change belongs and how much pipeline behavior you
own:

- **Configuration** selects existing components and behavior without changing Python code.
- **Tools** let supported language models invoke application functions during a conversation.
- **Processors** transform frames at a focused point in the shipped pipeline.
- **Custom pipelines** replace the shipped assembly when stage ordering or ownership must change.