Distillery

Team Knowledge, Distilled

A team knowledge base powered by Claude Code

Teams create knowledge.
Then lose it.

Knowledge gets created, then lost. Decisions get relitigated. New hires ramp slower.

The problem isn't generating knowledge. It's retaining it.

What if your AI coding tool
was also your team's memory?

Capture

Knowledge flows from where work happens — no context switching

Classify

LLM auto-classifies entries with confidence scoring and team review

Retrieve

Semantic search and multi-entry synthesis — not keyword matching

Capture knowledge where work happens. Retrieve it when you need it.

How it works

You work in
Claude Code
/distill
captures knowledge
Dedup check
skip / merge / link / create
Classify
type + confidence
Stored in KB
embedded + indexed
A question arises
/recall or /pour
Semantic search
vector similarity
Answer with
sources + citations

10 conversational commands

SkillPurposeExample
/distill Capture session knowledge /distill "We chose Redis for caching"
/recall Semantic search /recall distributed caching strategies
/pour Multi-entry synthesis /pour how does our auth system work?
/bookmark Save URLs with summaries /bookmark https://... #caching
/minutes Meeting notes + updates /minutes --update standup-2026-03-22
/classify Classify & triage queue /classify --inbox
/watch Manage feed sources /watch add github:duckdb/duckdb
/radar Ambient digest + suggestions /radar --days 7
/tune Adjust relevance thresholds /tune --digest 0.40
/setup Onboarding wizard /setup

Live demo — hosted MCP

Direct connection to https://distillery-mcp.fly.dev/mcp

distillery — live knowledge base
idle
Click a button above or type a query and press Search.

Deep synthesis with /pour

Multi-pass retrieval builds the complete picture

> /pour how does our caching strategy work? # Pass 1: 8 entries (broad semantic search) # Pass 2: 4 entries (follow-up on "Redis", "CDN") # Pass 3: 2 entries (gap-fill on "Varnish evaluation") 12 unique entries across 3 passes ## Summary The team's caching strategy evolved over the past month. Redis was selected for session caching [Entry abc123] after evaluating Memcached [Entry jkl445]... ## Key Decisions + Redis over Memcached for session cache (norrie, Mar 22) + Varnish rejected for API caching (norrie, Mar 15) ## Knowledge Gaps - No entries about cache warming strategy - Single perspective on Redis decision

Semantic deduplication

Keeps the knowledge base clean as it grows

Score ≥ 0.95 — Skip

"This is already captured. Don't store."

Score 0.80 – 0.95 — Merge

"Overlaps with existing entry. Merge new details in?"

Score 0.60 – 0.80 — Link

"Related content exists. Store and cross-reference."

Score < 0.60 — Create

"Novel knowledge. Store as new entry."

