Eyrie Reference implementation · pilot-ready · On-prem

Eyrie · for Smart Cities, campuses, critical infrastructure, US healthcare & defence-adjacent

AI surveillance with a
court-ready chain of custody.

Find anyone or anything across all your cameras in seconds, and produce a tamper-evident evidence bundle engineered to meet the technical admissibility requirements — for Smart Cities, corporate campuses, manufacturing plants, critical infrastructure, US healthcare and defence-adjacent customers. Tamper-evident chain of custody, multi-VLM consensus voting, cross-camera ReID, DPDP / GDPR / HIPAA DSAR endpoint, six region compliance presets, plus audio event detection, 3D scene reconstruction, drone-camera ingest, cross-site federation and LiDAR fusion — every one backed by code, not a marketing slide.

Reference implementation / pilot-ready. Core forensic, search, compliance and ReID modules run today on real architecture; the six capability extras (audio · 3D · drone · federation · LiDAR) ship as protocol-complete integrations with deterministic stub adapters — production model and sensor adapters (YAMNet, Gsplat, DJI MSDK, Ouster SDK, etc.) plug in at the M1 / M2 / M3 milestones.

8
Head-to-head USPs
Each beats a named incumbent
+6
Capability extras
HIPAA · audio · 3D · drone · fed · LiDAR (integration-ready)
280
Software tests
Pipeline / integration — not a model-accuracy measure
6
Eyrie compliance presets
DPDP · GDPR · UK · CCPA · QC · HIPAA
~38
REST endpoints
Across 20 Python modules
STQC
ER 2026 regulatory track
Documentation pack ready · certification in progress

01 — Eight USPs, head-to-head

Where Eyrie beats the incumbents at their own game.

Every USP below names a specific incumbent feature and explains how Eyrie matches it, enhances it, or fills the gap they left open. Drawn from a feature-by-feature pass across Avigilon, Verkada, Genetec, Milestone, Ambient AI, Coram, Spot AI, HikCentral, Vehant and Innefu — every claim is backed by a working module in the open repository.

USP-1 · Forensic search

vs Avigilon Appearance Search / Verkada Cross-Camera Tracking

Free-text search across any ONVIF camera.

Avigilon's Appearance Search needs Avigilon cameras and matches by visual similarity only. Verkada's tracking is locked to Verkada hardware. Eyrie indexes CLIP-style keyframe embeddings from any ONVIF feed — an analyst types "red helmet near gate after 14:00" and gets ranked hits. Target: < 300 ms ranked-query latency (design goal on a single-box index; not yet independently benchmarked). Vendor-agnostic, natural-language, multilingual.

eyrie.search.SearchEngine · POST /v1/search
USP-2 · VLM Q&A

vs Ambient.ai / Coram single-model summarisation

Multi-VLM consensus — never a lone hallucination.

Ambient.ai and Coram pass the keyframe to one VLM and return its answer with confidence theatre. Eyrie runs the same question through Qwen2.5-VL-72B, InternVL3-78B and Gemini 2.5 Pro in parallel, returns the consensus, and falls back to "no consensus — operator review required" when the models disagree. The disagreement itself is logged and signed.

eyrie.search.EnsembleVlmAdapter
USP-3 · Chain of custody

vs typical mutable audit logs

Ed25519-signed, tamper-evident evidence.

Where many systems store the audit trail as ordinary, editable database rows, Eyrie chain-signs every search, every VLM query, every retention sweep with Ed25519 and ships a one-call evidence bundle (tar.gz with manifest + chain of custody + snapshots + verify key) engineered to satisfy the technical requirements — hash, algorithm, chain of custody, device identity, operator — set out in NIST SP 800-86, the proposed US FRE 707 (proposed, not enacted), and India's Bharatiya Sakshya Adhiniyam §63. Admissibility in any proceeding is determined by the court.

eyrie.forensic.build_evidence_bundle
USP-4 · Camera support

vs Verkada / Avigilon hardware lock-in

ONVIF Profile T + M native.

Verkada cameras only talk to Verkada Command. Avigilon analytics need Avigilon cameras. Eyrie speaks ONVIF Profile T (streaming) and Profile M (metadata / analytics) out of the box — Axis, Hanwha, Bosch, Vivotek, Uniview all plug in, typically a fraction of proprietary per-channel cost. Zero rip-and-replace.

eyrie.onvif.register_onvif_camera
USP-5 · Cross-camera ReID

vs Avigilon's proprietary appearance embeddings

PersonViT, with a published threshold.

Avigilon and Verkada ship closed embeddings, hidden thresholds, and an unauditable confidence number. Eyrie uses PersonViT — open weights, retrainable on your population, cosine threshold (0.78 default) in the docs, per-match similarity exposed in the API so operators can argue the evidence on its merits.

