Revert "Add developer launch kit for Vestige v2.1.23"

This reverts commit 00511948ff.
This commit is contained in:
Sam Valladares 2026-06-02 12:40:48 -05:00
parent 6a37586c5f
commit a355da99a6
34 changed files with 42 additions and 1303 deletions

View file

@ -1,88 +0,0 @@
# Vestige Launch Stats (Single Source of Truth)
**Last verified:** 2026-06-02
**Use this file** when updating README, launch posts, npm README, and landing page. Do not invent numbers elsewhere.
## Release
| Field | Value |
|-------|-------|
| Version | **v2.1.23** ("Receipt Lock Hardening") |
| npm package | `vestige-mcp-server@latest` |
| Install | `npm install -g vestige-mcp-server@latest` |
| MCP connect (Claude Code) | `claude mcp add vestige vestige-mcp -s user` |
| Optional Receipt Lock | `vestige sandwich install --enable-sanhedrin` |
| License | AGPL-3.0-only |
| Repo | https://github.com/samvallad33/vestige |
| Homepage (marketing) | https://samvallad33.github.io/vestige/ (GitHub Pages) |
## Author
| Field | Value |
|-------|-------|
| Name | Sam Valladares |
| Age | **22** (solo developer) |
| GitHub stars (2026-06-02) | **542** |
| Forks | **55** |
## Codebase (run to refresh)
```bash
# Rust LOC (crates + tests)
find crates tests -name '*.rs' | xargs wc -l | tail -1
# MCP tool count (must match server assertion)
rg 'name: "' crates/vestige-mcp/src/server.rs | wc -l
# Tests
cargo test --workspace --no-fail-fast 2>&1 | tail -3
```
| Metric | Current value | Notes |
|--------|---------------|-------|
| Rust LOC | **~86,000** | `crates/` + `tests/` `.rs` files |
| MCP tools | **25** | Verified in `server.rs` (`tools.len() == 25`) |
| Cognitive modules | **30** | Per README architecture |
| Rust tests | **1,200+** | CHANGELOG v2.1.0: 1,229 passing; re-run before major launch |
| Dashboard tests | **171** | Vitest in `apps/dashboard` |
| Release binary | **~22MB** | Single binary, embedded SvelteKit dashboard |
| Embedding model | Nomic Embed Text v1.5 (~130MB first-run download) |
## Install (canonical — no `sudo mv`)
The npm package registers global bins via `postinstall`. **Do not** tell users to `sudo mv vestige-mcp` unless manual binary install failed.
```bash
npm install -g vestige-mcp-server@latest
vestige health
claude mcp add vestige vestige-mcp -s user
```
If `vestige-mcp` is not on PATH after install:
```bash
npm prefix -g # e.g. /usr/local or ~/.npm-global
# Ensure that path/bin is in your shell PATH
```
Manual binary placement (optional):
```bash
vestige update --install-dir /usr/local/bin
```
## Messaging guardrails
- Lead Wave A with **Receipt Lock** (agents overclaim "tests passed").
- Close Wave B with **cognitive memory** (FSRS-6, dreaming, 3D dashboard).
- Never: "revolutionary", "game-changer", "AI-powered", competitor bashing.
- Always: honest neuroscience (faithful implementations vs engineering heuristics).
## North-star metrics
Track weekly (see `docs/marketing/metrics-tracker.md`):
1. **npm downloads** (`npm view vestige-mcp-server` / npmjs.com stats)
2. **GitHub stars delta**
3. **Inbound issues/DMs** mentioning install
4. **Referral source** (HN, Reddit, X, registry)

View file

