To access Server Settings, click on the Server icon at the top left of the Agent UI and "Settings" under Configuration. Note: If the server icon has a colored background this means you are accessing someone else's Agent server via permissions and some features may be unavailable.

Saving and Loading

To save or load your device configuration click on Server Icon and Backup/ Restore under Devices. There you can download your devices configuration, system configuration and layouts or upload previous files.


  • Name: Give your Agent instance a name. If you have multiple servers connected to your account it's a good idea to give them unique names.
  • Show Logo: Show your business logo on the loading screen. Requires a business license. Upload a logo via the File Upload option in the server menu. example.
  • Max CPU: This is the maximum CPU of the server. If your computer hits this limit you will get warnings in the browser and Agent will start reducing framerates of cameras to get under the limit. This is only available on Windows.
  • Apply Schedule at Start: Check this to have Agent apply the schedule at startup (works out what state all your devices should be in according to the schedule) - otherwise Agent will start with your devices in their last known state.
  • Notify on Disconnect: Check this and we will notify you if your server disconnects from web services without shutting down.
  • Storage Email Address: Enter this and we will send you notifications when your storage limit is hit (requires SMTP settings or a subscription)
  • Notify Trigger: Percentage used space of the storage location to trigger an email notification (note this is the allocated max space in the storage directory not the free space on the drive).
  • Email Interval: How often to send the storage warning emails (in hours).
  • Storage Interval: This controls how often Agent runs Storage Management
  • VLC Directory: The directory that VLC (v3+) is installed into. This is automatically populated if we can detect it on your system.
  • Add to Database: This controls if Agent will prompt you to add your camera to the wizard database when you add an unlisted camera.
  • Record all audio channels: If enabled this will write all audio channels to the output files. This has been known to cause issues on some systems where the bitrate is misreported by the operating system causing instability.
  • Push to Talk: Toggle push to talk mode - when active talk is only enabled whilst the talk button is pressed.
  • Experimental Features: Enable experimental features in Agent. We sometimes deploy new functionality for testing and it's hidden behind this switch. Generally only enable this if you are involved in testing.
  • Logging: See Logging
  • SignalR Method: Set the method used by SignalR (which Agent uses to setup remote connections). Only used when troubleshooting remote access.
  • Wait for SignalR: Wait for a result from SignalR at startup (used for troubleshooting remote connections - can resolved connection issues on OSX).
  • Time Formats : See Local Server

AI Settings

DeepStack AI/ CodeProject.AI

See AI Settings

Plate Recognizer

Get ALPR powered by Plate Recognizer. Free Trial available.
See ALPR User guide


Click a button to authorise Agent to upload to your cloud host. If you have problems you may need to disable 2 factor authentication on your cloud host account. When you have granted Agent access you can upload to the cloud by editing your camera cloud settings

S3 Cloud Storage

S3 Storage options don't use oauth for connections - you will need to provide a client ID and a secret key to be able to upload. Agent supports Amazon S3 and other S3 Providers like Google Cloud.

Amazon S3 Settings

