Radioheader
Cross-project memory sharing for Claude Code β search, apply, and trace experience across all your projects
Ask AI about Radioheader
Powered by Claude Β· Grounded in docs
I know everything about Radioheader. Ask me about installation, configuration, usage, or troubleshooting.
0/500
Reviews
Documentation
RadioHeader
Cross-project memory for coding agents β stop re-solving bugs you already fixed in another project.
You: App shows white screen for 10+ seconds on launch
Claude: RadioHeader has experience from ProjectA:
"Task {} in SwiftUI .onAppear inherits Main Actor β
iCloud I/O blocks main thread, causing 10s+ white screen.
Fix: use Task.detached(priority:)"
Verifying this applies here... β Same pattern. Applying fix.
One install. Works on Claude Code, Codex CLI, and any MCP-compatible agent. Zero config.
δΈζζζ‘£ Β· How It Works Β· MCP Server Β· Lessons Learned
What it does
Coding agents are great at analysis but don't accumulate experience. Even with built-in memory, project memories are completely isolated: what Project A learned, Project B has no idea about.
RadioHeader solves this with three mechanisms:
| Mechanism | What it does |
|---|---|
| Echo | After each task, experience flows back from the project into the global memory hub β automatically, via hooks |
| Search β Apply β Trace | A mandatory behavioral rule injected into CLAUDE.md / AGENTS.md. The agent must search before starting independent analysis, must cite what it finds, and is prohibited from ignoring matching experience |
| Shortwave | Strips project names, file paths, and framework details from experience entries, producing universal knowledge units searchable across any tech stack |
The result: the second time any agent in any project hits a similar problem, the answer is already there. Minutes to seconds.
What RadioHeader adds to coding agents
| Capability | Without RadioHeader | With RadioHeader |
|---|---|---|
| Cross-project experience | Each project is an island | Experience from 12+ projects flows to wherever it's needed |
| Enforce memory usage | Agent searches, finds results, ignores them | Search β Apply β Trace: finding but not using is explicitly prohibited |
| Learn from articles | Copy-paste into prompts | radioheader learn <url> extracts and distills into searchable entries |
| Agent calibration | Agent treats every user the same | Context digest: knows your project landscape, strengths, known weaknesses |
| Community knowledge | Start from zero | Opt-in shared library with Stigmergy quality governance |
How memory flows
Conversation (bug fix, feature, debugging session)
β
βΌ
ββ Echo (automatic, via hooks) ββββββββββββββββββββββ
β Claude: PostToolUse Write|Edit β immediate β
β Codex: UserPromptSubmit snapshot + Stop diff β
β Result: experience written to project memory/ β
βββββββββββββββββββββββββββββ¬ββββββββββββββββββββββββ
βΌ
ββ Three-Layer Memory βββββββββββββββββββββββββββββββ
β β
β Project memory/ βββ is this cross-project? βββ β
β yes β β
β RadioHeader topics/ ββββ [source:ProjectName] βββ β
β distill β β
β RadioHeader shortwave/ ββ project-agnostic βββ β
β searchable everywhere β
βββββββββββββββββββββββββββββ¬ββββββββββββββββββββββββ
βΌ
ββ Search β Apply β Trace βββββββββββββββββββββββββββ
β Next time any agent hits a similar problem: β
β 1. Search: Grep with symptom keywords β
β 2. Apply: Cite the matching entry in the answer β
β 3. Trace: Follow [source:] to the origin project β
ββββββββββββββββββββββββββββββββββββββββββββββββββββ
RadioHeader (~/.claude/radioheader/)
βββ shortwave/ β refined, project-agnostic knowledge
βββ topics/ β detailed experience with [source:] tags
βββ project-registry.json β project cards (domains, problems, pain points)
βββ context-digest.md β attention-compressed awareness (auto-generated)
βββ INDEX.md β master index
Consolidate β memory during sleep
Human memory compresses during sleep: episodes fade, but patterns solidify. RadioHeader's consolidate does the same:
Memory syncs accumulate β every 5 syncs, consolidate runs automatically
β
Analyzes search logs + project activity + user profile
β
Generates context-digest.md (compressed awareness)
β
Next session: Agent starts knowing who it's helping
The digest tells the Agent, before any code is read: problem-solving style, project landscape, recent focus areas, technology overlaps, known weaknesses. Not search optimization β Agent calibration.
When RadioMind is installed, consolidation auto-upgrades to dream refinement (SHY pruning + DMN wandering).
Community sharing β Stigmergy quality model
Opt-in community library (radioheader-community). Quality follows a Stigmergy model β like ant pheromone trails:
- New entries get a 30-day exposure period
- Usage triggers automatic voting (LLM judges causal contribution)
- Votes aggregate weekly via GitHub Actions into scores
- High-score entries get
verified; low-score entries decay and archive
Publishing goes through three gates: quality (β₯6/8), privacy scan, dedup check.
π‘ Shortwave (local) β your own experience (highest priority)
π Community (shared) β entries from other users, with quality scores
π Topics (detailed) β raw topic entries with [source:] tags
MCP server β for Cursor, Claude Desktop, and other agents
RadioHeader ships an optional MCP server (8 read-only tools) so any MCP-compatible agent can query the same experience layer:
pip install "mcp[cli]"
radioheader mcp-server # starts stdio server
Tools: radioheader_search, radioheader_list_projects, radioheader_trace_project, radioheader_read_shortwave, radioheader_read_topic, radioheader_list_topics, radioheader_context_digest, radioheader_stats.
See docs/mcp-server.md for client-specific setup and a recommended system prompt.
If you use RadioMind, its MCP server already includes RadioHeader search β you don't need both.
Runtime support
RadioHeader ships a single data layer with runtime adapters that plug into whichever coding agent you're using:
| Claude Code | Codex CLI | MCP agents | |
|---|---|---|---|
| Entry file | ~/.claude/CLAUDE.md | ~/.codex/AGENTS.md | System prompt |
| Echo trigger | PostToolUse Write|Edit | UserPromptSubmit snapshot + Stop diff | β |
| Per-project scaffold | .claude/settings.json | .codex/hooks.json | β |
The Codex adapter uses a snapshot + diff loop: UserPromptSubmit fingerprints memory/topics/shortwave before each turn; Stop diffs against that fingerprint and uses decision: block with a continuation prompt if any step in the Echo chain was skipped.
Python hooks target Python 3.7+ (from __future__ import annotations). Snapshot walker caps at 10k files with 24h TTL cleanup.
Setup
git clone https://github.com/ZaptainZ/radioheader.git
cd radioheader
./install.sh --runtime both
That's it. Start Claude Code or Codex in any project β hooks fire, rules are loaded, experience is searchable.
./install.sh --runtime claude # only Claude Code
./install.sh --runtime codex # only Codex CLI
./install.sh --runtime both # default
Optionally, run radioheader init inside a project for per-project scaffolding (Echo rules, log directory, doc templates).
Use
# Search by symptoms, not solutions
radioheader search "white screen|slow launch|startup"
# Initialize a project
radioheader init --name "MyAPI" --stack "Python/FastAPI"
# Learn from an article
radioheader learn https://example.com/article
# Check health
radioheader doctor
Full CLI:
| Command | What it does |
|---|---|
search <query> | BM25 + synonym search across topics, shortwave, community |
init | Project scaffolding (--runtime claude|codex|both) |
index [--rebuild] | Build/update FTS5 search index |
learn <url> | Extract article into shortwave entry |
consolidate | Update attention weights and context digest |
upgrade | Upgrade registered projects to latest templates |
status | Topic count, shortwave count, community status |
doctor | Health check: hooks, rules, registry, RadioMind |
align | Topicsβshortwave coverage analysis |
community on|off | Toggle community library |
sync | Pull community library + push votes |
publish <file> | Publish shortwave to community (3-gate check) |
vote <id> [+1|-1] | Vote on a shortwave entry |
device-sync | Cross-device sync via git |
mcp-server | Run MCP server (stdio) for Cursor, Claude Desktop |
RadioMind integration
RadioMind is a bionic memory core for AI agents β it distills scattered conversations into deep habits through three-body debate and dream refinement, then serves them back when they matter. RadioHeader captures and enforces; RadioMind refines and deepens.
When RadioMind is installed, RadioHeader automatically upgrades itself β no config needed:
| Command | Without RadioMind | With RadioMind |
|---|---|---|
radioheader search | FTS5 + synonym expansion | Pyramid retrieval + knowledge graph + habit matching |
radioheader consolidate | Attention weights + context digest | Dream refinement (SHY pruning + DMN wandering) + richer digest |
RadioMind reads RadioHeader's topics/ and shortwave/ files directly. RadioHeader doesn't need to know RadioMind exists β it just detects radiomind on PATH and delegates search and consolidate. If RadioMind fails or is absent, the native path runs seamlessly.
RadioHeader (capture + rules) RadioMind (refine + enhance)
βββββββββββββββββββββββββ βββββββββββββββββββββββββ
Echo hooks β write topics/shortwave/ βββββ adapter reads, indexes, refines
radioheader search βββ radiomind? yes βββ radiomind rh-search
βββ no βββ fts-search.py (native)
radioheader consolidate ββ radiomind? βββ radiomind rh-consolidate
βββ no βββ attn-consolidate.py (native)
Community library
radioheader-community is an opt-in shared library of shortwave entries contributed by the RadioHeader community. Your local experience stays local; entries you choose to publish pass three gates before reaching the shared pool.
radioheader community on # enable
radioheader sync # pull shared library + push your votes
radioheader publish <file> # publish (quality β₯6/8 + privacy + dedup)
Quality governance follows a Stigmergy model β like ant pheromone trails: good entries get reinforced through usage, bad entries decay naturally, no human curation needed.
| Step | What happens |
|---|---|
| Exposure | New entries get a 30-day exposure window |
| Voting | Usage triggers automatic LLM-judged causal contribution votes |
| Aggregation | GitHub Actions aggregates votes weekly into quality scores |
| Lifecycle | High-score entries get verified; low-score entries decay and archive |
When enabled, search results blend three sources with clear priority:
π‘ Shortwave (local) β your own experience (highest priority)
π Community (shared) β entries from other users, with quality scores
π Topics (detailed) β raw topic entries with [source:] tags
Lessons learned
Built through real usage across 13 projects. Four lessons that shaped everything:
"Searched but didn't use" β the #1 failure mode. Claude would search, find results, and ignore them. The fix: three mandatory steps (Search β Apply β Trace) with an explicit prohibition on finding but not using.
Symptom keywords > solution keywords. Developers search "white screen" and "slow launch", not "Task.detached". Every entry must preserve the words someone would actually search for.
Instructions beat knowledge. Writing "experience is stored here" doesn't drive behavior. Writing "you MUST search here first" does. CLAUDE.md / AGENTS.md content must be imperative behavioral rules, not reference documentation.
Attention belongs in compression, not retrieval. Attention-weighted search ranking added zero value β BM25 already gets the right results. The real value is in memory consolidation: compressing the user's project landscape into a digest that shapes how the Agent thinks.
See docs/lessons-learned.md for the full list.
Radio ecosystem
| Project | What it does | Relationship | Status |
|---|---|---|---|
| RadioHeader | Cross-project experience framework for coding agents. Captures debugging experience and enforces its reuse. | This repo. The "rules and capture" layer. | Released, 240+ shortwave entries |
| RadioMind | Bionic memory core. Distills conversations into habits through three-body debate and dream refinement. | Uses RadioHeader's data. RadioHeader auto-upgrades search/consolidate when RadioMind is installed. | Released |
| RadioHand | Personal agent framework. Multi-channel, task planning, tool orchestration. | Will use RadioMind as memory, RadioHeader as experience rules. | Planned |
RadioHeader (rules & experience) β RadioMind (memory & habits) β RadioHand (actions & channels)
head brain hands
Docs
| Document | Content |
|---|---|
| How It Works | Architecture and behavioral design |
| MCP Server | Setup for Cursor, Claude Desktop, etc. |
| Shortwave Spec | Shortwave format and refinement rules |
| Quality Standards | Scoring rubric and audit checklist |
| Writing Good Entries | Format, keywords, and examples |
| Lessons Learned | What we tried, what failed, what works |
License
MIT
