Self-hostable RAG · built by InoGen

Turn your documents into a knowledge base that keeps its secrets.

Kilnworks is a self-hostable RAG assistant that enforces every document's access rules at retrieval — filtered by who's asking, before anything is ranked or shown. A five-minute Docker quickstart, a fully-offline mode, and your data never leaves your box.

$ docker compose up -d  — you're chatting your docs in five minutes

Access control that runs at retrieval, not as an afterthought.

Most RAG stacks bolt permissions on at the UI, after the model has already seen everything. Kilnworks tags every chunk with its source document's ACL and filters the vector search by the caller's identity before ranking. A user simply can't be answered from a document they aren't allowed to see — the model never receives it.

OIDC SSO maps your IdP groups straight to those ACLs.

See it work

A real conversation, cited from your own documents.

Screen recording of the Kilnworks chat UI answering a question with citations drawn from ingested documents
Live capture from the Kilnworks chat UI — docker compose up, then ask.

What comes out of the kiln

Production posture, not a demo.

flagship

ACLs enforced at retrieval

Every chunk carries its document's access tags; queries are filtered by caller identity before ranking. Permissions you can actually trust.

Five-minute quickstart

One docker compose up gets you Postgres + pgvector, a chat UI, and a job queue. Chatting your documents in minutes.

Fully offline

Run chat and embeddings entirely on local Ollama — no API keys, no data leaving your infrastructure. Air-gap friendly.

Multimodal ingestion

Text, PDF, DOCX, and tables parse offline. Images (OCR + vision) and audio/video (transcription with timestamps) are opt-in.

new

Live MCP connectors

Federate answers with read-only queries to Salesforce, Microsoft 365, ServiceNow, and HubSpot — cited, group-gated, queried fresh.

Per-user cost ledger

Every chat, embedding, and extraction call is metered per user — chargeback and budget visibility built in, not bolted on.

From clone to cited answer in one command.

Bring up the stack, create a user, and ask. Swap the API key for KILNWORKS_FAKE_PROVIDERS=true to try it fully offline first.

Apache-2.0 · Postgres + pgvector · CI-gated evals

# fire it up (or KILNWORKS_FAKE_PROVIDERS=true to go offline)
export KILNWORKS_OPENAI_API_KEY=sk-...
$ docker compose up -d --build
$ docker compose exec api kilnworks create-user you@co.com --password ...

# ask your documents — answers come back cited
$ curl localhost:8000/ask -H "authorization: Bearer $TOKEN" \
    -d '{"question":"What did we ship in Q3?"}'

Part of InoGen's open-source portfolio

Kilnworks ships alongside four read-only MCP connectors it can federate with — the same servers you can point any MCP client at.