SECURITY

Trust is the product.

diagnosly runs on your machines and reads your telemetry. Here's exactly how we handle it — what stays local, what we encrypt, who can see what, and how to tell us if something looks off.

Last updated 2026-05-06

Data flow

The agent (observer-core, written in Rust) runs as a system service on each machine you manage. It reads PDH counters, Windows event logs, and ETW events locally, then sends a sanitised summary up to the gateway over TLS 1.3.

  1. Collect — telemetry stays on the machine until the next heartbeat.
  2. Scrub — a 13-rule PII scrubber removes usernames, hostnames, MACs, IPs, SIDs, emails, secrets, and BitLocker keys before any payload leaves the agent.
  3. Sign & send — payload is signed with the device token and posted to https://api.diagnosly.co.uk. Connection is HTTPS-only; certificate is pinned at the agent layer.
  4. Store — telemetry lands in Postgres with row-level isolation by tenant_id; case memory uses pgvector.
  5. Diagnose — only when an operator initiates a diagnose command does an LLM see the (already-sanitised) data, with a system prompt scoped to that tenant.

Telemetry is never sold, never used to train shared LLMs, and never leaves the gateway except via your own LLM provider (Anthropic, OpenAI, or self-hosted GLM) using your API key.

PII scrubber

Implemented in the Rust agent at the edge — before the network call. 13 regex rules match common PII shapes and replace them with stable placeholders so logs remain useful for debugging without containing identifiable data.

PatternExample matchReplacement
Email addressesalex@acme.com[email]
Windows usernamesC:\Users\alex.kim\DocumentsC:\Users\[user]\Documents
Hostnamesjamie-thinkpad-x1[host]
MAC addresses00:1A:2B:3C:4D:5E[mac]
IPv4 / IPv6192.168.10.42[ip]
Windows SIDsS-1-5-21-...[sid]
BitLocker recovery keys48-digit blocks[bitlocker-key]
API tokens / bearer headersAuthorization: Bearer ...Authorization: [redacted]

Per-rule hit counters surface in the dashboard so you can see what's being stripped. A separate gateway-side passthrough audit detects bypassed agents (any payload arriving with a recognisable PII shape flags the device for inspection).

Encryption

Identity

Identity is pluggable. Each tenant can enable any combination of:

Access control

Three roles — admin, operator, viewer. Every API endpoint declares its required role. Per-feature plan gates sit on top: paid features (group operations, prompt templates, install bundles, etc.) return HTTP 402 with a structured payload describing the required tier.

Audit

Every command, every diagnose, every script run, every settings change is written to a tenant-scoped audit log with the operator's identity, the action, the target, the result, and the timestamp. Retention is 90 days on Pro and 7 years on Enterprise.

The audit log is exportable as JSON (Pro) or streamed to your SIEM via webhook (Enterprise). Splunk, Datadog, and Elastic ingestion adapters are available on request.

Compliance

What we don't do

Reporting a vulnerability

Email security@diagnosly.co.uk with details and steps to reproduce. We aim to triage within 24 hours, ship a fix or mitigation within 7 days for high-severity issues, and credit the reporter (with permission) in our changelog.

For sensitive disclosures, request our PGP key in your initial email and we'll respond out-of-band.

We don't currently run a paid bug bounty, but we do say thank you properly — recognition + swag for valid reports.