Faf Memory Mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Faf Memory Mcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
MCP server for `.fafm` — the Permanent Memory Layer (PML) for Claude Code, Cursor, Grok, and any MCP host.
Cross-vendor persistent memory in a file you can read. Offline-first. Your soul, your bytes.
Wraps claude-fafm-sdk via fastmcp. Receipt: 400+× faster type-filter queries vs `grep` on a real 492-file AI memory corpus — falsifiable methodology at Wolfe-Jam/faf-memory-proof.
Every AI session, your agent starts blank — no memory of what you decided yesterday, what worked, what was tried. The fix isn't another hosted memory service; it's a file the AI reads at session start and writes back to as it learns. That file is .fafm — IANA-registered, cross-vendor, and 996 KB / 49 ms cold-load for a 492-fact corpus (full numbers: the receipt).
uvx faf-memory-mcpVia the faf-memory plugin (coming to claude-plugins-community):
/plugin install faf-memoryOr wire .mcp.json directly:
{
"faf-memory": {
"command": "uvx",
"args": ["faf-memory-mcp"]
}
}| Tool | What it does |
|---|---|
etch(text, id?, type?, priority?, tags?) | Write a durable fact. O(1) dedup by id. |
recall(query?, type?, tags?, min_priority?, limit?) | Filter (substring + type + tags + priority floor) → rank by priority then recency. |
list_facts() | List ALL facts — no filter, no rank. |
save_soul(path?) | Persist the soul to a .fafm file. |
load_soul(path?) | Load a .fafm from disk, replacing the in-memory soul. |
| Env var | Default | What |
|---|---|---|
FAF_SOUL_NAMEPOINT | @local | Initial soul identifier |
FAF_SOUL_PROFILE | knowledge | .fafm profile (knowledge or voice) |
FAF_SOUL_PATH | soul.fafm | Default save/load path |
.fafm is IANA-registered as application/vnd.fafm+yaml (registered 2026-05-13). Sibling of .faf (application/vnd.faf+yaml, 2025-10-30).
Wolfe-Jam/faf · MEMORY-FORMAT.mdclaude-fafm-sdk (Python) · grok-faf-voice (voice profile, Python).fafm written by claude-fafm-sdk reads cleanly via grok-faf-voice, both directions tested.recall("X") surfaces what you etched last session, not just this one..fafm file grows readably — it's plain YAML, diff it like code..fafm in grok-faf-voice — same facts. Cross-vendor proven.Biases toward deterministic recall (substring + type + tags + priority + recency) over semantic recall. For semantic/ranked recall + LLM smart-merge, see hosted namepoints in claude-fafm-sdk. Offline-first ≠ offline-only.
Wolfe-Jam/faf-memory — the Claude Code plugin that installs this MCPWolfe-Jam/faf-memory-proof — the falsifiable receipt (412× methodology + scripts)claude-fafm-sdk — the open Python SDK this server wrapsWolfe-Jam/faf — the format spec + IANA registrationMIT.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.