Collector architecture and roadmap
Why the collector is built in Go, the outbound mTLS trust model, its module system, and the phased roadmap.
Overview
The collector is designed as a small, single static binary that runs unattended on customer infrastructure with no inbound network exposure. Its architecture prioritizes a minimal attack surface, predictable resource use, and a clean separation between discovery/assessment modules and the trust relationship with the AssurIQ control plane.
Why Go
The initial collector implementation is built in Go. Go compiles to small, dependency-free static binaries, cross-compiles cleanly to the target operating systems and architectures without a separate build environment per platform, and its goroutine model suits the highly concurrent, I/O-bound nature of network discovery, SNMP polling and parallel target probing.
- Static binaries simplify distribution: no runtime, interpreter or shared library dependencies on the target host.
- Cross-compilation from a single toolchain supports Windows, Linux and future architectures from the same codebase.
- Lightweight concurrency primitives make it straightforward to poll many targets in parallel within a bounded concurrency limit.
Outbound trust model
The collector never accepts inbound connections. It enrolls once using a random, single-use, short-lived token — of which the control plane only ever stores a SHA-256 hash — and exchanges that token for a permanent collector credential. Today that credential is used as a bearer token over HTTPS; the designed target model is a per-collector mutual TLS device certificate, issued and rotated by the control plane, with the current transport implementation marked as a mock of that model pending full certificate lifecycle tooling.
Module system
Collector functionality is organized as discrete modules, each responsible for one kind of evidence or discovery activity. A given deployment runs only the modules relevant to its scope; not every module needs to be enabled at every site.
| Module | Purpose |
|---|---|
| Core Heartbeat | Liveness, version reporting and enrollment lifecycle — always active |
| Network Discovery | ARP/ICMP sweeps and host seeding |
| Host Inventory | OS, software and hardware inventory |
| Port/Service Discovery | Open ports and service fingerprinting |
| SNMP Discovery | Polling network devices via SNMPv2c/v3 |
| LLDP/CDP Enrichment | Neighbor-protocol topology building |
| DNS/DHCP Enrichment | Hostname and lease correlation |
| Vulnerability Probe | Authenticated and unauthenticated vulnerability checks |
| Configuration Collection | Device configuration backup and diffing |
| Syslog Receiver | Ingest of forwarded device logs |
| Flow Receiver | NetFlow/sFlow/IPFIX ingestion |
| Active Directory Assessment | On-prem AD hygiene checks |
| Local Evidence Collection | Host-local compliance artifacts |
Roadmap
The collector is being built out in phases, moving from a working outbound-only agent with bearer-token trust toward the fully designed mTLS device-identity model and broader platform coverage.
| Phase | Focus |
|---|---|
| Phase A | Outbound-only enrollment and heartbeat, core discovery modules, Windows/Linux/Docker x64 packages |
| Phase B | Full mTLS device-certificate issuance and rotation replacing the current bearer-token transport; expanded module coverage |
| Phase C | ARM64 packages for Windows and Linux; hardened VM appliance |
| Phase D | Broader fleet-management tooling: staged rollout rings, richer health telemetry, and deeper module plugin ecosystem |