SecuritySpy Icon


User Manual

for version 5.2

Written by Ben Bird - Ben Software Ltd

Web | Store

Table of Contents


SecuritySpy is CCTV video surveillance software for the Mac.

With features such as motion detection, email and iPhone alerts, ONVIF support and Pan/Tilt/Zoom control, SecuritySpy will enable you to set up a comprehensive and effective CCTV system for your business or home quickly and easily.

SecuritySpy can turn any Mac into a video surveillance station (for example, with multiple large screens in a security control room). It it also ideal for autonomous remote operation, as it has a fully-featured secure web interface that allows you to access and control your surveillance system from over the Internet or over a local network. And, as Mac software, it is as elegant and easy to use as you would expect, with a carefully-designed user interface.

If you are building a video surveillance system from scratch, all you need is SecuritySpy, a Mac, and some IP cameras. If you have an existing system using analog cameras, SecuritySpy can use these alongside more modern IP cameras, allowing you to transition to a state-of-the-art digital system.

SecuritySpy's flexibility will allow you to set up a system that is tailored for your individual needs, whether you want a single camera or a hundred.

This manual describes how to use the SecuritySpy software itself. For information about how to choose, install and set up the hardware of your CCTV system, see the SecuritySpy Installation Manual.

The main features of SecuritySpy are:

Getting Started

Initially, SecuritySpy will detect and display all local (USB, Thunderbolt and built-in) devices connected to your Mac. If you are using IP cameras, you can add them in the Preferences window (full setup instructions for IP video devices can be found in the SecuritySpy Installation Manual).

Video Windows
SecuritySpy's main All Cameras window shows live video streams from all configured cameras in a grid view. You can also create group windows that contain particular groups of cameras — useful in larger installations to organise cameras into logical collections.

In addition, each camera can be displayed in its own individual video window. You can open individual camera video windows from the Window menu, or by double-clicking on a camera's live image in the main video window or group window, or by double-clicking on a camera name in the Camera Info window. All video windows can be resized to any shape and size by dragging any side of the window.

SecuritySpy offers digital Pan/Tilt/Zoom control for any camera in any video window: hold the Command key (⌘) on your keyboard and scroll up or down on your mouse or trackpad (on a trackpad, use the two-finger gesture to scroll). Once zoomed in, release the Command key and scroll in any direction to pan around the image. This is useful for high-resolution cameras that supply more detail than can be displayed in video windows.

Recording and Actions
In order to record video from a camera or for events to be triggered, it must be armed, and there are three modes that can be armed independently:

Camera modes are armed and disarmed based on schedules, which define time periods throughout the week when a camera should be armed or disarmed. You can set up your own schedules, or use the built-in ones, which are:

It is sometimes useful to temporarily override schedules. For example, if you are getting lots of notifications due to some unusual activity in a particular camera, you can use a temporary schedule override to disarm Actions mode for one hour, to temporarily stop the notifications.

This can be best understood by the following diagram that shows the relationship between schedules, schedule overrides, and arming/disarming of camera modes:

SecuritySpy Scheduling Diagram

To set a schedule or override for a particular camera, right-click on its video image (or on its name or status in the Camera Info window) to get a pop-up menu that allows you to do this, or use the Control menu at the top of the screen.

Camera Info Window
This window is available by selecting Camera Info from the Window menu:

SecuritySpy Camera Info Window

The Camera Info window shows a wealth of information about the operation of each camera:

To choose which columns to display, click on the header bar to get a pop-up menu that allows you to turn on or off each of the above items.

Full Screen Mode
Enter full screen mode using the option in the Window menu, or by pressing Command-F on the keyboard. Each monitor attached to your computer becomes an independent full-screen display for whichever cameras you choose. The first time you enter full screen mode, SecuritySpy will add all available cameras to the full screen view; to change this, right-click (control-click) anywhere on a screen and a menu will pop up that allows you to configure which cameras to display on that screen.

Error Reporting
When SecuritySpy encounters an error, it reports the error in its log file and continues to run. For example, such errors may include problems with video input devices, FTP upload errors, or errors sending emails. If you encounter any sort of problem while using SecuritySpy, you should check the log to find out more information about what happened. To open the log file, select Open Log from the File menu.


The Preferences window contains all settings for the software, and is split into the following sections:

Note that changes to Preferences are not applied immediately as you interact with the controls in this window, because this could interrupt recordings that are currently taking place. Instead, use the Save option in the File menu (Command-S on the keyboard), or click the "Apply Preferences" button in the top right corner of the window, to apply any changes you make.

Preferences - General

This section contains general-purpose settings to configure the software, as follows:

SecuritySpy Preferences - General

Delete old files by age
When enabled, captured files older than the number of days you specify will be deleted automatically. There is a separate setting for the startup (system) volume vs. other volumes.

Delete old files by disk space
When enabled, old captured files will be deleted when disk space drops below the level you specify. This should not be set too low, as disks tend to slow down significantly as they run out of space; a value of around 2% of the disk's capacity is generally a good setting to use (e.g. 20 GB for a 1 TB drive). If the computer is being used for other applications besides SecuritySpy, more free space should be left on the startup (system) volume, hence there is a separate setting for the startup volume vs. other volumes.

Display - Show camera information in video windows
This option controls whether camera information such as the camera name, armed modes and recording status is displayed at the top of each camera image in video windows (but not in captured footage).

Display - Make video windows float over other applications
When enabled, all of SecuritySpy's video windows (the All Cameras window, group windows and individual-camera video windows) will appear over the windows of other applications, even when SecuritySpy is in the background.

