# NeuroWatch > NeuroWatch is a self-hosted security camera recorder for Linux and Windows that keeps recording offline, with NeuroWatch Cloud, a browser portal for live view, playback and recorder health that needs no open ports and does not store your recordings. Website: https://neurowatch.app/ Source code: https://github.com/ttheekw/Neurowatch ## Why NeuroWatch runs fast and light Decoding video is usually the most expensive work a camera recorder does, so NeuroWatch is built to do as little of it as it can. Its recording engine is written in Rust, stores video exactly as the camera sent it, and decodes a camera only while someone is looking at it on the recorder's own screen. - Recording never decodes video: Each camera's compressed video goes to disk without decoding or re-encoding, in segmented Matroska (MKV) files. Adding a camera to record adds no decoding work, and the footage keeps the camera's original quality. - Only what is on screen is decoded: The recorder decodes a camera only while a desktop window shows it. Cameras on other pages of the wall are not decoded, apart from the next page just before auto-scroll shows it. Decoding stops when the wall is hidden or minimized, and a headless recorder runs no live view decoders at all. - Smaller streams on the wall: In a multi-camera grid each tile shows the camera's smaller stream, its substream, when it has one. Watching one camera alone switches that tile to the main stream. Recording stays on the main stream throughout. - Preview rates that fit the view: The wall draws at most 25 pictures a second for one camera, 15 for up to 16 cameras and 4 for more, and you can change each limit. It keeps only the newest picture per camera, so a busy computer skips pictures instead of building up a queue and falling behind. - Hardware decoding when it is available: When video does need decoding, NeuroWatch uses the graphics card or video block where it can: VA-API, NVIDIA NVDEC, Direct3D 11, Direct3D 12, Intel Quick Sync or V4L2, with a software fallback. The status bar shows which decoder is active. - One connection per camera stream: Recording, the desktop wall, browser viewers and analysis plugins all share one connection to each camera stream, so a camera is not asked to serve several copies of its video. Each reader has its own bounded queue: one that falls behind skips ahead on its own and never holds up recording. - Browser viewing without transcoding: Live view and playback in a browser forward the camera's H.264 or H.265 video as it is, so the recorder neither decodes nor encodes video for them, and sends it only while someone is watching. A viewer starts straight away, without waiting for the camera's next keyframe. Camera sound is the one exception: it is converted for the browser while a viewer is connected. - Clip export without re-encoding: An exported MP4 copies the recorded video instead of re-encoding it, so it is quick and keeps the camera's quality. Only sound in formats MP4 cannot hold is converted. - Analysis runs in its own process: The recorder never starts a decoder for analysis. A plugin receives the compressed video and does its own decoding in its own process, optionally on another computer, so recording carries on if it stops. A low-CPU mode analyses keyframes only, and cameras that report their own ONVIF events need no decoding at all. Event pictures decode a single frame each. - A native engine in Rust: The engine is compiled Rust with asynchronous networking: no garbage collector to pause it and no interpreter between camera and disk, with memory safety checked when it is built. GStreamer handles the media formats. - The window is separate from the recorder: The desktop window (Qt, in Python) is a separate program that reads pictures from shared memory. Closing it leaves recording running, and if the recorder itself stops unexpectedly it is started again automatically. We publish no benchmark figures: the load depends on how many cameras you have, their resolution and codec, your graphics hardware and how many are on screen. Diagnostics shows the real numbers for your own recorder. ## Hardware decoding - VA-API: Linux. Intel and AMD graphics. - NVIDIA NVDEC: Linux and Windows. NVIDIA graphics. - Direct3D 11: Windows. Graphics with Direct3D 11 video decoding. - Direct3D 12: Windows. Graphics with Direct3D 12 video decoding. - Intel Quick Sync: Intel systems. Intel graphics. - V4L2: Linux. Hardware video decoders on ARM boards. - Software: Linux and Windows. The processor, when no hardware decoder is available. Automatic is the default: it tries VA-API, then NVDEC, then Direct3D 11, then V4L2, and falls back to software. You can pick one in Settings → Video Wall, which also says which is active and why. Hardware decoding covers the desktop wall; recording and browser viewing do not decode video at all. ## Live video wall - Ready-made and custom grids, continuing onto further pages, with manual paging or auto-scroll - Drag cameras to swap or move them, drag a corner to make one larger, and carry one to another page - Double-click a camera to watch it alone, and hold Ctrl and scroll to zoom into its picture - Full screen with the panels hidden, with status readings that can stay over the video - Extra windows on other monitors, each with its own grid, layout and page cycling, restored the next time you start - Light and dark themes ## Cameras - RTSP and RTSPS, RTMP, MJPEG over HTTP(S), USB cameras (V4L2) and video files as sources - H.264 and H.265 video - Search Network finds ONVIF cameras and shows their model and whether they need a password - Add a camera by address: ONVIF asks the camera for its streams, or enter its stream addresses yourself - Several streams per camera: record the best one, show a lighter one on the wall, and pick another for any tile - Test a camera before saving it, and see its status, codec and resolution on its tile - Reconnects by itself when a camera drops out, and refuses to add the same camera twice - Camera sound (AAC, G.711, Opus, PCM) is recorded, and you can listen to one camera live - PTZ controls for compatible ONVIF cameras, with presets where the camera supports them - Two-way audio through a camera's speaker, for cameras with a supported ONVIF G.711 backchannel ## Recording and storage - Continuous recording, to the drive you choose, for all cameras or the ones you pick - Weekly schedules painted on a grid, in hours or 15-minute steps, with exact-time windows and overnight spans - Event retention: records continuously, then trims footage with no events after a time you choose - Copy a recording policy to other cameras in one step - Disk cleanup above a limit you set (90% by default), and a storage quota per camera - Missing-drive protection: pauses recording on a disconnected drive or unmounted share instead of filling the computer's own disk, and carries on when it returns - Archive to a NAS: moves older recordings to another folder, checks each copy against the original before removing it, and limits the archive's size, hours and speed; Playback and Export still find them ## Playback and export - A timeline of several cameras side by side, with recording gaps shown as gaps, and play, pause, seek and speed controls - Events only playback skips quiet time and pauses at the last recorded event - Coloured event marks on the timeline, and a searchable event list or paged thumbnails beside the video - Bookmarks with notes, and Keep this footage protects the recordings from every kind of cleanup until you release it - Export an MP4 by dragging the start and end of a clip on the timeline, on the desktop or in the portal - Export an event with its footage before and after - Recorded sound plays back, at normal pitch from 0.5× to 2× speed on the desktop ## Motion detection and events - Motion detection by the included NeuroWatch Motion plugin, with sensitivity, minimum duration, cooldown, zones to watch or ignore, and a low-CPU mode - Motion boxes drawn on the live wall, on the picture they describe - Compatible ONVIF cameras can report their own motion, intrusion, line crossing, tampering and alarm inputs - An Events tab with search and filters by camera, type, status and date, and a picture of each event - Problems are events too: a camera going offline, a recording that keeps failing, a nearly full drive and a missing recording location - A bell on a camera's tile stays until you clear it, and a badge shows motion as it happens - Event history is kept for 30 days by default, and can be followed from a terminal ## Alert notifications - Send alerts to this computer, ntfy push, Telegram or a webhook, with an optional event picture - Choose the events and cameras, weekly active hours and a cooldown, send a test and check the delivery history - ntfy, Telegram and webhook alerts are sent by the recorder itself, including without a screen, and need no cloud link ## Local accounts and permissions - Optional local sign-in, off by default and separate from any cloud account - Viewers watch and review, operators also control PTZ, talk, bookmark, export and start or stop recording, and admins manage everything - Limit viewers and operators to selected cameras ## Always recording, with or without a screen - Recording carries on after the window closes, and starts by itself when you sign in - A tray icon shows the state at a glance and names each problem - The desktop checks for a newer stable version on startup and every hour, with a download notice in the bottom status bar when an update is available - Linux can record from boot, before anyone signs in - Headless mode for a computer with no display, with status in the terminal - Docker images for Linux on 64-bit PC and ARM64: a headless recorder and the full app with its window - Installers for Windows, Debian and Ubuntu, Fedora and Arch Linux, plus portable downloads; an update leaves nothing of the old version behind ## NeuroWatch Cloud, the optional web portal - Link a recorder with a one-time code: it connects out, so no ports are opened and no VPN is needed - Live view and recording review in a browser, with camera sound, on demand and under grants that last at most 60 seconds - PTZ controls and two-way talk from the browser - Review events with their pictures, bookmark moments and export clips, which are kept in the cloud for 7 days for download - Add, search for and edit cameras and change recording and alert settings remotely, including on a recorder with no screen - Camera addresses and passwords are encrypted in your browser for one recorder, so the cloud relays what it cannot read - Recorder diagnostics, reported only while the page is open - Diagnostics lists per-camera main and sub connections, consumer counts by role, received video/audio bitrates and frame rates, shared GOP cache usage and queue drops, without opening streams or decoders; desktop and portal combine health and connections in one camera card, with paths to Recording, Video wall, Web and plugin consumers, green for connected, red for disconnected and yellow for waiting or reconnecting - Recorders and cameras pinned on a map, with tags and site labels - Each recorder offers Default and Plugin dashboards tabs, with a plugin selector for available dashboards; this browser remembers the selected view, grid or map, cameras per page and page separately for each account and recorder - Owner, admin and viewer roles, invitations, per-recorder access, and optional or mandatory authenticator sign-in ## Analytics plugins - Plugins are separate programs that receive compressed video and send back events and drawings - Run a plugin on the recorder or on another computer, connected over encrypted QUIC or TLS - An administrator approves each plugin's key and exact permissions before it receives any video - Per-camera settings, drawings on the live view and the plugin's events in one place - Plugin dashboards use current plugin assignments and camera inventory; old reports do not add extra cameras to the live grid - Plugin dashboard videos start only when you press Start live view; one plugin video plays at a time, and starting another stops the previous one - Plugin live video offers the camera's available Main and Sub streams and shows the received resolution, frame rate and codec - A slim desktop count strip uses colour-matched outline icons, clear counts and the total together in one row when space permits, with a compact layout on smaller camera tiles - Drawings are saved with recordings and shown again in playback - Software kits for Rust, Python and web pages ## Status and diagnostics - A status bar with disk space, CPU, memory, network speed, the active decoder and the recorder and cloud connections - Diagnostics with per-camera frame rates and dropped frames, and graphics card usage where the driver reports it - Compact desktop diagnostics cards show three columns on wide windows, expandable buffer details and names of active analytics plugins reported locally by the recorder - Compact web camera diagnostics use up to three columns and nine cameras per page, with expandable details that distinguish idle decoding from unmeasured renderer statistics and latency - An extended debug log you can switch on from Settings when reporting a problem ## Editions and licence - Free for up to 16 cameras, with no account needed for local use - NeuroWatch Unlimited is now USD 0 (normally USD 50), with sign-up required before downloading and no software camera limit; capacity depends on your hardware - Open source under the Apache License 2.0, for home or business use - NeuroWatch Cloud plans are separate from the desktop editions ## What it does - Records IP cameras (RTSP, RTSPS, RTMP, MJPEG), USB cameras (V4L2) and video files to the recorder's own disks - Keeps capturing, recording and playing back locally when the internet is down - Camera wall with paged grids, drag-and-drop placement, solo view and per-cell zoom - Playback of several cameras on one timeline, with recording gaps shown as gaps - Records without decoding video: each camera's compressed video goes to disk as it arrives - Decodes a camera only while it is on screen, using the recorder's Rust engine and the graphics card where possible - Hardware video decoding through VA-API, NVIDIA NVDEC, Direct3D 11 and 12, Intel Quick Sync or V4L2, with a software fallback - Links to NeuroWatch Cloud with a one-time code; the recorder connects out and no ports are opened - Live view in the browser, started on demand and authorised by grants that last at most 60 seconds - Recording review in the browser: pick a day, click a moment, skip 30 seconds, play from 0.5× to 4× - Add and search for ONVIF cameras from the portal, with addresses and passwords sealed for the recorder - Recorder diagnostics: CPU, memory, GPU decoding, disk space and per-camera frame rate, drops and latency - Recorders and cameras pinned on an OpenStreetMap map - Owner, admin and viewer roles - Motion detection by an included plugin, ONVIF camera events, and alerts to ntfy, Telegram or a webhook - Headless mode and Docker images for computers with no display ## At a glance - What it is: A self-hosted camera recorder (NVR software) plus a cloud web portal - Recorder runs on: Windows 10 and 11 (64-bit), Ubuntu 22.04+ and Debian 12+, Fedora 43+, Arch Linux, Raspberry Pi OS 64-bit (untested) - Camera sources: RTSP and RTSPS, RTMP, MJPEG over HTTP(S), V4L2 (USB cameras), local video files - Camera discovery: ONVIF search on the recorder's network, or add by IP address - Recording format: Segmented MKV files with a local index, with quotas and retention - Where recordings are kept: Only on the recorder's own disks - Recording engine: Written in Rust, using GStreamer for media formats - Decoding: None to record or to view in a browser; only cameras on the recorder's own screen are decoded - Hardware decoding: VA-API, NVIDIA NVDEC, Direct3D 11, Direct3D 12, Intel Quick Sync, V4L2, or software - Without internet: Capture, recording and local playback carry on - Remote access: Outbound connections only; no ports opened, no VPN - Linking: One-time code, shown once and valid for five minutes - Live-view grants: Signed, at most 60 seconds, checked by the recorder - Camera credential sealing: X25519, HKDF-SHA256 and AES-256-GCM, in the browser - Team roles: Owner, admin and viewer - Licence: Apache License 2.0 ## Compared with the usual options - Where recordings are kept: NeuroWatch: On your recorder's own disks. Typical cloud camera service: On the provider's servers. Recorder with a forwarded port: On the recorder. - Video sent over your internet connection: NeuroWatch: Only while someone is watching. Typical cloud camera service: Every recorded camera, around the clock. Recorder with a forwarded port: Only while someone is watching. - Ports opened on your network: NeuroWatch: None: the recorder connects out. Typical cloud camera service: Usually none. Recorder with a forwarded port: At least one, or a VPN. - When the internet goes down: NeuroWatch: Recording carries on; the portal shows the recorder offline. Typical cloud camera service: Cloud recording stops until it is back. Recorder with a forwarded port: Recording carries on; remote access stops. - Who can read camera passwords: NeuroWatch: Only your recorder; the portal relays them sealed. Typical cloud camera service: Usually the provider. Recorder with a forwarded port: The recorder, reachable through that port. The two other columns describe typical setups; individual products vary. ## What it does not do - NeuroWatch Cloud keeps no backup of your recordings. If the recorder's disks fail, footage on them is lost, so plan disk redundancy on the recorder. - Live view and playback from the portal need the recorder to be online. - Alerts cannot be sent by email yet: they go to the desktop, ntfy, Telegram or a webhook. - NeuroWatch itself has no AI object detection: analysis comes from plugins, and the included plugin detects motion. - There are no macOS or 32-bit builds. - NeuroWatch is in beta: release checks install it and play generated video on each supported system, but they do not qualify physical cameras, graphics cards or displays. ## Questions ### Is NeuroWatch free? NeuroWatch is free for up to 16 cameras, with no account required for local use. NeuroWatch Unlimited is now USD 0 (normally USD 50), with sign-up required before downloading and no software camera limit; capacity depends on your hardware. Unlimited includes a support response within 24 hours at hello@neurowatch.app. Download either edition from the downloads page. Optional NeuroWatch Cloud plans are separate. ### What is NeuroWatch? NeuroWatch is a self-hosted video recorder for security cameras. It records IP, ONVIF and USB cameras on a Linux or Windows machine at your site and keeps working without internet. NeuroWatch Cloud is its web portal: once a recorder is linked, your team can watch live, review recordings and check the recorder's health from a browser. ### Is NeuroWatch a cloud NVR? No. Recording happens on your own machine and footage stays on its disks. NeuroWatch Cloud lets people watch and manage linked recorders from a browser, but it does not store your recordings. Clips you export from the portal are kept in the cloud for 7 days so you can download them, and some plugins may save data in the cloud: check the plugin's information for details. ### Does the recorder keep recording if the internet goes down? Yes. Capture, recording and playback all run on the recorder, so they carry on without internet. The portal shows the recorder as offline until it reconnects. ### Are my recordings uploaded to the cloud? No. Recordings stay on the recorder's own disks. NeuroWatch Cloud only knows when recordings exist, to draw the timeline. When someone plays footage, the recorder streams it while they watch and the portal does not store it. Clips you export from the portal are kept in the cloud for 7 days so you can download them, and some plugins may save data in the cloud: check the plugin's information for details. ### Do I need to open ports or set up a VPN? No. The recorder makes outbound connections only, so nothing on the internet connects into your network. ### Which cameras work with NeuroWatch? Network cameras over RTSP or RTSPS, RTMP and MJPEG over HTTP(S), V4L2 devices such as USB cameras, and local video files. ONVIF cameras can be found by searching the recorder's network and added by IP address. ### What does the recorder run on? Windows 10 and 11 (64-bit), Ubuntu 22.04 or newer, Debian 12 or newer, Fedora 43 or newer and Arch Linux, plus ARM64 on recent Ubuntu, Debian and Fedora. A package for 64-bit Raspberry Pi OS is available but has not been tested on Raspberry Pi hardware yet. It can also run headless or in Docker. Either way, a linked recorder can be set up from the portal while it is online. ### Can NeuroWatch Cloud see my camera passwords? No. When you add a camera from the portal, its address and password are encrypted in your browser for that one recorder. The cloud relays ciphertext it cannot read, holds it for at most a minute and never writes it to its database. ### Who on my team can change settings? Owners and admins can link recorders, change settings and open diagnostics. Viewers can watch live and review recordings, but cannot change anything. ### How do I link a recorder? On the Recorders page, create a one-time enrollment code; it is shown once and is valid for five minutes. On the recorder, open Settings → Cloud Link, paste the code and press Link. Its cameras appear in the portal within a minute. ### What can't NeuroWatch do yet? NeuroWatch Cloud keeps no backup of your recordings. If the recorder's disks fail, footage on them is lost, so plan disk redundancy on the recorder. Live view and playback from the portal need the recorder to be online. Alerts cannot be sent by email yet: they go to the desktop, ntfy, Telegram or a webhook. NeuroWatch itself has no AI object detection: analysis comes from plugins, and the included plugin detects motion. There are no macOS or 32-bit builds. NeuroWatch is in beta: release checks install it and play generated video on each supported system, but they do not qualify physical cameras, graphics cards or displays. ## Questions about how it works ### Why does NeuroWatch use so little CPU? Because it avoids decoding video. Recording stores each camera's compressed video as it arrives, browser viewing forwards it unchanged, and exports copy it. Only cameras shown on the recorder's own screen are decoded, using a graphics card where possible, and multi-camera grids show each camera's smaller stream. ### Does NeuroWatch decode video to record it? No. Video goes to disk as the camera compressed it, without decoding or re-encoding, so the footage keeps its original quality. Adding a camera to record adds no decoding work. ### Do I need a graphics card? No. Recording and browser viewing do not decode video, so they need none. The desktop wall uses a graphics card when it finds one and the processor otherwise. A headless recorder runs no live view decoders. ### Which hardware decoders does NeuroWatch support? VA-API (Intel and AMD on Linux), NVIDIA NVDEC, Direct3D 11 and Direct3D 12 on Windows, Intel Quick Sync, and V4L2 on ARM boards, with a software fallback. Automatic is the default, and Settings → Video Wall lets you pick one and shows which is active. ### Is NeuroWatch written in Rust? The recorder, which does the capturing, recording and streaming, is written in Rust and uses GStreamer for media formats. The desktop window is a separate Qt program in Python. Rust gives the engine native speed, no garbage collector to pause it, and memory safety checked when it is built. ### Does it support H.265? Yes. H.264 and H.265 cameras are both recorded as they arrive and forwarded to browsers unchanged. Watching H.265 in a browser needs a browser and device that can decode it. ### Does viewing in a browser slow the recorder down? It adds upload bandwidth while someone watches, not video decoding or encoding: the recorder forwards the camera's video as it is, and sends nothing when nobody is watching. Each viewer has its own queue, so a slow connection never holds up recording. ### How many cameras can it handle? The free edition runs up to 16 cameras and NeuroWatch Unlimited has no software limit. The real limit depends on your hardware, the cameras' bitrates, your disk speed and how many cameras are on screen. We publish no benchmark figures; Diagnostics shows the load on your own recorder. ### Does it detect motion? Yes, in two ways. The included NeuroWatch Motion plugin analyses the video in its own process, with zones and a low-CPU mode. Compatible ONVIF cameras can also report their own motion, intrusion and line crossing events, which needs no decoding. ### Can NeuroWatch send alerts? Yes: to the desktop, ntfy push, Telegram or a webhook, chosen by event, camera and weekly hours, with an optional picture. Email is not available yet. ### Can it run without a monitor? Yes. Headless mode records on a Linux server or small computer with no display, and on Linux with systemd it can start at boot. Docker images are published too. A linked recorder can be managed from NeuroWatch Cloud. ### Is NeuroWatch open source? Yes. The recorder and its desktop app are open source under the Apache License 2.0, free for home or business use. NeuroWatch Cloud is an online service with its own terms, and its plans are separate. ### Does it run on macOS? No. NeuroWatch runs on Windows 10 and 11 (64-bit) and on 64-bit Linux, on PCs and ARM64. There are no macOS or 32-bit builds. ## Getting started ### Install NeuroWatch NeuroWatch runs on a Windows or Linux computer on the same network as your cameras. That computer is your recorder: it captures, records and plays back on its own, with or without the cloud. 1. Download the installer: The free version runs up to 16 cameras; NeuroWatch Unlimited has no software camera limit. Install it like any other app. [Open Downloads](https://neurowatch.app/downloads) 2. Open NeuroWatch: The first time it opens, the video wall is empty and every slot offers to add a camera. **Add Camera** in the toolbar does the same. ### Add your cameras NeuroWatch works with most IP cameras. Cameras that support ONVIF (look for it on the box or spec sheet) are found for you; any other can be added by hand, using the details from its manual. 1. Search the network: Click **Add Camera**, open **Search Network** and click **Search**. Tick the cameras to add, enter their login once, and add them together. A camera that is already on the wall shows who it was added as. 2. Or set one up by hand: On the **Camera** tab, enter the camera's name, username, password and address, then click **Load Streams**. Choose the **Main stream**, which is recorded, and the **Grid stream** shown on the wall. **Test Connection** shows a preview before you save. 3. Watch the wall: Added cameras appear on the video wall, live. A red dot on a tile means the camera is recording. ### Watch recordings Everything a camera records stays on the recorder. Playback shows several cameras side by side on one timeline, so you can follow something from camera to camera. 1. Load a time range: Open **Playback**, tick the cameras to watch, choose **From** and **To**, and click **Load Recordings**. Each camera gets a row on the timeline: green is recorded, the small marks are events. 2. Move through the footage: Click or drag on the timeline to jump, scroll to zoom in, and **Play** every camera at once at ×¼ to ×4 speed. **Events only** skips the quiet hours and plays just the moments that matter. 3. Bookmark a moment: Pause on something worth finding again and click **Add Bookmark**. Add a note; tick **Keep this footage** and that moment is kept, even when the drive fills up, until you remove the bookmark. ### Motion detection and events Events are what happened: motion, line crossings and other camera alerts, cameras going offline, recordings failing, and your bookmarks. 1. Turn on motion detection: To use the camera's own detection, select the camera, click **Edit Camera** and open **Motion**. For NeuroWatch's detection, open **Plugins**, choose **NeuroWatch Motion**, click **Bind Camera…** and draw zones in the camera's **Settings**: **+ Watch** adds an area where movement counts, **+ Ignore** one where it never does. 2. Review events: The **Events** tab lists events newest first, with a picture of each. Filter by camera, type, status or time. **Play Recording** opens that moment in Playback, and **Export Clip…** saves it as a video. 3. Get alerts: Open the menu at the top left (**≡**) and choose **Alert Notifications…**. Choose where alerts go, such as this computer, your phone (with the free ntfy app) or a Telegram chat, then decide which events to send and when, for example motion after hours only. Alerts keep coming even when the app is closed. ### Export a clip Save part of a recording as an MP4 file, to share it or keep it somewhere else. 1. Choose the clip: Open the menu at the top left (**≡**) and choose **Export Video…**, or **Export Clip…** on an event. Pick a camera and a time range and click **Load**, then drag the yellow handles on the timeline, type the times, or use **Start at playhead** and **End at playhead**. 2. Save it: Click **Export…** and choose where to save it. Exports are quick and keep every detail of the original footage. ### Link to NeuroWatch Cloud Linking lets you watch live and review recordings from any browser, with no router changes, port forwarding or VPN. It is optional: the recorder keeps recording and playing back on its own without it, and you can unlink at any time. 1. Create an enrollment code: Sign in to NeuroWatch Cloud, open **Recorders** and choose **Create enrollment code**. Copy the code: it is shown once and expires after a few minutes. [Sign in](https://neurowatch.app/sign-in) 2. Paste it on the recorder: In NeuroWatch on the recorder, open **Settings → Cloud**. Paste the code into **Enrollment code**, give the recorder a name, and click **Link**. 3. Check the link: The Cloud page says **Linked to NeuroWatch Cloud**, and the recorder appears under **Recorders** in the portal within a minute. **Unlink** turns cloud services off again. ### Watch and review from anywhere The portal shows every linked recorder and its cameras, from any browser. 1. Open a recorder: **Recorders** lists every linked recorder. Open one to see a snapshot of each camera, refreshed every 30 seconds, then open a camera to watch it live. 2. Watch recordings in the browser: On a camera, switch between **Live view**, **Recordings** and **Export**. In **Recordings**, choose a day, or a **Date range** of up to 31 days, then **Play recording** or click the timeline. On a phone, pinch the video to zoom and drag the timeline to move through the day. 3. Review events: **Review events** shows the events in the loaded range with their pictures; **Review** plays one. **Events only** skips the quiet footage in between. 4. Export from anywhere: **Export** puts the clip on the timeline as yellow handles. Drag them, type the **Start** and **End**, or **Use playhead**, then click **Export MP4**. The recorder cuts the clip and it appears under **Exported files** with a **Download** button. **Timelapse** turns a long span into a short video. 5. Every event in one place: The portal's **Events** page lists a recorder's events, newest first; choose the recorder at the top. Select an event to see its picture. Pictures stay on your recorder and are sent to you privately, only when you look. ### If something does not work The most common snags, and what to do about them. 1. The search finds no cameras: Some cameras don't announce themselves on the network. Choose **Set Up Manually…** and enter the camera's address instead; you'll find it in the camera's own app or in your router's list of devices. 2. The enrollment code is refused: Codes are shown once and expire after a few minutes. Cancel the code in the portal, create a new one, and paste it straight away. 3. The portal shows the recorder offline: Check that the recorder computer is on and has internet access. That is all it needs: no router changes. Recording carries on while it is offline, and the portal catches up as soon as it is back. ## Installing Download: https://neurowatch.app/downloads. Other systems are not supported: macOS, 32-bit systems, Alpine (musl) and RHEL. ### Windows 10 and 11 64-bit Windows 10 or 11. The installer is the easiest way; the portable version runs from a folder without installing. - Run the installer: Open the downloaded **.exe**. If Windows says the installer is unrecognised, choose **More info**, then **Run anyway**. It installs for your account and adds NeuroWatch to the Start menu. - Open NeuroWatch: Open **NeuroWatch** from Start. The first time, it sets up its background service and tray icon, so recording carries on after you close the window. Windows starts NeuroWatch when you sign in. - Or use the portable version: Extract the **.zip**, then run **neurowatch.cmd** in the extracted folder. - Removing it later: Uninstalling stops the background service and removes its startup entry. Your configuration and recordings are kept. ### Ubuntu, Debian and Linux Mint 64-bit PC: Ubuntu 22.04 or newer, Debian 12 or newer. ARM64: Ubuntu 24.04 or newer, Debian 13 or newer. - Install the package: Double-click the downloaded file and choose **Install**. Your software centre asks for your password and installs the system libraries NeuroWatch needs as well. If double-clicking opens another program, run the command for your computer in the folder you downloaded it to (usually **~/Downloads**). Keep the **./** so those libraries are installed too. - 64-bit PC: `sudo apt install ./neurowatch*_amd64.deb` - ARM64: `sudo apt install ./neurowatch*_arm64.deb` - Sign out and in again: The package adds your account to the **render** and **video** groups, so recording can use the graphics card, its video decoder and USB cameras. Sign out and in, or restart, for that to take effect. - Open NeuroWatch: Open **NeuroWatch** from your applications, or run it from a terminal. The first time, it sets up its background service and tray icon, so recording carries on after you close the window and resumes after a restart. - `neurowatch` - Checking a download (optional): Each release includes a **SHA256SUMS** file, linked from the release notes. Put it next to your download and run: - `sha256sum --ignore-missing -c SHA256SUMS` - Removing it later: Before removing the package, stop the background service from your own account. Your configuration and recordings are kept. - `neurowatch service stop` - `neurowatch service uninstall` ### Fedora Fedora on a 64-bit PC or ARM64. RHEL is not supported. - Install the package: Double-click the downloaded file and choose **Install**. Your software centre asks for your password and installs the system libraries NeuroWatch needs as well. If double-clicking opens another program, run the command for your computer in the folder you downloaded it to (usually **~/Downloads**). Keep the **./** so those libraries are installed too. - 64-bit PC: `sudo dnf install ./neurowatch*.x86_64.rpm` - ARM64: `sudo dnf install ./neurowatch*.aarch64.rpm` - Sign out and in again: The package adds your account to the **render** and **video** groups, so recording can use the graphics card, its video decoder and USB cameras. Sign out and in, or restart, for that to take effect. - Open NeuroWatch: Open **NeuroWatch** from your applications, or run it from a terminal. The first time, it sets up its background service and tray icon, so recording carries on after you close the window and resumes after a restart. - `neurowatch` - Checking a download (optional): Each release includes a **SHA256SUMS** file, linked from the release notes. Put it next to your download and run: - `sha256sum --ignore-missing -c SHA256SUMS` - Removing it later: Before removing the package, stop the background service from your own account. Your configuration and recordings are kept. - `neurowatch service stop` - `neurowatch service uninstall` ### Arch Linux Arch Linux on a 64-bit PC. Arch Linux ARM is not supported. - Install the package: Run this in the folder you downloaded it to (usually **~/Downloads**): - `sudo pacman -U ./neurowatch*-x86_64.pkg.tar.zst` - Sign out and in again: The package adds your account to the **render** and **video** groups, so recording can use the graphics card, its video decoder and USB cameras. Sign out and in, or restart, for that to take effect. - Open NeuroWatch: Open **NeuroWatch** from your applications, or run it from a terminal. The first time, it sets up its background service and tray icon, so recording carries on after you close the window and resumes after a restart. - `neurowatch` - Checking a download (optional): Each release includes a **SHA256SUMS** file, linked from the release notes. Put it next to your download and run: - `sha256sum --ignore-missing -c SHA256SUMS` - Removing it later: Before removing the package, stop the background service from your own account. Your configuration and recordings are kept. - `neurowatch service stop` - `neurowatch service uninstall` ### Raspberry Pi 64-bit Raspberry Pi OS based on Debian 13 (Trixie). Bookworm is too old and 32-bit systems are not supported. The ARM64 package has not been tested on Raspberry Pi hardware yet; video decoding and performance depend on the model. - Install the package: Run this in the folder you downloaded it to (usually **~/Downloads**). Keep the **./** so the system libraries NeuroWatch needs are installed too. - `sudo apt install ./neurowatch*_arm64.deb` - Sign out and in again: The package adds your account to the **render** and **video** groups, so recording can use the graphics card, its video decoder and USB cameras. Sign out and in, or restart, for that to take effect. - Open NeuroWatch: Open **NeuroWatch** from your applications, or run it from a terminal. The first time, it sets up its background service and tray icon, so recording carries on after you close the window and resumes after a restart. - `neurowatch` - No screen attached?: Run it headless and watch it through NeuroWatch Cloud. See **Headless**. - Checking a download (optional): Each release includes a **SHA256SUMS** file, linked from the release notes. Put it next to your download and run: - `sha256sum --ignore-missing -c SHA256SUMS` - Removing it later: Before removing the package, stop the background service from your own account. Your configuration and recordings are kept. - `neurowatch service stop` - `neurowatch service uninstall` ### Other Linux (portable) Other recent 64-bit Linux distributions, on a PC or ARM64. The portable download runs from a folder and needs the system's desktop and audio libraries. - Extract and run it: Run this in the folder you downloaded it to: - `tar xzf neurowatch*-linux-*.tar.gz && ./neurowatch/neurowatch` - Allow access to the graphics card and USB cameras: Add your account to the device groups your distribution uses, then sign out and in again. If both groups exist: - `sudo usermod -aG render,video "$USER"` - “Could not load the Qt platform plugin xcb”: Install the missing library. The .deb, .rpm and Arch packages install it for you. - `sudo apt install libxcb-cursor0` - Checking a download (optional): Each release includes a **SHA256SUMS** file, linked from the release notes. Put it next to your download and run: - `sha256sum --ignore-missing -c SHA256SUMS` ### Headless (no screen) A Linux server or small computer with no display. Install the package for your distribution first, then run NeuroWatch without its window and manage it from NeuroWatch Cloud. - Start it headless: NeuroWatch starts as a background service and, on Linux with systemd, starts again at boot. The terminal shows cameras coming online, recording and events. Press **Ctrl+C** to stop watching; NeuroWatch keeps recording. - `neurowatch --headless` - Link it to NeuroWatch Cloud: Create a one-time enrollment code on the **Recorders** page of NeuroWatch Cloud. It is valid for five minutes. Then start it with the code and a name for this recorder: - `neurowatch --headless --link CODE --name "Head Office"` - Add cameras from the portal: Once linked, open the recorder in NeuroWatch Cloud, then **Settings**, to add cameras, turn on recording and choose the drive. - Checking on it: From another terminal: - Cloud link: `neurowatch cloud status` - What happened while you weren't watching: `neurowatch events` - Background service: `neurowatch service status` - It doesn't start at boot: Some systems don't let an account start its services at boot. Allow it once: - `sudo loginctl enable-linger $USER` - Desktop mode: Opening the desktop app on the same computer switches NeuroWatch back to desktop mode. ### Docker Linux, on a 64-bit PC or ARM64. **ghcr.io/ttheekw/neurowatch:latest** is the headless recorder for servers, watched through NeuroWatch Cloud. **ghcr.io/ttheekw/neurowatch:gui** is the full app with its window on your screen. The images are the free edition. - Create its folders: Settings and recordings live in two folders on this computer, so they stay when the container is replaced. - `mkdir -p ~/neurowatch/data ~/neurowatch/recordings` - Run the headless recorder: It starts again with Docker until you stop it. - `docker run -d --name neurowatch --restart unless-stopped --network host \ --user "$(id -u):$(id -g)" --stop-timeout 30 \ -v ~/neurowatch/data:/data -v ~/neurowatch/recordings:/recordings \ ghcr.io/ttheekw/neurowatch:latest` - Link it to NeuroWatch Cloud: Create a one-time enrollment code on the **Recorders** page of NeuroWatch Cloud. It is valid for five minutes. Then: - `docker exec --user "$(id -u):$(id -g)" neurowatch neurowatch-docker cloud link CODE --name "Head Office"` - Or run it with its window: Run this from your desktop session (on Wayland desktops it uses XWayland). Closing the window stops the container and recording, so use the headless image to record around the clock. Run only one of the two at a time: they share the data folder. - `xhost +SI:localuser:$(id -un) docker run -d --name neurowatch-gui --network host \ --user "$(id -u):$(id -g)" --stop-timeout 30 --shm-size 1g \ -e DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix:ro \ -v ~/neurowatch/data:/data -v ~/neurowatch/recordings:/recordings \ ghcr.io/ttheekw/neurowatch:gui` - Graphics card and sound: Add these options to either command, before the image name. Without a graphics card option, video is decoded on the processor. After changing options, remove the container and run it again; your settings and recordings stay. - Intel or AMD graphics (VA-API): `--device /dev/dri --group-add "$(stat -c %g /dev/dri/renderD128)"` - NVIDIA graphics (needs the NVIDIA Container Toolkit): `--gpus all` - Camera sound through your speakers (window only): `-v "$XDG_RUNTIME_DIR/pulse/native:/run/host/pulse" -e PULSE_SERVER=unix:/run/host/pulse` - Day to day - See what it's doing: `docker logs -f neurowatch` - Stop it (it finishes its recordings first): `docker stop neurowatch` - Start it again: `docker start neurowatch` - Updating: Pull the new image, remove the container and run the same command again. Your cameras and recordings stay in the folders. - `docker pull ghcr.io/ttheekw/neurowatch:latest` - `docker stop neurowatch && docker rm neurowatch` - NeuroWatch Unlimited: Build your own image from the Unlimited **.deb** with **scripts/docker.sh build --deb FILE** from the NeuroWatch source code.