Folio.

A friendlier way to read your docs

Ask your docs.
Get cited answers.

Folio is a self-hosted RAG bot for your team's Markdown. Hybrid retrieval, footnoted citations, and Slack & web UIs — no third-party data egress, no LangChain.

2
modules
19
documents
281
chunks indexed

Why teams pick Folio

Cited, not made up

Every answer footnotes the chunks it came from. Click a citation to see the exact source. No hallucinations slip past.

Hybrid retrieval

Vector + BM25, fused with reciprocal-rank fusion. Catches both semantic matches and exact keyword hits without a separate reranker step.

Self-hosted, your stack

Three Docker containers behind your nginx. Postgres + pgvector holds the index. Gemini or AWS Bedrock powers the chat — switch providers with one env var.

Slack-native

Socket Mode bot — no public URL, no ngrok. Mention @Folio in a channel or DM it directly. 👍/👎 ratings under every answer.

In-process re-indexing

A built-in cron re-walks your docs on a schedule, embedding only what changed. Manual-sync button in the account menu for ad-hoc triggers.

No agent framework

Plain NestJS. No LangChain, no LangGraph, no auto-pilot. You can read every line of the retrieval and prompting code in an afternoon.

How it works

  1. Ingest — Folio walks your Markdown folder, chunks heading-aware (~500 tokens, 75 overlap), and embeds each chunk with Gemini or Bedrock.
  2. Retrieve — at query time, the embedder runs the question, BM25 runs the same question against the chunk text, and reciprocal-rank fusion merges the two leaderboards.
  3. Generate — the top chunks become the LLM's context. The system prompt forbids answering from anywhere else, so the model has to cite or say "I don't know".
  4. Cite — the response footnotes the chunks it quoted. The web UI renders them as collapsible source cards with the original heading path.

Ready to chat with your docs?

Sign in to open the chat playground.

Sign in