> /distill "We're using Redis for caching" Duplicate detected (similarity: 0.97) Existing entry abc12345: "Decided to use Redis for session caching..." Options: 1. Skip (don't store) 2. Merge new details into existing 3. Store anyway as separate entry

Intelligent classification

LLM-powered type assignment with team review for low confidence

Auto-classify

Every entry gets one of 12 types (session, bookmark, minutes, meeting, reference, idea, inbox, person, project, digest, github, feed) with a confidence score.

Confidence ≥ 60% → Active

Confidence < 60% → Review Queue

Team review

Low-confidence entries enter a triage queue. Any team member can approve, reclassify, or archive.

> /classify --review Review Queue (3 entries) 1. "Discussed Stripe webhook retry..." Type: session (54%) Reason: Contains decisions but also resembles meeting notes [a]pprove [r]eclassify [x] archive > r > New type: minutes Reclassified and approved. Summary: 2 approved, 1 reclassified

Architecture

Claude Code
/distill /recall /pour /bookmark /minutes /classify /watch /radar /tune /setup
MCP Server
FastMCP 2.x/3.x · stdio + streamable-HTTP · 18 tools · REST webhooks
GitHub OAuth
OrgRestricted provider
Middleware · Budget
Core Protocols
DistilleryStore
EmbeddingProvider
Feed System
GitHub · RSS adapters
Poller · Scorer
DuckDB + VSS
HNSW cosine similarity
Vector search + SQL
Embedding
Jina v3 / OpenAI
Configurable provider
Classification
LLM engine + Dedup
Conflicts + Tag validation

Skills are markdown
SKILL.md files, not code

Storage is swappable
DuckDB now, ES later

Embeddings are configurable
Jina v3, OpenAI, or stub

Team Access

Connect your team via HTTP + GitHub OAuth

# Operator: start the HTTP server $ distillery-mcp --transport http --port 8000 # Team member: add to ~/.claude/settings.json { "mcpServers": { "distillery": { "url": "https://your-host.example.com/mcp", "transport": "http" } } } # First use opens GitHub OAuth in browser Authenticated as @alice via GitHub

GitHub OAuth
FastMCP GitHubProvider
OAuth 2.1 + PKCE

Shared storage
MotherDuck (md:)
or S3-backed DuckDB

stdio unchanged
Local mode works
exactly as before

Note: distillery-mcp.fly.dev is a demo server — do not store sensitive data. Deploy your own instance for production use.

By the numbers

10
Claude Code skills
22
MCP server tools
1100+
tests passing
2
deploy targets

Knowledge

  • /distill, /recall, /pour
  • /bookmark, /minutes, /classify
  • LLM classification + semantic dedup

Ambient Intelligence

  • /radar, /watch, /tune
  • GitHub + RSS feed polling
  • Embedding-based relevance scoring

Team & Ops

  • HTTP transport + GitHub OAuth
  • Fly.io + Prefect Horizon
  • Rate limiting, budget tracking

What's shipped

Core Platform

  • 10 skills, 22 MCP tools
  • DuckDB + HNSW vector search
  • LLM classification + semantic dedup
  • Retrieval quality metrics + stale detection
  • Hierarchical tag namespaces
  • 1100+ tests, mypy strict, 80% coverage

Team & Infrastructure

  • HTTP transport + GitHub OAuth
  • Fly.io + Prefect Horizon deployments
  • MotherDuck shared storage
  • Request middleware (rate limiting, logging)
  • Embedding budget tracking
  • SIGTERM/WAL handling, OAuth persistence

Ambient Intelligence

  • Feed polling (GitHub + RSS)
  • Embedding-based relevance scoring
  • Interest extraction + source suggestions
  • /radar · /watch · /tune

Plugin & Distribution

  • Claude Code plugin manifest
  • Marketplace install (claude plugin install)
  • /setup onboarding wizard
  • Input sanitization + security hardening

What's next

Team Skills

/whoisEvidence-backed expertise map
/investigateDeep domain context builder
/digestTeam activity summaries
/briefingTeam knowledge dashboard
/processBatch classify + stale detection
/gh-syncGitHub issue/PR tracking

Infrastructure

  • Access control
    Team/private visibility flag
  • Elasticsearch migration
    Hybrid search (BM25 + kNN + RRF), ES|QL analytics
  • More feed adapters
    Slack, Hacker News, webhooks
  • Session capture hooks
    Auto-distill on session end
  • Provenance tracking
    Full version history, source chain

What makes this different

Traditional Knowledge Base

  • Separate app to switch to
  • Manual categorization
  • Keyword search
  • Flat document list
  • Grows noisy over time
  • Individual silos
  • Passive

Distillery

  • Lives inside Claude Code
  • LLM auto-classification
  • Semantic vector search
  • Multi-pass synthesis with citations
  • Semantic dedup keeps it clean
  • Team-shared by default
  • Watches external sources for you

Distillery

Refine raw information into concentrated team knowledge.

Start capturing knowledge where work happens. No separate app. No context switching.

Deploy for a single user in minutes. Scale to your team when ready.

Install

claude plugin install distillery

Get Started

/setup

Documentation

norrietaylor.github.io/distillery