Releases: Wolfe-Jam/claude-fafm-sdk
Release list
v1.4.0 — Verifiable Provenance
Verifiable Provenance — with signatures
1.3 proved a packet travels intact; 1.4 lets it prove which key sealed it.
Optional Ed25519 signatures over the same SPK1 payload CRC covers. Integrity (CRC) and provenance (signature) stay separate. Opt-in via [sign] → cryptography. Base SDK + receipt stay zero-crypto.
Highlights
- Fixed 64-byte trailer (no
key_id);flagsbit 0 =SIGNED - CLI:
keygen·seal --sign·verify -k - Strict open/merge — signed packets never CRC-open
uvx claude-fafm-sdk receiptstill GREEN
pip install 'claude-fafm-sdk[sign]'
claude-fafm-sdk keygen
claude-fafm-sdk seal -f soul.fafm -o soul.fafmp --sign --key sign.pem
claude-fafm-sdk verify -k sign.pub.pem soul.fafmpNot a PKI. Key ≠ person. SPK1 ≠ FAFB. Strip-downgrade is possible (N1).
v1.3.0 — Provable Receipt
Provable Receipt — with uvx claude-fafm-sdk receipt
1.2 made memory sendable; 1.3 makes the proof one command. The 60-second Tier-2 arc (and falsifiers) ships in the wheel — no git clone required.
Added
claude-fafm-sdk receipt— etch → seal → file send → merge → recall + CRC-reject / double-merge / both-ways. Pure Python module in the package;--jsonfor machine-readable PASS.- CLI
open— open a.fafmpinto a.fafm/ summary; fail-closed. - Docs: RECEIPT.md + README lead with uvx receipt.
Verification
uvx --from 'claude-fafm-sdk==1.3.0' claude-fafm-sdk receipt
# or: pip install claude-fafm-sdk==1.3.0 && claude-fafm-sdk receipt
We claim / do not claim
- Claim: one-command Tier-2 proof from the published package; same SPK1 / CvRDT as 1.2 (no merge-law change).
- Do not claim: authentication/encryption (→ 1.4 Verifiable Provenance); delete convergence (→ 1.5); dual-impl re-proof of merge (receipt exercises transport + ingest).
Tip: 61d46a0
v1.2.0 — Sendable Memory
Sendable Memory
1.1 made souls mergeable; 1.2 makes them sendable — seal a soul into a CRC-integrity .fafmp packet, send the file, merge on arrival. The merge is unchanged (dual-implementation-verified CvRDT); this adds the transport around it.
Added
- Packet API — top-level
to_packet/from_packet/merge_packet(+ file helpers,PacketError). SPK1 + CRC-32 over payload only. - CLI
seal/merge— file transport only; fail-closed (bad packet never rewrites the local soul). - Byte-identity — seals of the same logical state are byte-identical; wire-hex golden as interop anchor.
PACKET.md/RECEIPT.md— format + 60-second Tier-2 proof (examples/tier2_receipt.sh).- Hardening — residual-field goldens + encoding-lock fuzz.
Verification
pip install claude-fafm-sdk==1.2.0
python -c "from claude_fafm_sdk import to_packet, from_packet, merge_packet, __version__; print(__version__)"
Tier-2 receipt (from source at this tag):
git checkout v1.2.0 && bash examples/tier2_receipt.sh
We claim / do not claim
- Claim: memory travels as a CRC-integrity-sealed
.fafmpand ingests through the same state-based CvRDT; seals are byte-deterministic. - Do not claim: authentication/encryption (CRC = integrity, not auth); offline delete convergence (grow/update-only); full FAFB binary or IANA media type (
SPK1≠FAFB).
Tip: 21b0059
v1.1.1 — Mergeable Memory (Soul-Packet CvRDT)
v1.1.1 — Mergeable Memory
First production release of Soul-Packet merge: a coordinator-free, order-independent Soul join — state-based CvRDT, dual-implementation verified. (1.1.0 was TestPyPI-only; 1.1.1 is the production cut with a corrected stranger-repro receipt.)
Added (from 1.1.0)
merge_souls(a, b)— commutative · associative · idempotent, no coordinatorMERGE.md— frozen merge spec + property oracle- WJTTC + N-version property suites
Fixed in 1.1.1
hypothesisin dev extras sopip install -e ".[dev]"runs the merge suites- Verification receipt: install-proof from the wheel + full suite from source checkout
Honesty bounds
- We claim: state-based CvRDT under a frozen encoding lock (N-version)
- We do NOT claim: sealed-packet send/CRC, offline delete convergence, or “all AIs”
Verify
pip install claude-fafm-sdk==1.1.1
python -c "from claude_fafm_sdk import merge_souls, __version__; print(__version__, merge_souls)"
Tip: d26b7af
v1.0.0 — Interop Baseline
v1.0.0 — Interop Baseline
Stable knowledge-profile .fafm baseline — INTEROP, document fidelity, from_claude_dir, cross-vendor tests, local recall SoT.
Highlights
- INTEROP.md — timestamps, priority/rank, unknown fields, index, converter rules
- Document fidelity —
index, memory subtrees, residual field preserve from_claude_dir— Claude Code memory → knowledgeSoul(memory.factsv1.1)- Cross-vendor corpus + WJTTC FINISH release gate
- Local recall SoT — deterministic rank; engine same-second drift documented
Install
pip install claude-fafm-sdk==1.0.0
# or
uv add claude-fafm-sdkFull notes: CHANGELOG.md
v0.4.0
claude-fafm-sdk v0.4.0 — guided onboarding wizard
Added
claude-fafm-sdk quickstart(also runs with no subcommand) — a guided first run that walks the user end to end: create a soul → capture a first memory → go live on a zero-config namepoint → and proves it cross-vendor with a keyless read-back URL (mcpaas.live/raw/<handle>) + a paste-ready "hand it to any model" line. The 30-second wow.- Non-interactive shells do the safe local steps and point at
namepoint push(never auto-push). Honest — no "live" claim unless a push actually happened.
Builds on v0.3.0's zero-config .fafm-native namepoints. Three new WJTTC tests cover the wizard's noninteractive, etch-and-skip-push, and no-false-live paths.
v0.3.0
claude-fafm-sdk v0.3.0 — zero-config, .fafm-native namepoints
Added
- Zero-config namepoints.
namepoint pushauto-provisions an anonymous namepoint + key on first use (A-for-first-touch) — no claim page, no token copy. Stores the whole.fafmdocument (replace), so ids/types/priorities survive the round-trip and re-pushes are idempotent. namepoint pull/sync— merge hosted facts by id.namepoint claim [--email …]— recoverable, named namepoint (B-for-keepers);statusshows which.claude_fafm_sdk.identitymodule;Soul.to_yaml()/Soul.add().
Removed
namepoint link— superseded by zero-config provisioning +claim.
Fixed
- Explicit User-Agent (the WAF banned the default Python UA);
facts()degrades on markdown/.fafsouls instead of crashing; silenced the benign flexi-mode log.
v0.2.0
claude-fafm-sdk v0.2.0
Added
- CLI
ls— list every fact (ranked priority then recency) - CLI
forget <id>— delete a fact by id - CLI
recallfilters:--tag/--type/--priority
Fixed
recallrecency tiebreak — same-second facts now return newest-first
Changed
- Version single-sourced from
__init__.__version__(hatchling dynamic) — no pyproject drift - Accurate free-namepoint docs: a two-digit handle is free (
@james99,@john10); claim at https://mcpaas.live/claim
v0.1.1 — sibling cross-link
Docs: PyPI badge + cross-link to grok-faf-voice (two profiles, one .fafm format). PyPI: https://pypi.org/project/claude-fafm-sdk/0.1.1/
v0.1.0 — first cut
First cut — the open, offline-first .fafm SDK. Soul (load/save/etch/recall), Fact, Namepoint client (fastmcp), MIT. PyPI: https://pypi.org/project/claude-fafm-sdk/0.1.0/