hydris

command module
v0.0.19 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 5, 2026 License: Apache-2.0 Imports: 24 Imported by: 0

README

Hydris

Like Home Assistant, but for the outdoors. An open-source coordination engine for sensors, assets, and mission systems across large-area networks where things aren't conveniently plugged into a wall.

Integrate once. Deploy everywhere. No vendor lock-in.

Hydris Screenshot

Hydris connects heterogeneous sensors and command systems into a unified network. It provides real-time sensor fusion, automated track correlation, and coordinated response workflows - without replacing your existing systems. Built for defense, security, and civil use cases where your network of things spans kilometers, runs on battery, and can't always phone home.

  • Sensor Fusion - Correlate tracks from public sources, local sensors, peer nodes, and radio networks into one picture
  • Multi-Domain - Single architecture for CUAS, ground surveillance, maritime awareness, and space tracking
  • DDIL-Native - Peer-to-peer mesh keeps operating when disconnected, disrupted, or bandwidth-limited
  • C2 Integration - Push fused tracks into ATAK out of the box; military C2 connectors available as commercial extensions
  • API-First - Every capability accessible via gRPC/REST; integrate in hours, not months

Getting Started

Download hydris from https://github.com/projectqai/hydris/releases

./hydris

Open http://localhost:50051 in your browser. That's it.

To try a demo scenario (CUAS around Berlin with sensors and a tracked target):

bun examples/cuas/push-entities.ts

Builtin Integrations

Integration Config Key What It Does
ADS-B adsblol.location.v0 Aircraft tracking by location, callsign, or ICAO hex via adsb.lol
ADS-B Enrichment adsbdb.enrich.v0 Enriches aircraft tracks with registration, type, and operator data
Hex DB hexdb.enrich.v0 ICAO hex code lookups for aircraft identification
AIS ais.stream.v0 Maritime vessel tracking via NMEA AIS streams
ASTERIX asterix.receiver.v0 / asterix.sender.v0 EUROCONTROL CAT62 radar track ingestion and forwarding
TAK / CoT cot.server.v0 / cot.multicast.v0 Cursor on Target server for ATAK/WinTAK/iTAK interop
Meshtastic meshtastic.usb.v0 LoRa mesh radio bridge - positions, messages, and telemetry over off-grid networks
Space Track spacetrack.orbit.v0 Satellite tracking via TLE propagation (Starlink, Kuiper, custom)
Federation federation.push.v0 / federation.pull.v0 Node-to-node entity replication, optionally over WireGuard tunnels
Cameras (entity component) MJPEG, HLS, and static image feeds pinned to map locations

Example Config

Hydris is configured by pushing entities. You can do this via the API or by loading YAML files. Here's a maritime awareness setup with AIS tracking, aircraft monitoring, and a port camera:

id: ais-coastal
config:
    controller: ais
    key: ais.stream.v0
    value:
        host: 153.44.253.27
        port: 5631
        latitude: 53.55
        longitude: 9.93
        entity_expiry_seconds: 300
---
id: adsb-local
config:
    controller: adsblol
    key: adsblol.location.v0
    value:
        latitude: 53.55
        longitude: 9.93
        query_type: location
        radius_nm: 500
---
id: camera-port
label: Port Camera
geo:
    latitude: 53.557
    longitude: 9.795
camera:
    cameras:
        - label: Harbor View
          protocol: CameraProtocolHls
          url: https://example.com/stream.m3u8

Or use the TypeScript client to push entities programmatically:

import { WorldService } from "@projectqai/proto/world";
import { createClient } from "@connectrpc/connect";
import { createConnectTransport } from "@connectrpc/connect-web";

const transport = createConnectTransport({ baseUrl: "http://localhost:50051" });
const client = createClient(WorldService, transport);

await client.push({ changes: [{
    id: "my-sensor",
    geo: { latitude: 52.52, longitude: 13.40, altitude: 50 },
    symbol: { milStd2525C: "SFGPES----" },
}]});

Documentation

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
ais
controller
Package controller provides a framework for managing entity-driven connectors.
Package controller provides a framework for managing entity-driven connectors.
playground
Package playground is a builtin designed for frontend developers to test configuration UIs.
Package playground is a builtin designed for frontend developers to test configuration UIs.
tak
pkg
cot

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL