LemursEye
Documentation
Platform

Architecture

The event spine every feature reads from.

LemursEye is one deployable platform built around a stream of vehicle events. Every feature, from the live map to the digest to the ERP connector, is a consumer of that stream, which is why a new module never needs a new integration.

Components

ComponentRole
BridgeA Traccar server that decodes 200+ tracker protocols into one canonical telemetry record and publishes it
KafkaThe event spine: decoded telemetry in, enriched events out
PipelineEnriches telemetry (device to vehicle to tenant, status), segments trips and stops, evaluates rules, keeps live state
CoreThe API, tenancy, settings, money, digest, modules; what the console and the app talk to
TimescaleDBPositions as a time-series hypertable; trips, stops, alerts, settings
ValkeyLatest position per vehicle for the live map; alert cooldowns; the live pub/sub channel
KeycloakIdentity: login, tokens, the tenant claim
EdgeTLS termination and routing for the console, API, socket and login

Multi-tenancy

Each customer is a tenant. The tenant travels inside the signed login token and every database query is scoped by row-level security at the database itself, not only in application code. A user without a tenant claim is refused.

Native images

Core and pipeline run as native executables (GraalVM), starting in about a second and using tens of megabytes at rest. Images are built by CI on a tag and pulled by the server.