Performance - Display cameras at half frame rate in video windows
When enabled, all cameras will display at half frame rate in all video windows. If you have many cameras and/or many video windows open at once, enabling this option may result in lower CPU usage (how much lower depends on the resolution and frame rate of your cameras, and the speed of your computer's graphics hardware). This option affects display only; it doesn't affect video capture.

Performance - Perform motion detection only when required
When enabled, motion detection will only be performed when it is required for triggering motion capture or actions, which will result in lower CPU usage when it is not required for these purposes.

Performance - Decompress incoming video frames only when required
By default, SecuritySpy will decompress all incoming video frames, whether or not each one is actually required. The advantage in doing so is that frames are then available at all times, so if video from a camera is suddenly required after a period of not being required (e.g. a video window is opened after previously being closed), then a video frame will be available immediately; otherwise there may be a significant delay until decompression can resume and the next frame is available.

To avoid a long delay, make sure the camera's key frame rate is not set too high (this is the frequency of self-contained key frames in the compressed video stream, and can be referred to by the following names by various manufacturers: I-frame interval, I-frame rate, GOV length, Intra frame period). A good setting is around twice the frame rate of the stream, which will result in a maximum delay of two seconds (e.g. if the camera is streaming video at 10fps, then set the key frame rate to 20).

Enabling this option could result in significantly lower CPU usage, especially if the features that require decompression are used infrequently. Such features include motion detection, display in video windows, delivery via the web interface, and recording to disk where SecuritySpy is performing recompression of the video stream.

Maintenance - Restart automatically after a crash
Every effort is made to ensure that SecuritySpy is as stable as possible, however since it relies on other software components written by other parties (such as system software and driver software for video input devices), stability cannot be guaranteed. Therefore it is possible, although unlikely, for SecuritySpy to crash ("unexpectedly quit"), and if the computer may be left unattended for long periods of time, this is a potential problem.

When this option is enabled, an tiny background application is launched that monitors SecuritySpy and restarts it if it crashes. This application runs invisibly and uses almost no system resources. If SecuritySpy crashes while video is being captured, at most only a few minutes of video will be lost.

Maintenance - Allow automatic computer sleep
The computer must be awake for SecuritySpy to operate, so if you want continuous operation you should leave this option turned off. Use this option if you would like the computer to sleep automatically when it is not being used (as per the settings in the Energy Saver system preference).

Maintenance - Dismiss alert messages after 1 minute
If this option is on, all alert messages (such as error messages) will be closed after 1 minute. This option should be enabled if the computer is to be left unattended.

Maintenance - Display pop-up window for major errors
Use this option to have a window appear on the screen to inform you of any major errors (these include problems preventing SecuritySpy from obtaining video streams, or recording problems).

Maintenance - Send diagnostic information back to developer
If this option is on, SecuritySpy will send information back to us, the developers of the software, once per day, to help us diagnose problems and improve the software. This includes system setup information, error reports and performance data. This data is sent over an encrypted connection, and we will never share this data with third parties.

Maintenance - Send anonymous images back to developer
If this option is on, SecuritySpy will send images back to us when motion is detected. By analysing and categorising these images, we can use them to improve SecuritySpy's motion-detection features. The images are scaled down to a small size and are sent infrequently over an encrypted connection, so the transmission is secure and uses very little bandwidth. Apart from the content of the images themselves, no identifying data is sent along with these images.

Maintenance - Automatically check for software updates upon launch
If an update is available you will be offered the option to install it; updates are never installed automatically without your permission.

Audio - Set computer to full volume before playing sounds
When enabled, the computer's main speaker volume will be automatically set to maximum before playing sounds, and then set back to its original volume after the sound has played.

Audio - Hiss reduction
When enabled, low-level audio will be silenced, eliminating hiss and background noise from microphones. This is useful for applications such as baby monitoring, where you may be listening to the audio at night, or when multiple cameras are playing audio at the same time.

Audio - Mute incoming audio when sending audio to a camera
For cameras that support two-way audio, this option controls whether the incoming audio from that camera is muted whenever you are sending audio to that camera. This prevents a feedback situation where audio can pass from the Mac's microphone to the camera's speaker, to the camera's microphone, to the Mac's speaker and back to the Mac's microphone in an infinite loop.

Audio - Two-way audio source and volume
This defines an audio input source connected to your Mac that is to be used for computer-to-camera audio transmission. Use the round control knob on the right to adjust the audio volume.

Email error reports
Use this option to have error reports sent to an email address whenever any problem occurs. You can enter multiple email addresses, each separated by a comma. You also have the option of receiving warning messages - these are advisory messages that inform you of potential problems such as high memory or CPU usage.

In all cases, all errors are written to a log file, which you can access from the File menu in SecuritySpy.

Email daily statistics
When this option is used, SecuritySpy will gather various statistics, including the number of files created, the amount of data recorded, and camera uptime. At midnight, a report will be sent by email containing a summary of this information. This is useful for quickly confirming that your system is performing as expected. You can enter multiple email addresses, each separated by a comma.

Date ordering
Choose your preferred date format, which is used whenever a date is displayed (e.g. in timestamps on video frames, and in file names).

Clock style
Choose a date format, and choose a 12-hour clock (e.g. "2 pm") or a 24-hour clock (e.g. "14:00").

Password for settings changes
You can set a password here that will be required by anyone attempting to access settings or disarm cameras. It is also advisable, in the Security & Privacy system preference, to set the Mac itself to require a password after a short time of inactivity. While this doesn't prevent someone from physically tampering with the computer, implementing these basic security precautions provides a useful first layer of protection.

Password for quitting
You can set a password here that will be required by anyone attempting to quit SecuritySpy.

Default capture destination
By default, movie and image files are saved to a Captured Files folder, within the SecuritySpy folder in your Home folder (i.e. ~/SecuritySpy/Captured Files/). However, you can customise where SecuritySpy saves files using this setting, by selecting a volume or folder anywhere on your file system.

If you want to choose a capture destination for specific cameras only, you can do this under
Preferences - Cameras - Setup.

Preferences - Cameras

Under the Cameras section, you can configure all cameras to be used by SecuritySpy. This section is further sub-divided into the following tabs: Device, Setup, Triggers, Audio, Continuous Capture, Motion Capture, and Actions.

Preferences - Cameras - Device

The Device tab contains settings related to video devices themselves (the screenshot below show the settings available for network devices; for local devices - i.e. those connected by USB, Thunderbolt or built-in devices such as FaceTime cameras - there are many fewer options available as these are plug-and-play devices that don't need to be set up in the same way).

SecuritySpy Preferences - Cameras - Device

Enter the IP address, hostname, or Bonjour address of the device. By clicking the Auto-Discovered Devices button below this field, SecuritySpy will display a list of devices that were discovered on your local network, for example:

Select a device from this list, and the Address field will be automatically populated with the address of the selected device. This menu consists of two sections:

Both the above addressing methods remove the need to configure your cameras with fixed IP addresses: for a camera that obtains an IP address automatically via DHCP (which is usually the case), setup is simply a case of connecting it to your network and selecting it in the above list.

Many cameras support both ONVIF and Bonjour, so you may see two entires in the list for such devices; in this case you can select either (though using the ONVIF address may be slightly faster and more reliable in some circumstances).

These are the network ports that SecuritySpy uses to communicate with the device. The standard ports are 80 for HTTP and 554 for RTSP (or 8000 in both cases if the network device is another copy of SecuritySpy). If your device uses standard ports (most do), you can leave these fields empty, but if it uses non-standard ports, you should enter them here.

Username / Password
If the network device requires authentication, enter its username and password here.

Most IP surveillance products sold in the last few years implement the ONVIF protocol, which is a universal way of communicating with IP cameras. So, if your camera supports this, then you should use the ONVIF profile in SecuritySpy. Alternatively, SecuritySpy has many profiles designed specifically for individual camera makes and models, so check this list to find one to match your device. Or, if you want to enter the HTTP/RTSP streaming request yourself, use the Manual configuration option.

If your device doesn't support ONVIF, and you are not sure which other profile to use, click the Auto-Detect Profiles button. SecuritySpy will then test each profile in turn with your camera, and will return a list of ones that work. Before you run this test, make sure that you have entered the camera's address, ports, username and password correctly.

This menu lists the available formats supported by the network device, which will be a combination of the following:

If you are connecting to a camera over a local network, then the "H.264 RTSP" format is typically the best one to use. If connecting over the internet, then the "H.264 RTSP-over-HTTP" format is most appropriate, if your camera supports it.

Video size
Enter a video size (resolution) to request from the device. If you leave these fields empty, the default video size of the network device will be used. This setting is not available for all devices; typically you will need to configure the device directly to set its video size.

Frame rate
Enter the frame rate at which you want the device to send video frames. This setting is not available for all devices; typically you will need to configure the device directly to set its frame rate.

Input or stream number
For devices that have multiple inputs or streams, here you can specify the one you want to use. For example, some devices have multiple physical inputs or image sensors, while others have multiple streams with different compression settings. This option will only be available if this feature is supported by the device.

Options - Use SSL
SSL is a cryptography protocol that provides secure encrypted communication with network devices. For devices that support this feature, SSL provides additional security by preventing the decoding of intercepted data streams. It can therefore be useful when transmitting data over the internet, but typically is not required when transmitting over a local network. Note that this may significantly slow down video transmission due to the extra processing required by the device. In order to use SSL you will have to set up the device with a certificate (either self-signed or from a certificate authority, although the latter is not really necessary since you are setting up the server yourself and there is therefore no question about its authenticity).

Options - Disable Pan/Tilt/Zoom support for this device
Many profiles in the above "Device type" list have PTZ support enabled for them, in order to control cameras with mechanical PTZ. If your device does not have PTZ features, or if you otherwise want to disable PTZ support for a particular camera, enable this option. This simply removes the PTZ controls associated with the camera from SecuritySpy's user interface.

Options - Recompress video data from this device
Network devices supply video data in a variety of compressed formats (typically JPEG, H.264 or H.265). By default, the video data supplied by the camera will be captured directly from the device to the movie files that SecuritySpy creates. This ensures optimum quality, performance and lowest CPU usage. However, if you want SecuritySpy to apply a text overlay, a transformation (rotation/flip), or a video blanking mask (to obscure sections of the image), or if you want to re-encode the data to a more space-efficient format, then enable this option, and SecuritySpy will use the settings set under the Compression section in order to recompress the data while recording. Generally, if you require a text overlay, transformation or blanking mask, it should be applied in the camera itself (if available there), rather than SecuritySpy, to avoid the need for SecuritySpy to recompress the video data.

Options - Recompress audio data from this device
Network devices supply audio data in a variety of compressed formats (typically G.711, G.726, AMR or AAC). By default, the audio data supplied by the camera will be captured directly from the device to the movie files that SecuritySpy creates. This ensures optimum quality, performance and lowest CPU usage. However, it may be useful to enable this feature in order to record with AAC audio compression if your camera is not capable of providing this format, because when the video format is H.264 or H.265 and the audio format is AAC, SecuritySpy can create MP4 files instead of MOV files. MP4 files play back in web browsers, whereas MOV files generally will not, so this is important if you will be viewing recorded footage via SecuritySpy's web interface.

This setting is available when you select Manual configuration as the profile. This is the request text that is sent to the device to instruct it to send media data. This setting is useful if you want to use a network device that doesn't support ONVIF, and isn't supported under an existing profile. Consult the documentation or manufacturer of your device for information about the format of HTTP or RTSP requests it understands.

When camera manuals specify this information, they typically do so in the form of a URL, for example:


This indicates that the RTSP format should be used, with the RTSP port set to port, and request.h264 as the Request.

Choosing and configuring your network devices
Please see the Network cameras section of the SecuritySpy Installation Manual for comprehensive information on this topic.


Preferences - Cameras - Setup

This tab shows general configuration options for each camera, as follows:

SecuritySpy Preferences - Cameras - Setup

Video Blanking Mask
Draw on the live video image to set the video blanking mask: this defines areas in the video image to be completed obscured (drawn in black) in the live and recorded video footage. Note that, for network cameras, the video blanking mask is only available if you have chosen to recompress video data from the camera, under the Device section.

Status - Enable this camera
This allows you to turn a particular camera off without completely removing it from the software. If you turn a camera off it will no longer be used and will not be available for viewing or recording.

This menu has several options for transformations that can be applied to the video image to compensate for the mounting position of the camera (for example if it mounted upside-down or rotated to one side). The available transformations are: 180° rotation, 90° rotation clockwise, 90° rotation counter-clockwise, horizontal flip, and vertical flip. Note that, for network cameras, this setting is only available if you have chosen to recompress video data from the camera, under the Device section.

Text overlay
Use this option to draw a text overlay on all video frames. Use the placeholders +n, +d, +w, and \n to represent the camera name, date and time, day name, and line break respectively. Note that, for network cameras, this setting is only available if you have chosen to recompress video data from the camera, under the Device section.

Capture destination
By default, movie and image files are saved to a Captured Files folder, within the SecuritySpy folder in your Home folder (i.e. ~/SecuritySpy/Captured Files/). However, you can customise where SecuritySpy saves files using this setting, by selecting a volume or folder anywhere on your file system.

Any capture destination set here will override the default one set under Preferences - General


Preferences - Cameras - Triggers

SecuritySpy Preferences - Cameras - Triggers

To explain how the video motion detection controls work, it is useful to understand the process by which video frames are analysed for their content. It can be summarised as follows:

Standard motion detection is performed on the incoming video in order to locate areas of motion. This is done by comparing pixel values in the current frame with those in previous frames.

The Mask, Sensitivity, and Trigger time settings control how these pixel differences result in motion being detected, and therefore which images get sent through to the next stage of the process.
When motion is detected, the image is cropped to just the area of motion, and scaled to a size that can be accepted by the neural network.
The cropped image is passed through the neural network(s). There are two neural networks available, which detect humans and vehicles respectively — depending on your settings, the image is passed to neither, one, or both of these networks for classification.
The neural networks output prediction probabilities, indicating how certain they are that the image contains a human or vehicle.

You can control at what level of certainty the Motion Capture and Actions functions will be triggered, using the "Human" and "Vehicle" threshold sliders.

Controls for standard motion detection
The standard video motion detection feature analyses the incoming video stream to detect motion. When the motion level exceeds the threshold (shown as the red line in the motion bar on the right), for the duration specified by the "Trigger time" setting, Motion Capture and Actions can be triggered, or, for more accurate analysis of the contents of the video stream, the image can then be passed to neural networks for further processing.

You can adjust the motion detection parameters with the following settings:

Motion Mask - this defines areas in the video image to be ignored by the motion detection algorithm. Click and drag on the video image to draw the mask. This is useful to exclude areas that contain moving objects that you don't want to capture, for example trees swaying in the wind.

Sensitivity - this allows for variations in camera installation conditions, and whether you want triggers generated by the slightest movement, or instead limit recording to high levels of movement. High values make sure that motion detection will be triggered by even small amounts of motion in the video stream, however this may also result in more false-positive triggers.

Trigger time - this specifies the minimum duration of continuous motion that will result in a trigger. The most sensitive setting is "1 frame", which will trigger if there is motion detected in a single video frame. However, this is likely to produce many false-positive triggers due to rain, lighting changes, insects and other transient motion. A trigger time of between 1 and 2 seconds is normally ideal: this provides a low rate of false-positive triggers while still being highly sensitive to real motion. Note that this feature works best when the frame rate of the incoming video is at least 5fps.

Controls for AI neural-network-based intelligent image classification
If motion is detected, the image can then be passed to two neural networks for further analysis: one to detect humans and the other to detect vehicles. In addition, at this stage, you can choose different rules for triggering Motion Capture vs. Actions. This is useful, for example, to only be notified when a human is detected, while still maintaining a full recording history of all motion.

To enable a neural network, set a prediction threshold at which a trigger will be generated: when the prediction from the neural network reaches this threshold, it will trigger Motion Capture or Actions. With a high-quality camera in good lighting, the neural networks are very accurate, and a threshold of 90% or so can work very well, virtually eliminating false-positive triggers.

With low-quality cameras, or ones that operate in low light and therefore produce grainy images, the accuracy will be lower, and so a lower threshold should be chosen to avoid real motion being missed.

Note that running images through the neural networks uses significant RAM and CPU resources. Best results are obtained by using high-quality cameras in good lighting conditions, and using effective motion-detection settings to limit the number of images that will need to be further analysed by the neural networks.

Audio level detection
This feature triggers motion capture and actions when the audio level reaches the specified threshold. Lower thresholds will result in triggering on quieter sounds. To use this feature, an audio source must be enabled for this camera (under the Audio tab).

Camera input ports
This feature triggers motion capture and actions when one of the camera's input ports is triggered. IP cameras typically have one or more input ports (sometimes called "IO ports", "Alarm inputs", "External inputs" or "Digital inputs") that can be connected to sensors such as PIR (Passive Infra Red) motion sensors, glass break detectors, door/window sensors etc. SecuritySpy currently supports the input ports of Axis, D-Link, Canon and Hikvision cameras.

Camera PIR sensor
This feature triggers motion capture and actions when the camera's built-in PIR sensor detects motion. This is currently supported for Hikvision cameras only.

Camera motion detection
This feature triggers motion capture and actions when the camera's on-board motion detection algorithm detects motion. This is currently supported for Hikvision cameras only.

Further information about motion detection can be found at Achieving Effective Motion Detection.


Preferences - Cameras - Audio

This tab allows you to specify the audio settings for each camera:

SecuritySpy Preferences - Cameras - Audio

Audio Source
Choose an audio input device to associate with this camera. Typically, for IP cameras, you will want to use the option "This network device", which indicates that SecuritySpy should take the audio feed from the camera itself.

This menu also lists all available local audio devices attached to your computer (built-in, USB, FireWire and Thunderbolt audio inputs), and you can associate any of these audio inputs with any camera.

If the audio device has more than one data source, these are listed here. For example, most built-in audio inputs in Mac computers have two data sources: Line In and Digital In; to use an analog audio source you would select Line In, or to use a digital source you would select Digital In.

Sample rate
This is the main factor that determines the quality of the audio - the higher the sample rate the better the quality, but the larger the captured files. A sample rate of 8000 Hz is normally adequate for video surveillance, though if you want higher quality, a setting of around 16000-22050 Hz will provide a significant improvement.

Left/mono channel, Right channel
Each camera can use one or two of the audio device's channels. Using the left and right channel menus, you can select which channel on the device (numbered in the menu) is recorded to which channel in the captured movie (left or right). For example, if the audio device has 10 input channels and you want input 5 recorded to the movie as the left channel and input 6 recorded as the right channel, you would select 5 and 6 in these menus respectively. To simply record people speaking, only mono (one channel) audio is required, in which case you should select "None" for the right channel. If you are using stereo audio (two channels), this doubles the size of the audio data, so use this only if you need to.

Recording options
You can choose whether to include audio in continuous-capture recordings and/or motion-capture recordings. By default, both options are enabled.


Preferences - Cameras - Continuous Capture

This tab allows you to specify settings for the Continuous Capture recording mode:

SecuritySpy Preferences - Cameras - Continuous Capture

Movie capture - Capture movie continuously
Enable this option to capture a movie file whenever the continuous-capture recording mode is armed.

Movie capture - Capture rate
This is the rate at which to capture frames to the movie (leave empty for the maximum rate). Note however that if the incoming video is in MPEG-4, H.264 or H.265 format, and you have chosen not to recompress the video (see the Device settings), SecuritySpy will be unable to change the frame rate of the video, and it will therefore be recorded at whatever rate is being supplied by the camera.

Movie capture - Playback rate
This feature is useful for capturing timelapse movies, where you can specify a playback rate that is different (usually significantly higher) than the capture rate.

Movie capture - Create new
Here you can specify when to create new movie files - there are four options:

Daily at midnight: a new movie file will be created at midnight each day. All footage captured during the day will be added to the same movie file, even if continuous-capture mode is disarmed and armed during this time.

Hourly (on the hour): a new movie file will be created at the beginning of each hour. All footage captured during each hour will be added to the same movie file even if continuous-capture mode is disarmed and armed during this time. This is a useful alternative to the Daily option above, producing smaller and therefore more manageable files that can be downloaded easily over the Internet.

Each time continuous capture is armed: a new movie file will be created whenever continuous-capture mode is armed, and will continue to be captured to until it is disarmed.

Every x Minutes/Hours/Days: a new movie file will be created at the frequency you specify. Whenever continuous-capture mode is disarmed and then armed, a new movie will also be created.

Movie capture - Upload to
Enable this option to upload all continuous-capture movie files to an FTP server. If the "create new" setting is set to Daily at midnight, movies will be uploaded at the end of the day; otherwise movies will be uploaded as soon as they are finished.

Image capture - Capture images continuously
This feature captures an image file to disk in JPEG format at the rate you specify.

Image capture - Upload to
Enable this option to upload all continuous-capture image files to an FTP server.

Webcam image - Upload and replace image on server
Use this option to periodically upload a JPEG image file with a fixed name to an FTP server, replacing the previous file each time. This is useful for continually updating an image on a web page.


Preferences - Cameras - Motion Capture

This tab contains settings for the motion-capture recording mode, which captures movies or images in response to the motion triggers configured under the Setup tab:

SecuritySpy Preferences - Cameras - Motion Capture

Movie capture - Capture movie in response to motion trigger
Enable this option to capture a movie in response to a motion trigger. Motion triggers include video motion detection, audio detection and camera input ports, which can be enabled via the Triggers tab.

Movie capture - Capture type
There are two options for the motion-capture movie:

One movie per event: a separate movie file will be created for each motion detection event. This may result in a large number of individual movie files if there are frequent events, however it offers more resiliency to computer problems or tampering.

One movie per day: one movie file will be created each day containing all the motion detection events of that day. One large file may be easier to manage than lots of smaller files.

Movie capture - Capture rate
Specify the rate at which to capture frames to the movie (leave empty for the maximum rate). Note however that if the incoming video is in MPEG-4, H.264 or H.265 format, and you have chosen not to recompress the video (see the Device settings), SecuritySpy will be unable to change the frame rate of the video, and it will therefore be recorded at whatever rate is being supplied by the camera.

Movie capture - Pre-capture
It is often useful to have video from both before and after a motion event; in the time before and after, even though the motion is not high enough to trigger recording, there is often something interesting happening that is worth capturing. This is the purpose of the Pre-capture and Post-capture features. The pre-capture feature uses a buffer of video frames in memory, so that when the capture is triggered, some video before the trigger is also captured.

Movie capture - Post-capture
Specify the number of seconds to continue capturing the movie after the motion trigger has stopped. This should be set to at least a few seconds in order to avoid many small movie files being captured for one longer period of motion.

Movie capture - Upload to
Enable this option to upload all motion-capture movie files to an FTP server for off-site backup. If the capture type is set to One movie per day, movies will be uploaded at the end of the day; if the capture type is One movie per event, movies will be uploaded as soon as they are finished.

Image capture - Capture images in response to motion trigger
Enable this option to periodically capture JPEG image files when motion is detected.

Image capture - Frequency
Specify the capture frequency in terms of the number of seconds between image file captures.

Image capture - Post-capture
Specify the number of seconds to continue to capture image files after the motion trigger has stopped.

Image capture - Upload to
Use this option to upload all motion-capture image files to an FTP server for off-site backup.


Preferences - Cameras - Actions

This tab contains settings for actions to be performed in response to the motion triggers configured under the Triggers tab:

SecuritySpy Preferences - Cameras - Actions

Play sound
Select a sound to play when motion is triggered. As well as the standard system sounds, there are several built-in sounds designed to scare off intruders, and you can add your own by placing sound files in SecuritySpy's Sounds folder (to locate this folder, click on the file File menu and select Reveal Folder in Finder / Sounds). Most sound formats are supported, including AIFF, WAV, MP3, and AAC.

Play sound - Duration
Specifies the duration in seconds to play the sound after the motion trigger has stopped.

Run script
You can select a script to run when motion is triggered. To create your own scripts, use the Script Editor application that comes with macOS (this application is called AppleScript Editor on older system versions). Place your scripts in SecuritySpy's Scripts folder to make them available to invoke as actions (to locate this folder, click on the file File menu and select Reveal Folder in Finder / Scripts). A few scripts are included with SecuritySpy, including ones that control switch/relay devices that can trigger external devices such as lights and alarms. The built-in scripts work with WebRelay and Web-i IO devices.

Three parameters are passed to these scripts:

Send email to
This feature sends an email, optionally with attached JPEG images, to an address you specify. To send the email to multiple addresses, enter them separated by commas.

Run shell command
Any shell command (i.e. anything you can type into the Terminal on your Mac) can be set here as an action. Click the popup button to the right of this box for some examples, including:

If you want to issue multiple commands, you can put them all directly into this field separated by semicolons, or you can create a ".sh" shell script file. When creating a script file, you will need to set its permissions (just once) to allow it to be run, using the following Terminal command:

chmod +x path/to/

Trigger other cameras
This setting allows you to trigger recording in one camera based on a motion trigger in another. This could be useful for when you have multiple cameras covering the same area, and want recording to take place in all the cameras when any one detects motion, thereby increasing the chance of capturing something interesting.

Video display - Come to the front and open this camera's video window
If enabled, whenever there is a motion trigger for this camera, SecuritySpy will come to the front, above all other applications, and will display the camera's video window.

Video display - Wake the screen and dismiss the screensaver
If enabled, whenever there is a motion trigger for this camera, all screen(s) will be woken and any screensaver currently running will be quit.

Video display - Highlight camera with red box
If enabled, whenever there is a motion trigger for this camera, a red box will be shown around the camera's image in all video windows, for the number of seconds specified.

Action delay
This option allows you to specify a delay in seconds after a motion trigger, before performing any of the actions

Action reset time
Once the actions are triggered, this delay specifies the minimum time before they can be triggered again. Without this delay, an action could be invoked many times in quick succession if there is lots of motion, which is usually undesirable. Therefore, it is advisable to specify a delay here of at least the length of a typical motion detection event.


Preferences - Groups

This section allows you to specify groups of cameras that can be displayed via their own group windows. For large installations, organising the cameras into logical groups in this way makes viewing them much more manageable.

SecuritySpy Preferences - Groups

Display type
Choose how you want cameras to appear in the group window:

Display cameras in grid - just like the All Cameras window, the group window will display all its member cameras at once, in a grid arrangement.

Cycle between each camera - this option will display one camera at a time, sequentially.

Cycle between groups of four cameras - this option will display four cameras at a time, sequentially in groups of four.

Cycle time
Specify the number of seconds between cycles, when using either of the Cycle display options.

Simply enable the checkbox next to each camera you want to include in the group.


Preferences - Scheduling - Schedules

Schedules define when cameras should be armed and unarmed throughout the week. All schedules created here will be available to all cameras, and can be used to arm their continuous-capture, motion-capture and action modes independently.

SecuritySpy Preferences - Scheduling - Schedules

Times when cameras will be armed are represented as red "time objects". Each time object has a start and end time, which define when the camera will be automatically armed and then automatically disarmed. Click and drag to create new time objects, or to move or edit existing time objects. To remove a time object, select it and press the delete key on the keyboard.

In the above example, the camera will be armed during office hours on weekdays only. SecuritySpy doesn't need to be running before the start time of a time object — if you launch it at any time marked red on the schedule, all cameras using the schedule will be armed automatically.

Clicking the "Advanced Schedule Options" button allows you to configure some additional options, as follows:

SecuritySpy Preferences - Scheduling - Schedules - Advanced

The options allow you modify the built-in sunrise/sunset schedules so that recording starts a certain number of minutes before or after sunrise or sunset. For example, if you want recording to start 5 minutes before sunrise, then you should set the Sunrise offset time for the Armed Sunrise To Sunset schedule to -5.

Determining sunrise and sunset times requires accurate location and time information. If you plan to use these schedules, check the Date & Time System Preference to make sure your Mac's location and clock are set correctly.


Preferences - Scheduling - Schedule Presets

A schedule preset defines a set of schedules that will be applied to your cameras when the preset is invoked. For example, a "Home" and "Away" preset can define different sets of schedules to use when a property is occupied vs. when it is empty.

SecuritySpy Preferences - Scheduling - Schedule Presets

For each camera, you can define a schedule or you can specify "No Change" to indicate that a particular camera's schedule should not be changed when the preset is applied.

Schedule presets can be invoked from the Control menu.


Preferences - Compression

This section allows you to specify the video and audio compression that will be performed for any camera set to be compressed by SecuritySpy. This applies in the following cases:

For any network camera that is supplying H.264 or H.265 video data, for optimum quality and performance, you should not enable the Recompress video data option in the Cameras - Device settings unless you need to do so for some specific reason (e.g. you want SecuritySpy to add a date/time overlay on the video stream and the camera is incapable of doing this).

Limiting the use of audio recompression is less important, because it requires much less CPU time than video recompression. Ideally, your cameras can supply audio in AAC format, but for any camera that cannot, you might want to set SecuritySpy to re-encode to AAC format. The advantage of recording AAC audio is that SecuritySpy can then create MP4 movie files (rather than MOV movie files), which are much more compatible for playback by web browsers. If you don't need to play back the captured files in web browsers, then it's best to leave the Recompress audio data option turned off.

SecuritySpy Preferences - Compression

Video Compression - Codec
Choose between the following video compression codecs:

JPEG: Produces high-quality video and is fast to compress, so performance with this codec is very good, however the size of captured movie files will be very large.

H.264: This is a very efficient codec that will produce small file sizes. On older Macs without hardware-accelerated H.264 video processing, this format will require significant CPU resources.

H.265: This is a very efficient codec, producing files up to half the size as H.264. On older Macs without hardware-accelerated H.265 video processing, this format will require significant CPU resources - in this case, H.264 should be used instead, as it is less complex and therefore less demanding on the CPU.

In order to create MP4 movie files that play back in web browsers, use either H.264 or H.265.

H.264 and H.265 support temporal compression. Depending on the content, video can have a high level of temporal redundancy, that is, very often one frame is similar to the last frame. Temporal compression exploits this redundancy to reduce the file size of the resulting video. Temporal compression works by using "key frames" at regular intervals, followed by several "delta frames". The key frames contain the complete video image; the delta frames contain only the portions of the image that have changed since the last key frame.

Images from surveillance cameras often have a high level of temporal redundancy because usually most of the image is constant and only a small portion is changing. Therefore the use of temporal compression can significantly decrease captured file sizes without significantly degrading quality.

Video Compression - Quality
The higher the quality setting, the better the visual quality of the resulting movie files. However, higher quality settings will result in larger files. A setting of around 50-60 is normally ideal.

Audio Compression - Codec
Choose between the following audio compression codecs:

None: No compression - this setting gives the best quality and lowest processor usage. Since the data rate of audio is generally much lower than that of video, unless you require very small file sizes, using no audio compression can be a good option. If you choose this option, you should set a low sample rate and mono audio in order to minimise the data rate (these options are set independently for each device, via the Cameras - Audio settings.

Apple Lossless: This gives quality equal to no compression (since it is a lossless codec), at roughly half the data rate, and is reasonably quick to compress.

µ-Law: This is a very efficient codec designed specifically for compressing speech quickly at a very low data rate (64kbps).

AAC: This produces high-quality audio at low data rates, but is the most processor-intensive of the available codecs. Use this option if you need SecuritySpy to create MP4 movie files that play back in web browsers.

Audio Compression - Quality
For the AAC codec, you can set a quality level, which will determine the bitrate of the encoded audio data (the exact bitrate used will depend on the sample rate of the source audio, which can vary from camera to camera). A value of around 50 gives reasonably good quality audio at an efficient bitrate.

JPEG Compression
Whenever SecuritySpy needs to create a still JPEG image, it will use this quality setting for the encoding. This applies to still images captured to disk, images attached to emails, and images delivered via the web interface.


Preferences - Email

This section allows you to specify settings for sending emails:

SecuritySpy Preferences - Email

Number of images per email
When an email is sent in response to a motion trigger on a particular camera, this setting defines now many JPEG images from the camera will be attached to the email.

Frame rate of image capture for emails
This defines the frame rate at which images are added to motion-triggered emails.

Size of images attached to emails
You can send images at full size, but with high-resolution cameras this results in large emails that are slow to transfer. To keep email sizes small and transfer speeds high, choose a smaller size from one of the available options.

Subject text
This is the subject field that is used for emails triggered by motion detection. If you leave this blank, a subject will be created automatically. When specifying a custom subject, you can enter +d for the current date and time, and +n for the camera name.

Sending method
By default, SecuritySpy will use its own email relay service, which requires no configuration whatsoever. This service is provided by us, and its usage is free for all SecuritySpy users (though we do limit the size and frequency of emails, in order to ensure good performance for all users).

The other option is to use your own SMTP server — this requires configuration as follows:

SecuritySpy Preferences - Email

SMTP server address
The address of the server used to send mail. This is normally provided by your ISP (Internet Service Provider).

If your server uses a non-standard port, you can specify this here using a colon and then the port number. For example, if your server uses port 28, you would enter "". Most SMTP servers operate on standard ports (25 for non-encrypted communication and 465 for encrypted SSL communication), so if you have not been told by your ISP to use a particular port, don't specify a port number and the standard one will be used automatically.

The small pop-up menu to the right of this field contains a few presets for common email accounts; select one and the server address any any other appropriate settings will be set automatically.

'From' address
This is the return address sent with emails to identify the sender. You should always use a valid email address here, as spam filters will block messages without one. Also, many SMTP servers will not accept just any return address: usually it must be from the same provider as the SMTP server.

'From' name
This is the name associated with the return address. It is optional, however if you don't specify a name here, there is a higher chance of emails being blocked by spam filters.

Username and password
Most SMTP servers require authentication - if yours does, enter your username and password here. The username is typically your email address.

You can choose between no encryption, implicit encryption, or explicit encryption (if your mail server uses encryption, it will probably use the explicit method). An increasing number of email servers support encryption (some even require it), however many servers do not support it, and enabling this feature when using such servers will prevent emails from being sent. Therefore, you should check the instructions supplied by the provider of the SMTP server, and enable this feature only if your email server supports it.

Test button
Once you have configured the email settings, you can test them by clicking this button. SecuritySpy will attempt to send a test email, and will report any problems it encounters.


Preferences - Uploads

This section allows you to specify settings for FTP uploads to remote servers, which is useful for off-site backup of footage. The same FTP server with different paths may be used for different upload destinations, so one camera can be set to upload to a particular directory on the server and another camera to a different directory on the same server. To check directory paths and download or delete files, you will need to use a graphical FTP client utility such as Cyberduck.

SecuritySpy Preferences - Uploads

Choose from the following protocols:

Server address / bucket
For FTP, this is the hostname (e.g. or IP address (e.g. of the server.
For S3, this is the bucket name.

Path on server
For FTP, If you specify a path that starts with a forward slash character, this denotes an absolute path from the server's root directory. A path that does not begin with a forward slash character denotes a relative path from the default directory. The default directory depends on the server - generally each user has a folder on the server which is used as the default directory and set automatically by the server when that user logs in.

For example, consider the following directory layout:

SecuritySpy FTP Path Layout

If you were to log in as user1, the server will most likely set the initial directory as /pub/user1/. In this case, to have images uploaded to the user1 directory, you could either leave the path field empty, or you could specify "/pub/user1/" to be explicit. To have images uploaded to the "images" folder within the "user1" folder, you could specify either "/pub/user1/images/" or simply "images" for the path (in all cases it doesn't matter whether you put a forward slash at the end of the path or not). Generally, you should let the server decide the default directory and use a relative path, unless you have a specific reason to use an absolute path.

If the specified directory does not already exist on the server, SecuritySpy will attempt to create it.

Append camera name to path

Enable this option to automatically append camera names to the server path, so that each camera will upload to a separate folder on the server.

Append day folder name to path

Enable this option to automatically append day folder names to the server path, so that files for each day will be placed in separate folders on the server. Day folder names comprise the date when the file was created, in the format YYYY-MM-DD.

Local Copy
To copy the files to a local drive, rather than a remote server, enter local as the server address, and specify the path of a folder on your local file system (drag the folder from the Finder into the Path box to have the path filled out automatically). Paths to folders on the local file system typically start with /Volumes/VolumeName/… to refer to a folder on an attached volume, or /Users/UserName/… to refer to a folder within your user directory.

To see the status of current uploads at any time select Uploads from the Window menu.


Preferences - Web

SecuritySpy features a built-in web server that allows you to view live camera streams, download captured footage, change settings and control the software, all from a remote location over a local network or the Internet.

SecuritySpy Preferences - Web

Enable web server
SecuritySpy includes both a standard HTTP web interface and an encrypted secure HTTPS web interface. Standard HTTP sends and receives data in its raw form, which is suitable for local networks but not safe for communicating over the internet where the data could potentially be intercepted by a third party. By contrast, HTTPS is a secure protocol that employs encryption, making it extremely difficult for someone to decode any intercepted data. HTTPS is therefore strongly preferred for sending sensitive information over the internet, such as passwords and CCTV camera footage.

The HTTP and HTTPS servers each operate on their own network port. A port number represents a "channel" for network communication, and allows different applications on the same device to use the network without interfering with each other. Note that on macOS, it is not possible for an application such as SecuritySpy to use ports below 1024 (unless you specifically run it as a root process, which is not advisable). SecuritySpy's default ports are 8000 and 8001 for HTTP and HTTPS respectively.

From another computer on your local network (LAN), you can access the server with a web browser using the server's IP address and port number, or its Bonjour name and port number, for example:


When using the DDNS feature in conjunction with the Automatic port forwarding options (see below for explanations of these features), you will be able to access SecuritySpy from the Internet like this:

Note that local network addresses won't work from the Internet, and Internet addresses may not work from within your local network (depending on your router).

Click the How Do I Access This Server? button to get a list of the addresses you can use to access your SecuritySpy server from your local network and from the Internet. If you need to configure your Mac's LAN IP address, you can do so via the Network pane of the System Preferences.

HTTPS Keys and Certificates
Secure servers require a certificate and private key in order to perform the encryption and identify the server. SecuritySpy gives you a few options for this:

1. Automatic: SecuritySpy integrates with Let's Encrypt, a free automated open certificate authority, to obtain a valid certificate for you. All you have to do is set up a DDNS name (see below), and SecuritySpy will attempt to automatically obtain a certificate in this name. Make sure to pick a DDNS name that you are happy with, because if you change this in the future, there will be a delay of one day before a new certificate will be obtained in the new name. This is to comply with rate limits imposed by Let's Encrypt on their service.

2. User-supplied: You can purchase an official certificate to use with SecuritySpy. This is useful if you want an official certificate but don't want to use SecuritySpy's DDNS feature (e.g. you have your own domain name that you want to use instead). In order to use a certificate obtained from a certificate authority, firstly you will need to generate a private key and a certificate signing request (typically using OpenSSL via the Terminal - instructions should be provided by the certificate authority). You send the certificate signing request to the certificate authority and they send back a signed certificate. Place the private key, main certificate, and any intermediate certificates into the SecuritySpy folder within the Home folder (i.e. ~/SecuritySpy/), and then quit and relaunch SecuritySpy.

When supplying a private key, it must be as follows:

When supplying a certificate, it must be as follows:

Intermediate certificates:

3. Self-signed: If SecuritySpy is unable to obtain a Let's Encrypt certificate, and you have not supplied a certificate yourself, then SecuritySpy will automatically generate a self-signed certificate. Self-signed certificates provide the same level of encryption as an official certificate, however they do not provide the same level of assurance to the client regarding the authenticity of the server, hence a web browser connecting to such a server will display a warning to this effect. For SecuritySpy however, you are the one setting up the server and so you can be certain about its authenticity, therefore the use of a self-signed certificate for SecuritySpy is entirely suitable, and you can simply ignore the warning displayed by the web browser.

In all cases, the address you use to access SecuritySpy should match the certificate's hostname (e.g. the DDNS name that you have set up), otherwise you will get a warning from the web browser about a hostname mismatch. Therefore, if you are connecting to SecuritySpy's HTTPS server over a local network using an IP address or Bonjour name, you will get a warning about a hostname mismatch, so you may prefer to use the standard HTTP interface for local connections — in this case the traffic is contained within your own local network, so the use of encryption is less important.

Automatic port forwarding
To allow access to SecuritySpy from the Internet, your router must be configured to forward incoming connections to SecuritySpy. Use these options to enable automatic port forwarding for the HTTP and/or HTTPS port. For this to work, your router must support, and have enabled, either NAT Port Mapping Protocol (NAT-PMP), or Universal Plug and Play (UPnP). Almost all routers support at least one of these protocols, and most have this feature enabled by default.

IMPORTANT: when using this feature, your SecuritySpy web server becomes much easier to access from the Internet, so for security you should create a web server account with a strong password to prevent unauthorised access.

Dynamic DNS name (DDNS)
Most Internet connections provide a dynamic public IP address, which can change from time to time. If you want to access your system over the Internet, you will need a static address, which is what SecuritySpy's DDNS system provides. Simply enter the DDNS name you want to use and click the Test button; the indicator will turn green to indicate success or red to indicate a problem (e.g. if the name you requested is not available). Once enabled, the Internet address will always point to your public IP address, even when it changes.

IMPORTANT: when using this feature, your SecuritySpy web server becomes much easier to access from the Internet, so for security you should create a web server account with a strong password to prevent unauthorised access.

Web server name
This allows you to customise the name of the web server. As well as being used as the Bonjour name (see below), this name gets displayed by a web browser when it requests authentication. For example, here is the message displayed by the Safari web browser when it connects to a password-protected server with the name "My Web Server" (other web browsers display similar messages):

Safari Authentication Window

HTTPS security level There are a variety of different cryptographic protocols that can be used for a secure HTTPS connection; these are negotiated between the client and server whenever a new connection is made. Many older protocols (such as RC4, MD5 and DES) have been found to have security flaws, and therefore should be avoided if possible. The higher this security level setting, the more of these older protocols are disabled: this removes vulnerabilities, but may prevent older clients from being able to connect. We recommend you use a security level of at least 2, unless you need to reduce this to allow connections from older clients.

Advertise this web server via Bonjour
Bonjour is a method of "zero configuration" network setup, which makes it easy to find devices. Enabling Bonjour allows web browsers, iOS apps, and other instances of SecuritySpy to easily find your SecuritySpy server on the network.

SecuritySpy uses the server name text (see above) as its Bonjour name. Note that if you have enabled the macOS firewall feature on the computer running SecuritySpy, this may prevent Bonjour from working properly. Therefore you may have to disable the firewall if you want to use Bonjour to connect to SecuritySpy servers. The firewall settings are accessible in the Security & Privacy System Preference.

Make movies Fast Start on-the-fly
Normally, QuickTime movies and MP4 files have a movie resource at the end of the file (the movie resource holds necessary information about all the frames in the movie and therefore has to be written to the file last, after all the frames have been written). This works well when the movie is on a local drive because the movie resource is instantly accessible, however if the movie is being received from a slower source such as the Internet the whole movie must be downloaded before it can be played, which may take some time. In Fast Start movies, the movie resource is at the beginning of the file so that the movie can start to play before it has completely downloaded.

If this option is enabled, the movie resource will be read from the end of the file and sent first, so the movie will be Fast Start when it is received by the client computer.

Write log file of all connections
When enabled, SecuritySpy will create a text file containing information about every connection to the web server, including the connection time, the client's address, and the requested page. To view the log, select the "Open Web Log" option from the File menu in SecuritySpy.

Allow Screen Control for Administrator accounts
When enabled, Administrator accounts are allowed to control the Mac's screen via the web interface (just like Screen Sharing or TeamViewer). Due to the level of access that this feature provides, it is only available to Administrator accounts, and is turned off by default. This option is extremely useful if your Mac is running as a dedicated server, as it allows full remote administration of the Mac.

To enable password protection to restrict access to your SecuritySpy web server, you must add at least one account; if you don't create any accounts, there will be no password protection. If your SecuritySpy server will be accessible from the Internet, we strongly recommend that you enable password protection.


Preferences - Web - Account

This pane allows you to specify settings for a web server account:

Preferences - Web - Account

Username / Password
Enter the username and password that will be required to log in with this account. The username is not case sensitive, but the password is; both can be up to 31 characters long.

Video stream duration limit
Specify a number of seconds after which to cut off any live video stream being viewed via this account.

Timed daily access
This setting allows you to restrict access to the web server via this account to certain times of the day.

Permission level
There are a few preset permissions levels, and a fully customisable one, as follows:

View - the user can view live video from any camera.

View, Download - the user can view live video, and download previously-captured footage for any camera.

View, Download, control PTZ - the user can view live video, download previously-captured footage, and control Pan/Tilt/Zoom for any camera.

Administrator - the user has full access to every web server feature.

Custom - under this setting, you can specify which features of which cameras the user has access to. Select the camera(s) for which you want to allow certain actions, and set the permissions accordingly. Select the All cameras option to set permissions that will apply to all cameras — this makes it easy to give a particular user a certain level of access for all cameras, while still being able to apply additional permissions for individual cameras.

Accessing SecuritySpy from the Internet
For instructions on how to set this up, please see the Remote Access section of the SecuritySpy Installation Manual.

Dashboard Widget (macOS 10.14 and earlier only)

SecuritySpy comes with its own Dashboard widget for easy remote viewing of video streams from your SecuritySpy server over a local network or the Internet. Click here to download the SecuritySpy widget - it will be installed automatically into your widgets folder and will be immediately available in Dashboard. The first time you load the widget you will need to specify some settings so that it knows where the SecuritySpy web server is. To open the settings window click the info button (the i symbol in the bottom right hand corner of the widget). The settings look like this:

SecuritySpy Widget

The widget has the following settings:

If, instead of the image, you get a question-mark icon, it means that the widget wasn't able to get the image. Check the address, camera number, username and password to make sure they are all correct.

You can create multiple instances of the widget in order to view several different cameras at the same time, and the widget can be used without restriction on as many computers as you like.

This widget can also be used on Windows and Linux computers with the Kludget Engine software.


SecuritySpy's Browser feature allows you to play back, export and manage captured footage. Choose Browser from the Window menu to open the Browser:

SecuritySpy Browser

Select one or more cameras and specify a date, and the Browser will display all files matching these criteria. The main components of the browser are:

Date control
For the date you specify, the Browser displays all footage captured during that day. Click the calendar icon to get a pop-up graphical calendar, which makes choosing the desired date much easier.

Camera list
This list shows all active cameras in SecuritySpy. Select up to six cameras to view footage from them all, synchronised together. To select multiple cameras, shift-click or command-click entries in the list.

File list
This list shows all files that have been captured by all selected cameras on the specified day. Click on any file in this list to jump to the start of that file in the timeline, or double-click on a file to start playing it immediately.

Hold the alt (option) key on the keyboard when selecting a motion-capture file, and the timeline will jump to the first actual motion in the file, rather than the very beginning. This is useful when using SecuritySpy's pre-capture feature to start recording some seconds before the motion trigger.

Finder file tags can be set for any file: right-click on a file in the list, and select a tag from the menu. In the above screenshot, two files have been tagged red.

The timeline shows a graphical representation of time periods during the day that have captured video footage for each selected camera. Click anywhere in the timeline to change the current cursor time, and click and drag left and right to scrub backwards and forwards through the video footage. Hold the shift key on the keyboard while dragging the timeline cursor to select a time period, which you can then export.

Any files captured since the last scan will be added in red, indicating that they have not yet been queued for display in the movie area. To play these files, use the Rescan option in the Browser menu (see below) to add them to the movie display.

Files in the trash are showed in grey, but will still be playable until you empty the trash.

Bookmarks appear as red triangles at the top of the timeline, and are useful for marking the time of interesting events in captured footage:

To create a bookmark, double-click at the top of the timeline. Right-click (control-click) on an existing bookmark, or anywhere in the timeline, for a pop-up menu with options to create, edit, delete or jump to a bookmark. Each day has its own set of bookmarks, which are saved permanently.

Movie area
This is the area that actually displays the captured footage. If you have selected multiple cameras, they will be displayed in a grid, in the most optimal arrangement for the size of the Browser window and the resolution of each selected camera.

Browser Menu
The Browser menu in the menu bar contains the following options:

SecuritySpy Browser Menu

Browser Menu - Export File
This option allows you to export any file that is currently selected in the file list. The video and audio data is copied directly to the exported file, so there is no loss of quality.

When exporting a file, you have the option to set the playback frame rate. In this way, you can create timelapse movies that play back at much faster speeds than real-time. Note that doing so will remove any audio track in the movie.

Browser Menu - Export Selection
Make a selection in the timeline by dragging the cursor while holding the shift key. Then, for any camera that is currently selected in the camera list, this option allows you to export the video footage contained within the selected time period. The video and audio data is copied directly to the exported file, so there is no loss of quality.

Browser Menu - Export Current Frame
For any camera you have selected in the camera list, this option allows you to export a still image from the current time as a JPEG file. This option is available only if there is some valid footage for the specified camera at the current time.

Browser Menu - Rescan
This rescans files for the currently-selected camera(s) and date. This is useful for adding to the movie display any files that have been captured since the last scan, in order to play them.

Browser Menu - Reveal in Finder
This option tells the Finder to show all the files that are currently selected.

Browser Menu - Move to Trash
This moves all selected files to the Browser's trash. The Browser keeps its own trash, separate from the Finder's trash.

Browser Menu - Empty Trash
Use this option to permanently delete all files in the Browser's trash.

Browser Menu - Zoom In/Out Timeline
Use these options to zoom in or out in the timeline view. Zoom in to see the position of time objects in detail, or zoom out to get a more general picture of captured footage throughout the day.

JKL control
The Browser also supports JKL keyboard shuttle controls: pressing L causes the playback to speed up in the forward direction by a factor of 2, J causes the playback to speed up in the reverse direction by a factor of 2, and K pauses the playback.

Zoom In/Out Video Playback
To zoom in or out of the captured footage during playback, hold the Command key (⌘) and scroll up or down on your mouse or trackpad (on a trackpad, use the two-finger gesture to scroll). Once zoomed in, release the Command key and scroll in any direction to pan around the image.


The Dashboard window displays various performance metrics, which allow you to monitor the daily operation of your SecuritySpy system, and spot any potential problems. Choose Dashboard from the Window menu to open the Dashboard:

The main performance measures available are as follows:

The Smoothing slider controls how much smoothing is applied to the data for display: low values give you more detail whereas higher values make it easier to see the overall shape of the data.

Dashboard data is kept for 30 days before being automatically purged.

Pan/Tilt/Zoom (PTZ)

Each video window containing a camera that supports PTZ will have a PTZ button in the right side of the window's title bar: click this button and a PTZ drawer will slide out, allowing you to control the cameras in the window:

SecuritySpy PTZ Drawer

The PTZ controls act as a "virtual joystick", allowing you to control direction, as well as speed of movement, for cameras that support variable-speed movement (the further you move the blue indicators from the centre of their respective control areas, the faster the movement).

If your camera supports preset positions, the eight preset buttons will be available. To save the current position of the camera as one of the presets, hold the alt (option) key on the keyboard and click a preset button (the Home position, if available, is typically pre-set by the manufacturer and cannot be changed).

Click the gear button in the top right of the PTZ drawer to reveal these settings:

SecuritySpy PTZ Drawer Settings

Here you can name each preset position, as well as specify the maximum speed at which your camera will move (if you camera supports variable-speed movement).

PTZ Keyboard Shortcuts
You can also control PTZ from the keyboard, using the arrow keys, or the numeric keypad on the right of standard keyboards (1 on the keypad corresponds to down-left and so on). For cameras that support variable-speed movement, holding the shift key while using these keyboard shortcuts moves the camera 50% faster than the standard speed.

You can recall presets by pressing a number key at the top of the keyboard; hold alt (option) with a number key to save a preset.

Even if you don't have the PTZ drawer open, simply click once on the video image of the camera you want to control, and you can then use these keyboard shortcuts.

PTZ Mouse Shortcuts
Hold the shift key (or enable caps lock), and click directly in a camera's image in any video window to control its pan and tilt: a click on the right side of the video image will move the camera right and so on. If your camera supports variable-speed movement, the distance of your click from the centre of the image defines the speed of movement.

PTZ Control Permissions
Note that devices typically require administrator username/password details for controlling PTZ, so make sure these have been entered correctly in the Preferences - Cameras - Device window. Non-admin authentication details required for simply viewing video may not be enough for controlling PTZ.

SecuritySpy as remote viewing software

You can use one instance of SecuritySpy running on one Mac to view cameras attached to another instance of SecuritySpy running on a different Mac. In this way, you can use SecuritySpy as client viewing software, providing a better user experience than viewing via web browser. For the purposes of viewing-only, SecuritySpy can be used free of charge in its unlicensed state.

To set up one Mac (the server) to transmit video to another Mac (the client):

On the server Mac

There are two ways to add cameras to the SecuritySpy client instance:

On the client Mac: adding all cameras in one go

SecuritySpy Add All Cameras From SecuritySpy Server

On the client Mac: adding cameras individually

SecuritySpy Choose Stream

Note that each viewing instance puts additional processing load on the server. You can reduce this load by specifying a low frame rate in the above window, and/or by using JPEG compression rather than H.264 compression (but be aware that JPEG compression uses more bandwidth).

Remote viewing on your iPhone, iPad or Apple TV

In addition to SecuritySpy's built-in web interface, which can be viewed in any web browser such as Safari or Google Chrome, SecuritySpy also has its own iOS/tvOS app to provide the best viewing experience on these platforms. For more information, please see the SecuritySpy iOS/tvOS app page.

Setting up SecuritySpy for autonomous operation

Here are the steps we recommend to set up your SecuritySpy system to operate autonomously:

Set SecuritySpy to open whenever the computer starts up

Open SecuritySpy and click and hold the mouse button on the SecuritySpy icon in the Dock. From the menu that pops up, select Options -> Open at Login:

Open At Login

Set the computer to never sleep
Open System Preferences and click the Energy Saver item. Depending on your macOS system version, your Energy Saver settings may look different:

It is also recommended for best performance to disable the setting Put hard disks to sleep when possible. Display sleep should be left on, to save power and prevent monitor damage.

Set the computer to restart after a power failure
Open System Preferences and click the Energy Saver item. Enable the option Start up automatically after a power failure. For extra protection, click the Schedule... button and set the Mac to start up automatically every day.

Energy Saver

Enable remote access
See the Preferences - Web section in this manual for details.

Close all video windows
Video windows are not required if there is no one operating the computer, and they will use CPU time resulting in lower performance.

For added security, enable the login screen
Invoking the login screen helps to prevent unauthorised access to your Mac. You can achieve this when your Mac first starts up, by following the instructions in this FAQ: Can SecuritySpy run behind the login screen?, and you can set your Mac to automatically go to the login screen upon display sleep, via the Security & Privacy system preference.

Optimising Performance

Using multiple cameras simultaneously involves moving, calculating and storing large amounts of data. To get the most out of your computer you should:

Achieving Effective Motion Detection

SecuritySpy's motion detection algorithms are highly accurate under a range of conditions, however there are a few things that you can do to ensure that high-quality data is passed to these algorithms in order to give you the best possible results:

Camera angle
How you position the camera, as well as the focal length of the lens (how wide-angle it is) makes a big difference to the effectiveness of motion detection. The key points to consider are:

A bad camera angle for motion detectionA good camera angle for motion detection
Bad: the lens is too wide, so the details of the cars are difficult to make out, let alone people; lots of sky is included; and unless you want to capture boats, the large area of water on the left is a waste of pixels. Good: the lens has the perfect length to capture just the area under surveillance, so that the people are large enough in the frame both for effective triggering of motion detection and for distinguishing facial features.

It is vital that the camera itself does not move, as this would significantly compromise the effectiveness of motion detection. Mount cameras securely, using a sturdy bracket, on a fixed object such as a building. Avoid mounting cameras on trees or poles that can move in the wind.

In low-light conditions, cameras can produce significant noise. This is because the camera has to boost the signal from the sensor in order to produce a bright enough image, which also boosts the noise. Here is an example of what this looks like up close:

Noise in video captured in low light

In a noisy image, the detection threshold for real motion has to be increased, so that it will take a lot more movement than normal to trigger motion detection. This results in real events being less likely to be detected (i.e. more false negatives).

The solution is to install better lighting for the scene you want to capture – either visible or infra-red (if your camera is IR-sensitive).

Many cameras have built-in infrared LEDs for night vision. These work fine in limited circumstances, however they are typically not very effective beyond a few meters. They also have a further disadvantage when used outdoors in that they tend to attract insects, which fly around the camera, brightly lit by the IR light, triggering motion detection. You will get far better results if you use separate IR or visible light illuminators, which are typically also much more powerful.

Compression settings
Video from IP cameras is compressed, typically to H.264 or H.265 video format. With the right compression settings, these formats can provide very high quality, but with the wrong settings they can cause unacceptable image degradation. Here is an example of low-quality H.264 compression:

There are a number of parameters that can be set in your camera to control compression quality:

Frame rate
Low frame rates will impair motion detection accuracy. The algorithm works best at around 10fps, but in general you should use a frame rate of at least 5fps for effective motion detection.

Masking (available via Preferences - Cameras - Triggers)
Setting a mask to ignore certain parts of the video image is an effective way to reduce false-positive triggers. Typically you will want to mask out objects that move in the wind (e.g. trees and plants), or areas where you are not interested in detecting motion. However, make sure that you do not mask out more than necessary – the algorithm works best when it has plenty of pixels to work with.

No mask - activity in the entire frame will trigger motion detection A mask to ignore motion in the road and motion caused by the tree

Trigger Time (available via Preferences - Cameras - Triggers)
This setting specifies the minimum duration of continuous motion that will generate a trigger. By default this is 1 second, which works well in most cases. Real motion (e.g. a person walking) typically lasts significantly longer than one second and hence will be detected, whereas many types of false motion (e.g. leaves blowing in the wind or snow falling close to the camera) exhibits a start-stop pattern that will be effectively filtered out by this feature.

Further considerations for AI-based motion detection
The above advice applies whether you are using the AI-based motion detection features or not, as images still go through the normal motion detection algorithm first before they are passed to the AI for further processing. The main thing to be aware of is that computer vision algorithms work far better on high-resolution, clean, clear images than low-resolution, noisy, cluttered ones. Specifically:

Support / Help

For information about how to choose, install and set up the hardware of your video surveillance system, see the SecuritySpy Installation Manual.

For up to date troubleshooting and help please see the SecuritySpy online help pages.

If your question is not answered in the online help pages, please email it to

To find out which specification of computer is required for a particular camera setup, see the SecuritySpy System Requirements Calculator.