Create your storage account on AWS and fill out the S3 parameters. Leave the URL blank for Amazon S3 (as it's automatic).

Google Cloud S3 Settings

To configure google cloud S3 storage you will need to create a new bucket in the google cloud interface and then add an Access Key which will generate a key and a secret you can use to configure the connection in Agent. Set the URL to The region name is not used.


This lets you update Agents Camera and PTZ model database

  • PTZ Models: Click to download the latest PTZ database for controlling PTZ cameras.
  • Camera Definitions: Click to download the latest camera definitions database. This updates the Add Camera Wizard with new models.


Add or edit FTP servers here. When you have added a Server you can select it when editing a camera. See camera FTP

  • Name: Give your server a name - this is only used locally with Agent
  • Username: Your FTP server username
  • Password: Your FTP server password
  • Server: Your FTP server URL. Should start with ftp:// or sftp:// eg
  • Port: The port your FTP server is running on. Usually ftp:// uses 21 and sftp:// uses 22
  • Use SFTP: Check this if your server uses SFTP.
  • Use Passive: Check this to use Passive FTP mode.
  • Rename: This makes Agent upload a temporary file and then rename it when it's uploaded. This is good for reducing flicker when using FTP to stream video via javascript.
  • Max Queue: If the FTP server is busy uploading files this is the size limit of the queue. - once agent reaches this limit new files will be rejected from upload. The queue size is on a per-camera basis.


Using this tab you can add, edit and delete layouts


Use this tab to license Agent DVR for business use.

Local Server

  • Bind to Interface: By default Agent listens on all interfaces. You can change that to listen on a specific network interface here. If this breaks access you will need to stop Agent and manually set the BindInterface to * in the file Agent/Media/XML/config.xml
  • Port: The local port to use. Default is 8090.
  • SSL Port: The port to use for SSL connections to your server. Requires a subscription or a business license. 0 = disable. Read this first!
  • SSL Certificate: The certificate file to bind with for SSL (Linux/ OSX only).
  • SSL Password: The SSL certificate password (Linux/ OSX only)
  • Username and Password (moved to Users in v4.4.8.0+) Set optional login credentials for accessing the local server. Your web browser will prompt for these. If you forget this password you can reset it by:
    • Stop the Agent service if it is running: Click Start - Run - Type "services.msc" - press enter. Right click "Agent" in the list and click Stop. You can prevent it from starting as a service when you reboot by right clicking on Agent, click Properties and set the startup type to "Disabled". Click Apply and OK.
    • Open a console window: Click Start - Type "cmd", right click on "Command Prompt" and click "Run as administrator"
    • Change directory to the Agent directory. Usually this would be "cd C:\Program Files\Agent"
    • Reset the local password - type: "Agent.exe reset-local-login" on Windows or "dotnet Agent.dll reset-local-login" on OSX and Linux.
    • Restart the Agent service (in the same way you stopped it)
  • Protect API: Check this to force basic authentication with API endpoints. Enabling this may break some integrations.
  • Access Timeout: Set a time limit for people accessing your server via permissions (minutes). 0 = unlimited.
  • Max Sessions: (v4.4.7.0+). The maximum number of simultaneous connections from web browsers. Oldest connections will be disconnected. 0 = unlimited.
  • STUN Servers: These servers provide IP resolution features for negotiating local and remote connections through NATs. Removing them may break local and/or remote connectivity.more info. If you have broken something here you will need to stop Agent, edit the media/xml/config.xml file and reset the list under STUNServers with: ",,,,"
  • Enable ZeroConf: Enable the ZeroConf service so Agent can be discovered across the network.
  • JPEG Quality: Agent uses this quality value to generate grabs and serve JPEG and MJPEG image streams. Higher quality uses more bandwidth. 75 is the default.
  • Block External Access This stops Agent from responding to connection requests from the remote web portal. You can use the API to automate this via a schedule for added security.
  • Max Files: The maximum number of files to load into the UI (across all devices) - when this limit is hit you will see a "load more" red icon in recordings and photos allowing you to load more in. Note that the search and filter features work on local data so you will need to load in the data to the UI for that to work fully. For unlimited data set this to 0. Thousands of files can slow down the UI.
  • Max Photos: The maximum number of photos to load in per device. For all photos set this to 0. Thousands of files can slow down the UI.
  • Views: The number of available views on the live screen (v4.4.5.0+).
  • Plans: The number of available plans on the floorplan screen (v4.4.5.0+).
  • Culture Codes : The culture code to use when formatting dates on timestamps. Examples: en-US for American English or fr-CA for Canadian French. For a full list see this list.
  • Time Formats : The formatter string to use to format dates within the Agent UI. Default is 12 hour, which is "MMM DD YYYY h:mm:ss A". 24 hour example: "YYYY-MM-DD H:mm:ss".
    • YYYY: 4-digit year '2019'
    • YY: 2-digit year '19'
    • MMMM: Full-length month 'June'
    • MMM: 3 character month 'Jun'
    • MM: Month of the year, zero-padded '06'
    • M: Month of the year '6'
    • DD: Day of the month, zero-padded '01'
    • D: Day of the month '1'
    • Do: Day of the month with numeric ordinal contraction '1st'
    • HH: hour of day from 0-24, zero-padded, '14'
    • H: hour of day from 0-24, '14'
    • hh: hour of day on 12-hour clock, zero-padded, '02'
    • h: hour of the day on 12 hour clock, '2'
    • mm: minute, zero-padded, '04'
    • m: minute, '4'
    • ss: second, zero-padded
    • s: second
    • A: 'AM' or 'PM'
    • a: 'am' or 'pm'


  • Enabled: Switch Logging on or off.
  • Max Log Size: This controls the maximum number of entries in the log queue.
  • FFMPEG Log Level: Sets the debug output level for ffmpeg. Warning: Trace will completely fill your logs so be sure to only use that option temporarily for debugging.
  • SignalR Logging: Log comms with the SignalR server (for debugging).


MQTT is a standard IoT messaging protocol and lets you integrate devices and services across your network. You can configure it here and enable MQTT Events on your devices or use Actions to send custom messages to this MQTT server.

Agent can also respond to commands from MQTT. See MQTT.

  • Enabled: Switch MQTT on or off.
  • Server: Enter the IP address of the MQTT Server
  • Port: Enter the port the MQTT Server is using (default is 1883)
  • Check Interval: Agent sends keep-alive messages to make sure the connection is available on this interval (seconds)
  • Protocol: Protocol is either None or SSL.
  • QoS: Quality of Service. See your MQTT server documentation.
  • Client ID: Your client ID. Agent can usually randomly generate this.
  • Username: Your MQTT username
  • Password: Your MQTT password
  • Send Stats: Agent can send stats to MQTT (like CPU usage, memory usage, drive usage) - Check this to enable (Windows only).


NDI provides easy access to IP video sources with built in discovery. Some cameras and video surveillance systems come ready with NDI support enabling you to easily add them to Agent DVR, See for more information. Agent DVR supports video+audio NDI sources and PTZ via NDI

  • Groups: Add NDI groups here (if applicable). New line separated.
  • Extra IPs: Add NDI IP addresses here to scan for devices. New line separated.
  • Show local devices: Choose whether to list NDI devices on the local computer (running Agent DVR).


Agent looks for key words in ONVIF event XML packets to detect motion events. These packets can vary between cameras so we've provided a field here where you can add your own camera's event XML to trigger ONVIF events. Only use this if you are having issues with ONVIF events.

  • Detect XML: Add the ONVIF XML event packet here.
  • Event Logging: Log all incoming XML from the camera (useful for debugging). Logs are available at /logs.html on the local server.

For example, if you check the logs at /logs.html in Agent DVR and you see entries like:

Ignored ONVIF event: <tt:Source xmlns:tt=""><tt:SimpleItem Name="VideoSource" Value="V_SRC_000" /><tt:SimpleItem Name="Rule" Value="MyMotionDetectorRule" /></tt:Source><tt:Data xmlns:tt=""><tt:SimpleItem Name="State" Value="true" /></tt:Data>

And Agent isn't recognising this as a motion event you could enter:

<tt:SimpleItem Name="Rule" Value="MyMotionDetectorRule" /></tt:Source><tt:Data xmlns:tt=""><tt:SimpleItem Name="State" Value="true" /></tt:Data>

Into the Detect XML field and Agent will then treat any events containing this text as a motion event.


These settings control how Agent renders and delivers video to the web browser and over the API.

  • Max Stream Size: The maximum resolution to stream to the web client with. High resolutions can use a lot of CPU.
  • Max MJPEG Size: The maximum allowed MJPEG stream size (that Agent will generate via api).
  • Default MJPEG Size: The default MJPEG stream size (that Agent will generate via api) - when no size parameter is passed in.
  • Codec: The codec to record to. Choose from H264 or VP8.

    H264 has widespread hardware encode support - use this for maximum performance. A drawback of H264 is that the file must be fully written before it can be played back. Some operating systems come with ffmpeg versions that don't have H264 encoding enabled. If recordings fail try switching the encoder to use VP8 instead.

    VP8 doesn't generally have hardware encode support but the .webm files it generates can be played back whilst they are being recorded.

    Tip Use Raw mode to record with IP cameras (Set the encoder to Raw on the recording tab when editing the camera) for maximum performance and playback whilst recording.

  • Video FPS: The maximum FPS of the Video sent to the web browser.
  • Center Images: Check this to toggle whether Agent fills the available space with the camera image or maintains the original aspect ratio of the incoming camera video.
  • Use GPU: Check this to use the GPU when decoding (playing back) saved video files.
  • High Performance Resizing: Check this to use a minimal resizing algorithm. This uses less CPU but can result in jagged lines in playback.
  • Default GPU Decoder *: Select the default hardware decoder to use. This is a preferred device - if it fails, Agent will try the other options.
  • Default GPU Encoder *: Select the default hardware encoder to use. This is a preferred device - if it fails, Agent will try the other options.
  • Use OpenCV to render text: Using opencv to render text (timestamp, overlays) can improve performance slightly but removes font support (Windows only).
  • Default Language: Select the default language for your server. This controls the language used to render some text elements on images.
  • Interval Delay: The time between switching Views when using an interval mode layout in a Live View.

* GPU encoding and decoding depends on hardware compatibility and drivers in your computer and on which libraries FFMPEG has been built with support for. Start a recording and check the logs in Agent (at /logs.html in the local client) to see if Agent is using your hardware devices. Agent should fall back to CPU based encoding if GPU encoding fails.


These settings control how Agent handles arming and disarming the system via the lock icon in the UI (or integrations/ API).

  • Arm Delay: This is the delay in seconds between clicking the Arm icon (top left in Agent - the lock icon) and Agent actually enabling alerts.
  • Disarm Code: This is the code to disarm agent which is used by Alexa. The default is 1234.
  • Arm Profile: Select a profile to auto apply when the system is armed (lock icon in top left corner of the UI).
  • Disarm Profile: Select a profile to auto apply when the system is disarmed (unlock icon in top left corner of the UI).
  • Access Timeout: Moved to Local Server settings


You can either use an subscription to send email alerts or use your own SMTP server. Note that to send emails you will need to add an action to send an email.. Troubleshooting

  • Use SMTP: Check this to enable messaging via your own SMTP server.
  • Username: Your SMTP username
  • Password: Your SMTP password
  • From Address: The from address eg
  • Server: The IP or web address of your SMTP server
  • Port: The port SMTP is running on. Default is 25
  • Use SSL: Check this to enable SMTP over SSL
  • Send full size images: Check this to send full resolution images instead of resized smaller images.


See Storage Settings

Streaming (RTMP)

Agent can stream video to RTMP endpoints like Twitch and YouTube which you can then use to broadcast or embed in your website. See Embedding

You can trigger RTMP streaming from the Server menu or you can use a device scheduler to start and stop RTMP streaming automatically.

  • URL: The path to publish video to. Usually looks like rtmp://
  • Stream Key: See the embedding guide linked above to get your stream key.
  • Size: Choose a resolution to publish with. The higher the resolution the more bandwidth and CPU will be used.
  • Quality: Basic quality setting - default is 8. Lower value will mean less quality but lower bandwidth use.
  • Frame Rate: Set a target framerate for the published video. Default is 15.
  • Use GPU: Enable this to use your GPU to encode the stream.
  • Include Audio: Check this to push audio to the stream as well as video. If this is turned off Agent will generate a dummy silent audio track.
  • Max Duration: Agent will automatically stop streaming after this period of time. Enter 0 to disable.

Users (Local Users, available on v4.4.7.0+)

See Remote Permissions for remote user permissions.
The free version of Agent DVR allows one (admin) user to be added.

With a Business License you can add multiple users with varying permissions to the local Agent DVR server.

See Server Settings - Users tab to add users.

  • Username: The username to login with (not your username)
  • Password: Nominate a password for the local account
  • Groups: Select or enter groups. This is much like the permissions groups for remote users but you don't need to enter the server name here. To let them access all devices just leave this field blank. To restrict access to devices:
    • Add a group name to the Group field on the General tab when you edit a device. For example "outside"
    • On the user's permission add the group "outside". They will then only be able to access devices with "outside" in the group field.
  • Is Admin: User can access everything. If the user is an admin then read only is ignored below.
  • PTZ: Sets access to PTZ control.
  • Own Views: User has their own copy of the view configuration saved.
  • Read Only: User cannot modify device settings.
  • Download: User can download recordings.
  • Audio: User can listen to live and recorded audio.
  • Talk: User can use talk features.
Forgot the admin login?

If you forget the admin login and are unable to access Agent you can reset it by:

  • Stop the Agent service if it is running
  • Open a console window: Click Start - Type "cmd", right click on "Command Prompt" and click "Run as administrator"
  • Change directory to the Agent directory. Usually this would be "cd C:\Program Files\Agent"
  • Reset the local password - type: "Agent.exe reset-local-login" on Windows or "dotnet Agent.dll reset-local-login" on OSX and Linux.
  • Restart the Agent service (in the same way you stopped it)