We ask for kernel-level access. Here is exactly what we do with it.
Falak Neo runs inside your kernel and reads your workloads' behaviour. That is a serious amount of trust to ask for, so this page is specific rather than reassuring: what we collect, where it is stored, who can reach it, and what the architecture does to make a mistake on our side survivable.
Architecture
Isolation is structural, not procedural
Tenancy is derived, never asserted
A sensor cannot choose which tenant it reports to. The tenant is bound to the mTLS peer identity or the signed enrollment token, and core overwrites whatever a client claims before the event reaches storage. The console has no code path that reads a tenant id from a request.
Mutual TLS on every sensor connection
Enrollment exchanges a one-time token for a Falak-issued client certificate, or a SPIFFE SVID where SPIRE is deployed. There is no bearer-token-only path to the ingest surface, and certificates carry an expiry that forces rotation.
Response actions are signed and expiring
The console can request a kill, an isolation or a quarantine. Core signs it and stamps an expiry; the sensor verifies the signature against the core CA and refuses anything unsigned, expired, or addressed to a different agent. A compromised console session cannot execute across a fleet.
Events and state are separated
OCSF event bodies live in ClickHouse, partitioned by tenant. Mutable application state — triage status, policy, membership — lives in PostgreSQL, with a tenant column and a tenant-prefixed index on every table. No table stores both.
Credentials are hashed or referenced, never stored
API keys and enrollment tokens are stored as SHA-256 digests with a non-secret display prefix; the plaintext is shown exactly once. Integration secrets are stored as a reference into a secret store, not as a value in our database.
Least privilege on the node
The sensor needs CAP_BPF and CAP_PERFMON, hostPID for cgroup resolution, and a read-only CRI socket mount. It does not need full privilege, it does not write to your workloads, and it never loads code it did not ship with.
Data handling
What we hold, where, and for how long
If a row below is not acceptable for your environment, tell us before you deploy — several of them are configurable, and the rest are honest constraints rather than defaults.
| Data | Where | Retention | Notes |
|---|---|---|---|
| Process, file, network, DNS and kernel events | ClickHouse, tenant-partitioned, in your chosen region | Plan hot window (30 / 90 / custom days) | Command lines and file paths are included. Environment variables are collected only when explicitly enabled by policy. |
| Detection findings | ClickHouse (document) + PostgreSQL (triage state) | Hot window; triage state retained for the contract term | The finding document is the evidence; the triage row is your team's decisions about it. |
| Sensor inventory and health | PostgreSQL | Contract term | Hostname, kernel, distribution, cloud instance id, probe attachment state, resource usage. |
| Console user accounts | PostgreSQL | Contract term + 30 days | Email, display name, Argon2id password hash or SSO subject. No profile enrichment. |
| Audit log | PostgreSQL, append-only | 13 months minimum | Actor, action, target, outcome, IP and user agent for every privileged operation, including denials. |
| Cold archive | Object storage in the tenant's region, OCSF parquet | Plan cold window | Optional. Encrypted with a per-tenant key. Export is available on every plan. |
What the sensor does not collect
- — File contents. Paths, metadata and hashes only.
- — Network payloads. Endpoints, volumes, TLS metadata and DNS names only.
- — Keystrokes, screen contents, or anything resembling user monitoring.
- — Environment variables, unless a policy explicitly enables it for a probe.
- — Anything from a namespace your policy excludes.
Customer data and machine learning
Your events are never used to train models, ours or anyone else's. The AI analyst retrieves from your tenant only, at request time, and there is no shared or cross-tenant index. The feature is a per-tenant setting and it is off until you turn it on.
Controls
Operational security
Encryption in transit
TLS 1.3 everywhere. Mutual TLS on the sensor-to-core path. HSTS on all web surfaces.
Encryption at rest
AES-256 on all volumes and object storage, with per-tenant keys for the cold archive.
Access control
Five console roles enforced in the console and re-checked by core. SSO and SCIM on Business and above.
Session handling
12-hour JWT sessions, MFA enforceable per tenant, immediate revocation on role removal.
Audit trail
Append-only, actor-denormalised so it survives user deletion. Exportable to your SIEM.
Change management
Every core and sensor release is signed, reproducible, and accompanied by an SBOM.
Compliance posture
We would rather tell you where we are than imply where we are not. SOC 2 Type II is in progress with an observation window closing this year; ISO 27001 follows. GDPR: we act as processor for security telemetry, with a DPA and SCCs available on request. A full security questionnaire response, our penetration test summary and the current SBOM are available under NDA.
Request the security packageSub-processors
Amazon Web Services
Compute, storage and networking for the managed service
eu-central-1, us-east-1
Cloudflare
CDN, DNS and DDoS protection for web surfaces
Global edge
Stripe
Payment processing for self-serve plans
US / EU
Postmark
Transactional email (invitations, alerts)
US
Self-hosted deployments have no sub-processors — nothing leaves your infrastructure.
Disclosure
Reporting a vulnerability
Email security@vax.sh with a description and reproduction steps. Please do not open a public issue. We acknowledge within two business days and aim to ship a fix or a mitigation within 30 days for high severity, 90 for the rest.
We do not run a paid bounty yet. We do credit reporters in the release notes unless you would rather we did not, and we will never threaten legal action against research conducted in good faith against your own deployment or our test environment.
Security advisories are published to the changelog and to the GitHub security advisory feed for the sensor and core.