aura-distill

not what it remembers — how it learns

Claude Code remembers facts. This teaches it principles.

You correct Claude once. It should never make that mistake again — in any project, any session, forever.
That’s what this does. One slash command: /distill

brew install tomacco/aura-distill/aura-distill && aura-distill install

or: curl -sL …/install.sh | bashread it first if you’re the responsible kind.

curl -sL https://raw.githubusercontent.com/tomacco/aura-distill/main/install.sh | bash

also works via Homebrew on Linux. no sudo, writes only to ~/.claude/.

irm https://raw.githubusercontent.com/tomacco/aura-distill/main/install.ps1 | iex

PowerShell. no admin required, writes only to %USERPROFILE%\.claude\.

Star
if this saves you from explaining something twice, mash that star button. my self-worth depends on a number going up. una estrellita shurmano.
scroll
copied to clipboard
claude — ~/projects/backend
>_
Do you want to terminate running processes in this window?
Closing this window will terminate the running processes: node (2), claude, distill-agent, your-hopes-and-dreams.
How it works

Three steps. Zero config.

1
💬

Work normally

Express preferences, correct mistakes, teach things. Claude's built-in memory saves facts — distill watches for the deeper patterns behind them.

2
/

Type /distill

It traces corrections to first principles, not surface observations. "Don't use the shared factory" becomes "blast radius awareness" — applicable everywhere.

3

Principles compound

Next session — any project, any repo — Claude retrieves by relevance, not recency. Tiered storage means the right knowledge at the right time. How confidence works →

Measured

Vanilla Claude vs Distill-informed Claude

Same model. Same prompt. Same session. The only difference: 18 lines of retrieval rules + accumulated knowledge. A/B methodology →

Without distill
Implements retry logic as requested. No pushback. Helps execute the wrong thing perfectly.
With distill
“I won’t add retry logic for 404 responses. A 404 is a permanent failure — retrying won’t change the outcome.” Offers correct alternative.
Without distill
Drafts a deploy announcement for the wrong procedure. 1,211 characters of helpful-but-dangerous output.
With distill
“Hold on — deploy procedure was updated May 13 after the incident. Current steps: canary → staging → prod.” 355 characters.
Without distill
Writes the SQL query. Mentions coupling risk in a footnote: “you know your constraints.” Enables the mistake.
With distill
“This violates one-service-one-DB. The payments service owns that table.” Cites past mistake. Offers two correct alternatives.

convinced yet? no? keep scrolling, we have graphs.

What's different from memory.md

Principles, not observations

memory.md saves
"User said don't modify the shared factory"
Flat fact. No context for when it applies.
distill encodes
"Blast radius awareness: never modify shared infrastructure for one consumer"
First principle. Applies to any shared resource.
memory.md saves
"User prefers public methods at the top"
One rule. Lost in a flat file of 200 lines.
distill encodes
"Primera Plana: headlines at top, complexity in leaves. Non-negotiable."
Indexed, retrievable by domain, applied automatically.
Inspired by neuroscience

Memory that works like memory

Your brain doesn't dump everything in one file. It has short-term, long-term, and procedural memory with active consolidation. Distill does the same — in 18 lines of config, no dependencies. Retrieval research →

SPINE
Always loaded. Index pointers. The map.
80 lines max
ACTIVE KNOWLEDGE
Read on demand. One topic per file. Validated on every access.
60 lines/file
ARCHIVE
Compressed history. Promoted back when recalled. Never deleted.
unlimited
Global across all projects
Sub-agent — never consumes your context
Anti-sycophancy checks built in
Uninstall = delete one folder

still reading? you’re thorough. we respect that. the install script is too.

Non-negotiable

The Integrity Contract

Baked into the process. Cannot be overridden by mood, pushback, or preference. Anchoring bias research →

Never encode comfort as truth Never flatten standards Frustration = diagnostic signal Growth over comfort Honest ally, not yes-machine
Questions

FAQ

How is this different from Claude's built-in memory?

Claude's memory saves observations — flat facts in one file. Distill saves principles — structured knowledge retrieved by relevance. Think of it as the difference between writing notes and actually studying them.

Does it replace Claude's built-in memory?

Yes. Once installed, distill owns all persistent knowledge. It disables auto-memory and tells Claude to route everything through the distillation pipeline — where it gets anti-sycophancy checks, confidence tracking, proper categorization, and tiered storage. The built-in system saves flat observations. Distill saves validated principles.

Does it eat my context window?

Distillation runs in a spawned sub-agent. Your main session stays untouched. Retrieval costs ~18 lines loaded at session start (the rules file) plus whatever tier-2 files are relevant to your current task.

What makes retrieval "by relevance" work?

The SPINE is an index with relevance hooks: "read this file when working on Kafka consumers". Claude matches your current task to the right knowledge file. No embeddings, no vector DB — just well-organized pointers.

Is knowledge global across projects?

Yes. A principle learned debugging Kafka on Monday helps your React architecture on Wednesday. Different repos, same compounding intelligence.

“I keep telling it the same thing and it never remembers”

This is the problem distill was built to solve. When you correct Claude and it doesn’t stick, that’s not your fault — it’s a system failure. Distill treats repeated corrections as critical bugs in itself, not as you nagging.

Here’s what the escalation protocol does when it detects a pattern you’ve corrected before:

1. Elevate priority — the learning moves to the top of its file with a [HIGH] marker, making it harder to miss.
2. Strengthen the encoding — soft language like “consider using X” becomes “ALWAYS use X”. Ambiguity is what causes drift.
3. Cross-reference — the rule gets stored in two places (craft knowledge + user profile), so it’s loaded from multiple angles.
4. Promote to always-on — validated preferences sync to a file loaded every single session, before any code is written.

The principle: if you had to say it twice, the system failed to listen the first time. The fix is never “save it again the same way.” The fix is save it louder, in more places, with stronger language.

How do I uninstall?

rm -f ~/.claude/commands/distill.md ~/.claude/rules/distill.md ~/.claude/distill/distill-process.md ~/.claude/distill/distill-monitor.md ~/.claude/distill/.version
Your knowledge files in ~/.claude/distill/ are preserved — you only lose the engine, not what it learned.

View source on GitHub · Research & methodology

you made it to the bottom. that’s commitment. reward yourself with an install.