@ -1,82 +0,0 @@
# Vestige vs Mem0 vs RAG vs Native AI Memory
Canonical comparison for launch posts and arguments. Grounded in [SCIENCE.md](SCIENCE.md) and [LAUNCH_STATS.md](LAUNCH_STATS.md).
## One-line thesis
**RAG is retrieval. Native memory is a black box. Mem0 is a strong cloud memory API. Vestige is a local cognitive system that forgets, strengthens, dreams, and can block unverified agent claims.**
## Comparison table
| Capability | RAG / vector DB | Native AI memory (Claude, ChatGPT) | Mem0 | Vestige |
|------------|-----------------|-------------------------------------|------|---------|
| **Runs local** | Often cloud embeddings | Cloud only | Cloud API (local option limited) | **100% local** default |
| **You own the data** | Your infra | Vendor | Vendor / API | **SQLite on your disk** |
| **Forgetting curve** | None — equal weight forever | Opaque | Categories + metadata | **FSRS-6** power-law decay |
| **Duplicate handling** | Manual | Opaque | Some dedup | **Prediction Error Gating** on ingest |
| **Retrieval strengthens memory** | No | Unknown | Partial | **Testing Effect** on every search |
| **Offline consolidation** | No | No | No | **`dream`** — replay + connect |
| **Contradiction awareness** | Returns both chunks | No | Some products | **`deep_reference` / `contradictions`** |
| **Active suppression** | Delete only | No | Delete | **`suppress`** — inhibited, not erased |
| **Agent overclaim guard** | No | No | No | **Receipt Lock** (optional Sanhedrin hooks) |
| **Visualization** | None | None | Dashboard (cloud) | **3D graph** + WebSocket events |
| **Protocol** | Custom | Proprietary | API + MCP | **MCP** (25 tools) |
| **License** | Varies | Proprietary | Apache / commercial | **AGPL-3.0** (local use = free) |
## When to use what
### Use RAG when
- You have a fixed document corpus (PDFs, wiki, codebase index).
- You need one-shot Q&A over static content.
- You do not need memory lifecycle or session continuity.
### Use Mem0 when
- You want a hosted memory API with minimal setup.
- Team sync and cloud dashboards are acceptable.
- You do not need FSRS decay or local-only air-gapped deploy.
### Use native Claude/ChatGPT memory when
- Casual personal context is enough.
- You do not need inspectable storage, decay curves, or contradiction tooling.
### Use Vestige when
- You run **Claude Code, Cursor, Codex, or any MCP client** daily.
- Context bloat from "remember everything" hurts retrieval quality.
- **Contradicting memories** have burned you (config changed, lib upgraded).
- You want **Receipt Lock** so agents cannot fake "tests passed."
- **Privacy / air-gapped** matters — embeddings run locally via ONNX.
## Honest limitations (Vestige)
- **AGPL-3.0**: hosting as a service without source disclosure is not allowed.
- **First-run download**: ~130MB embedding model (then offline).
- **Receipt Lock** requires optional Claude Code Cognitive Sandwich hooks + a verifier endpoint for Sanhedrin.
- **Neuroscience modules** mix faithful implementations and engineering heuristics — see [SCIENCE.md](SCIENCE.md) for citations vs approximations.
- **Solo project**: no enterprise SLA; GitHub issues are the support channel.
## Receipt Lock (Vestige-only)
Coding agents often end sessions with:
> "All tests passed. Build is green. Ready to merge."
Receipt Lock checks those **operational claims** against structured command receipts from the transcript. No matching successful receipt → claim blocked, local veto receipt written under `~/.vestige/sanhedrin/`.
```bash
vestige sandwich install --enable-sanhedrin
```
Details: [README Receipt Lock section](../README.md#receipt-lock).
## Install
```bash
npm install -g vestige-mcp-server@latest
claude mcp add vestige vestige-mcp -s user
```
Full stats: [LAUNCH_STATS.md](LAUNCH_STATS.md) · Repo: https://github.com/samvallad33/vestige

View file

@ -6,7 +6,7 @@ Every conversation starts from zero. You explain your project structure, your pr
Vestige is an open-source Rust MCP server that gives AI agents persistent memory modeled on real neuroscience. Not metaphorical neuroscience. Actual published algorithms from Ebbinghaus (1885), Collins & Loftus (1975), Bjork & Bjork (1992), Frey & Morris (1997), and the FSRS-6 spaced repetition scheduler trained on 700 million Anki reviews.
~86,000 lines of Rust. 30 cognitive modules. 1,200+ tests. v2.1.23 adds Receipt Lock for unverified agent claims. Single 22MB binary with embedded SvelteKit dashboard. AGPL-3.0 licensed. Stats: [LAUNCH_STATS.md](../LAUNCH_STATS.md).
77,840+ lines of Rust. 29 cognitive modules. 734 tests. Single binary deployment with an embedded SvelteKit dashboard. AGPL-3.0 licensed.
Here is how we built it.

View file

@ -1,6 +1,4 @@
# Vestige v2.1.23 — Demo Script (Conference + Launch Video)
> Stats: [LAUNCH_STATS.md](../LAUNCH_STATS.md) · Wave A hook: [receipt-lock.md](receipt-lock.md)
# Vestige v2.0 "Cognitive Leap" — MCP Dev Summit NYC Demo Script
**Event:** MCP Dev Summit NYC, April 1-3, 2026
**Presenter:** Sam Valladares
@ -17,7 +15,7 @@
- [ ] Phone hotspot configured as backup (embedding model already cached = no network needed)
### Software
- [ ] Vestige binary installed: `vestige-mcp --version` shows `2.1.23` (or latest)
- [ ] Vestige v2.0 binary installed: `vestige-mcp --version` shows `2.0.0`
- [ ] Claude Code installed and authenticated
- [ ] Terminal font size: 18pt minimum (audience readability)
- [ ] Browser zoom: 150% for dashboard views
@ -207,7 +205,7 @@ claude mcp add vestige vestige-mcp -s user
### [2:50-3:00] Close
> Vestige v2.1.23. Open source, AGPL-3.0. The repo is `samvallad33/vestige`. Come talk to me if you want to see the neuroscience under the hood.
> Vestige v2.0, "Cognitive Leap." Open source, AGPL-3.0. The repo is `samvallad33/vestige`. Come talk to me if you want to see the neuroscience under the hood.
---
@ -393,9 +391,9 @@ vestige-mcp --version
# One command to install
```
> This is what I've been building. I'm one person, I'm twenty-two years old, and I believe this is how AI memory should work — grounded in real science, running locally, open source.
> This is what I've been building for the past three months. I'm one person, I'm twenty-one years old, and I believe this is how AI memory should work — grounded in real science, running locally, open source.
>
> Vestige v2.1.23. The repo is `github.com/samvallad33/vestige`. The dashboard is running at `localhost:3927`. I'll be around all three days — come find me if you want to talk about FSRS, or synaptic tagging, or why I think every AI assistant on the planet should have a forgetting curve.
> Vestige v2.0, "Cognitive Leap." The repo is `github.com/samvallad33/vestige`. The dashboard is running at `localhost:3927`. I'll be around all three days — come find me if you want to talk about FSRS, or synaptic tagging, or why I think every AI assistant on the planet should have a forgetting curve.
>
> Thank you.

View file

@ -1,167 +0,0 @@
# Wave A Launch — Receipt Lock (v2.1.23)
Primary viral hook. Post **before** the memory/science Show HN wave. Stats: [LAUNCH_STATS.md](../LAUNCH_STATS.md).
---
## Hacker News — Show HN
### Title (≤80 chars)
```
Show HN: Vestige blocks coding agents from claiming "tests passed" without receipts
```
### First comment (body)
```
Hi HN,
Your coding agent probably ends sessions with something like "all tests passed" or
"the build is green." I kept trusting that — until it wasn't true.
I built Receipt Lock in Vestige (an MCP memory server I maintain). Before operational
claims become part of the final answer, Vestige checks them against structured
command receipts from the current transcript. No matching successful receipt → the
claim can be blocked and a local veto receipt is written (JSON + HTML under
~/.vestige/sanhedrin/).
**What it is:** Optional Claude Code Cognitive Sandwich hooks + local MCP server.
Not cloud. Not "trust me bro" logging — inspectable receipts on disk.
**Install (memory server — required base):**
npm install -g vestige-mcp-server@latest
claude mcp add vestige vestige-mcp -s user
**Enable Receipt Lock (optional):**
vestige sandwich install --enable-sanhedrin
Sanhedrin verifier can point at any OpenAI-compatible endpoint (Ollama, MLX, hosted API).
**And it also does real memory:** FSRS-6 spaced repetition, prediction error gating,
memory dreaming, 3D dashboard at localhost:3927. ~86K LOC Rust, 25 MCP tools, 1,200+
tests, 22MB binary. 100% local after first embedding download.
I'm 22, solo, AGPL-3.0. Repo: https://github.com/samvallad33/vestige
Comparison: https://github.com/samvallad33/vestige/blob/main/docs/comparison.md
Happy to discuss false positive tuning, Sanhedrin presets, or why receipts beat vibes.
```
---
## r/ExperiencedDevs
### Title
```
My coding agent kept saying "tests passed" when they hadn't. I added a receipt check before the summary ships.
```
### Body
```markdown
**TL;DR:** Vestige Receipt Lock checks operational claims ("tests passed", "build green", "lint clean") against structured command receipts from the transcript. No receipt → block + local veto artifact.
**The failure mode:** Agent runs partial checks, or hallucinates a green ending. You merge. CI breaks. You've seen this.
**The fix:** Optional hooks (`vestige sandwich install --enable-sanhedrin`) + MCP memory server. When the model tries to assert verification without evidence, Vestige can veto and write `~/.vestige/sanhedrin/latest.html` so you can inspect what happened.
**Not a replacement for CI.** It's a last-mile guard on *agent-authored* summaries in Claude Code.
**Stack:** Rust, local, MCP. Same project also does FSRS-6 cognitive memory (decay, dreaming, contradiction tools) — I'll post that angle separately if people want the science side.
```bash
npm install -g vestige-mcp-server@latest
claude mcp add vestige vestige-mcp -s user
vestige sandwich install --enable-sanhedrin
```
GitHub: https://github.com/samvallad33/vestige
What false positives are you seeing with agent verification claims? Curious if this matches your workflow.
```
---
## r/programming
### Title
```
Open-source guard: coding agents can't claim "tests passed" without command receipts (local MCP, Rust)
```
### Body — use r/ExperiencedDevs body; add:
```markdown
License: AGPL-3.0. v2.1.23. Stats: ~86K LOC, 25 tools, 22MB binary.
```
---
## X / Twitter thread (8 posts)
1. Your coding agent ends with "tests passed." Did it run tests? Or did it summarize hope?
2. I ship Receipt Lock in Vestige — checks operational claims against command receipts from the transcript.
3. No matching successful receipt → claim blocked. Local veto receipt: `~/.vestige/sanhedrin/latest.html`
4. Optional hooks. Local MCP server. Not cloud analytics.
5. ```bash
npm i -g vestige-mcp-server@latest
claude mcp add vestige vestige-mcp -s user
vestige sandwich install --enable-sanhedrin
```
6. Same binary also does FSRS-6 memory — decay, dreaming, 3D brain viz. Thread on that tomorrow.
7. 22yo solo dev. AGPL. https://github.com/samvallad33/vestige
8. What's the worst "green build" lie your agent told you? Reply — building the FAQ from real stories.
---
## Lobste.rs
### Title
```
Vestige Receipt Lock: local MCP guard against unverified "tests passed" agent claims
```
### Tags
`rust` `programming` `security`
### Body
Use HN first comment (shorter). Link comparison.md.
---
## Engagement playbook (Wave A)
| Window | Action |
|--------|--------|
| 03h | Reply every comment within 30 min |
| Tone | Technical, humble, no "revolutionary" |
| Competitors | Acknowledge Mem0/Cursor memory; don't bash |
| CTA | Install + link comparison.md |
| Next | Schedule Wave B 48h after Wave A peaks |
### DO NOT
- "Game-changer" / "AI-powered" / "paradigm shift"
- Disparage Mem0 or Claude native memory
- Promise Receipt Lock replaces CI
---
## Timing
- **HN / Lobsters:** Tuesday or Wednesday, 810 AM US Eastern
- **Reddit:** Same day, +12h after HN
- **X:** Pin thread during HN peak

View file

@ -1,6 +1,4 @@
# Reddit Launch Posts — cross_reference / deep_reference (v2.1.23)
> Canonical install: [LAUNCH_STATS.md](../LAUNCH_STATS.md) — **no `sudo mv`**; use `npm install -g vestige-mcp-server@latest`
# Reddit Launch Posts — cross_reference Tool
## Post 1: r/ClaudeAI (Primary)
@ -80,8 +78,8 @@ Memory systems need to be SMARTER, not just bigger. That's what Vestige does —
- **cross_reference** — the new tool that catches contradictions before they become wrong answers
### Stats:
- 25 MCP tools
- 1,200+ tests
- 22 MCP tools
- 746 tests, 0 failures
- Zero `unsafe` code
- Clean security audit (0 findings — AgentAudit verified)
- Single 22MB Rust binary — no Docker, no PostgreSQL, no cloud
@ -89,8 +87,9 @@ Memory systems need to be SMARTER, not just bigger. That's what Vestige does —
### Install (30 seconds):
```bash
npm install -g vestige-mcp-server@latest
vestige health
# macOS Apple Silicon
npm install -g vestige-mcp-server
sudo mv vestige-mcp /usr/local/bin/
claude mcp add vestige vestige-mcp -s user
```
@ -163,12 +162,12 @@ The AI sees the conflict. Picks the right one. Every time.
**100% local. Your data never leaves your machine.**
```bash
npm install -g vestige-mcp-server@latest
vestige health
npm install -g vestige-mcp-server
sudo mv vestige-mcp /usr/local/bin/
claude mcp add vestige vestige-mcp -s user
```
1,200+ tests. Zero unsafe code. AGPL-3.0.
746 tests. Zero unsafe code. Clean security audit. AGPL-3.0.
GitHub: https://github.com/samvallad33/vestige
@ -176,7 +175,7 @@ GitHub: https://github.com/samvallad33/vestige
## Post 3: r/rust (Optional, technical audience)
**Title:** `I built a 22MB Rust binary that gives AI agents a brain — FSRS-6, 30 cognitive modules, Receipt Lock, 25 MCP tools. ~86K LOC, zero unsafe.`
**Title:** `I built a 22MB Rust binary that gives AI agents a brain — FSRS-6, 29 cognitive modules, 3D dashboard, and a new contradiction detection tool. 746 tests, zero unsafe.`
---
@ -189,7 +188,7 @@ The latest addition: `cross_reference` — pairwise contradiction detection acro
- No runtime, no GC pauses during real-time search
- `tokio::sync::Mutex` for the cognitive engine, `std::sync::Mutex` for SQLite reader/writer split
- Zero `unsafe` blocks in the entire codebase
- `cargo test` runs 1,200+ tests across the workspace
- `cargo test` runs 746 tests in 11 seconds
**Architecture:**
```
@ -214,7 +213,7 @@ SQLite WAL + FTS5 + USearch HNSW
Clean security audit. Parameterized SQL everywhere. CSP headers on the dashboard. Constant-time auth comparison (`subtle::ConstantTimeEq`). File permissions 0o600/0o700.
GitHub: https://github.com/samvallad33/vestige
AGPL-3.0 | 1,200+ tests | ~86K LOC
AGPL-3.0 | 746 tests | 79K+ LOC
---

View file

@ -1,7 +1,4 @@
# Vestige v2.1.23 Launch — Show HN + Cross-Posts (Wave B: Memory)
> **Wave A (Receipt Lock)** posts live in [receipt-lock.md](receipt-lock.md). Run Wave A first.
> Stats: [LAUNCH_STATS.md](../LAUNCH_STATS.md)
# Vestige v2.0 Launch — Show HN + Cross-Posts
---
@ -10,7 +7,7 @@
### Title (76 chars)
```
Show HN: Vestige v2.1.23 FSRS-6 memory for AI agents + local Receipt Lock
Show HN: Vestige FSRS-6 spaced repetition as long-term memory for AI agents
```
### Body (first comment)
@ -60,7 +57,7 @@ retrieval. Written in Rust, 100% local, single 22MB binary.
discover hidden connections and synthesize insights. Inspired by hippocampal
replay during sleep.
**Dashboard (since v2.0, still core):**
**v2.0 adds:**
- 3D neural visualization dashboard (SvelteKit + Three.js) — watch memories
pulse when accessed, burst particles on creation, golden flash lines when
@ -77,10 +74,7 @@ retrieval. Written in Rust, 100% local, single 22MB binary.
embedded via Rust's `include_dir!` macro. No Docker, no Node runtime, no
external services.
**v2.1.23 adds Receipt Lock:** optional hooks that block operational claims like
"tests passed" unless matching command receipts exist in the transcript.
**Numbers:** ~86,000 lines of Rust, 1,200+ tests, 30 cognitive modules, 25 MCP
**Numbers:** 77,840 lines of Rust, 734 tests, 29 cognitive modules, 21 MCP
tools, search under 50ms for 1000 memories (SQLite FTS5 + USearch HNSW).
**What it is NOT:** This is not RAG. RAG treats memory as a static database —
@ -93,7 +87,7 @@ The embedding model (Nomic Embed Text v1.5) runs locally via ONNX. After the
first-run model download (~130MB), there are zero network requests. No
telemetry, no analytics, no phoning home.
I've been using this daily and the experience is genuinely different.
I've been using this daily for 2 months and the experience is genuinely different.
Claude remembers my coding patterns, my architectural decisions, my preferences.
New sessions start with context instead of a blank slate.
@ -281,12 +275,12 @@ surprising and useful.
### r/rust
**Title:** `Vestige v2.1.23 — ~86K LOC Rust memory system with FSRS-6, Receipt Lock, and a 22MB binary`
**Title:** `Vestige v2.0 — 77K LOC Rust memory system with FSRS-6, HNSW, Axum WebSockets, and an embedded SvelteKit dashboard in a 22MB binary`
**Body:**
```markdown
I've been building Vestige and just shipped v2.1.23. It's
I've been building Vestige for the past few months and just shipped v2.0. It's
a cognitive memory system for AI agents that implements neuroscience-backed
memory algorithms in pure Rust.
@ -320,7 +314,7 @@ memory algorithms in pure Rust.
- **Release profile**: `lto = true`, `codegen-units = 1`, `opt-level = "z"`,
`strip = true` gets the binary down to 22MB including embedded assets.
- **1,200+ tests** across workspace. Zero warnings on release gates.
- **734 tests**: 352 core + 378 mcp + 4 doctests. Zero warnings.
**Architecture:**
@ -363,7 +357,7 @@ Happy to discuss any of the Rust architecture decisions.
### r/ClaudeAI
**Title:** `Vestige v2.1.23 — give Claude real long-term memory (FSRS-6) + optional Receipt Lock for fake "tests passed" claims`
**Title:** `Vestige v2.0 "Cognitive Leap" — give Claude real long-term memory with neuroscience-backed forgetting, a 3D dashboard, and 21 MCP tools`
**Body:**
@ -391,7 +385,7 @@ locally on your machine.
strength model, testing effect, synaptic tagging, spreading activation,
context-dependent retrieval, memory dreaming.
**Highlights:**
**v2.0 new features:**
- **3D Memory Dashboard** at localhost:3927/dashboard — watch Claude's mind in
real-time. Memories pulse when accessed, burst particles on creation, golden
@ -407,8 +401,7 @@ locally on your machine.
**Setup (2 minutes):**
```bash
npm install -g vestige-mcp-server@latest
vestige health
npm install -g vestige-mcp-server
claude mcp add vestige vestige-mcp -s user
```
@ -424,7 +417,7 @@ on Project X ended with a tricky race condition in the WebSocket handler.
It's the difference between talking to someone with amnesia vs. someone who
actually knows you.
25 MCP tools. ~86,000 lines of Rust. 1,200+ tests. Works with Claude Code, Claude
21 MCP tools. 77,840 lines of Rust. 734 tests. Works with Claude Code, Claude
Desktop, Cursor, VS Code Copilot, JetBrains, Windsurf, and Xcode.
Source: https://github.com/samvallad33/vestige
@ -436,7 +429,7 @@ Happy to answer questions or help with setup.
### r/LocalLLaMA
**Title:** `Vestige v2.1.23 — local-first AI memory with FSRS-6, Receipt Lock, zero cloud (~86K LOC Rust, 22MB binary)`
**Title:** `Vestige v2.0 — local-first AI memory server with FSRS-6 spaced repetition, ONNX embeddings, and zero cloud dependency (77K LOC Rust, 22MB binary)`
**Body:**
@ -489,7 +482,7 @@ algorithms:
- 3D force-directed memory graph with real-time WebSocket events
- HyDE query expansion (template-based hypothetical document embeddings)
- FSRS decay visualization with retention curves
- 1,200+ tests, 30 cognitive modules, 25 tools
- 734 tests, 29 cognitive modules, 21 tools
- fastembed 5.11 with feature flags for Nomic v2 MoE + Qwen3 reranker
**Performance:**
@ -542,7 +535,8 @@ This is a solo project — feedback, issues, and contributions are very welcome.
implementations, some are engineering heuristics inspired by research)
3. 100% local, zero cloud — this is a feature, not a limitation
4. The 3D dashboard is a genuine exploration tool, not just eye candy
5. FSRS-6 + Receipt Lock — spaced repetition memory and optional agent claim verification
5. FSRS-6 is the differentiator — no other AI memory system uses real spaced
repetition
### What NOT to Say

View file

@ -1,35 +0,0 @@
# LAUNCH NOW — Wave A (Receipt Lock)
**Date started:** 2026-06-02
**Copy-paste from:** [ready-to-post/](ready-to-post/)
## 5-minute sequence
1. Run preflight:
```bash
./scripts/marketing/preflight.sh
```
2. **Hacker News** → https://news.ycombinator.com/submit
- URL: `https://github.com/samvallad33/vestige`
- Title: paste `ready-to-post/hn-title.txt`
- Post link, then immediately paste `ready-to-post/hn-first-comment.txt` as first comment
3. **X** — paste `ready-to-post/x-thread.txt` (one tweet per numbered block)
4. **r/ExperiencedDevs** — title from `reddit-experienceddevs-title.txt`, body from `reddit-experienceddevs.md`
5. **r/programming** — same body + line: `License: AGPL-3.0. v2.1.23. ~86K LOC, 25 tools, 22MB binary.`
6. Log URLs in [metrics-tracker.md](metrics-tracker.md)
## After posting (30 min SLA on comments)
```bash
vestige ingest "Wave A posted YYYY-MM-DD on HN Reddit X. Hook: agent fake tests passed. Log URLs in metrics-tracker." \
--data-dir ~/.vestige-marketing --tags marketing,wave-a,vestige-launch
```
## 48h later → Wave B
[wave-b-launch.md](wave-b-launch.md) + [show-hn.md](../launch/show-hn.md) memory angle

View file

@ -1,33 +0,0 @@
# Vestige Marketing Kit
Everything needed to run the dual-wave launch and weekly growth loop.
## Start here
**Posting today?** → [LAUNCH_NOW.md](LAUNCH_NOW.md) (copy-paste from [ready-to-post/](ready-to-post/))
1. [LAUNCH_STATS.md](../LAUNCH_STATS.md) — canonical version, stats, install
2. [comparison.md](../comparison.md) — vs Mem0 / RAG / native memory
3. [launch/receipt-lock.md](../launch/receipt-lock.md) — **Wave A** copy (post first)
4. [launch/show-hn.md](../launch/show-hn.md) — **Wave B** copy
5. [wave-a-launch.md](wave-a-launch.md) / [wave-b-launch.md](wave-b-launch.md) — execution checklists
## Assets
| Path | Purpose |
|------|---------|
| [website/index.html](../website/index.html) | GitHub Pages landing |
| [assets/CAPTURE.md](assets/CAPTURE.md) | GIF/video capture |
| [demo-video-storyboard.md](demo-video-storyboard.md) | 6090s video beats |
## Ongoing
| Path | Purpose |
|------|---------|
| [growth-engine/](growth-engine/) | Vestige-powered marketing agent setup |
| [metrics-tracker.md](metrics-tracker.md) | Weekly npm / stars / hooks |
| [mcp-registries.md](mcp-registries.md) | Directory submission packet |
## Deploy landing page
Push to `main` → GitHub Actions workflow `.github/workflows/pages.yml` publishes `docs/website/` to **https://samvallad33.github.io/vestige/** (enable Pages: Settings → Pages → GitHub Actions).

View file

@ -1,40 +0,0 @@
# Demo GIF / Video Capture Guide
Record these on a machine with Vestige v2.1.23 installed and ~20 pre-loaded memories (see `docs/launch/demo-script.md` pre-load section).
## Prerequisites
```bash
npm install -g vestige-mcp-server@latest
vestige health
claude mcp add vestige vestige-mcp -s user
open http://localhost:3927/dashboard
```
## Assets to produce
| File | Duration | What to show |
|------|----------|----------------|
| `receipt-lock.gif` | 812s loop | Agent claims "tests passed" → Sanhedrin veto → `~/.vestige/sanhedrin/latest.html` receipt |
| `dashboard-dream.gif` | 1015s loop | Graph view → trigger dream in Claude → purple dream mode, golden connection lines |
| `memory-born.gif` | 58s | Feed tab: `MemoryCreated` WebSocket event + new node burst on graph |
| `demo-full.mp4` | 6090s | Full script: `docs/launch/demo-script.md` Version 2 (3-minute cut to 90s) |
## macOS capture (recommended)
```bash
# Screen recording → convert to GIF (install: brew install ffmpeg)
ffmpeg -f avfoundation -i "1" -t 12 -vf "fps=10,scale=1280:-1" -y /tmp/vestige-rec.mov
ffmpeg -i /tmp/vestige-rec.mov -vf "fps=8,scale=960:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" -loop 0 docs/marketing/assets/dashboard-dream.gif
```
## Static fallback
If GIFs are not ready for launch, export one PNG from the dashboard graph view:
```bash
# Browser screenshot → save as:
docs/marketing/assets/dashboard-static.png
```
Commit GIFs when ready; README and landing page reference these paths.

View file

@ -1,10 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="960" height="540" viewBox="0 0 960 540">
<rect width="960" height="540" fill="#0a0a12"/>
<text x="480" y="250" fill="#8b9cf7" font-family="system-ui,sans-serif" font-size="28" text-anchor="middle">Vestige 3D Memory Dashboard</text>
<text x="480" y="290" fill="#6b7280" font-family="system-ui,sans-serif" font-size="16" text-anchor="middle">Run vestige dashboard  capture GIF per docs/marketing/assets/CAPTURE.md</text>
<circle cx="320" cy="380" r="12" fill="#6366f1" opacity="0.9"/>
<circle cx="480" cy="360" r="16" fill="#a78bfa" opacity="0.95"/>
<circle cx="640" cy="390" r="10" fill="#6366f1" opacity="0.7"/>
<line x1="320" y1="380" x2="480" y2="360" stroke="#fbbf24" stroke-width="2" opacity="0.6"/>
<line x1="480" y1="360" x2="640" y2="390" stroke="#fbbf24" stroke-width="2" opacity="0.6"/>
</svg>

View file

@ -1,32 +0,0 @@
# Demo Video Storyboard (6090s)
For `docs/marketing/assets/demo-full.mp4` and GIF exports. Full script: [demo-script.md](../../launch/demo-script.md) Version 2.
## Beat sheet
| Time | Visual | Audio / text overlay |
|------|--------|----------------------|
| 0:000:08 | 3D dashboard graph, nodes pulsing | "Your AI forgets everything between sessions." |
| 0:080:18 | Claude Code: "Remember I prefer TypeScript" → Feed: MemoryCreated | "Vestige stores it with prediction error gating — not a dumb bucket." |
| 0:180:30 | New session: "What are my language preferences?" → correct answer | "New session. Same brain." |
| 0:300:45 | Search → graph nodes pulse blue (spreading activation) | "Search runs a 7-stage cognitive pipeline." |
| 0:450:58 | Dream mode: purple wash, golden edges | "Dream consolidation finds connections you never typed." |
| 0:581:15 | Terminal: agent says "tests passed" → veto / sanhedrin HTML | "Receipt Lock: no receipt, no claim." |
| 1:151:25 | Terminal: install commands | `npm install -g vestige-mcp-server@latest` |
| 1:251:30 | Logo / github.com/samvallad33/vestige | "v2.1.23 · local · AGPL" |
## Export targets
| Asset | Path |
|-------|------|
| Full video | `docs/marketing/assets/demo-full.mp4` |
| Dashboard loop | `docs/marketing/assets/dashboard-dream.gif` |
| Receipt Lock loop | `docs/marketing/assets/receipt-lock.gif` |
| Memory create | `docs/marketing/assets/memory-born.gif` |
Capture commands: [assets/CAPTURE.md](assets/CAPTURE.md)
## Wave usage
- **Wave A:** Ship `receipt-lock.gif` + beats 0:581:15 first
- **Wave B:** Ship `dashboard-dream.gif` + full `demo-full.mp4`

View file

@ -1,69 +0,0 @@
# Vestige Marketing Agent Protocol
You are the marketing operator for **Vestige** (v2.1.23). You have access to a **dedicated** Vestige MCP instance (`vestige-marketing` / `VESTIGE_DATA_DIR=~/.vestige-marketing`). Never confuse this with the user's dev memory.
## Product facts (do not invent stats)
Read [docs/LAUNCH_STATS.md](../../LAUNCH_STATS.md) before drafting. Current anchors:
- ~86K LOC Rust, 25 MCP tools, 30 cognitive modules, 1,200+ tests, 22MB binary
- Install: `npm install -g vestige-mcp-server@latest` + `claude mcp add vestige vestige-mcp -s user`
- Wave A hook: **Receipt Lock** — blocks "tests passed" without command receipts
- Wave B product: **FSRS-6 cognitive memory**, dreaming, 3D dashboard
- Comparison: [docs/comparison.md](../../comparison.md)
- Author: Sam Valladares, 22, solo, AGPL-3.0
## Session start
1. `session_context` with query: `vestige marketing launch hooks objections`
2. `deep_reference` if drafting factual claims about features or competitors
3. `contradictions` if messaging might conflict with prior brand guidelines
## Voice
- Technical, humble, specific — never "revolutionary", "game-changer", "AI-powered"
- Lead with **pain** (agent amnesia, fake green builds, contradicting memories)
- Reveal **tool** second
- Acknowledge Mem0, native Claude memory, RAG honestly — do not bash
- Neuroscience: cite real papers; admit heuristics where approximate
## On user feedback
- Winning hook / post → `memory` promote on that memory
- Flopped angle → `suppress` (not delete)
- New objection → `smart_ingest` with tags `marketing, objection`
- User correction → `smart_ingest` + demote wrong memory if needed
## Weekly deliverables
When asked for "weekly content":
1. **One long-form** (8001200 words): expand top objection OR one cognitive module OR Receipt Lock story
2. **35 short posts** (X/LinkedIn): each ≤280 chars or ≤2 short paragraphs
3. **One Reddit draft** (technical, humble title — pain first)
4. **Metrics summary** paragraph for ingest after user fills tracker
## Channels (user posts manually)
You draft only. User sends all posts and DMs to avoid bans and keep authenticity.
| Channel | Style |
|---------|-------|
| HN | Show HN title ≤80 chars; first comment = full body; science-first |
| Reddit | Personal story + JSON output + install block; no "introducing my startup" |
| X | 812 tweet thread; hook tweet must stand alone |
| LinkedIn | Professional, link comparison.md |
## End of week
```
dream with focus on marketing memories tagged vestige-launch from the last 7 days.
Return: top 3 hooks to promote, top 2 to suppress, one recommended post for next week.
```
## Hard rules
- Do not claim Vestige replaces CI/CD or enterprise memory suites
- Do not fabricate download numbers — use metrics-tracker.md only
- Do not tell users `sudo mv` for install unless manual binary path failed
- Always include GitHub link: https://github.com/samvallad33/vestige

View file

@ -1,84 +0,0 @@
# Vestige Marketing Growth Engine
Repeatable weekly loop: Vestige remembers what worked, Claude Code drafts whats next, you approve and post manually.
## One-time setup
### 1. Dedicated marketing memory store
```bash
mkdir -p ~/.vestige-marketing
```
Add a **second** MCP server entry (do not mix with dev memory):
```bash
claude mcp add vestige-marketing vestige-mcp -s user \
--env VESTIGE_DATA_DIR=$HOME/.vestige-marketing
```
If your client does not support env on `mcp add`, use a wrapper script:
```bash
# ~/bin/vestige-mcp-marketing
#!/bin/bash
export VESTIGE_DATA_DIR="$HOME/.vestige-marketing"
exec vestige-mcp "$@"
```
### 2. Copy marketing agent instructions
```bash
cp docs/marketing/growth-engine/MARKETING-CLAUDE.md ~/vestige-marketing-CLAUDE.md
```
In Claude Code for marketing sessions, include that file (or paste into project instructions).
### 3. Seed baseline memories
Open Claude Code with `vestige-marketing` connected and run:
```
Read docs/LAUNCH_STATS.md, docs/comparison.md, and docs/marketing/metrics-tracker.md.
smart_ingest each as separate marketing baseline memories with tags: marketing, baseline, vestige-launch.
```
## Weekly loop (≈2 hours)
| Step | Who | Action |
|------|-----|--------|
| Mon AM | You | Fill `metrics-tracker.md` row |
| Mon | Agent | `session_context` with query "vestige marketing launch" |
| Mon | Agent | Draft 1 long-form + 35 shorts from last week's `promote`d hooks |
| Mon | You | Edit and post manually (HN/Reddit/X/LinkedIn) |
| Fri | You | Log engagement URLs + numbers |
| Fri | Agent | `smart_ingest` weekly metrics + objections |
| Fri | Agent | `dream` on tag `vestige-launch` for next week's angles |
## Tool cheat sheet
| Goal | Tool |
|------|------|
| Load brand voice + past wins | `session_context` |
| Save post results | `smart_ingest` |
| Recall winning hooks | `search` / `deep_reference` |
| Retire dead angles | `suppress` |
| Boost viral hook | `memory` action=promote |
| Weekly strategy | `dream` |
## Dogfood story (meta-content)
> "I use Vestige to market Vestige — marketing memories live in a separate data dir, FSRS promotes hooks that converted, suppress kills angles that flopped."
Post this on X after Week 2 if metrics show engagement.
## Files
| File | Purpose |
|------|---------|
| [MARKETING-CLAUDE.md](MARKETING-CLAUDE.md) | Agent protocol |
| [../metrics-tracker.md](../metrics-tracker.md) | Weekly numbers |
| [../wave-a-launch.md](../wave-a-launch.md) | Receipt Lock execution |
| [../wave-b-launch.md](../wave-b-launch.md) | Memory wave execution |
| [../../launch/receipt-lock.md](../../launch/receipt-lock.md) | Wave A copy |
| [../../comparison.md](../../comparison.md) | Argument anchor |

View file

@ -1,57 +0,0 @@
# MCP Registry & Directory Submissions
Passive install channel — update listings whenever v2.1.x ships. Check off as you submit.
## Submission packet (reuse everywhere)
| Field | Value |
|-------|-------|
| Name | Vestige |
| Slug | `io.github.samvallad33/vestige` (npm `mcpName`) |
| Description | Local cognitive memory for MCP agents — FSRS-6 spaced repetition, prediction error gating, memory dreaming, 3D dashboard, optional Receipt Lock for agent verification claims. |
| Install | `npm install -g vestige-mcp-server@latest` then `claude mcp add vestige vestige-mcp -s user` |
| Repo | https://github.com/samvallad33/vestige |
| Homepage | https://samvallad33.github.io/vestige/ |
| License | AGPL-3.0-only |
| Transport | stdio (default); HTTP opt-in |
| Version | 2.1.23 |
| Tags | memory, mcp, claude, cursor, local-first, fsrs, neuroscience, rust |
## Registries
| Directory | URL | Status | Notes |
|-----------|-----|--------|-------|
| Glama | https://glama.ai/mcp/servers | [ ] Submit / refresh | Ownership metadata in repo (`cd496e5`) |
| mcp.so | https://mcp.so | [ ] Submit | Use submission packet |
| Smithery | https://smithery.ai | [ ] Submit | npm package + stdio command |
| PulseMCP | https://www.pulsemcp.com | [ ] Submit | |
| Awesome MCP Servers | https://github.com/punkpeye/awesome-mcp-servers | [ ] PR | Add under Memory / Knowledge |
| modelcontextprotocol/servers | https://github.com/modelcontextprotocol/servers | [ ] PR if accepted | Follow their CONTRIBUTING |
| Cursor directory | docs/integrations/cursor.md | [x] Doc exists | Link from Cursor forum / Discord |
| VS Code marketplace | N/A for MCP stdio | [ ] N/A | Use integrations/vscode.md in posts |
## Awesome-MCP PR snippet
```markdown
### Vestige
- **Description:** Local cognitive memory — FSRS-6 decay, dreaming, contradiction tools, optional Receipt Lock
- **Install:** `npm install -g vestige-mcp-server@latest`
- **Command:** `vestige-mcp`
- **Repo:** https://github.com/samvallad33/vestige
```
## After each listing goes live
```bash
# Ingest into marketing Vestige
smart_ingest: "Listed Vestige on [REGISTRY] at [URL]. Version 2.1.23."
tags: marketing, registry, vestige-launch
```
## Editor-specific posts (optional)
| Community | Action |
|-----------|--------|
| Cursor Discord #showcase | Link comparison.md + 30s dashboard GIF |
| Claude Code GitHub discussions | Receipt Lock angle + install |
| r/mcp | Neutral "new server" post after Wave B |

View file

@ -1,66 +0,0 @@
# Vestige Growth Metrics Tracker
**North star:** weekly `vestige-mcp-server` npm installs + evidence of active MCP connections (issues, "it works" posts).
Update every **Monday**. Feed summary into marketing Vestige via `smart_ingest`.
## How to fetch numbers
```bash
# npm weekly downloads (approximate)
npm view vestige-mcp-server
# GitHub stars
gh api repos/samvallad33/vestige --jq .stargazers_count
# Optional: npm download chart
# https://www.npmjs.com/package/vestige-mcp-server
```
## Weekly log template
Copy a row per week:
| Week ending | npm downloads (total) | Stars | Stars Δ | Top channel | Top hook | Installs anecdote | Notes |
|-------------|----------------------|-------|---------|-------------|----------|-------------------|-------|
| 2026-06-02 | TBD | 542 | 0 | pre-launch | Receipt Lock / fake tests passed | setup complete | marketing instance seeded, ready for Wave A |
| 2026-06-09 | | | | | | | post Wave A week 1 |
## Per-post log template
| Date | Wave | Channel | Post URL | Engagement | Stars Δ (48h) | Objections | Action |
|------|------|---------|----------|------------|---------------|------------|--------|
| | A | HN | | | | | |
## Objection → content flywheel
When the same objection appears 3+ times, promote to permanent doc:
| Objection | Response doc |
|-----------|----------------|
| "Isn't this just RAG?" | [comparison.md](../comparison.md) |
| "Claude has memory now" | comparison.md + Receipt Lock section |
| "AGPL?" | README + HN FAQ in show-hn.md |
| "77K LOC over-engineered" | show-hn.md FAQ |
| "FSRS gimmick?" | [SCIENCE.md](../SCIENCE.md) |
## Agent ingest prompt (weekly)
```
smart_ingest: Vestige marketing week ending YYYY-MM-DD.
npm: X total (ΔY). Stars: N (ΔZ).
Best channel: [HN/Reddit/X].
Best hook: [phrase].
Top objection: [text].
Next week: [one action].
tags: marketing, metrics, vestige-launch
```
## Goals (first 8 weeks)
| Milestone | Target |
|-----------|--------|
| Wave A HN front page | 100+ points |
| Stars | 542 → 800+ |
| npm weekly downloads | 2× baseline |
| Registry listings | 5+ MCP directories |

View file

@ -1,32 +0,0 @@
Hi HN,
Your coding agent probably ends sessions with something like "all tests passed" or
"the build is green." I kept trusting that — until it wasn't true.
I built Receipt Lock in Vestige (an MCP memory server I maintain). Before operational
claims become part of the final answer, Vestige checks them against structured
command receipts from the current transcript. No matching successful receipt → the
claim can be blocked and a local veto receipt is written (JSON + HTML under
~/.vestige/sanhedrin/).
**What it is:** Optional Claude Code Cognitive Sandwich hooks + local MCP server.
Not cloud. Not "trust me bro" logging — inspectable receipts on disk.
**Install (memory server — required base):**
npm install -g vestige-mcp-server@latest
claude mcp add vestige vestige-mcp -s user
**Enable Receipt Lock (optional):**
vestige sandwich install --enable-sanhedrin
Sanhedrin verifier can point at any OpenAI-compatible endpoint (Ollama, MLX, hosted API).
**And it also does real memory:** FSRS-6 spaced repetition, prediction error gating,
memory dreaming, 3D dashboard at localhost:3927. ~86K LOC Rust, 25 MCP tools, 1,200+
tests, 22MB binary. 100% local after first embedding download.
I'm 22, solo, AGPL-3.0. Repo: https://github.com/samvallad33/vestige
Comparison: https://github.com/samvallad33/vestige/blob/main/docs/comparison.md
Landing: https://samvallad33.github.io/vestige/
Happy to discuss false positive tuning, Sanhedrin presets, or why receipts beat vibes.

View file

@ -1 +0,0 @@
Show HN: Vestige blocks coding agents from claiming "tests passed" without receipts

View file

@ -1 +0,0 @@
My coding agent kept saying "tests passed" when they hadn't. I added a receipt check before the summary ships.

View file

@ -1,19 +0,0 @@
**TL;DR:** Vestige Receipt Lock checks operational claims ("tests passed", "build green", "lint clean") against structured command receipts from the transcript. No receipt → block + local veto artifact.
**The failure mode:** Agent runs partial checks, or hallucinates a green ending. You merge. CI breaks. You've seen this.
**The fix:** Optional hooks (`vestige sandwich install --enable-sanhedrin`) + MCP memory server. When the model tries to assert verification without evidence, Vestige can veto and write `~/.vestige/sanhedrin/latest.html` so you can inspect what happened.
**Not a replacement for CI.** It's a last-mile guard on *agent-authored* summaries in Claude Code.
**Stack:** Rust, local, MCP. Same project also does FSRS-6 cognitive memory (decay, dreaming, contradiction tools) — I'll post that angle separately if people want the science side.
```bash
npm install -g vestige-mcp-server@latest
claude mcp add vestige vestige-mcp -s user
vestige sandwich install --enable-sanhedrin
```
GitHub: https://github.com/samvallad33/vestige
What false positives are you seeing with agent verification claims? Curious if this matches your workflow.

View file

@ -1,18 +0,0 @@
1/8 Your coding agent ends with "tests passed." Did it run tests? Or did it summarize hope?
2/8 I ship Receipt Lock in Vestige — checks operational claims against command receipts from the transcript.
3/8 No matching successful receipt → claim blocked. Local veto receipt: ~/.vestige/sanhedrin/latest.html
4/8 Optional hooks. Local MCP server. Not cloud analytics.
5/8
npm i -g vestige-mcp-server@latest
claude mcp add vestige vestige-mcp -s user
vestige sandwich install --enable-sanhedrin
6/8 Same binary also does FSRS-6 memory — decay, dreaming, 3D brain viz. Thread on that tomorrow.
7/8 22yo solo dev. AGPL. https://github.com/samvallad33/vestige
8/8 What's the worst "green build" lie your agent told you? Reply — building the FAQ from real stories.

View file

@ -1,47 +0,0 @@
# Wave A — Execution Checklist
Copy-paste from [docs/launch/receipt-lock.md](../launch/receipt-lock.md). **You post manually.**
## Pre-flight
- [x] `docs/LAUNCH_STATS.md` numbers match README
- [x] `vestige health` passes on your machine
- [ ] GitHub Pages live: https://samvallad33.github.io/vestige/ (after `git push` + Pages enabled)
- [x] GIFs captured OR placeholder SVG acceptable for Wave A
- [x] Marketing Vestige seeded: `./scripts/marketing/setup-marketing-instance.sh`
- [ ] Ingest Wave A URLs after posting (see LAUNCH_NOW.md)
## Day 1 — HN + Lobsters
| Time (ET) | Channel | Artifact |
|-----------|---------|----------|
| 8:00 AM Tue/Wed | Hacker News Show HN | Title + first comment from `receipt-lock.md` |
| +30 min | Lobste.rs | Shorter HN body |
| 8:0011:00 AM | HN comments | 30-min reply SLA |
## Day 12 — Reddit + X
| Time | Channel | Artifact |
|------|---------|----------|
| +1h | r/ExperiencedDevs | Full post in `receipt-lock.md` |
| +2h | r/programming | Same + stats line |
| +0h (parallel) | X thread | 8 tweets in `receipt-lock.md` |
| Pin | X profile | Thread link during HN peak |
## Metrics to log (→ `metrics-tracker.md`)
| Field | Value |
|-------|-------|
| Date | |
| Channel | |
| URL | |
| Upvotes / points | |
| Comments | |
| npm downloads (week delta) | |
| Stars delta (48h) | |
| Top objection | |
| Winning hook phrase | |
## After Wave A
Wait **48h** from HN peak, then run [wave-b-launch.md](wave-b-launch.md).

View file

@ -1,45 +0,0 @@
# Wave B — Execution Checklist
Memory / neuroscience product wave. Cross-link Wave A HN thread if it performed.
Sources: [show-hn.md](../launch/show-hn.md) (refresh before posting), [demo-script.md](../launch/demo-script.md), [comparison.md](../comparison.md).
## Pre-flight
- [ ] Dashboard GIF live (`docs/marketing/assets/dashboard-dream.gif`)
- [ ] 20 pre-loaded memories per demo-script pre-demo checklist
- [ ] Wave A metrics logged in `metrics-tracker.md`
## Day 3 — Show HN (memory angle) OR skip if Wave A HN was same week
If Wave A used Show HN title for Receipt Lock, **do not** second Show HN same week. Use Reddit + X only for Wave B.
| Channel | Focus |
|---------|-------|
| r/ClaudeAI | MCP memory, FSRS-6, dashboard, 2-min install |
| r/LocalLLaMA | Local-first, zero cloud, ONNX embeddings |
| r/rust | Architecture, 86K LOC, 25 tools, zero unsafe |
## Day 45 — Content
| Channel | Artifact |
|---------|----------|
| X | 10-tweet thread: "RAG is not memory" + FSRS + dream GIF |
| LinkedIn | Link to comparison.md + dashboard GIF |
| Blog | Optional: publish refreshed `docs/launch/blog-post.md` on dev.to / personal site |
## r/ClaudeAI title (v2.1.23)
```
Vestige v2.1.23 — FSRS-6 memory for Claude Code + optional Receipt Lock when agents fake "tests passed"
```
Body: Use r/ClaudeAI section from refreshed `show-hn.md` + install block from LAUNCH_STATS.
## Cross-link line (if Wave A performed)
> Earlier this week I posted about Receipt Lock (agents claiming tests passed without receipts). Same project — the memory engine underneath: [link]
## Metrics
Same table as wave-a-launch.md. Tag `wave=B` in marketing Vestige ingest.

View file

@ -1,82 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Vestige — Local memory and receipts for AI agents</title>
<meta name="description" content="FSRS-6 cognitive memory + Receipt Lock for MCP agents. 22MB Rust binary. 100% local." />
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@400;600;700&family=IBM+Plex+Mono&display=swap" rel="stylesheet" />
<style>
:root { --bg: #07070f; --fg: #e8e8f0; --muted: #9ca3af; --accent: #818cf8; --gold: #fbbf24; --card: #12121c; }
* { box-sizing: border-box; margin: 0; padding: 0; }
body { font-family: 'IBM Plex Sans', system-ui, sans-serif; background: var(--bg); color: var(--fg); line-height: 1.6; }
a { color: var(--accent); }
.wrap { max-width: 880px; margin: 0 auto; padding: 2rem 1.25rem 4rem; }
h1 { font-size: clamp(1.75rem, 5vw, 2.5rem); font-weight: 700; line-height: 1.2; margin-bottom: 1rem; }
h2 { font-size: 1.35rem; margin: 2.5rem 0 1rem; color: var(--accent); }
p.lead { font-size: 1.15rem; color: var(--muted); margin-bottom: 1.5rem; }
.badge { display: inline-block; font-size: 0.75rem; font-family: 'IBM Plex Mono', monospace; background: var(--card); padding: 0.25rem 0.6rem; border-radius: 4px; margin-right: 0.5rem; margin-bottom: 0.5rem; }
pre { background: var(--card); padding: 1rem; border-radius: 8px; overflow-x: auto; font-family: 'IBM Plex Mono', monospace; font-size: 0.9rem; margin: 1rem 0; border: 1px solid #1f1f2e; }
.hero-img { width: 100%; border-radius: 12px; border: 1px solid #1f1f2e; margin: 1.5rem 0; }
table { width: 100%; border-collapse: collapse; font-size: 0.9rem; margin: 1rem 0; }
th, td { border: 1px solid #1f1f2e; padding: 0.6rem 0.75rem; text-align: left; }
th { background: var(--card); }
.cta { display: inline-block; background: var(--accent); color: #fff; font-weight: 600; padding: 0.75rem 1.25rem; border-radius: 8px; text-decoration: none; margin-top: 0.5rem; }
.cta:hover { filter: brightness(1.1); }
footer { margin-top: 3rem; font-size: 0.85rem; color: var(--muted); }
.hook { border-left: 3px solid var(--gold); padding-left: 1rem; margin: 1.5rem 0; font-style: italic; color: #d1d5db; }
</style>
</head>
<body>
<div class="wrap">
<p>
<span class="badge">v2.1.23</span>
<span class="badge">25 MCP tools</span>
<span class="badge">~86K LOC Rust</span>
<span class="badge">AGPL-3.0</span>
</p>
<h1>Your agent forgets yesterday.<br />It can lie about today.</h1>
<p class="lead">Vestige is a local MCP memory server: real FSRS-6 forgetting and consolidation, plus optional <strong>Receipt Lock</strong> that blocks &ldquo;tests passed&rdquo; without command receipts.</p>
<pre>npm install -g vestige-mcp-server@latest
claude mcp add vestige vestige-mcp -s user</pre>
<a class="cta" href="https://github.com/samvallad33/vestige">GitHub →</a>
<h2>Wave A: Receipt Lock</h2>
<div class="hook">Coding agents finish with confident summaries. Vestige checks operational claims against structured command receipts before they become your final answer.</div>
<p>If the agent claims verification happened but no matching successful receipt exists, the claim can be blocked and an inspectable local veto is written to <code>~/.vestige/sanhedrin/</code>.</p>
<pre>vestige sandwich install --enable-sanhedrin</pre>
<p><a href="https://github.com/samvallad33/vestige#receipt-lock">Receipt Lock docs</a></p>
<h2>Wave B: A brain, not a bucket</h2>
<img class="hero-img" src="../marketing/assets/dashboard-placeholder.svg" alt="Vestige 3D memory dashboard" width="960" height="540" />
<p>Memories decay on FSRS-6 curves. Search strengthens them (Testing Effect). <code>dream</code> consolidates offline. The 3D dashboard shows pulses, connections, and dream replay in real time.</p>
<p><code>vestige dashboard</code><a href="http://localhost:3927/dashboard">localhost:3927/dashboard</a></p>
<h2>Vestige vs the rest</h2>
<table>
<thead><tr><th></th><th>RAG</th><th>Native AI memory</th><th>Vestige</th></tr></thead>
<tbody>
<tr><td>Forgetting</td><td>None</td><td>Opaque</td><td><strong>FSRS-6</strong></td></tr>
<tr><td>Local / private</td><td>Varies</td><td>Cloud</td><td><strong>100% local</strong></td></tr>
<tr><td>Contradictions</td><td>Both chunks</td><td>No</td><td><strong>deep_reference</strong></td></tr>
<tr><td>Fake &ldquo;tests passed&rdquo;</td><td>N/A</td><td>N/A</td><td><strong>Receipt Lock</strong></td></tr>
<tr><td>Visualization</td><td>None</td><td>None</td><td><strong>3D graph</strong></td></tr>
</tbody>
</table>
<p><a href="https://github.com/samvallad33/vestige/blob/main/docs/comparison.md">Full comparison (Mem0, RAG, native)</a></p>
<h2>Install</h2>
<pre>npm install -g vestige-mcp-server@latest
vestige health
claude mcp add vestige vestige-mcp -s user</pre>
<p>Also works with Codex, Cursor, VS Code Copilot, JetBrains, Windsurf, Xcode. See <a href="https://github.com/samvallad33/vestige/tree/main/docs/integrations">integration guides</a>.</p>
<footer>
Built by Sam Valladares (22, solo). Stats: <a href="../LAUNCH_STATS.md">LAUNCH_STATS.md</a> · Science: <a href="../SCIENCE.md">SCIENCE.md</a>
</footer>
</div>
</body>
</html>