Karajan family

kaRAGan

Point it at your code, docs or data. Get a queryable RAG in five minutes — with guarantees.

Local-first · zero runtime dependencies · three context strategies (rag / cag / hybrid) · your content never reaches a provider the sensitivity policy forbids

npm version

Paste it into your AI agent (Claude Code, Codex, Cursor). It checks your machine, installs what is missing, asks YOU the sensitivity question, and stops to wait for you whenever a step needs your permission.

Prefer the terminal? curl -fsSL https://rag.karajancode.com/install.sh | sh on Linux/macOS · irm https://rag.karajancode.com/install.ps1 | iex on Windows.

The gate, live

Your corpus decides which AI is allowed to answer

youkarajan-rag init .  →  sensitivity: internal
kj-ragindex .  →  128 files, 1,542 chunks — every chunk stamped with its level
youquery "where is the session token validated?" --answer --adapter claude
gate✗ BLOCKED — level "internal": adapter "claude" not allowed (allowed: ollama, private clouds)
kj-ragretrieved context = MAX level of its chunks — one internal chunk makes the whole answer internal
youquery "..." --answer  →  routed to ollama (local), PII redacted on the way
kj-rag✓ answered locally — src/auth/session.js:42 cited, nothing left your machine

Not a docs promise — it’s enforced in code. The green above is the only green on this page.

The engine

One corpus, three context strategies

The core decision of any retrieval system is what context travels to the model. kaRAGan doesn’t impose one answer — pick per query, same guarantees in all three.

--mode rag

Top-k chunks from hybrid retrieval (vector + BM25)

Large corpus, surgical questions. The default.

--mode cag

The whole corpus, as a deterministic, stable context — provider prompt-cache friendly

Corpus fits the window, questions need the full picture. Never silently truncated: it fits or it fails loud.

--mode hybrid

Whole files selected by retrieval — exclusions declared, never hidden

Chunks fall short but the corpus won’t fit. Retrieval picks, files travel whole.

APPROVED WITH RESERVATIONS

Independently reviewed — rejections included

The sensitivity policy and PII redactor went through three hostile review passes by a rival AI model. The first two verdicts were REJECTED — and every finding was fixed before 1.0.

All three reports are published verbatim, rejections and all: read the audit trail →

Want to know more?
  • One command per stageinit, index, query, serve, eval, doctor. Incremental reindex, hybrid retrieval (vector + BM25), file:line citations. RAG in 5 minutes →
  • Serve it anywhere — MCP server for Claude Code and agents, HTTP API with a built-in web playground to try rag/cag/hybrid from the browser (serve --http), or embed it with createRag() in Astro, Next or Fastify. Same RagService underneath.
  • Sensitivity-first — declare public / internal / confidential per corpus or path prefix; the policy routes every LLM call and the PII redactor runs in depth. Sensitivity, in depth →
  • To the cloud when you say so — one Terraform module deploys Cloud Run + pgvector + Secret Manager, private by default. Container and GCP →
  • 500+ tests. Stable 1.0 API. Open source (AGPL-3.0). See the repo →