eyrie.reid.ReIDMatcher
USP-6 · Privacy compliance

vs Milestone plugin / Genetec paid GDPR module

One-call DSAR for DPDP, GDPR, CCPA & HIPAA.

Verkada has no DSAR API. Milestone needs a custom plugin; Genetec sells Privacy Protector as a paid add-on. Eyrie ships POST /v1/dsar/request in the open core — query by plate, face hash or identity and the response returns every detection, track, behaviour event and keyframe under that subject — itself audit-signed, ready to mail to the regulator within the DPDP 30-day window.

eyrie.dsar.generate_dsar_response
USP-7 · Deployment

vs Verkada / Ambient.ai cloud-only

On-prem + edge by default, cloud is opt-in.

Verkada and Ambient.ai are cloud-only: footage leaves your site, the bill is per-camera-per-month-forever, and outages cut you off from your own evidence. Eyrie runs on a single Linux box on-prem, a Jetson Orin Nano at the edge, or a Hailo-15L appliance — and the same binary scales to a hosted cloud tier when you choose. Data residency follows your policy, not the vendor's data centre.

eyrie.cli · edge / on-prem / hosted
USP-8 · Model ops

vs Silent detector degradation, across every incumbent

First-class drift detection per camera.

Across the field, when a detector silently degrades after a firmware update or lens fog, the operator finds out from a missed incident. Eyrie keeps a 7-day rolling baseline per camera and flags any drop or spike past the configured thresholds (≥ 20% / ≥ 50% by default) as warning / critical in the ops dashboard, with the affected window exportable to your retraining pipeline.

eyrie.drift.detect_drift · GET /v1/drift

02 — Capability horizon · pulled forward from the M2 / M3 roadmap

Six capabilities the incumbents we surveyed don't ship at base parity.

Across the incumbents we surveyed (Genetec, Milestone, Verkada, Avigilon, Ambient.ai, Coram, HikCentral, Vehant, Staqu), these six are absent from the base offering. We built each as protocol-complete architecture + deterministic stub adapters + storage + REST + audit-chain integration. These are integration-ready, not production detectors yet: the production model and sensor adapters (YAMNet · Gsplat · DJI MSDK · Ouster SDK · etc.) plug in behind the protocols at the M1 / M2 / M3 milestones. Treat them as pilot-ready reference integrations, not finished diagnostics.

EXTRA · 01 · audio · integration-ready

vs single-mode visual-only incumbents

Audio event detection — gunshot, glass-break, shouting.

Six audio-event kinds (gunshot, glass-break, shouting, alarm-siren, scream, explosion) with severity auto-mapped from kind. Multi-model consensus voting on the audio side — same family as USP-2. Production adapters (YAMNet / AST / PaSST) plug in behind the same Protocol; ships today with stub adapters. Uses the IP camera's built-in mic; no extra hardware needed for most zones.

eyrie.audio.EnsembleAudioDetector
EXTRA · 02 · HIPAA · integration-ready

vs cloud surveillance with weak PHI handling

HIPAA preset — 6-year retention, 1-hour PII hash, BAA-gated.

Sixth region compliance preset shipped in the capability horizon. Settings derived from 45 CFR §164: §164.530(j) 6-year retention, §164.502(b) minimum-necessary 1-hour PII-hash window, §164.524 30-day DSAR SLA, §164.312(b) exhaustive audit verbosity. BAA required for hosted-tier deployments. Opens the US-hospital segment.

eyrie.compliance.CompliancePreset.HIPAA
EXTRA · 03 · 3D recon · integration-ready

vs flat 2D-only review tools

3D scene reconstruction — Gaussian Splatting on archive.

Queue a window of recorded video; the reconstructor produces a navigable 3D scene plus per-camera poses. Court-ready scene replay engineered for the evidence bundle; post-incident analyst fly-through; multi-vendor evidence-bundle attachment. Adapter slots for Gsplat, Nerfstudio, COLMAP+gsplat. Target: a Tier-3 / Tier-4 GPU handles 30-minute × 16-camera jobs in roughly the same wall-clock window (design goal; hardware- and scene-dependent).

eyrie.reconstruction.SceneReconstructor
EXTRA · 04 · drones · integration-ready

vs fixed-camera-only incumbents

Drone-camera ingest — DGCA / Part 107 pilot-id gated.

Drones modelled as cameras plus moving extrinsics (GPS + gimbal pose, 10 Hz typical telemetry rate). Adapter slots for DJI MSDK, Parrot Ground SDK, Autel LiveDeck, Skydio API, custom PX4 / MAVLink. Registration requires a licensed pilot id (DGCA RPC in India, FAA Part 107 in US). Telemetry timeline persisted alongside the video stream.

