Security & data handling
The design principle: Normik should know your standards, not your code.
The data path
- Your CI (or agent) sends the diff — never the whole repository.
- Normik builds a prompt from the diff and your applicable rules, and calls your AI provider with your key.
- The verdict comes back; the diff is discarded. It is never written to disk or database.
Your code transits through Normik in memory and through your own model provider — the same provider your team already sends code to when using AI assistants.
What Normik stores
| Stored | Not stored |
|---|---|
| Your playbook and skills · analysis outcomes (rules checked, violations with path/line/comment) · check reports from agents · token usage counts · the audit log · member and billing data | Your source code or diffs · your repository structure · anything from repositories not sent through the gate |
Violations do quote the offending line reference (path, line number, reviewer comment) — that is the product. If a rule statement itself is sensitive, scope who can see the playbook via membership.
Keys and tokens
- AI provider keys are encrypted at rest with AES-256-GCM and never displayed again after saving — only the last four characters are shown.
- Workspace tokens (
nmk_…) are stored as SHA-256 hashes; the plaintext is shown exactly once at creation. Revocation is immediate. - Multi-tenant isolation is enforced at the query layer: every domain query is scoped by the organization from the session — never from request parameters.
Fail-open, and why
If Normik or your model provider is unavailable, the CI gate passes with an explanation instead of blocking your merges. We consider availability incidents our problem, not a reason to stop your delivery. Blocking is strictly reserved for error-severity violations found in your code.
Billing data
Payments are processed by Stripe; Normik never sees card numbers. Subscriptions are attached to the organization.
Honest limits
- Normik is not SOC 2 certified today and does not offer self-hosting. If those are hard requirements, we'd rather tell you now — see how we compare.
- LLM judgment is probabilistic. Guardrails (only added lines, only existing rules, false-positive feedback) bound it, but no AI reviewer is infallible — that's why severity and fail-open exist.