What leaves your estate.
Exactly what Nexus sends off your infrastructure when it triages an incident, what it does not, and what is recorded so you can check. Written from the platform's enforced behaviour, not from its aspirations.
The short version
Triage reasoning happens on Kybit's own hardware. One second opinion is asked of Azure OpenAI in an EU region, and it is asked in pseudonymised form: network identifiers are replaced with stable tokens and the customer's name is replaced with a placeholder.
Pseudonymised is not anonymised. Account names, hostnames written as bare words, privilege group names, business-system names, ticket references and the analyst-readable narrative are sent as written. A tenant that cannot accept this is set to the policy none, and nothing leaves at all.
Three modes and their gates
Local
The model runs on Kybit hardware inside your estate.
Reasoning on Kybit hardware. Nothing leaves your estate.
- Reasoning
- Kybit hardware
- Second opinion
- None
- What leaves
- Nothing
- Tenant policy
- none
Hybrid
defaultThe model runs inside your estate. A cloud model reads a token summary.
A second opinion on a summary. Hostnames and addresses travel as tokens, never as themselves.
- Reasoning
- Kybit hardware
- Second opinion
- Azure OpenAI, EU region, pseudonymised summary
- What leaves
- A pseudonymised verdict summary
- Tenant policy
- pseudonymised (default)
Hosted
The model runs in the EU cloud, after your opt-in.
The full evidence, to a model hosted in the EU, only after you opt in.
- Reasoning
- EU-region hosted model
- Second opinion
- Hosted
- What leaves
- The raw evidence bundle
- Tenant policy
- hosted_raw
Hosted mode takes three independent gates, all default-deny: a deployment switch set in the environment, the tenant policy set to hosted_raw, and a recorded acknowledgement naming who accepted it and when. A database constraint refuses a tenant row that names a hosted provider without the last two. If any part is missing, the tenant falls back to local reasoning. A hosted provider selected without credentials errors rather than silently running locally.
The deployment switch lives in the environment, not the database, on purpose: restoring a backup, cloning a tenant into staging or redeploying an older configuration must not start an egress the operator of that environment never agreed to.
What leaves and what never does
For the second-opinion hop in hybrid mode, by data class:
Stays in your estate
- Customer or tenant name
- Replaced with a placeholder
- IPv4, IPv6, MAC addresses
- Replaced with stable tokens
- Email addresses, FQDNs, URLs, UNC hosts
- Replaced with stable tokens
- Usernames in profile paths
- Replaced with stable tokens
- Raw alert events
- Held back entirely
- Directory and identity context
- Held back entirely
- Vulnerability scanner context
- Held back entirely
- Correlated incidents, enrichment prose
- Held back entirely
- The token map
- Never leaves the host in any form
Crosses to the EU cloud
- Bare hostnames, account names in prose
- No pattern covers a single word
- Privilege group and business-system names
- Sent as written
- Ticket references, the incident narrative
- The narrative is the thing being reviewed
- MITRE IDs, CVEs, file hashes
- The judge cannot reason without them; hashes are one-way
- Kept deliberately.
Which fields may be sent is declared exhaustively in the agent's egress registry, and a field that is not classified does not compile. Every judge call runs an assertion that the payload is pseudonymised before it is sent.
Per-triage tokens
Token mapping is per triage. The same address gets the same token within one incident and a different one in the next, so the processor cannot correlate a host across incidents or across customers. The map that would reverse the tokens is kept on the host that made it and is never transmitted.
What is recorded on every decision
- The egress policy in force for the tenant at the time.
- Whether the judge was actually called, and which one.
- Token counts in and out.
- A fingerprint of the token mapping that pins which mapping was used without retaining it.
What is not built yet
A per-call egress ledger: one append-only row per off-box request with tenant, provider, region, payload hash and size. Today the decision record is written once per incident, so a re-triage overwrites it and a retried call is two requests against one row. When a customer asks what left their estate, that question deserves a query behind it rather than a narrative. It is the next item on this work, and this page will say so when it ships.
Platform security
- Tenant isolation by row-level security in PostgreSQL, identical across all three services.
- Argon2id password hashing; SSO and SAML with encrypted configuration.
- Nonce-based content security policy on every response.
- Break-glass overrides that expire, cannot be self-granted and are audited.
- Sliding-window rate limits on login by address and by account.
- A security test suite covering row-level isolation, SQL injection vectors, replay and CSP; load tests to 500 concurrent virtual users.
- The agent has no route to execute a playbook. The most it can do is write one advisory row; execution sits behind role checks and approvals elsewhere.
- A kill switch checked before any autonomous claim, and an append-only investigation trace.
Deployment
- On-premises with Docker Compose, on your hardware or Kybit's.
- Production high availability: Patroni for PostgreSQL, PgBouncer, keepalived, HAProxy with TLS termination.
- A dedicated inference node running Ollama, reachable only on the LAN; the agent refuses an off-premises reasoning endpoint at configuration load unless the operator explicitly trusts that address range.
- An Azure development deployment defined in Bicep.
Request a demo, or ask for the DPA and the questionnaire answers.