eyrie.drones.DroneAdapter
EXTRA · 05 · federation · integration-ready

vs covert, ungated hotlist exchange

Cross-site federated identity — consent + warrant + two-op.

Federation between operators requires all three: written consent (SHA-256 doc hash stored), valid court warrant (doc hash + court + expiry tracked), and two distinct attesting operators. Every query is audit-signed on both sides; revocation is one call. Operating principle 02 is enforced at the storage layer.

eyrie.federation.create_agreement · query_identity
EXTRA · 06 · LiDAR · integration-ready

vs camera-only perimeter analytics

LiDAR fusion for high-security perimeters.

Project a 2D detection bbox into 3D space via the camera-LiDAR mount extrinsics. Output: median range, nearest range, apparent height / width, 3D target position, confidence. Adapter slots for Velodyne, Ouster, Hesai, Livox, Quanergy. Turns "person detected in frame 1" into "person at 23.5 m, height 1.7 m, closing 1.2 m/s".

eyrie.lidar.fuse_detection_with_scan

Where this sits on the roadmap. M2 and M3 capabilities (originally 6–12 and 12–24 months out) are already architected and in the codebase, with 280 software tests passing and the protocols ready for production model and sensor adapters. What remains for these six is the production-adapter and certification work (e.g. STQC ER documentation and sign-off, pilot validation) — the integration surface is built; the production detectors and live connectors land at the named milestones.

03 — Operating principles

Three things we won't build, by policy.

These aren't capability gaps — they're stated commercial policy, written into our contracts. We list them up front so procurement officers, DPOs and civil-liberties counsel know the rails before they start an RFP. If your use case needs any of the three, Eyrie is not the right tool.

— refusal · 01

No mass facial recognition watch-list at v1.0

Cross-camera person re-identification runs against operator-confirmed identities only. Mass FR against the public requires a written policy file with an attesting officer — neither shipped at GA. Differentiates from Innefu / NEC / Hikvision.

— refusal · 02

No cross-org hotlist without warrant + consent

Operators can opt into federated hotlists only with both written consent AND a valid court warrant. The "network hotlist" model is intentionally not replicated. Enforced at the storage layer by the federation module.

— refusal · 03

No predictive policing

Eyrie surfaces what happened, not what we predict might happen. Anchors Smart City conversations away from political risk. Differentiates from Palantir / Predpol.

04 — Competitive matrix

Where Eyrie sits vs the entire field.

Capabilities across nine incumbents, compiled from publicly available product information. The shaded column is Eyrie. The bottom six rows are capability extras pulled forward from the originally-planned M2 + M3 roadmap and ship as integration-ready (stub-adapter) modules, not production detectors yet; among the listed incumbents we found none shipping these at base parity. All product names are trademarks of their respective owners.

Legend — supported · not supported · partial partially supported / paid add-on.

Capability comparison. In each cell, a check mark means supported, a dash means not supported, and "partial" means partially supported or available as a paid add-on. The final column is Eyrie.
Capability Genetec Milestone Avigilon Verkada Ambient AI Coram Spot AI HikCentral Vehant / Staqu Eyrie
OEM authorisation for Indian tendersvia reseller✓ direct, DSC-signed
On-prem deploymentpaid✓ default
ONVIF Profile T + M nativeS/T/Gproprietaryingestingestingest✓ native
Cross-camera ReID+ paidmarketplaceAppearance Search+ cloud++++✓ open
Free-text forensic search+ cloud++ cloud+ cloud✓ on-prem CLIP
VLM Q&A (2026-class)proprietary✓ Qwen2.5-VL local
Multi-VLM ensemble voting
Tamper-evident chain of custodypartialpartialpartial✓ Ed25519
Two-operator rule
Vendor-agnostic edgepartner-lockpartner-lockAvigilon HWVerkada camsHikvision✓ Jetson + Hailo + x86 + Pi
DPDP / GDPR DSAR endpoint
Region compliance presets✓ six (incl. HIPAA)
STQC ER (India 2026)partial
Drift detection
Mass-FR refusal (stated)
Pulled forward from M2 / M3 roadmap · integration-ready (stub adapters), production detectors land at milestones
HIPAA preset (45 CFR §164)✓ integration-ready
Audio event detection (gunshot / glass-break / shouting)partial✓ integration-ready
3D scene reconstruction (Gaussian Splatting on archive)✓ integration-ready
Drone-camera ingest (DGCA / Part 107-gated)✓ integration-ready · 5 adapter slots
Cross-site federated identity (consent + warrant)✓ integration-ready · 2-op gated
LiDAR fusion (2D bbox → 3D position)✓ integration-ready · 5 adapter slots

05 — Show, don't tell

