Agent Configuration#
Configuration files define LLM connections, tools, agents, prompts, and telemetry settings. The agent is built on NVIDIA NeMo Agent Toolkit (NAT), which allows you to register custom functions and extend the agent’s capabilities.
File Structure#
general: # Frontend, telemetry
object_stores: # Object storage
function_groups: # MCP clients
functions: # Tools
llms: # LLM/VLM models
workflow: # Top agent
LLM Configuration#
llms:
nim_llm:
_type: nim
model_name: nvidia/nvidia-nemotron-nano-9b-v2
base_url: ${LLM_BASE_URL}/v1
max_tokens: 4096
temperature: 0.0
cosmos_reason2:
_type: nim
model_name: nvidia/cosmos-reason2-8b
base_url: ${COSMOS_BASE_URL}/v1
max_tokens: 1024
Parameters
Parameter |
Type |
Description |
|---|---|---|
_type |
string |
LLM provider type (e.g. |
model_name |
string |
Model identifier (e.g. |
base_url |
string |
API endpoint URL with |
max_tokens |
int |
Maximum tokens to generate |
temperature |
float |
Sampling temperature (0.0 = deterministic) |
MCP Clients#
function_groups:
video_analytics_mcp:
_type: mcp_client
server:
transport: streamable-http
url: ${VIDEO_ANALYSIS_MCP_URL}/mcp
include:
- video_analytics.get_incidents
- video_analytics.get_incident
- video_analytics.get_fov_histogram
- video_analytics.get_sensor_ids
vst_mcp:
_type: mcp_client
server:
transport: streamable-http
url: ${VST_MCP_URL}/mcp
include:
- sensor_list
- get_video_storage_url
- get_replay_picture_url
- get_live_picture_url
Parameters
Parameter |
Type |
Description |
|---|---|---|
_type |
string |
Must be |
server.transport |
string |
Transport type: |
server.url |
string |
MCP server endpoint URL |
include |
list |
List of tool names to expose from this MCP server |
Tools Reference#
video_understanding#
Analyzes video content using a Vision Language Model (VLM).
video_understanding:
_type: video_understanding
vlm_name: cosmos_reason2
max_frames: 30
num_frames: 16
min_pixels: 1568
max_pixels: 208544
reasoning: false
video_url_tool: vst_video_url
Parameters
Parameter |
Default |
Description |
|---|---|---|
vlm_name |
(required) |
Reference to the VLM from llms section |
max_frames |
60 |
Maximum number of frames to sample from the video |
num_frames |
16 |
Number of frames to extract for VLM processing |
min_pixels |
1568 |
Minimum pixel count per frame for VLM processing |
max_pixels |
208544 |
Maximum pixel count per frame for VLM processing |
reasoning |
false |
Enable VLM reasoning mode (Cosmos Reason models only) |
filter_thinking |
false |
Filter out thinking traces from VLM response |
video_url_tool |
vst_video_url |
Tool to get video URL from sensor ID |
use_vst |
true |
Use VST service for video URLs (false uses MinIO) |
vst_video_url#
Gets video storage URLs from VST service for a specific stream and time range.
vst_video_url:
_type: vst_video_url
get_video_storage_url_tool: vst_mcp.get_video_storage_url
get_sensor_list_tool: vst_mcp.sensor_list
vst_base_url: ${VST_BASE_URL}
overlay_config: true
Parameters
Parameter |
Default |
Description |
|---|---|---|
get_video_storage_url_tool |
vst_get_video_storage_url |
MCP tool for getting video URLs |
get_sensor_list_tool |
vst_sensor_list |
MCP tool for getting sensor list |
vst_base_url |
None |
Override base URL from MCP response |
expiry_minutes |
None |
URL expiration time (default: 10080 = 7 days) |
container |
mp4 |
Video container format |
overlay_config |
false |
Enable object detection overlays |
vst_picture_url#
Gets snapshot picture URLs from VST service (replay or live).
vst_picture_url:
_type: vst_picture_url
get_sensor_list_tool: vst_mcp.sensor_list
get_replay_picture_url_tool: vst_mcp.get_replay_picture_url
get_live_picture_url_tool: vst_mcp.get_live_picture_url
vst_base_url: ${VST_BASE_URL}
max_retries: 5
retry_delay_seconds: 2
Parameters
Parameter |
Default |
Description |
|---|---|---|
get_replay_picture_url_tool |
vst_get_replay_picture_url |
MCP tool for replay pictures |
get_live_picture_url_tool |
None |
MCP tool for live pictures (optional) |
get_sensor_list_tool |
vst_sensor_list |
MCP tool for getting sensor list |
vst_base_url |
None |
Override base URL from MCP response |
expiry_minutes |
None |
URL expiration time (default: 7 days) |
max_retries |
3 |
Maximum retries for getting picture URL |
retry_delay_seconds |
1 |
Delay between retries |
chart_generator#
Generates bar and pie charts, stores them in object store.
chart_generator:
_type: chart_generator
object_store_name: ${VSS_AGENT_OBJECT_STORE_TYPE}
object_store_base_url: ${VSS_AGENT_REPORTS_BASE_URL}
Parameters
Parameter |
Default |
Description |
|---|---|---|
object_store_name |
None |
Object store reference for storing images |
object_store_base_url |
Base URL for serving chart images |
|
multi_incident_formatter#
Fetches and formats multiple incidents with video/snapshot URLs and optional charts.
multi_incident_formatter:
_type: multi_incident_formatter
video_url_tool: vst_video_url
picture_url_tool: vst_picture_url
incidents_tool: video_analytics_mcp.video_analytics.get_incidents
chart_generator_tool: chart_generator
generate_chart: true
chart_base_url: ${VSS_AGENT_REPORTS_BASE_URL}
display_limit: 20
Parameters
Parameter |
Default |
Description |
|---|---|---|
video_url_tool |
(required) |
Tool for getting video URLs |
picture_url_tool |
(required) |
Tool for getting picture URLs |
incidents_tool |
(required) |
Tool for fetching incidents |
chart_generator_tool |
None |
Tool for generating charts (optional) |
generate_chart |
false |
Auto-generate incident visualization charts |
chart_base_url |
Base URL for chart images |
|
display_limit |
20 |
Max incidents to display with full details |
template_report_gen#
Generates incident reports using VLM analysis and customizable templates.
template_report_gen:
_type: template_report_gen
object_store: ${VSS_AGENT_OBJECT_STORE_TYPE}
base_url: ${VSS_AGENT_REPORTS_BASE_URL}
template_path: ${VSS_AGENT_TEMPLATE_PATH}
template_name: ${VSS_AGENT_TEMPLATE_NAME}
llm_name: nim_llm
video_understanding_tool: video_understanding
picture_url_tool: vst_picture_url
video_url_tool: vst_video_url
vlm_prompts:
- "Describe the incident in details..."
- "Describe the location of the incident..."
Parameters
Parameter |
Default |
Description |
|---|---|---|
object_store |
(required) |
Object store reference for storing reports |
base_url |
Base URL for serving report files |
|
template_path |
“” |
Path to template directory |
template_name |
None |
Template file name (e.g., incident_report.md) |
llm_name |
“” |
LLM for report generation |
video_understanding_tool |
“” |
VLM tool for video analysis |
picture_url_tool |
vst_picture_url |
Tool for snapshot URLs |
video_url_tool |
None |
Tool for video URLs |
vlm_prompts |
[] |
List of prompts for VLM analysis |
report_prompt |
“” |
System prompt for report generation |
agent_version |
v1.0.0 |
Agent version to include in report |
save_local_copy |
false |
Save local copy of reports |
output_dir |
./agent_reports |
Directory for local copies |
get_fov_counts_with_chart#
Gets field-of-view object counts and generates visualization charts.
get_fov_counts_with_chart:
_type: get_fov_counts_with_chart
get_fov_histogram_tool: video_analytics_mcp.video_analytics.get_fov_histogram
chart_generator_tool: chart_generator
chart_base_url: ${VSS_AGENT_REPORTS_BASE_URL}
Parameters
Parameter |
Default |
Description |
|---|---|---|
get_fov_histogram_tool |
(required) |
Tool for FOV histogram data |
chart_generator_tool |
(required) |
Tool for chart generation |
chart_base_url |
Base URL for chart images |
|
geolocation#
Fetches geolocation information from coordinates using OpenStreetMap.
geolocation:
_type: geolocation
timeout: 10
Parameters
Parameter |
Default |
Description |
|---|---|---|
timeout |
10 |
Request timeout in seconds for OpenStreetMap API |
Agents#
report_agent#
Sub-agent for generating detailed single incident reports.
report_agent:
_type: report_agent
get_incidents_tool: video_analytics_mcp.video_analytics.get_incidents
get_incident_tool: video_analytics_mcp.video_analytics.get_incident
template_report_tool: template_report_gen
Parameters
Parameter |
Type |
Description |
|---|---|---|
_type |
string |
Must be |
get_incidents_tool |
string |
Tool to fetch incident list |
get_incident_tool |
string |
Tool to fetch single incident details |
template_report_tool |
string |
Tool for generating templated reports |
multi_report_agent#
Sub-agent for listing and summarizing multiple incidents.
multi_report_agent:
_type: multi_report_agent
multi_incident_tool: multi_incident_formatter
max_incidents: 9999
Parameters
Parameter |
Type |
Description |
|---|---|---|
_type |
string |
Must be |
multi_incident_tool |
string |
Tool for formatting multiple incidents |
max_incidents |
int |
Maximum number of incidents to process |
Top Agent (Workflow)#
The main routing agent that orchestrates tools and sub-agents.
workflow:
_type: top_agent
llm_name: nim_llm
log_level: INFO
max_retries: 3
max_iterations: 15
llm_reasoning: false
tool_names:
- get_fov_counts_with_chart
- video_analytics_mcp.video_analytics.get_sensor_ids
- vst_picture_url
subagent_names:
- report_agent
- multi_report_agent
prompt: |
You are a routing agent...
Parameters
Parameter |
Description |
|---|---|
llm_name |
LLM from llms section |
log_level |
DEBUG, INFO, WARNING, ERROR |
max_iterations |
Max reasoning iterations |
tool_names |
Direct tools for agent |
subagent_names |
Sub-agents for complex tasks |
prompt |
System prompt |
Telemetry#
general:
telemetry:
tracing:
phoenix:
_type: phoenix
endpoint: ${PHOENIX_ENDPOINT}/v1/traces
project: WH-vss-agent-${VSS_AGENT_VERSION}
For details on enabling telemetry and navigating traces in the Phoenix UI, see Observability.
Parameters
Parameter |
Type |
Description |
|---|---|---|
_type |
string |
Telemetry provider (e.g. |
endpoint |
string |
Tracing endpoint URL (e.g. |
project |
string |
Project name for trace grouping |
Evaluation Configuration#
The eval: section configures the evaluation framework for assessing agent performance.
For complete evaluation configuration options and evaluator types, see Agent Evaluation.
Environment Variables#
Environment Variables Reference
Variable |
Description |
|---|---|
HOST_IP |
Blueprint endpoint IP address |
VSS_AGENT_HOST |
Agent server host (default: 0.0.0.0) |
VSS_AGENT_PORT |
Agent server port (default: 8000) |
VSS_AGENT_VERSION |
Agent version for telemetry project naming |
VSS_AGENT_CONFIG_FILE |
Path to agent config YAML file |
VSS_AGENT_OBJECT_STORE_TYPE |
Object store type (local_object_store or remote_object_store) |
VSS_AGENT_REPORTS_BASE_URL |
Base URL for serving generated reports |
VSS_AGENT_TEMPLATE_PATH |
Path to report template directory |
VSS_AGENT_TEMPLATE_NAME |
Report template filename |
VST_BASE_URL |
Video Storage Tool base URL |
VST_PORT |
VST server port (default: 30888) |
VST_MCP_URL |
VST MCP server URL |
VST_MCP_PORT |
VST MCP server port (default: 8001) |
VIDEO_ANALYSIS_MCP_URL |
VA-MCP server URL |
VSS_VA_MCP_PORT |
VA-MCP server port (default: 9901) |
VSS_VA_MCP_CONFIG_FILE |
Path to VA-MCP config file |
VSS_ES_PORT |
Elasticsearch port (default: 9200) |
MDX_PORT |
MDX API port (default: 8081) |
LLM_NAME |
LLM model name |
LLM_BASE_URL |
LLM NIM endpoint URL |
NEMOTRON_PORT |
Nemotron NIM port (default: 30081) |
COSMOS_BASE_URL |
Cosmos Reason VLM endpoint URL |
COSMOS_PORT |
Cosmos NIM port (default: 30082) |
PHOENIX_ENDPOINT |
Phoenix telemetry endpoint |
Example Environment File#
Example .env file
# Host Configuration
HOST_IP='10.20.30.40'
# VSS Agent Configuration
VSS_AGENT_VERSION=v1.0.0
VSS_AGENT_CONFIG_FILE=./deployments/warehouse/vss-agent/configs/config.yml
VSS_AGENT_HOST=0.0.0.0
VSS_AGENT_PORT=8000
VSS_AGENT_OBJECT_STORE_TYPE=local_object_store
VSS_AGENT_REPORTS_BASE_URL=http://${HOST_IP}:${VSS_AGENT_PORT}/static/
VSS_AGENT_TEMPLATE_PATH=./deployments/warehouse/vss-agent/templates
VSS_AGENT_TEMPLATE_NAME=incident_report_template.md
# VA-MCP Configuration
VSS_VA_MCP_CONFIG_FILE=./deployments/warehouse/vss-agent/configs/va_mcp_server_config.yml
VSS_VA_MCP_PORT=9901
VSS_ES_PORT=9200
# VST Configuration
VST_PORT=30888
VST_BASE_URL=http://${HOST_IP}:${VST_PORT}
VST_MCP_PORT=8001
VST_MCP_URL=http://${HOST_IP}:${VST_MCP_PORT}
# LLM Configuration
LLM_NAME=nvidia/nvidia-nemotron-nano-9b-v2
NEMOTRON_PORT=30081
LLM_BASE_URL=http://${HOST_IP}:${NEMOTRON_PORT}
# Cosmos VLM Configuration
COSMOS_PORT=30082
COSMOS_BASE_URL=http://${HOST_IP}:${COSMOS_PORT}
# Telemetry
PHOENIX_ENDPOINT=http://${HOST_IP}:6006