For the complete documentation index, see llms.txt. Markdown versions are available by appending .md to page URLs.
Lookout is a local-first security observability system for private networks. It discovers the environment, collects security evidence from hosts, network systems, and services, evaluates which detections the available evidence can support, and produces evidence-backed Alerts and Incidents.
It is designed for environments where security data cannot be treated as a generic cloud log stream. A deployment may contain Linux servers, Tailscale nodes, databases, SaaS services, mobile devices, appliances, and systems that provide only partial telemetry. Lookout represents all of them in one security model and shows where detection coverage is complete, degraded, or unavailable.
What Lookout does
A typical deployment performs the following work:- Discovers assets, services, identities, network paths, and available telemetry sources.
- Installs and enrolls collectors on supported Linux endpoints using identity-pinned administrative access.
- Collects Linux journald and audit evidence, inventory, service state, listening sockets, identity metadata, and security-control health.
- Reads supported Tailscale inventory, configuration-audit, and network-flow data through read-only access.
- Accepts Zeek, syslog, OpenTelemetry, and service-specific records through normalizers.
- Builds a typed security graph and calculates detection coverage from actual capabilities.
- Evaluates deterministic rules and bounded behavioral baselines.
- Correlates findings into Alerts and Incidents with evidence, affected systems, confidence, and review state.
- Presents local state through the API and optionally synchronizes a raw-log-free summary to the SaaS console.
System architecture
Example workflow
Assume a new service starts listening on a Linux host. The recurring survey detects the listener and records its bind scope and service identity. The graph links the service to its host, network zone, owner, and available telemetry. The detection planner checks whether the required service-state, network, identity, and sensor-health capabilities are present. If the change matches an enabled rule, Lookout stores the finding, attaches the supporting evidence, applies Alert policy, and correlates it with related findings. If a required capability is missing, the detection plan reports the gap instead of reporting full coverage.Security graph
The graph ontology includes:- Assets, services, software, identities, and credential metadata
- Network zones, paths, exposures, and cloud resources
- Telemetry sources and security controls
runs, stores, administers, authenticates_to, reachable_from, observed_by, and protected_by.
Adapters submit validated facts. Each fact contains provenance, observation time, confidence, and source ownership. Stable identifiers and deterministic sorting make graph materialization reproducible. Conflicting claims are resolved by confidence, observation time, and fact ID. Lower-priority claims remain available as provenance.
The graph stores credential metadata and secret-manager references, never credential values.
Adapters and collection
The current production profile includes:- A read-only Tailscale adapter
- A Linux endpoint collector
- Passive network formats
- Generic service ingestion
- Explicit-declaration survey input
- Zeek
- RFC 5424 syslog
- OpenTelemetry logs
- Tailscale network-flow and configuration-audit logs
- Linux journald and audit records
Event pipeline
All normalized events use a common envelope containing event time, ingest time, site, sensor, category, actor, source and target entities, action, outcome, and optional session, flow, or process correlation keys. Events are stored in an append-only JSONL journal. EventStore provides:- Schema validation
- Deduplication
- Monotonic sequence numbers
- SHA-256 consistency chaining
- Time, category, and entity queries
- Retention compaction
Detection planning
Each behavior declares required entities, relationships, event fields, time windows, ordering requirements, and sensor capabilities. The planner evaluates those requirements against the current graph and collector health. Each analytic is reported as:full: required evidence is availablepartial: some evidence is available, but coverage is incompletegap: minimum evidence is unavailable
Detection engine
Built-in deterministic rules support three types:- Event matching
- Threshold evaluation over a bounded window
- Ordered sequence matching over a bounded window
Behavioral analytics
Behavioral analytics are explainable and bounded. Current models cover:- Identity to authentication target
- Host to executable
- Process to destination
- Identity to privilege target
- Identity to protected resource
- Identity hour-of-week activity
- Peer-group executable usage
- Endpoint to network peer
- Resource to data destination
- Endpoint egress volume
Storage and security controls
The local deployment stores graph snapshots, events, detection state, cases, baselines, imported rules, collector state, export state, and a separate API audit journal. The API uses bearer credentials stored as SHA-256 hashes and maps principals to least-privilege roles, includingconsole, viewer, ingestor, collector, analyst, rule_admin, and admin. Authenticated API activity is recorded in the audit journal.
When enabled, storage encryption uses AES-256-GCM. Encrypted backups support graph, event, audit, detection, collector, and export state. Files are created in owner-only directories with restrictive permissions. Snapshot digests and journal chains detect corruption. Key custody and host hardening remain deployment responsibilities.
Onboarding and fleet installation
SaaS onboarding uses a provider-neutral HTTPS setup-session protocol:- The authenticated browser creates a short-lived single-use setup token bound to its trusted tenant and user, then embeds it in the agent prompt.
- A lightweight bootstrap reports
Connectedbefore downloading the release, without consuming the claim token. - The current agent terminal performs parallel authoritative read-only provider discovery and selects a central Linux VM deterministically.
- The installer claims the exact discovered scope and starts provider-native remote deployment without requiring a scope file or first connecting to a VM.
- The installer consumes the token with its Ed25519 deployment identity and the approved scope. The service returns the exact normalized scope.
- The installer generates a separate temporary restricted SSH key for fallback access only.
- The service releases provisioning only after deployment-identity signature verification.
- The fleet installer probes, enrolls, surveys, configures, and validates only VMs from the returned scope.
- The installer removes the exact temporary SSH authorization from reached hosts, and the browser redirects automatically.
- The dashboard prompts the operator to connect alert notifications.
- Missing central heartbeats create dashboard and email notifications plus a single-use recovery token. Recovery retains the deployment identity and forces collector re-enrollment.
Console and export boundary
The versioned API exposes graph, console snapshot, detection plan, behaviors, rules, events, collector submissions, Alerts, and Incidents. The SaaS console receives a compact, raw-log-free projection containing topology, coverage, Alert and Incident summaries, and sensor health. Console sync uses a durable HTTPS outbox, bounded batches, stable idempotency keys, and retry handling. Cloud export is a separate opt-in policy. It filters records before queueing, removes non-allowlisted attributes, and uses durable retry. Permanent delivery errors enter a blocked state. Local ingestion and detection continue when export fails. Alert webhooks are independent of raw-event export. They deliver Alert summaries through HTTPS using an allowlisted credential reference, durable outbox, idempotency keys, cooldown handling, and bounded retry.Validation
lookout validate-detection-pipeline validates every built-in deterministic rule using isolated state, production normalizers, capability planning, durable ingestion, detection, and Alert policy. Each malicious scenario includes a benign near-miss.
validate-live-linux performs controlled SSH and ephemeral-listener actions against an enrolled collector and verifies a fresh Alert through the installed collector-to-server path. It does not modify accounts, credentials, installed services, routes, security controls, existing logs, backups, MFA, or cloud resources.
Pipeline validation does not prove complete production coverage. The detection plan and sensor health remain the source of truth for whether required evidence is available in a deployment.