Every USP and capability extra in one block.

Open the repository, run the smoke test (~2 s end-to-end on a stock laptop), then run the seven worked examples plus the new capability-module references below. 280 software tests pass (pipeline / integration — a measure of plumbing, not of model accuracy or recognition rates). There's no demo video, no recorded webinar between you and the code. The repository is private during the pilot phase — request code access and we'll grant read access so you can self-serve.

Python 3.10+ FastAPI Postgres Ed25519 audit chain CLIP embeddings ONVIF T + M Qwen2.5-VL · InternVL3 · Gemini 2.5 YAMNet · AST · PaSST (audio) Gaussian Splatting (gsplat) DJI · Parrot · Skydio · PX4 Velodyne · Ouster · Hesai · Livox HIPAA / DPDP / GDPR presets
# 1. Tamper-evident evidence bundle (USP-3)
from eyrie.forensic import build_evidence_bundle, BundleScope
build_evidence_bundle(
    storage, organization_id=1,
    scope=BundleScope(behavior_event_ids=[42], search_log_ids=[7], vlm_query_log_ids=[3]),
    exported_by="DPO-1",
    legal_basis="warrant 2026-05-19; case CR/120/2026",
    out_path="CR-120-2026.tar.gz",
    audit_keypair=kp,
)

# 2. Multi-VLM consensus (USP-2)
from eyrie.search import EnsembleVlmAdapter
ensemble = EnsembleVlmAdapter([qwen25vl, internvl3, gemini25])
ans = ensemble.ask_detailed(prompt="describe gate 4 at 13:08", image_paths=refs)
# ans.confidence ∈ {unanimous, majority, no_consensus}

# 3. HIPAA preset — 6-yr retention, 1-hour PII hash, BAA-gated
from eyrie.compliance import CompliancePreset, policy_for
p = policy_for(CompliancePreset.HIPAA)
# retention=2190d, hash-after=1h, FR=off, BAA-gated

# ============ Capability horizon — M2 / M3 pulled forward =============

# 4. Audio event detection — gunshot / glass-break / shouting
from eyrie.audio import EnsembleAudioDetector
ens = EnsembleAudioDetector([yamnet, ast_local, passt])
verdict = ens.classify(fp)  # {unanimous, majority, no_consensus}

# 5. 3D scene reconstruction (Gaussian Splatting on archive)
from eyrie.reconstruction import request_reconstruction
jid = request_reconstruction(
    storage, organization_id=1,
    window_start=t0, window_end=t1,
    camera_ids=[1, 2, 7, 8],
    requested_by="analyst-1",
)
# run_reconstruction outputs .splat + camera_poses.json

# 6. Drone-camera ingest (DGCA / Part 107 pilot-id gated)
from eyrie.drones import register_drone, ingest_telemetry
drone = register_drone(
    storage, organization_id=1, site_id=2,
    drone_name="Sentinel-1", serial_number="DJI-M30T-001",
    pilot_id="DGCA-RPC-99887",
    drone_kind="dji",
    home_lat=18.52, home_lon=73.85, home_alt_m=560.0,
)

# 7. Cross-site federated identity (consent + warrant + 2-op)
from eyrie.federation import create_agreement, query_identity
agreement = create_agreement(
    storage, organization_id=1,
    peer_organization_name="ICCC-Mumbai",
    consent_document_bytes=consent_pdf_bytes,
    warrant_document_bytes=warrant_pdf_bytes,
    warrant_issuing_court="Bombay High Court",
    warrant_expires_at=expiry,
    attesting_operator_a="op-a",
    attesting_operator_b="op-b",
)

# 8. LiDAR fusion — 2D bbox → 3D position
from eyrie.lidar import register_sensor, fuse_detection_with_scan
sensor = register_sensor(
    storage, organization_id=1, site_id=2,
    name="velodyne-1", vendor="velodyne", model="VLP-32C",
    ip_address="10.0.5.21", range_m=200, points_per_second=1_280_000,
    paired_camera_id=cid,
)
result = fuse_detection_with_scan(
    detection_id=det.id, bbox_xyxy=det.bbox, frame_size=(1920,1080),
    sensor=sensor, scan=latest_scan,
)
# result.median_range_m, result.target_position_xyz, result.confidence

→ 280 software tests (pipeline / integration) · 2.45 s · examples/01-09 cover every USP and capability extra

06 — Start

Every camera, every angle, all the time —
and never your data.

The eight USPs plus the six (integration-ready) capability extras are all in code. The competitive matrix is auditable. 280 software tests pass — request early access and we'll walk you through the test suite live, on your own corpus if you can share one. Reference implementation / pilot-ready; production model and sensor adapters land at the named M1 / M2 / M3 milestones.