Quickstart
Run your first NeMo Labs Voice Agent evaluation. The harness needs three processes: a simulated-user bot, the agent under test, and the bridge that connects them over audio and scores the result. Refer to the Evaluation Overview for how the components fit together.
Prerequisites
Before you start, complete these setup requirements.
-
Install the package and activate the virtual environment as described in Installation.
-
Start a vLLM server. Both eval configs (
evaluation/server_configs/agent.yamlanduser.yaml) setstart_vllm_on_init: falseand pointllm.base_urlathttp://localhost:8000/v1, so nothing launches vLLM for you. Use the flags from thellm.vllm_server_paramsfield of those configs — that field is the authoritative source if this code example becomes outdated:Both bots and the default large language model (LLM) judge share this endpoint. Refer to the vLLM Backend.
-
Only if you switch to the hosted configs (
agent_nvidia.yaml,user_nvidia.yaml): copyevaluation/.env.exampletoevaluation/.envand fill inNVIDIA_API_KEY.
Quickstart Steps
Complete the following three-terminal workflow to start both bots, run a basic verification domain, and locate the saved evaluation evidence.
Use the Evaluation Directory
SERVER_CONFIG_PATH is resolved against the current working directory, not against the script’s
directory. ConfigManager receives the raw string and calls os.path.exists on it. Every command below —
including the helper shell scripts — must therefore be run from evaluation/:
That error means you ran the command from somewhere other than evaluation/. cd evaluation and retry, or
export an absolute path.
Start the Simulated User Bot on Port 8766
In the first terminal, start the bot that plays the scenario’s simulated user.
Start the Agent Under Test on Port 8765
In the second terminal, start the agent that the harness evaluates.
bot_server.py is the same script for both roles — SERVER_CONFIG_PATH is what selects the role. Automatic
speech recognition (ASR) and text-to-speech (TTS) run locally on GPU in each process. Give the two bots
separate devices when you can. Each process also
starts a small FastAPI app on FASTAPI_PORT, so those two values must differ as well.
Wait until both processes log that they are serving before starting the bridge. Bot-side logs go to
bot_user_server.log and bot_agent_server.log in evaluation/.
Helper Launch Scripts
run_user.sh and run_agent.sh wrap the two invocations above with the environment already exported. They
resolve their own directory only to locate bot_server.py. The exported SERVER_CONFIG_PATH stays relative,
so they must also be run from evaluation/:
Run the Bridge
After both bots report that they are serving, start the bridge with a small verification domain.
--user-url and --agent-url already default to those values, so the two flags are optional here. Swapping
them silently inverts the roles — the user prompt lands on the agent bot — so keep 8766 on --user-url.
Discover what you can run before committing to a long job:
restaurant, customer_service, and qa are small verification domains. fastbite and simple_qa_1
through simple_qa_3 carry no domain__ prefix, so --list files them under “Legacy scenarios” and you run
them with --scenarios fastbite simple_qa_1 rather than --domain. The benchmark domains are much larger —
eva_airline (50 scenarios), tau2_airline (50), tau2_retail (114), and tau2_telecom (114, plus a
parallel tau2_telecom_workflow registration over the same 114 tasks). Refer to
Benchmark Domains.
Flags Worth Knowing on Run One
Use these flags to select work, control output placement, and configure the first scoring run.
Refer to the Evaluation Command-Line Interface (CLI) Reference for all flags.
Verify the Saved Results
Each invocation creates a timestamped session directory under --output-dir, with one subdirectory per
scenario. Database (DB) hashes appear for scenarios that use DB-based scoring. The following tree shows the
saved artifacts:
Read all_summary.txt first, then open metrics.json and conversation_log.wav for any scenario that
failed. eval_results/ is gitignored.
Next Steps
Use the scoring, results, resume, and external-agent guides to continue after the first successful run.