Nemo Documentation
AI-Powered Maritime Safety System
Getting Started
Welcome to Nemo, the AI-powered maritime hazard detection system. This guide will walk you through all features and settings to help you get the most out of your safety system.
System Requirements
- Operating System: Windows 10 or later
- Video Input: Any USB webcam, IP camera (RTSP), streaming feed, local video source, or onboard camera system
- Storage: ~2-4 GB free disk space
- Network: Optional — for multi-device access and Home Assistant integration. Nemo runs fully offline
Versions
Nemo is available in two versions:
- Intel version: Runs on any modern laptop or desktop. If you have CUDA already installed on your system, this version will likely use it automatically.
- CUDA version: Optimized for systems with a dedicated NVIDIA GPU and CUDA toolkit installed.
If you're unsure which to pick, start with the Intel version.
Quick Start
- Run the Nemo installer (
.exe) - Click through the license agreement and readme
- Nemo installs to
C:\Program Files\Nemoand creates two shortcuts on your desktop - Open the Nemo Server shortcut first
- Then open the Nemo Dashboard shortcut to access the interface
Installation
Nemo ships as a standalone installer — everything is included. No Python, no pip, no Docker. Install and run.
Step 1: Download the Right Version
After purchasing your license, you'll receive a download link. Choose the version for your system:
| Version | Best For |
|---|---|
| Nemo (Intel) | Any modern Windows laptop or desktop. If CUDA is already installed on your system, this version will likely use it automatically. |
| Nemo (CUDA) | Systems with a dedicated NVIDIA GPU and CUDA toolkit installed, for maximum performance. |
If you're unsure, start with the Intel version.
Step 2: Run the Installer
- Double-click the Nemo
.exeinstaller - Click Next to accept the license agreement
- Click Next to view the readme
- The installer will install Nemo to
C:\Program Files\Nemo - Two shortcuts are created on your desktop: Nemo Server and Nemo Dashboard
Step 3: Connect Camera
Plug in your USB camera before running Nemo.
Step 4: Start the Server
Open the Nemo Server shortcut on your desktop. The server must be running before you can use the dashboard.
Step 5: Open the Dashboard
Open the Nemo Dashboard shortcut on your desktop. This opens the Nemo interface in your web browser.
Step 6: Accessing from Another Device
To access the dashboard from a phone, tablet, or another computer on the same network:
- Look at the Nemo Server window — it displays your IP addresses
- You'll see
127.0.0.1(this is localhost, only for the computer running Nemo) - Below that, you'll see another IP address (e.g.
192.168.1.100) — this is the one to use from other devices - On the other device, open a browser and go to
http://[that-ip-address]:5001
No WiFi Network on the Boat?
Most boats don't have a WiFi network, which means your phone and other devices can't connect to the laptop running Nemo. To fix this:
- On your laptop, turn on the Mobile Hotspot (Windows Settings > Network & Internet > Mobile Hotspot)
- Connect your phone, tablet, or other devices to the laptop's hotspot
- Then start the Nemo Server
- Use the IP address shown in the server window to access the dashboard from your connected devices
Performance Tip
You'll get better performance out of Nemo if you don't have the dashboard open on the same machine. Once you've configured your settings, close the dashboard and let the server run in the background — it will continue detecting and alerting without the dashboard.
If you want to tune the system before heading out, you can point Nemo at a local video file path instead of a live camera. This lets you run recorded footage through the detection system to dial in your settings before you're on the water.
Verify Detection
You should see the live camera feed with detection overlays. Check the FPS counter in the header — it should read 15+ FPS for normal operation.
Updating Nemo
Updates are included for 1 year with your license. When a new version is available:
- Download the new installer from your account
- Close the running Nemo Server
- Run the new installer — it will update the existing installation
Compatibility Check Tool
Before purchasing a software license, use the free Compatibility Check tool to verify your hardware can run Nemo.
What It Does
- Downloads and runs a stock RT-DETR model (public weights — not the custom Nemo maritime model)
- Performs real-time person detection on your USB camera feed
- Measures inference FPS on your specific hardware
- Gives you a clear pass or fail result
How to Run
- Download the compatibility check tool from mynemo.ca/compatibility-check
- Extract the archive for your platform
- Connect a USB camera to your Jetson or laptop
- Run the tool:
Linux / Jetson:
./nemo-compat-checkWindows:
nemo-compat-check.exe - Watch the live FPS counter and detection output
Interpreting Results
| Result | FPS | Meaning |
|---|---|---|
| PASS | >15 FPS | Your hardware can run Nemo. You're ready to purchase the software license. |
| FAIL | <15 FPS or errors | Your hardware does not meet the minimum requirements for real-time detection. |
Troubleshooting Failed Results
- Low FPS: Your GPU may not have enough compute power. Check that you're using a Jetson Orin or a laptop with a dedicated NVIDIA GPU.
- CUDA errors: Ensure NVIDIA drivers and CUDA toolkit are properly installed. On Jetson, use JetPack SDK.
- Camera not found: Verify the camera is connected and recognized by your OS (
ls /dev/video*on Linux). - Model not loading: Ensure the full archive was extracted — the model weights are bundled in the package.
Interface Overview
The Nemo interface is divided into several key areas:
Header Bar
| Element | Description |
|---|---|
| Menu Button | Opens the settings panel and navigation menu |
| Status Indicator | Shows "Online" when system is active, displays execution mode (TensorRT/CPU) |
| FPS Counter | Real-time frames per second being processed |
| Object Count | Number of objects currently being tracked |
Main Display
The central area shows the live camera feed with detection overlays. Key information displayed:
- Detection boxes: Colored rectangles around detected objects
- Risk indicators: Red highlighting for collision risks
- Tracking IDs: Unique identifiers for each tracked object
- On-screen stats: FPS, object count, and risk count
Warning Banner
When collision risks are detected, an orange/red warning banner appears at the bottom of the screen showing the number of potential risks.
Live Camera Feed
The live video feed is the heart of Nemo's detection system. Nemo accepts any video source — USB cameras, IP cameras, RTSP streams, streaming feeds, or local files.
Feed Controls
| Control | Function |
|---|---|
| RAW Toggle | Switch between processed view (with enhancements) and raw camera output |
| Eye Icon | Shows/hides detection overlays |
| Fullscreen | Expands the feed to full screen mode |
RAW vs Processed View
Processed View (Default): Shows the camera feed with image enhancements applied (gamma correction, CLAHE, contrast adjustments). This is what the AI sees and is optimized for detection accuracy.
RAW View: Shows the unmodified camera output. Useful for troubleshooting camera issues or comparing detection performance.
Detection Overlays
Objects are highlighted with colored bounding boxes:
- Green: Tracked object, no immediate risk
- Yellow: Object approaching, monitor closely
- Red: Collision risk detected
Detection System
Nemo uses advanced AI models trained specifically for maritime environments to detect and classify objects in real-time.
Detected Object Types
| Object Type | Description |
|---|---|
| Vessels/Boats | Motorboats, sailboats, kayaks, canoes, commercial vessels |
| Persons | People on docks, other vessels, or in the water |
| Swimmers | People swimming in the water (separate from persons on vessels) |
| Jet Skis | Personal watercraft and wave runners |
| Buoys | Navigation buoys, channel markers, mooring buoys |
| Debris | Floating debris, logs, hazardous objects in the water |
How Detection Works
- Image Capture: Camera frames are captured at up to 60 FPS
- Preprocessing: Images are enhanced for optimal detection (gamma correction, contrast adjustment)
- AI Inference: TensorRT-optimized neural network analyzes each frame
- Object Classification: Detected objects are classified by type
- Risk Assessment: Object trajectories are analyzed for collision risk
- Alert Generation: Visual and audio alerts are triggered when risks are detected
Collision Warnings
Nemo continuously analyzes object trajectories and positions to identify potential collision risks.
Warning Levels
| Level | Indicator | Meaning | Action |
|---|---|---|---|
| Monitor | Yellow box | Object detected, tracking in progress | Be aware of surroundings |
| Caution | Orange highlight | Object on converging path | Monitor closely, prepare to maneuver |
| Warning | Red box + banner + audio | Collision risk imminent | Take immediate evasive action |
Warning Banner
When one or more collision risks are detected, a warning banner appears at the bottom of the screen:
The banner shows the total number of active collision risks. Click the banner to highlight the specific objects causing warnings.
Risk Calculation Factors
Nemo considers multiple factors when assessing collision risk:
- Distance: Proximity of detected object to your vessel
- Relative velocity: Speed at which the gap is closing
- Bearing change: Whether the object's relative position is changing
- Object size: Larger objects may require more clearance
- Object type: Swimmers and debris have higher priority
Image Processing Settings
Nemo includes advanced image processing to optimize detection in various lighting and weather conditions.
CLAHE (Contrast Limited Adaptive Histogram Equalization)
CLAHE improves local contrast in images, making objects more visible in challenging lighting conditions.
| Setting | Range | Default | Description |
|---|---|---|---|
| CLAHE Tile Size | 2-16 | 8 | Size of the grid for local histogram equalization. Smaller values = more local contrast enhancement. |
Contrast Adjustment
Manual contrast controls for fine-tuning image appearance.
| Setting | Range | Default | Description |
|---|---|---|---|
| Contrast Adjustment | On/Off | Off | Enable/disable manual contrast controls |
| Contrast Alpha | 0.5-3.0 | 1.0 | Contrast multiplier. Values >1 increase contrast, <1 decrease. |
| Contrast Beta | -100 to 100 | 0 | Brightness adjustment. Positive values brighten, negative darken. |
Gamma Correction
Adaptive gamma correction improves visibility in low-light conditions. This is handled automatically in Lightweight Mode or through the full preprocessing pipeline.
Performance Optimizations
These settings allow you to balance detection accuracy against processing speed.
Lightweight Mode
| Setting | Default | Description |
|---|---|---|
| Lightweight Mode | On | Uses fast gamma correction instead of heavy preprocessing pipeline. Recommended for most use cases. |
When to disable: In extremely challenging visibility conditions (heavy fog, dusk/dawn transitions) where full preprocessing may improve detection.
Two-Stage Inference
| Setting | Default | Description |
|---|---|---|
| Two-Stage Inference | Off | Enables a coarse detection pass followed by focused ROI analysis for better small-object detection. |
| Coarse Pass Scale | 50% | Resolution for the initial coarse detection pass. Lower values = faster but may miss small objects. |
| ROI Margin | 30% | Margin above the waterline for the Region of Interest. Larger margins capture objects higher in frame. |
When to enable Two-Stage:
- When detecting distant objects is critical
- In open water where objects appear small on the horizon
- When FPS is consistently above 45 and you have processing headroom
Detection Sensitivity
Adjust sensitivity thresholds for each object type to fine-tune detection behavior.
Sensitivity Sliders
Each object type has an independent sensitivity slider (0-100%):
| Object Type | Default | Description |
|---|---|---|
| Person Sensitivity | 10% | Detection threshold for persons on vessels or docks |
| Swimmer Sensitivity | 10% | Detection threshold for swimmers in water |
| Boat Sensitivity | 40% | Detection threshold for vessels and watercraft |
| Jetski Sensitivity | 12% | Detection threshold for personal watercraft |
| Buoy Sensitivity | 11% | Detection threshold for navigation markers |
| Debris Sensitivity | 10% | Detection threshold for floating debris and hazards |
Understanding Sensitivity
Lower values (0-25%): More detections, including uncertain ones. May increase false positives but catches more objects.
Higher values (75-100%): Only high-confidence detections. Fewer false positives but may miss some objects.
Recommended Settings by Environment
| Environment | Recommendation |
|---|---|
| Busy marina/harbor | Higher sensitivity (20-40%) to reduce alert fatigue |
| Open water | Lower sensitivity (5-15%) to catch distant objects |
| Swimming areas | Very low swimmer/person sensitivity (5-10%) |
| Night operation | Lower all sensitivities to compensate for reduced visibility |
Video Input & Camera Setup
Nemo accepts virtually any video source. If it outputs video, Nemo can process it.
Supported Video Sources
| Source | Connection | Notes |
|---|---|---|
| USB Webcam | USB 2.0/3.0 | Plug and play, easiest setup |
| IP Camera (RTSP) | Ethernet/WiFi | Any RTSP stream — network cameras, NVRs, etc. |
| Streaming Feed | URL / Network | Any HTTP, RTSP, or MJPEG video stream |
| Local Source | File / Device | Local video files or any system video device |
| Onboard Camera | Varies | Integration with existing vessel camera systems |
| CSI Camera | CSI connector | Direct Jetson connection, lowest latency |
Camera Positioning
- Height: Mount camera at helm height or higher for best field of view
- Angle: Point slightly downward to capture waterline and horizon
- Coverage: Forward-facing primary, consider additional cameras for 360° coverage
- Protection: Use marine-rated housing for weather protection
Adding an IP Camera or Stream
- Open Settings > Camera Configuration
- Select "Add Camera"
- Enter the stream URL:
rtsp://[username:password@]ip_address:port/stream - HTTP and MJPEG streams are also supported — paste any valid video URL
- Test connection and save
Multi-Camera Setup
Nemo supports multiple video sources for comprehensive coverage:
- Each source runs independent detection
- Warnings are consolidated into a single alert system
- Switch between feeds in the dashboard
Streaming Detection Output
Nemo outputs the processed detection feed as a network stream. You can view it in the web dashboard, or consume it from any external application:
- Web browser: Navigate to
http://nemo.local:5001 - VLC: Open Network Stream and paste the Nemo stream URL
- OBS / other apps: Add as a media/network source using the stream URL
To get the stream URL, right-click the video feed in the dashboard and select "Copy stream URL" (or similar depending on browser). This lets you display the detection feed on any screen, device, or recording application on your network.
Audio Alerts
Nemo provides audible warnings so you don't have to constantly watch the screen.
Alert Types
| Alert | Sound | Trigger |
|---|---|---|
| Object Detected | Single tone | New object enters detection zone (optional) |
| Collision Warning | Repeating alarm | Collision risk identified |
| Swimmer Alert | Distinct tone | Person in water detected |
| System Status | Chime | System start/stop, camera connect/disconnect |
Audio Settings
- Volume: Adjust master volume for all alerts
- Alert Types: Enable/disable specific alert sounds
- Repeat Interval: How often collision warnings repeat
- Quiet Hours: Reduce or mute non-critical alerts during specified times
Multi-Device Access
Access Nemo's dashboard from any device on your local network.
Connecting from Other Devices
- Ensure your device is on the same network as the Nemo Computer
- Open a web browser
- Navigate to
http://nemo.local:5001orhttp://[nemo-ip]:5001 - The full dashboard is available on any device
Supported Devices
- Smartphones (iOS, Android)
- Tablets
- Laptops
- Chart plotters with web browser capability
Network Requirements
- WiFi or wired network connection to the computer running Nemo
- No internet required — all communication is local
- If your boat doesn't have WiFi, turn on your laptop's Mobile Hotspot (Windows Settings > Network & Internet > Mobile Hotspot) so other devices can connect
Home Assistant Integration
Integrate Nemo with your Home Assistant setup for advanced automation.
Capabilities
- Receive collision alerts as Home Assistant notifications
- Trigger automations based on detection events
- Monitor system status from Home Assistant dashboard
- Control vessel lighting, horn, or other systems in response to alerts
Setup
- Install the Nemo integration from HACS or manually
- In Home Assistant, go to Settings > Integrations > Add Integration
- Search for "Nemo" and select it
- Enter the Nemo Computer's IP address
- Configure which entities to expose
Available Entities
| Entity | Type | Description |
|---|---|---|
| nemo.status | Sensor | Online/Offline status |
| nemo.object_count | Sensor | Number of detected objects |
| nemo.collision_warning | Binary Sensor | Active collision warning |
| nemo.fps | Sensor | Current processing FPS |
Example Automation
automation:
- alias: "Nemo Collision Alert"
trigger:
- platform: state
entity_id: binary_sensor.nemo_collision_warning
to: "on"
action:
- service: notify.mobile_app
data:
message: "Collision warning detected!"
- service: light.turn_on
entity_id: light.deck_lights
data:
flash: short
Troubleshooting
Common Issues
Low FPS / Slow Performance
- Enable Lightweight Mode in Performance settings
- Disable Two-Stage Inference
- Reduce camera resolution if possible
- Check for thermal throttling - ensure adequate ventilation
Too Many False Positives
- Increase sensitivity values for the problematic object type
- Adjust camera angle to reduce reflections/glare
- Check for dirty camera lens
Missing Detections
- Decrease sensitivity values for the object type
- Enable Two-Stage Inference for distant objects
- Check camera focus and cleanliness
- Verify adequate lighting conditions
Camera Not Detected
- Check physical connection (USB/network cable)
- Try a different USB port
- For IP cameras, verify network connectivity and RTSP URL
- Restart the Nemo service
No Audio Alerts
- Check volume settings in Audio configuration
- Verify speaker/audio output connection
- Ensure alerts are enabled for the event type
System Logs
Access detailed system logs at Settings > System > Logs for advanced troubleshooting.
API Reference
Nemo exposes a REST API on the local network, allowing you to control the detection system, read status, and stream video from any device or integration. All endpoints are served from http://<nemo-ip>:5001.
http://192.168.1.100:5001
Detection Control
Start Detection
| Detail | Value |
|---|---|
| Endpoint | POST /start |
| Content-Type | application/json |
| Body (optional) | {"video_source": 0} |
| Response | {"success": true} |
Starts the detection loop. Optionally pass a video_source (camera index or RTSP URL) to switch the input before starting.
curl -X POST http://192.168.1.100:5001/start \
-H "Content-Type: application/json" \
-d '{"video_source": 0}'
Stop Detection
| Detail | Value |
|---|---|
| Endpoint | POST /stop |
| Response | {"success": true} |
Stops the detection loop.
curl -X POST http://192.168.1.100:5001/stop
System Status
Get Status
| Detail | Value |
|---|---|
| Endpoint | GET /status |
| Response | JSON object (see below) |
Returns the current system state including detection counts, FPS, and active collision risks.
// Example response
{
"running": true,
"device": "CUDAExecutionProvider",
"detections": 3,
"risks": 1,
"fps": "26.4",
"total_reflections_filtered": 12,
"detections_list": [...]
}
Configuration
Get Configuration
| Detail | Value |
|---|---|
| Endpoint | GET /config |
| Response | JSON object with all current settings |
Returns the full configuration object including confidence thresholds, preprocessing flags, and risk parameters.
curl http://192.168.1.100:5001/config
Update Configuration
| Detail | Value |
|---|---|
| Endpoint | POST /config |
| Content-Type | application/json |
| Body | JSON object with settings to change |
| Response | {"success": true} |
Updates one or more configuration values at runtime. Only include the keys you want to change.
curl -X POST http://192.168.1.100:5001/config \
-H "Content-Type: application/json" \
-d '{"lightweight_mode": true, "horizon_position": 0.3}'
Video Streams
Live Video Feed
| Detail | Value |
|---|---|
| Endpoint | GET /video_feed |
| Content-Type | multipart/x-mixed-replace (MJPEG) |
MJPEG stream of the live detection feed with bounding boxes and risk overlays drawn on each frame. Embed directly in an <img> tag or consume programmatically.
<img src="http://192.168.1.100:5001/video_feed" />
Enhanced Video Feed
| Detail | Value |
|---|---|
| Endpoint | GET /video_feed_enhanced |
| Content-Type | multipart/x-mixed-replace (MJPEG) |
MJPEG stream showing the preprocessed (enhanced) frame before detection. Useful for comparing raw vs. enhanced image quality.
Camera Management
List Cameras
| Detail | Value |
|---|---|
| Endpoint | GET /cameras |
| Response | JSON with camera sources and active index |
// Example response
{
"camera_sources": ["0", "rtsp://192.168.1.50:554/stream"],
"active_camera_index": 0
}
Update Camera Sources
| Detail | Value |
|---|---|
| Endpoint | POST /cameras |
| Content-Type | application/json |
| Body | {"camera_sources": ["0", "rtsp://..."]} |
| Response | {"success": true} |
Sets the list of available camera sources (USB indices or RTSP/HTTP URLs).
Switch Camera
| Detail | Value |
|---|---|
| Endpoint | POST /switch_camera |
| Content-Type | application/json |
| Body | {"camera_index": 1} |
| Response | {"success": true} or {"success": false, "error": "Invalid camera index"} |
Switches to a different camera from the configured sources. If detection is running, it will restart automatically with the new camera.
curl -X POST http://192.168.1.100:5001/switch_camera \
-H "Content-Type: application/json" \
-d '{"camera_index": 1}'
Debugging & Testing
Test Alarm
| Detail | Value |
|---|---|
| Endpoint | POST /test_alarm |
| Response | {"success": true} |
Triggers the audio alarm manually. Use this to verify that the speaker and alarm audio are working correctly.
curl -X POST http://192.168.1.100:5001/test_alarm
Debug Mode
| Detail | Value |
|---|---|
| Endpoint (GET) | GET /debug |
| Response | {"debug_mode": false} |
| Endpoint (POST) | POST /debug |
| Body | {"enabled": true} |
| Response | {"success": true} |
Get or set debug mode. When enabled, additional diagnostic information is displayed on the video feed overlay.
curl -X POST http://192.168.1.100:5001/debug \
-H "Content-Type: application/json" \
-d '{"enabled": true}'
Quick Reference
| Endpoint | Method | Description |
|---|---|---|
/start |
POST | Start detection loop |
/stop |
POST | Stop detection loop |
/status |
GET | System status, FPS, detections, risks |
/config |
GET / POST | Read or update configuration |
/video_feed |
GET | MJPEG live stream with overlays |
/video_feed_enhanced |
GET | MJPEG enhanced/preprocessed stream |
/cameras |
GET / POST | List or update camera sources |
/switch_camera |
POST | Switch active camera |
/test_alarm |
POST | Trigger alarm manually |
/debug |
GET / POST | Get or set debug mode |
Technical Specifications
Supported Hardware
| Platform | Minimum Requirement |
|---|---|
| NVIDIA Jetson | Orin Nano or Orin NX with JetPack SDK |
| Laptop | Any modern Windows laptop (Intel version available, CUDA version for NVIDIA GPUs) |
| Nemo Computer | Pre-configured Jetson Orin (included hardware product) |
Hardware (Nemo Computer)
| Component | Specification |
|---|---|
| Processor | NVIDIA Jetson Orin |
| GPU | Ampere architecture with Tensor Cores |
| Memory | 8-16GB unified memory |
| Storage | 64GB+ NVMe SSD |
| Power | 15-25W typical consumption |
| Operating Temp | -25°C to 50°C |
Software
| Feature | Specification |
|---|---|
| Operating System | Ubuntu Linux (Jetson optimized) |
| AI Framework | TensorRT (NVIDIA) |
| Processing Speed | 30-60 FPS |
| Detection Accuracy | 95%+ in typical conditions |
| Latency | <100ms detection to alert |
Connectivity
| Interface | Specification |
|---|---|
| USB | 4x USB 3.0 ports |
| Network | Gigabit Ethernet, WiFi optional |
| Video Input | USB, RTSP, CSI |
| Audio Output | 3.5mm, HDMI, USB |