Documentation · v0.6

Developer docs.

Install, configure, and ship with Kernora. Everything here is open — fork it, file issues, send PRs. The Factlet protocol spec lives at github.com/factlet-ai/spec.

Install

One command. Auto-detects your IDE, builds a starter factbook from your repo, wires the MCP server. Runs entirely on your machine — no signup, no cloud account, no telemetry.

# macOS · Linux · WSL
curl -fsSL https://kernora.ai/install | sh

Note

Free tier is local-stdio only — zero bytes leave your machine, verifiable with tcpdump. Pro+ opts in to S3 sync and the hosted MCP relay at mcp.kernora.ai.

First run

Run nora init inside any repo. Nora scans your code, ADRs, tickets, and docs, builds a starter factbook in .nora/, and wires the MCP server to your installed editors.

cd ~/code/payments-api
nora init
→ Scanning repo for ADRs, tickets, conventions...
→ Found 18 candidate facts. Promoting 12 to canonical.
→ Detected editors: Cursor, VS Code, Claude Code.
→ MCP server registered. Restart your editor to activate.
✓ Factbook ready at .nora/factbook.jsonld

Editor integrations

Kernora ships with native integrations for the most common AI-assisted dev environments. Each integration is a thin MCP client — the factbook itself is identical.

EditorIntegrationStatus
Claude Code (CLI)--mcp-config .nora/mcp.jsonLive
CursorSettings → MCP Servers → add KernoraLive
VS Code (Copilot)Extension marketplace ↗Live · v2.7.0
KiroBuilt-in (v0.4+)Live
JetBrainsPlugin marketplaceBeta
ZedNative MCPIn development

Entry shape

Every fact in the factbook is a JSON-LD record. Plain markdown plus a structured index — sitting in .nora/ next to your code.

{
  "@id": "f234",
  "@type": "f:fact",
  "statement": "Stripe webhook handler must be idempotent via the event id.",
  "decided_on": "2026-03-12",
  "source": "docs/adr/018-webhook-idempotency.md",
  "supersedes": ["f009"],
  "applied": 42,
  "accept_rate": 0.94,
  "confidence": "canonical",
  "privacy": "team"
}

Trust ladder

Facts enter the factbook as proposed. The session analyzer promotes them after N applications without contradiction. You approve canonical from the dashboard.

StatePromotion ruleVisible to AI?
proposedJust extracted — awaiting evidenceNo
candidateApplied ≥3× without contradictionYes, with candidate badge
canonicalHuman approval from dashboardYes
supersededReplaced by newer fact, history preservedNo (chain visible)

Emit formats

Same factbook. Five surfaces. Pick the formats you need — Kernora regenerates them on every change.

nora emit --format claude-code
nora emit --format cursor-rules
nora emit --format kiro-steering
nora emit --format copilot-instructions
nora emit --format claude-auto-memory  # NEW · v0.6

Inspector — verify after it writes

Grounding gets the right facts into the model. Inspector checks what comes back out: it reads the agent's output against the factlets that apply and returns a verdict — so "looks right" becomes "provably conforms, or here's exactly what broke."

The evaluation engine (conformance_verifier.py) is deterministic wherever a factlet carries a verify block. Dispatch is by verify.kind:

verify.kindHow it decides
assertionA pure expression evaluated against the artifact — no eval/exec, just a sandboxed AST walk.
examplesgiven → expect cases; an uncovered boundary returns NEEDS_REVIEW, never a pass.
test_refRuns a referenced test through a caller-provided runner; flake or timeout → NEEDS_REVIEW.

Every run resolves to a closed verdict — PASS, FAIL, NEEDS_REVIEW, or NOT_APPLICABLE — and a FAIL carries a machine-readable rejection code plus the factlet it broke.

No synthetic passes. Where no deterministic oracle covers the artifact, Inspector returns NEEDS_REVIEW — it never fabricates a PASS from a model guess. Honesty over a green checkmark.

One engine, three cadences — a policy parameter, not three codebases: conformance (per change), compliance (evidence export), sweep (scan a whole repo).

Run it today: the live demo at trace.kernora.ai/inspector runs the engine on a real payload in your browser. An installed CLI gate, CI integration, and scheduled Sweep are on the roadmap.

Orchestrator runs the whole loop — ground → act → verify — with as much or as little human in it as your verification coverage earns. Today that means human-approves / human-reviews gates; fully unattended operation is on the roadmap.

Factlet protocol

The factbook is built on the open Factlet protocol. Five elements — f:fact, f:lineage, f:consent, f:confidence, f:emit — wired together with W3C PROV-O for lineage.

Your factbook is portable: an open spec, JSON-LD on disk, vendor-neutral. Switch tools, switch employers, switch models — the factbook moves with you.

MCP tools

Kernora exposes 50+ MCP tools. The core read surface works on every tier; mutation tools require Pro for team audit logs.

ToolPurposeTier
nora_lookupQuery facts by topic, tag, or pathFree
nora_citeResolve a citation ID to its source + lineageFree
nora_proposeAdd a candidate fact from session outputFree
nora_supersedeReplace a canonical fact (audit-logged)Pro
nora_consentSet egress tier on a factPro

nora_provenance

Return full PROV-O lineage for any citation. New in v0.6 — the tool that powers the inline citation chip in Nora Pro.

"name": "nora_provenance",
"input": { "fact_id": "f234" },
"output": {
  "statement": "...",
  "lineage": [
    { "role": "derivedFrom", "source": "docs/adr/018.md" },
    { "role": "supersedes",  "target": "f009" },
    { "role": "approvedBy", "agent": "alex@acme.dev", "at": "2026-03-22" }
  ],
  "confidence": 0.92
}

Team sync (Pro)

Pro adds encrypted S3 sync via the hosted relay at mcp.kernora.ai. Bring your own bucket; Kernora never holds the key. Per-fact egress consent is the default — you approve which facts cross the wire.

Heads up

Free remains local-stdio only. Sync is a Pro-tier opt-in, audit-logged at the policy level. If you need stronger isolation (BYO KMS, customer-managed VPC), ask us.

Security

BYOK end to end. On-device factbook. Per-fact egress consent. Audit log of every escalation. Built on the open Factlet protocol so you can verify the wire format yourself.

The install script is one line of sh — read it before you pipe it. The MCP server source is on GitHub. Run tcpdump on kernora.ai after install; on Free you'll see zero packets.

Telemetry

None on Free. On Nora Pro and Nora Team, telemetry is opt-in per category — crash reports, usage counts, model-routing stats — and listed in the dashboard with a one-click revoke. Nothing is sent without your consent; nothing identifies you by default.

Uninstall

One command:

kernora uninstall

This stops the daemon, removes ~/.kernora/, and unregisters the LaunchAgent.

Your .nora/ folder stays in your git repo — that's your data, you keep it. Re-running kernora install later picks up where you left off, with a fresh ~/.kernora/ cache.