Local Agent Architecture — Privacy & Encryption Specification

Local Agent Architecture — Privacy & Encryption Specification

TECHNICAL SPECPLANNED FEATURE

How Helios scans your home network without ever seeing your data

← Observation Mode

Privacy-First Design

Your home network data stays in your home.

The Helios Local Agent runs entirely on a device you own, on your local network. Scan results are encrypted with a key only your browser can derive before a single byte leaves your machine. The Helios server stores ciphertext it mathematically cannot read.

AES-256-GCM encryption
Scan runs on your LAN only
Server sees only ciphertext
No packet capture
MAC lookup is fully offline
Plaintext cleared on tab close
1. Agent starts on your machineOn your device only

You download and run the Helios Local Agent binary on any device connected to your home network. It binds to localhost only — no inbound ports are opened.

2. ARP sweep discovers devicesOn your device only

The agent sends ARP requests across your subnet (e.g. 192.168.1.0/24). Responses reveal which IP addresses are active and their MAC addresses. This traffic never leaves your LAN — it is a Layer 2 broadcast that routers do not forward.

3. Port scan & banner grabOn your device only

For each discovered device, the agent probes common ports (22, 23, 80, 443, 445, 3389, 5555, 8080, 8443, 1883…). Open ports are recorded. Service banners (HTTP headers, SSH version strings) are read to identify firmware and OS. All of this happens on your local network — no data is sent anywhere yet.

4. MAC OUI vendor lookup (offline)On your device only

The agent ships with a bundled copy of the IEEE OUI database (~6 MB). Vendor names are resolved entirely offline — no external DNS or API call is made. Your device MAC addresses never leave your machine.

5. Risk scoring & finding generationOn your device only

The agent applies a local rule engine to the collected data: open Telnet (port 23) → critical; ADB over Wi-Fi (port 5555) → medium; RDP exposed (port 3389) → high; etc. Scores and findings are computed in memory on your machine.

6. Results encrypted with your keyEncrypted before send

Before any data leaves your machine, the agent encrypts the full scan payload using AES-256-GCM. The encryption key is derived from your Helios session token using HKDF-SHA256. The server never sees the plaintext — it only ever stores the ciphertext blob.

7. Ciphertext uploaded to your sessionServer (ciphertext)

The encrypted blob is POSTed to /api/scan/upload with your X-Helios-Token header. The server validates your session, stores the ciphertext in the database under your tenant_id, and returns a scan ID. It cannot read the contents.

8. Browser decrypts & rendersOn your device only

Your browser fetches the ciphertext, derives the same AES-256-GCM key from your session token, decrypts the payload in memory using the Web Crypto API, and renders the dashboard. Plaintext exists only in your browser's JavaScript heap — never on disk, never in logs.

Collected (encrypted before storage)

Local IP addresses (e.g. 192.168.1.x)

Private RFC-1918 range only

MAC addresses

Used for vendor lookup; never stored in plaintext

Open TCP/UDP port numbers

0–65535 range; no payload data

Service banner strings

HTTP headers, SSH version — no credentials

Device hostnames (mDNS/NetBIOS)

As broadcast by the device itself

First seen / last seen timestamps

Local clock only

Never collected — ever

Passwords, credentials, or authentication tokens of any kind

Packet payloads — we probe ports, we never capture traffic

Browser history, cookies, or application data from your devices

File system contents from any device

Your public/external IP address

Location data or GPS coordinates

Any data from devices on other networks (guest, neighbour, cellular)

Biometric data of any kind

// Key derivation (HKDF-SHA256)

sessionToken → HKDF-SHA256(salt="helios-scan-v1", info=scanId) → 256-bit AES key

// Encryption (AES-256-GCM)

plaintext + randomNonce(96-bit) + aesKey → ciphertext + authTag(128-bit)

// What the server stores

{ nonce, ciphertext, authTag } ← server cannot decrypt without sessionToken

CipherAES-256-GCMAuthenticated encryption — tampering is detectable
Key derivationHKDF-SHA256From your session token; unique per scan session
IV / Nonce96-bit random (crypto.getRandomValues)Fresh nonce per encryption operation
Auth tag128-bit GCM tagVerifies ciphertext integrity before decryption
Key storageNever persisted — derived on demandExists only in memory during active session
Server accessZero — server stores ciphertext onlyFIELD_ENCRYPTION_KEY encrypts the blob at rest additionally
APIWeb Crypto API (SubtleCrypto)Browser-native; no third-party crypto library

Helios server is compromised

Server only holds AES-256-GCM ciphertext. Without your session-derived key, the data is computationally indistinguishable from random bytes.

Mitigated

Network eavesdropping (MITM on upload)

All API traffic uses TLS 1.3. The payload is also AES-256-GCM encrypted before transmission — double-encrypted in transit.

Mitigated

Another user on your Helios account sees your scan

Multi-tenant isolation: every scan is stored under your tenant_id. enforceTenantIsolation middleware blocks cross-tenant reads at the API layer.

Mitigated

Agent binary is tampered with

Releases are signed with a Helios code-signing certificate. SHA-256 checksums are published. The install script verifies the signature before executing.

Planned

Malware on your machine reads scan results from memory

This is outside our threat model — if your machine is compromised, all bets are off. We recommend running the agent on a dedicated Raspberry Pi on a separate VLAN.

Out of scope

Scan data persists in browser after session ends

Decrypted scan data is held only in React state (JavaScript heap). It is never written to localStorage, IndexedDB, or sessionStorage. Closing the tab clears it.

Mitigated
The local agent is in active development. The install commands below show the planned interface. The agent will be open-source and auditable before any public release.
macOS (Apple Silicon / Intel)PLANNED
$ curl -fsSL https://helioscsc.ai/agent/install.sh | bash

Installs helios-agent binary to /usr/local/bin. Requires macOS 12+.

Linux (x86_64 / ARM64)PLANNED
$ curl -fsSL https://helioscsc.ai/agent/install.sh | bash

Supports Ubuntu 20.04+, Debian 11+, Fedora 36+, Raspberry Pi OS.

Windows 10/11PLANNED
$ winget install HeliosCSC.LocalAgent

Installs as a background service. Requires PowerShell 5.1+.

Docker (any platform)PLANNED
$ docker run --net=host helioscsc/agent:latest

--net=host required for ARP access. Rootless mode supported.

Raspberry Pi (dedicated sensor)PLANNED
$ curl -fsSL https://helioscsc.ai/agent/rpi.sh | bash

Recommended for always-on passive monitoring. Pi 3B+ or newer.

Recommended: Dedicated Raspberry Pi sensor

For the strongest privacy posture, run the Helios agent on a dedicated Raspberry Pi (3B+ or newer) connected to your router via Ethernet. This keeps the agent isolated from your personal devices, gives it reliable ARP access, and lets it run 24/7 for continuous monitoring — without touching any of your laptops, phones, or work machines.

🔌 Wired Ethernet for reliable ARP🔒 Isolated from personal devices⏰ Always-on passive monitoring💰 ~$35 hardware cost

Questions about the architecture? The agent will be open-source and fully auditable.

← Back to Observation Mode