Computer vision analytics platform

Turn any sensor stream into intelligence.

Plug and play intelligence modules, and chain them into real-time pipelines.

Connect RTSP cameras and sensor feeds, run each stream through the modules you choose, and query what they find as timestamped events.

Module shipping today
Face detection & tracking
Annotated output
~17 frames per second
Results
Timestamped events over REST
  • RTSP in
  • NATS JetStream
  • Intel OpenVINO
  • REST out

The pipeline, end to end

Every stream, every module, one event log.

Illustration · 15-second loop

Feeds converge, modules process each frame as it arrives, and the output resolves into records you can query. The recorded detection footage is further down.

How it works

From camera to query in four calls.

01 / 04

Connect a sensor

Register any RTSP source as a sensor. Nothing is pulled until a stream starts, so an idle camera costs nothing.

Register a sensorHTTP
POST /sensor/
{
  "name": "loading-dock-02",
  "url": "rtsp://10.0.4.21:8554/live",
  "streamtype": "normal"
}

02 / 04

Start the stream

The sensor driver publishes frames onto NATS JetStream. Capture and analysis are decoupled, so modules scale independently of the cameras feeding them.

Start streamingHTTP
POST /streaming/start/{sensor_id}
{ "fps": 15 }

# frames publish to NATS JetStream, one subject per stream

03 / 04

Run a module

Attach a module to one or more streams. Face detection runs on Intel OpenVINO, tracks each face across frames and scores every detection.

Launch an analytics jobHTTP
POST /analytics/
{
  "stream_ids": ["6aa1c16959606bb372802b63"],
  "analysis": ["face_detection"]
}
sensor-01 · face_detection672×384 · recorded
tracked in one frame
3faces
confidence on clear faces
0.99+
annotated frames served live
~17fps

Recorded from the running system. Source footage: Intel sample-videos (opens in a new tab).

04 / 04

Query the events

Every detection is written back as a timestamped event with its confidence and bounding boxes, filterable by job, stream, type or date range.

List eventsHTTP · JSON
GET /events/?analytics_id=6aa1c16a59606bb372802b64&limit=20

{
  "total": 11,
  "limit": 20,
  "skip": 0,
  "events": [
    {
      "event_type": "face_detection",
      "stream_id": "6aa1c16959606bb372802b63",
      "frame_number": 274,
      "timestamp": "2026-09-09T20:29:05.650Z",
      "confidence": 0.999,
      "detection_count": 3,
      "metadata": {
        "model": "face-detection-adas-0001",
        "detections": [
          { "bbox": [120, 80, 250, 220], "confidence": 0.999 }
        ]
      }
    }
  ]
}

Four calls to go from a camera to a queryable event.

Try it on your footage

Pipeline builder

Chain engines on real footage.

Pick a feed, switch engines and chained modules on or off, and set the processing rate. Every box, label and event is real model output, recorded on a CPU and replayed in your browser.

01 Use case
02 Feed

Automated 6-DOF robotic manipulator continuous vision tracking: kinematic pose estimation, end-effector spatial trajectory, and fixture alignment.

03 Engines
04 Processing rate
Per frame
10.4 ms
Of one core
31%
Streams / core
≈3

Inference only, measured on Apple M4 Pro CPU, OpenVINO in a linux/arm64 container · OpenVINO 2026.3.1.

Below the camera's rate each result is held until the next processed frame, so boxes lag and fast subjects can lose their track.

  1. Workstation 01 · 30 fps
  2. Robotic arm tracking
  3. End-effector pose
  4. Spatial trajectory
  5. Zone rules
  6. Events · 0
Recorded run · replayed
frame 060/14930 fps processed10.4 ms / frame2 in view

Event log

  1. Waiting for the first event…

Latest event payload

—

Face detection ships in Visalytix today. The other engines are preview modules: the same Intel models, run offline. Footage: Intel IoT DevKit sample videos, licensed CC BY 4.0, cut and scaled. Models: Intel Open Model Zoo (Apache-2.0).

Modules

Modular by design.

Each module runs as its own container on the stream bus, so adding one never touches ingestion, transport or the event store. One ships today; the sheet says which.

Intelligence modules and their availability
ModuleRuns asStatus
Face detection & trackingLocates and tracks faces across frames, scoring every detection.OpenVINO container on the stream busShipping
Your own modelPackage a model as a container that reads frames from the bus.Any container that consumes NATS subjectsRoadmap
Module chainingFeed one module's output topic into the next module's input.Output topic to input subjectRoadmap
Object detectionGeneral object classes beyond faces.OpenVINO container on the stream busRoadmap

Deployment

Your cloud, your racks, or both.

The same containers run everywhere, on one host with Docker Compose or across a cluster with Kubernetes. Moving between clouds, or off them, is a deployment change rather than a rewrite.

Illustration: a server rack, a network switch and a security camera inside one room.

On-premises

On your own hardware

Run the whole stack with Docker Compose on a single Linux host, or across your own Kubernetes cluster. Footage never has to leave your network.

docker compose up -d

Illustration: clusters of server racks in a cloud region, joined by data lines.

Public cloud

AWS or Google Cloud

Amazon EKS with Terraform for the cluster, node groups and container registry, or a single Compute Engine VM that starts for a demo and stops when you are done.

terraform apply

Illustration: cameras in a building streaming across to server racks in a cloud region.

Hybrid

Cameras on site, compute in the cloud

Keep the cameras where they are and stream RTSP to processing in your own cloud account, over the network you already have.

rtsp://site-a/cam-01 → your cloud

Same stack everywhere

  • Docker Compose
  • Kubernetes
  • Terraform
  • Compute Engine
  • NATS JetStream
  • MongoDB

Running somewhere else? It is plain containers, so bring your environment to the demo call and we will walk through it.

Point it at your cameras.

We’ll run the pipeline on your footage during the call and show you the events it produces.

Book a demo

On the call

  1. 01Connect one of your RTSP cameras
  2. 02Watch face detection run on it live
  3. 03Query the events it produced
  4. 04Talk through the modules you need next