From 00511948ffd345e17b3f12a858114fc35375f502 Mon Sep 17 00:00:00 2001 From: Sam Valladares Date: Tue, 2 Jun 2026 12:38:18 -0500 Subject: [PATCH 1/4] Add developer launch kit for Vestige v2.1.23 Dual-wave marketing assets (Receipt Lock + cognitive memory), GitHub Pages landing, comparison doc, ready-to-post copy, growth-engine scripts, and a dedicated marketing Vestige data-dir setup path. Co-authored-by: Cursor --- .github/workflows/pages.yml | 46 +++++ CLAUDE.md | 3 +- README.md | 59 ++++++- docs/LAUNCH_STATS.md | 88 +++++++++ docs/comparison.md | 82 +++++++++ docs/launch/blog-post.md | 2 +- docs/launch/demo-script.md | 12 +- docs/launch/receipt-lock.md | 167 ++++++++++++++++++ docs/launch/reddit-cross-reference.md | 25 +-- docs/launch/show-hn.md | 38 ++-- docs/marketing/LAUNCH_NOW.md | 35 ++++ docs/marketing/README.md | 33 ++++ docs/marketing/assets/.gitkeep | 0 docs/marketing/assets/CAPTURE.md | 40 +++++ .../assets/dashboard-placeholder.svg | 10 ++ docs/marketing/demo-video-storyboard.md | 32 ++++ .../growth-engine/MARKETING-CLAUDE.md | 69 ++++++++ docs/marketing/growth-engine/README.md | 84 +++++++++ docs/marketing/mcp-registries.md | 57 ++++++ docs/marketing/metrics-tracker.md | 66 +++++++ .../ready-to-post/hn-first-comment.txt | 32 ++++ docs/marketing/ready-to-post/hn-title.txt | 1 + .../reddit-experienceddevs-title.txt | 1 + .../ready-to-post/reddit-experienceddevs.md | 19 ++ docs/marketing/ready-to-post/x-thread.txt | 18 ++ docs/marketing/wave-a-launch.md | 47 +++++ docs/marketing/wave-b-launch.md | 45 +++++ docs/website/index.html | 82 +++++++++ package.json | 3 +- packages/vestige-mcp-npm/README.md | 28 ++- packages/vestige-mcp-npm/package.json | 1 + scripts/marketing/preflight.sh | 47 +++++ scripts/marketing/seed-baseline-memories.sh | 29 +++ scripts/marketing/setup-marketing-instance.sh | 44 +++++ 34 files changed, 1303 insertions(+), 42 deletions(-) create mode 100644 .github/workflows/pages.yml create mode 100644 docs/LAUNCH_STATS.md create mode 100644 docs/comparison.md create mode 100644 docs/launch/receipt-lock.md create mode 100644 docs/marketing/LAUNCH_NOW.md create mode 100644 docs/marketing/README.md create mode 100644 docs/marketing/assets/.gitkeep create mode 100644 docs/marketing/assets/CAPTURE.md create mode 100644 docs/marketing/assets/dashboard-placeholder.svg create mode 100644 docs/marketing/demo-video-storyboard.md create mode 100644 docs/marketing/growth-engine/MARKETING-CLAUDE.md create mode 100644 docs/marketing/growth-engine/README.md create mode 100644 docs/marketing/mcp-registries.md create mode 100644 docs/marketing/metrics-tracker.md create mode 100644 docs/marketing/ready-to-post/hn-first-comment.txt create mode 100644 docs/marketing/ready-to-post/hn-title.txt create mode 100644 docs/marketing/ready-to-post/reddit-experienceddevs-title.txt create mode 100644 docs/marketing/ready-to-post/reddit-experienceddevs.md create mode 100644 docs/marketing/ready-to-post/x-thread.txt create mode 100644 docs/marketing/wave-a-launch.md create mode 100644 docs/marketing/wave-b-launch.md create mode 100644 docs/website/index.html create mode 100755 scripts/marketing/preflight.sh create mode 100755 scripts/marketing/seed-baseline-memories.sh create mode 100755 scripts/marketing/setup-marketing-instance.sh diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml new file mode 100644 index 0000000..d30a8f3 --- /dev/null +++ b/.github/workflows/pages.yml @@ -0,0 +1,46 @@ +name: Deploy GitHub Pages + +on: + push: + branches: [main] + paths: + - 'docs/website/**' + - 'docs/marketing/assets/**' + - '.github/workflows/pages.yml' + workflow_dispatch: + +permissions: + contents: read + pages: write + id-token: write + +concurrency: + group: pages + cancel-in-progress: false + +jobs: + deploy: + runs-on: ubuntu-latest + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + steps: + - uses: actions/checkout@v4 + + - name: Prepare site root + run: | + mkdir -p _site + cp -r docs/website/* _site/ + mkdir -p _site/assets + cp -r docs/marketing/assets/* _site/assets/ 2>/dev/null || true + # Fix asset paths for Pages (no parent ../) + sed -i 's|../marketing/assets/|assets/|g' _site/index.html || true + + - uses: actions/configure-pages@v5 + + - uses: actions/upload-pages-artifact@v3 + with: + path: _site + + - id: deployment + uses: actions/deploy-pages@v4 diff --git a/CLAUDE.md b/CLAUDE.md index 4ee5762..c9034d6 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -18,7 +18,8 @@ dashboard embedded into the release binary. The core product promise is: ## Working Rules - Prefer source evidence over memory. Use `rg`, tests, and nearby code before - making claims about behavior. + making claims about behavior. This public repo guidance does not override + private user-level memory protocols loaded outside the repository. - Keep release changes scoped. Do not rewrite unrelated modules during a version/tag cleanup unless the release gate requires it. - Preserve local-first behavior. Heavy models, Sanhedrin-style verifier hooks, diff --git a/README.md b/README.md index f747715..fb612ad 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ # Vestige -### Local cognitive memory for MCP-compatible AI agents. +### Local memory and receipts for MCP-compatible AI agents. [![GitHub stars](https://img.shields.io/github/stars/samvallad33/vestige?style=social)](https://github.com/samvallad33/vestige) [![Release](https://img.shields.io/github/v/release/samvallad33/vestige)](https://github.com/samvallad33/vestige/releases/latest) @@ -10,11 +10,23 @@ [![License](https://img.shields.io/badge/license-AGPL--3.0-blue)](LICENSE) [![MCP Compatible](https://img.shields.io/badge/MCP-compatible-green)](https://modelcontextprotocol.io) -**Your agent forgets project decisions between sessions. Vestige gives it local, inspectable memory.** +**Your coding agent forgets yesterday and can lie about today.** Vestige gives it a local brain — FSRS-6 memory that learns and forgets — plus **Receipt Lock** that blocks "tests passed" unless a real command receipt exists. -Built on proven memory and retrieval ideas — FSRS-6 spaced repetition, prediction error gating, synaptic tagging, spreading activation, and memory consolidation — all running in a single Rust binary with a local dashboard. 100% local. Zero cloud. +```bash +npm install -g vestige-mcp-server@latest +claude mcp add vestige vestige-mcp -s user +``` -[Quick Start](#quick-start) | [Dashboard](#-3d-memory-dashboard) | [How It Works](#-the-cognitive-science-stack) | [Tools](#-25-mcp-tools) | [Docs](docs/) +| | | +|---|---| +| **Receipt Lock** — optional hook layer; vetoes unverified "green build" claims | **3D dashboard** — `vestige dashboard` → `localhost:3927` | +| ![Receipt Lock demo](docs/marketing/assets/receipt-lock.gif) · [capture guide](docs/marketing/assets/CAPTURE.md) | ![Memory dashboard](docs/marketing/assets/dashboard-placeholder.svg) | + +*Replace placeholders with GIFs from [`CAPTURE.md`](docs/marketing/assets/CAPTURE.md) before Wave B launch.* + +**v2.1.23** · ~86K LOC Rust · **25** MCP tools · **30** cognitive modules · **1,200+** tests · **22MB** binary · 100% local · AGPL-3.0 + +[Quick Start](#quick-start) | [Receipt Lock](#receipt-lock) | [Dashboard](#-3d-memory-dashboard) | [Compare vs RAG](docs/comparison.md) | [Launch stats](docs/LAUNCH_STATS.md) | [Docs](docs/) @@ -55,6 +67,43 @@ codex mcp add vestige -- vestige-mcp # → "You prefer TypeScript over JavaScript." ``` +## Receipt Lock + +Coding agents often finish with confident summaries like "tests passed" or +"the build is green." Receipt Lock checks those operational claims against +structured command receipts from the current transcript before they become part +of the final answer. + +If the agent claims verification happened but no matching successful command +receipt exists, Vestige can block the claim and write an inspectable local +receipt instead of letting the agent invent a clean ending. + +Receipt Lock is optional and works through the Claude Code Cognitive Sandwich +hook layer: + +```bash +# Install the local memory server first +npm install -g vestige-mcp-server@latest + +# Add normal MCP memory +claude mcp add vestige vestige-mcp -s user + +# Optional: enable Receipt Lock / Sanhedrin hooks +vestige sandwich install --enable-sanhedrin + +# Optional: point Sanhedrin at any OpenAI-compatible endpoint +vestige sandwich install \ + --enable-sanhedrin \ + --sanhedrin-endpoint=http://127.0.0.1:11434/v1/chat/completions \ + --sanhedrin-model=qwen2.5:14b +``` + +Receipts are local: + +- Latest JSON: `~/.vestige/sanhedrin/latest.json` +- Latest HTML: `~/.vestige/sanhedrin/latest.html` +- Command ledger: `~/.vestige/sanhedrin/command-receipts.jsonl` +
Other platforms & install methods @@ -422,6 +471,8 @@ vestige dashboard # Open 3D dashboard in browser | [CLAUDE.md Setup](docs/CLAUDE-SETUP.md) | Templates for proactive memory | | [Configuration](docs/CONFIGURATION.md) | CLI commands, environment variables | | [Integrations](docs/integrations/) | Codex, Xcode, Cursor, VS Code, JetBrains, Windsurf | +| [Comparison vs RAG/Mem0](docs/comparison.md) | When to use Vestige | +| [Marketing kit](docs/marketing/README.md) | Launch waves, growth engine, metrics | | [Changelog](CHANGELOG.md) | Version history | --- diff --git a/docs/LAUNCH_STATS.md b/docs/LAUNCH_STATS.md new file mode 100644 index 0000000..4bd1d92 --- /dev/null +++ b/docs/LAUNCH_STATS.md @@ -0,0 +1,88 @@ +# 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) diff --git a/docs/comparison.md b/docs/comparison.md new file mode 100644 index 0000000..9a78a3e --- /dev/null +++ b/docs/comparison.md @@ -0,0 +1,82 @@ +# 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 diff --git a/docs/launch/blog-post.md b/docs/launch/blog-post.md index 886bb5a..08178ba 100644 --- a/docs/launch/blog-post.md +++ b/docs/launch/blog-post.md @@ -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. -77,840+ lines of Rust. 29 cognitive modules. 734 tests. Single binary deployment with an embedded SvelteKit dashboard. AGPL-3.0 licensed. +~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). Here is how we built it. diff --git a/docs/launch/demo-script.md b/docs/launch/demo-script.md index 4740dc4..162efb8 100644 --- a/docs/launch/demo-script.md +++ b/docs/launch/demo-script.md @@ -1,4 +1,6 @@ -# Vestige v2.0 "Cognitive Leap" — MCP Dev Summit NYC Demo Script +# 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) **Event:** MCP Dev Summit NYC, April 1-3, 2026 **Presenter:** Sam Valladares @@ -15,7 +17,7 @@ - [ ] Phone hotspot configured as backup (embedding model already cached = no network needed) ### Software -- [ ] Vestige v2.0 binary installed: `vestige-mcp --version` shows `2.0.0` +- [ ] Vestige binary installed: `vestige-mcp --version` shows `2.1.23` (or latest) - [ ] Claude Code installed and authenticated - [ ] Terminal font size: 18pt minimum (audience readability) - [ ] Browser zoom: 150% for dashboard views @@ -205,7 +207,7 @@ claude mcp add vestige vestige-mcp -s user ### [2:50-3:00] Close -> 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. +> 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. --- @@ -391,9 +393,9 @@ vestige-mcp --version # One command to install ``` -> 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. +> 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. > -> 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. +> 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. > > Thank you. diff --git a/docs/launch/receipt-lock.md b/docs/launch/receipt-lock.md new file mode 100644 index 0000000..a27df5a --- /dev/null +++ b/docs/launch/receipt-lock.md @@ -0,0 +1,167 @@ +# 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 | +|--------|--------| +| 0–3h | 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, 8–10 AM US Eastern +- **Reddit:** Same day, +1–2h after HN +- **X:** Pin thread during HN peak diff --git a/docs/launch/reddit-cross-reference.md b/docs/launch/reddit-cross-reference.md index eae7aaf..d03f5f6 100644 --- a/docs/launch/reddit-cross-reference.md +++ b/docs/launch/reddit-cross-reference.md @@ -1,4 +1,6 @@ -# Reddit Launch Posts — cross_reference Tool +# 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` ## Post 1: r/ClaudeAI (Primary) @@ -78,8 +80,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: -- 22 MCP tools -- 746 tests, 0 failures +- 25 MCP tools +- 1,200+ tests - Zero `unsafe` code - Clean security audit (0 findings — AgentAudit verified) - Single 22MB Rust binary — no Docker, no PostgreSQL, no cloud @@ -87,9 +89,8 @@ Memory systems need to be SMARTER, not just bigger. That's what Vestige does — ### Install (30 seconds): ```bash -# macOS Apple Silicon -npm install -g vestige-mcp-server -sudo mv vestige-mcp /usr/local/bin/ +npm install -g vestige-mcp-server@latest +vestige health claude mcp add vestige vestige-mcp -s user ``` @@ -162,12 +163,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 -sudo mv vestige-mcp /usr/local/bin/ +npm install -g vestige-mcp-server@latest +vestige health claude mcp add vestige vestige-mcp -s user ``` -746 tests. Zero unsafe code. Clean security audit. AGPL-3.0. +1,200+ tests. Zero unsafe code. AGPL-3.0. GitHub: https://github.com/samvallad33/vestige @@ -175,7 +176,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, 29 cognitive modules, 3D dashboard, and a new contradiction detection tool. 746 tests, zero unsafe.` +**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.` --- @@ -188,7 +189,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 746 tests in 11 seconds +- `cargo test` runs 1,200+ tests across the workspace **Architecture:** ``` @@ -213,7 +214,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 | 746 tests | 79K+ LOC +AGPL-3.0 | 1,200+ tests | ~86K LOC --- diff --git a/docs/launch/show-hn.md b/docs/launch/show-hn.md index 8cc5a95..adc58ab 100644 --- a/docs/launch/show-hn.md +++ b/docs/launch/show-hn.md @@ -1,4 +1,7 @@ -# Vestige v2.0 Launch — Show HN + Cross-Posts +# 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) --- @@ -7,7 +10,7 @@ ### Title (76 chars) ``` -Show HN: Vestige – FSRS-6 spaced repetition as long-term memory for AI agents +Show HN: Vestige v2.1.23 – FSRS-6 memory for AI agents + local Receipt Lock ``` ### Body (first comment) @@ -57,7 +60,7 @@ retrieval. Written in Rust, 100% local, single 22MB binary. discover hidden connections and synthesize insights. Inspired by hippocampal replay during sleep. -**v2.0 adds:** +**Dashboard (since v2.0, still core):** - 3D neural visualization dashboard (SvelteKit + Three.js) — watch memories pulse when accessed, burst particles on creation, golden flash lines when @@ -74,7 +77,10 @@ retrieval. Written in Rust, 100% local, single 22MB binary. embedded via Rust's `include_dir!` macro. No Docker, no Node runtime, no external services. -**Numbers:** 77,840 lines of Rust, 734 tests, 29 cognitive modules, 21 MCP +**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 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 — @@ -87,7 +93,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 for 2 months and the experience is genuinely different. +I've been using this daily 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. @@ -275,12 +281,12 @@ surprising and useful. ### r/rust -**Title:** `Vestige v2.0 — 77K LOC Rust memory system with FSRS-6, HNSW, Axum WebSockets, and an embedded SvelteKit dashboard in a 22MB binary` +**Title:** `Vestige v2.1.23 — ~86K LOC Rust memory system with FSRS-6, Receipt Lock, and a 22MB binary` **Body:** ```markdown -I've been building Vestige for the past few months and just shipped v2.0. It's +I've been building Vestige and just shipped v2.1.23. It's a cognitive memory system for AI agents that implements neuroscience-backed memory algorithms in pure Rust. @@ -314,7 +320,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. -- **734 tests**: 352 core + 378 mcp + 4 doctests. Zero warnings. +- **1,200+ tests** across workspace. Zero warnings on release gates. **Architecture:** @@ -357,7 +363,7 @@ Happy to discuss any of the Rust architecture decisions. ### r/ClaudeAI -**Title:** `Vestige v2.0 "Cognitive Leap" — give Claude real long-term memory with neuroscience-backed forgetting, a 3D dashboard, and 21 MCP tools` +**Title:** `Vestige v2.1.23 — give Claude real long-term memory (FSRS-6) + optional Receipt Lock for fake "tests passed" claims` **Body:** @@ -385,7 +391,7 @@ locally on your machine. strength model, testing effect, synaptic tagging, spreading activation, context-dependent retrieval, memory dreaming. -**v2.0 new features:** +**Highlights:** - **3D Memory Dashboard** at localhost:3927/dashboard — watch Claude's mind in real-time. Memories pulse when accessed, burst particles on creation, golden @@ -401,7 +407,8 @@ locally on your machine. **Setup (2 minutes):** ```bash -npm install -g vestige-mcp-server +npm install -g vestige-mcp-server@latest +vestige health claude mcp add vestige vestige-mcp -s user ``` @@ -417,7 +424,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. -21 MCP tools. 77,840 lines of Rust. 734 tests. Works with Claude Code, Claude +25 MCP tools. ~86,000 lines of Rust. 1,200+ tests. Works with Claude Code, Claude Desktop, Cursor, VS Code Copilot, JetBrains, Windsurf, and Xcode. Source: https://github.com/samvallad33/vestige @@ -429,7 +436,7 @@ Happy to answer questions or help with setup. ### r/LocalLLaMA -**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)` +**Title:** `Vestige v2.1.23 — local-first AI memory with FSRS-6, Receipt Lock, zero cloud (~86K LOC Rust, 22MB binary)` **Body:** @@ -482,7 +489,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 -- 734 tests, 29 cognitive modules, 21 tools +- 1,200+ tests, 30 cognitive modules, 25 tools - fastembed 5.11 with feature flags for Nomic v2 MoE + Qwen3 reranker **Performance:** @@ -535,8 +542,7 @@ 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 is the differentiator — no other AI memory system uses real spaced - repetition +5. FSRS-6 + Receipt Lock — spaced repetition memory and optional agent claim verification ### What NOT to Say diff --git a/docs/marketing/LAUNCH_NOW.md b/docs/marketing/LAUNCH_NOW.md new file mode 100644 index 0000000..7e2b887 --- /dev/null +++ b/docs/marketing/LAUNCH_NOW.md @@ -0,0 +1,35 @@ +# 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 diff --git a/docs/marketing/README.md b/docs/marketing/README.md new file mode 100644 index 0000000..75acb1e --- /dev/null +++ b/docs/marketing/README.md @@ -0,0 +1,33 @@ +# 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) | 60–90s 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). diff --git a/docs/marketing/assets/.gitkeep b/docs/marketing/assets/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/docs/marketing/assets/CAPTURE.md b/docs/marketing/assets/CAPTURE.md new file mode 100644 index 0000000..7f45315 --- /dev/null +++ b/docs/marketing/assets/CAPTURE.md @@ -0,0 +1,40 @@ +# 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` | 8–12s loop | Agent claims "tests passed" → Sanhedrin veto → `~/.vestige/sanhedrin/latest.html` receipt | +| `dashboard-dream.gif` | 10–15s loop | Graph view → trigger dream in Claude → purple dream mode, golden connection lines | +| `memory-born.gif` | 5–8s | Feed tab: `MemoryCreated` WebSocket event + new node burst on graph | +| `demo-full.mp4` | 60–90s | 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. diff --git a/docs/marketing/assets/dashboard-placeholder.svg b/docs/marketing/assets/dashboard-placeholder.svg new file mode 100644 index 0000000..4a50448 --- /dev/null +++ b/docs/marketing/assets/dashboard-placeholder.svg @@ -0,0 +1,10 @@ + + + Vestige 3D Memory Dashboard + Run vestige dashboard  capture GIF per docs/marketing/assets/CAPTURE.md + + + + + + diff --git a/docs/marketing/demo-video-storyboard.md b/docs/marketing/demo-video-storyboard.md new file mode 100644 index 0000000..98f2942 --- /dev/null +++ b/docs/marketing/demo-video-storyboard.md @@ -0,0 +1,32 @@ +# Demo Video Storyboard (60–90s) + +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:00–0:08 | 3D dashboard graph, nodes pulsing | "Your AI forgets everything between sessions." | +| 0:08–0:18 | Claude Code: "Remember I prefer TypeScript" → Feed: MemoryCreated | "Vestige stores it with prediction error gating — not a dumb bucket." | +| 0:18–0:30 | New session: "What are my language preferences?" → correct answer | "New session. Same brain." | +| 0:30–0:45 | Search → graph nodes pulse blue (spreading activation) | "Search runs a 7-stage cognitive pipeline." | +| 0:45–0:58 | Dream mode: purple wash, golden edges | "Dream consolidation finds connections you never typed." | +| 0:58–1:15 | Terminal: agent says "tests passed" → veto / sanhedrin HTML | "Receipt Lock: no receipt, no claim." | +| 1:15–1:25 | Terminal: install commands | `npm install -g vestige-mcp-server@latest` | +| 1:25–1: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:58–1:15 first +- **Wave B:** Ship `dashboard-dream.gif` + full `demo-full.mp4` diff --git a/docs/marketing/growth-engine/MARKETING-CLAUDE.md b/docs/marketing/growth-engine/MARKETING-CLAUDE.md new file mode 100644 index 0000000..ef3aae0 --- /dev/null +++ b/docs/marketing/growth-engine/MARKETING-CLAUDE.md @@ -0,0 +1,69 @@ +# 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** (800–1200 words): expand top objection OR one cognitive module OR Receipt Lock story +2. **3–5 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 | 8–12 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 diff --git a/docs/marketing/growth-engine/README.md b/docs/marketing/growth-engine/README.md new file mode 100644 index 0000000..b2b4af5 --- /dev/null +++ b/docs/marketing/growth-engine/README.md @@ -0,0 +1,84 @@ +# Vestige Marketing Growth Engine + +Repeatable weekly loop: Vestige remembers what worked, Claude Code drafts what’s 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 + 3–5 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 | diff --git a/docs/marketing/mcp-registries.md b/docs/marketing/mcp-registries.md new file mode 100644 index 0000000..aaa7a98 --- /dev/null +++ b/docs/marketing/mcp-registries.md @@ -0,0 +1,57 @@ +# 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 | diff --git a/docs/marketing/metrics-tracker.md b/docs/marketing/metrics-tracker.md new file mode 100644 index 0000000..d995ba9 --- /dev/null +++ b/docs/marketing/metrics-tracker.md @@ -0,0 +1,66 @@ +# 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 | diff --git a/docs/marketing/ready-to-post/hn-first-comment.txt b/docs/marketing/ready-to-post/hn-first-comment.txt new file mode 100644 index 0000000..ba24fb5 --- /dev/null +++ b/docs/marketing/ready-to-post/hn-first-comment.txt @@ -0,0 +1,32 @@ +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. diff --git a/docs/marketing/ready-to-post/hn-title.txt b/docs/marketing/ready-to-post/hn-title.txt new file mode 100644 index 0000000..f01f5d8 --- /dev/null +++ b/docs/marketing/ready-to-post/hn-title.txt @@ -0,0 +1 @@ +Show HN: Vestige – blocks coding agents from claiming "tests passed" without receipts diff --git a/docs/marketing/ready-to-post/reddit-experienceddevs-title.txt b/docs/marketing/ready-to-post/reddit-experienceddevs-title.txt new file mode 100644 index 0000000..3aab4ba --- /dev/null +++ b/docs/marketing/ready-to-post/reddit-experienceddevs-title.txt @@ -0,0 +1 @@ +My coding agent kept saying "tests passed" when they hadn't. I added a receipt check before the summary ships. diff --git a/docs/marketing/ready-to-post/reddit-experienceddevs.md b/docs/marketing/ready-to-post/reddit-experienceddevs.md new file mode 100644 index 0000000..410f87b --- /dev/null +++ b/docs/marketing/ready-to-post/reddit-experienceddevs.md @@ -0,0 +1,19 @@ +**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. diff --git a/docs/marketing/ready-to-post/x-thread.txt b/docs/marketing/ready-to-post/x-thread.txt new file mode 100644 index 0000000..cc81fec --- /dev/null +++ b/docs/marketing/ready-to-post/x-thread.txt @@ -0,0 +1,18 @@ +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. diff --git a/docs/marketing/wave-a-launch.md b/docs/marketing/wave-a-launch.md new file mode 100644 index 0000000..74303d6 --- /dev/null +++ b/docs/marketing/wave-a-launch.md @@ -0,0 +1,47 @@ +# 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:00–11:00 AM | HN comments | 30-min reply SLA | + +## Day 1–2 — 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). diff --git a/docs/marketing/wave-b-launch.md b/docs/marketing/wave-b-launch.md new file mode 100644 index 0000000..8f1084e --- /dev/null +++ b/docs/marketing/wave-b-launch.md @@ -0,0 +1,45 @@ +# 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 4–5 — 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. diff --git a/docs/website/index.html b/docs/website/index.html new file mode 100644 index 0000000..7246339 --- /dev/null +++ b/docs/website/index.html @@ -0,0 +1,82 @@ + + + + + + Vestige — Local memory and receipts for AI agents + + + + + + +
+

+ v2.1.23 + 25 MCP tools + ~86K LOC Rust + AGPL-3.0 +

+ +

Your agent forgets yesterday.
It can lie about today.

+

Vestige is a local MCP memory server: real FSRS-6 forgetting and consolidation, plus optional Receipt Lock that blocks “tests passed” without command receipts.

+ +
npm install -g vestige-mcp-server@latest
+claude mcp add vestige vestige-mcp -s user
+ GitHub → + +

Wave A: Receipt Lock

+
Coding agents finish with confident summaries. Vestige checks operational claims against structured command receipts before they become your final answer.
+

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 ~/.vestige/sanhedrin/.

+
vestige sandwich install --enable-sanhedrin
+

Receipt Lock docs

+ +

Wave B: A brain, not a bucket

+ Vestige 3D memory dashboard +

Memories decay on FSRS-6 curves. Search strengthens them (Testing Effect). dream consolidates offline. The 3D dashboard shows pulses, connections, and dream replay in real time.

+

vestige dashboardlocalhost:3927/dashboard

+ +

Vestige vs the rest

+ + + + + + + + + +
RAGNative AI memoryVestige
ForgettingNoneOpaqueFSRS-6
Local / privateVariesCloud100% local
ContradictionsBoth chunksNodeep_reference
Fake “tests passed”N/AN/AReceipt Lock
VisualizationNoneNone3D graph
+

Full comparison (Mem0, RAG, native)

+ +

Install

+
npm install -g vestige-mcp-server@latest
+vestige health
+claude mcp add vestige vestige-mcp -s user
+

Also works with Codex, Cursor, VS Code Copilot, JetBrains, Windsurf, Xcode. See integration guides.

+ + +
+ + diff --git a/package.json b/package.json index 9d759a6..1057869 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,8 @@ "license": "AGPL-3.0-only", "repository": { "type": "git", - "url": "https://github.com/samvallad33/vestige" + "url": "https://github.com/samvallad33/vestige", + "homepage": "https://samvallad33.github.io/vestige/" }, "scripts": { "build:mcp": "cargo build --release --package vestige-mcp", diff --git a/packages/vestige-mcp-npm/README.md b/packages/vestige-mcp-npm/README.md index 98e6575..b7a01c2 100644 --- a/packages/vestige-mcp-npm/README.md +++ b/packages/vestige-mcp-npm/README.md @@ -1,8 +1,12 @@ # vestige-mcp-server -Vestige MCP Server - A synthetic hippocampus for AI assistants. +**v2.1.23** — Vestige MCP Server: local cognitive memory and optional Receipt Lock for MCP-compatible AI agents. -Built on 130 years of cognitive science research, Vestige provides biologically-inspired memory that decays, strengthens, and consolidates like the human mind. +- **Memory:** FSRS-6 spaced repetition, prediction error gating, dreaming, 3D dashboard +- **Receipt Lock:** blocks "tests passed" / "build green" without command receipts (optional hooks) +- **Stats:** ~86K LOC Rust · 25 tools · 1,200+ tests · 22MB binary · 100% local + +Homepage: https://samvallad33.github.io/vestige/ · Repo: https://github.com/samvallad33/vestige ## Installation @@ -54,6 +58,25 @@ codex mcp add vestige -- vestige-mcp Then restart your MCP client. +## Optional Receipt Lock for Claude Code + +Receipt Lock is part of Vestige's optional Cognitive Sandwich hook layer. Normal +MCP memory stays lightweight and local. If you want claim checking for summaries +like "tests passed" or "lint is clean," enable Sanhedrin and point it at any +OpenAI-compatible chat endpoint: + +```bash +vestige sandwich install --enable-sanhedrin + +vestige sandwich install \ + --enable-sanhedrin \ + --sanhedrin-endpoint=http://127.0.0.1:11434/v1/chat/completions \ + --sanhedrin-model=qwen2.5:14b +``` + +If a claim is missing command evidence, Vestige writes local receipts under +`~/.vestige/sanhedrin/` so the veto is inspectable instead of opaque. + ## Usage with Claude Desktop Add to your Claude Desktop configuration: @@ -86,6 +109,7 @@ vestige sandwich install # Manage optional Claude Code hook files ## Features - **FSRS-6 Algorithm**: State-of-the-art spaced repetition for optimal memory retention +- **Receipt Lock**: Optional command-receipt checking for test/build/lint/typecheck claims - **Dual-Strength Memory**: Bjork & Bjork (1992) - Storage + Retrieval strength model - **Synaptic Tagging**: Memories become important retroactively (Frey & Morris 1997) - **Semantic Search**: Local embeddings via nomic-embed-text-v1.5 (768 dimensions) diff --git a/packages/vestige-mcp-npm/package.json b/packages/vestige-mcp-npm/package.json index 1ff860f..272681e 100644 --- a/packages/vestige-mcp-npm/package.json +++ b/packages/vestige-mcp-npm/package.json @@ -29,6 +29,7 @@ "type": "git", "url": "git+https://github.com/samvallad33/vestige.git" }, + "homepage": "https://samvallad33.github.io/vestige/", "engines": { "node": ">=18" }, diff --git a/scripts/marketing/preflight.sh b/scripts/marketing/preflight.sh new file mode 100755 index 0000000..590464a --- /dev/null +++ b/scripts/marketing/preflight.sh @@ -0,0 +1,47 @@ +#!/usr/bin/env bash +# Pre-launch checks before Wave A posts. +set -euo pipefail + +ROOT="$(cd "$(dirname "$0")/../.." && pwd)" +cd "${ROOT}" + +FAIL=0 +pass() { echo "OK $1"; } +fail() { echo "FAIL $1"; FAIL=1; } + +echo "=== Vestige Launch Preflight ===" + +command -v vestige-mcp >/dev/null && pass "vestige-mcp on PATH" || fail "vestige-mcp not found" +command -v npm >/dev/null && pass "npm available" || fail "npm missing" + +VER="$(vestige-mcp --version 2>/dev/null || true)" +[[ "${VER}" == *"2.1."* ]] && pass "version ${VER}" || fail "unexpected version: ${VER}" + +vestige health >/dev/null 2>&1 && pass "vestige health" || fail "vestige health failed" + +[[ -f docs/LAUNCH_STATS.md ]] && pass "LAUNCH_STATS.md" || fail "missing LAUNCH_STATS.md" +[[ -f docs/launch/receipt-lock.md ]] && pass "receipt-lock.md" || fail "missing receipt-lock.md" +[[ -f docs/website/index.html ]] && pass "landing page source" || fail "missing website" +[[ -f .github/workflows/pages.yml ]] && pass "pages workflow" || fail "missing pages workflow" + +if curl -sf --max-time 5 "https://samvallad33.github.io/vestige/" >/dev/null 2>&1; then + pass "GitHub Pages live" +else + echo "WARN GitHub Pages not live yet — push main and enable Pages → GitHub Actions" +fi + +MARKETING_DIR="${HOME}/.vestige-marketing" +if [[ -d "${MARKETING_DIR}" ]]; then + pass "marketing data dir exists" +else + echo "WARN run scripts/marketing/setup-marketing-instance.sh" +fi + +echo "" +if [[ "${FAIL}" -eq 0 ]]; then + echo "Preflight PASSED — ready for Wave A" + exit 0 +else + echo "Preflight FAILED — fix items above" + exit 1 +fi diff --git a/scripts/marketing/seed-baseline-memories.sh b/scripts/marketing/seed-baseline-memories.sh new file mode 100755 index 0000000..9b2a384 --- /dev/null +++ b/scripts/marketing/seed-baseline-memories.sh @@ -0,0 +1,29 @@ +#!/usr/bin/env bash +# Seed marketing Vestige with launch facts (separate from dev memory). +set -euo pipefail + +MARKETING_DIR="${VESTIGE_MARKETING_DIR:-$HOME/.vestige-marketing}" +TAGS="marketing,baseline,vestige-launch" + +ingest() { + vestige ingest "$1" --data-dir "${MARKETING_DIR}" --tags "${TAGS}" --node-type note +} + +echo "Seeding into ${MARKETING_DIR}..." + +ingest "Vestige v2.1.23 launch stats: ~86K LOC Rust, 25 MCP tools, 30 cognitive modules, 1200+ tests, 22MB binary, AGPL-3.0, npm vestige-mcp-server@latest, homepage samvallad33.github.io/vestige" + +ingest "Wave A hook Receipt Lock: block operational claims like tests passed or build green unless matching command receipts exist. Optional vestige sandwich install --enable-sanhedrin. Veto receipts at ~/.vestige/sanhedrin/" + +ingest "Wave B product: FSRS-6 spaced repetition memory, prediction error gating, memory dreaming, 3D dashboard localhost:3927, deep_reference contradictions, 100 percent local after embedding download" + +ingest "Canonical install: npm install -g vestige-mcp-server@latest && vestige health && claude mcp add vestige vestige-mcp -s user. Do NOT tell users sudo mv unless manual binary install failed." + +ingest "Messaging guardrails: no revolutionary game-changer AI-powered. Acknowledge Mem0 RAG native Claude memory honestly. Lead pain first tool second. Author Sam Valladares age 22 solo." + +ingest "North star metric: weekly npm installs vestige-mcp-server and active MCP connections not stars alone. Track in docs/marketing/metrics-tracker.md" + +ingest "Comparison anchor docs/comparison.md: RAG is retrieval, Vestige is cognitive lifecycle with forgetting consolidation Receipt Lock. Mem0 is cloud API Vestige is local AGPL." + +vestige stats --data-dir "${MARKETING_DIR}" 2>/dev/null || true +echo "Baseline seed complete." diff --git a/scripts/marketing/setup-marketing-instance.sh b/scripts/marketing/setup-marketing-instance.sh new file mode 100755 index 0000000..e465c06 --- /dev/null +++ b/scripts/marketing/setup-marketing-instance.sh @@ -0,0 +1,44 @@ +#!/usr/bin/env bash +# One-time setup: dedicated Vestige store + Claude Code MCP entry for marketing. +set -euo pipefail + +MARKETING_DIR="${VESTIGE_MARKETING_DIR:-$HOME/.vestige-marketing}" +BIN_DIR="${HOME}/.local/bin" +WRAPPER="${BIN_DIR}/vestige-mcp-marketing" + +echo "==> Marketing data dir: ${MARKETING_DIR}" +mkdir -p "${MARKETING_DIR}" + +if ! command -v vestige-mcp >/dev/null 2>&1; then + echo "Install Vestige first: npm install -g vestige-mcp-server@latest" + exit 1 +fi + +mkdir -p "${BIN_DIR}" +cat > "${WRAPPER}" < Wrapper: ${WRAPPER}" + +if command -v claude >/dev/null 2>&1; then + if claude mcp list 2>/dev/null | grep -q vestige-marketing; then + echo "==> claude mcp: vestige-marketing already registered" + else + claude mcp add vestige-marketing "${WRAPPER}" -s user + echo "==> Added: claude mcp add vestige-marketing ${WRAPPER} -s user" + fi +else + echo "==> Claude Code not found — register manually:" + echo " claude mcp add vestige-marketing ${WRAPPER} -s user" +fi + +echo "==> Seeding baseline memories..." +"$(dirname "$0")/seed-baseline-memories.sh" + +echo "" +echo "Done. Open Claude Code with MARKETING-CLAUDE.md:" +echo " cp docs/marketing/growth-engine/MARKETING-CLAUDE.md ~/vestige-marketing-CLAUDE.md" +echo " vestige health --data-dir ${MARKETING_DIR}" From 67f9550e6c32361bfc8af15675644404eea833db Mon Sep 17 00:00:00 2001 From: Sam Valladares Date: Tue, 2 Jun 2026 12:39:26 -0500 Subject: [PATCH 2/4] Fix Pages workflow enablement and add Lobsters launch copy Use configure-pages enablement so the landing deploy can succeed without manual repo setup first. Co-authored-by: Cursor --- .github/workflows/pages.yml | 2 ++ docs/marketing/LAUNCH_NOW.md | 14 +++++++++----- docs/marketing/ready-to-post/lobsters.md | 20 ++++++++++++++++++++ 3 files changed, 31 insertions(+), 5 deletions(-) create mode 100644 docs/marketing/ready-to-post/lobsters.md diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml index d30a8f3..2d54012 100644 --- a/.github/workflows/pages.yml +++ b/.github/workflows/pages.yml @@ -37,6 +37,8 @@ jobs: sed -i 's|../marketing/assets/|assets/|g' _site/index.html || true - uses: actions/configure-pages@v5 + with: + enablement: true - uses: actions/upload-pages-artifact@v3 with: diff --git a/docs/marketing/LAUNCH_NOW.md b/docs/marketing/LAUNCH_NOW.md index 7e2b887..d3c7739 100644 --- a/docs/marketing/LAUNCH_NOW.md +++ b/docs/marketing/LAUNCH_NOW.md @@ -10,18 +10,22 @@ ./scripts/marketing/preflight.sh ``` -2. **Hacker News** → https://news.ycombinator.com/submit +2. **Enable GitHub Pages** (one-time, if preflight warns): Repo → Settings → Pages → Build: **GitHub Actions**. Or re-run deploy after the workflow with `enablement: true` lands. + +3. **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. **Lobste.rs** — paste `ready-to-post/lobsters.md` -4. **r/ExperiencedDevs** — title from `reddit-experienceddevs-title.txt`, body from `reddit-experienceddevs.md` +5. **X** — paste `ready-to-post/x-thread.txt` (one tweet per numbered block) -5. **r/programming** — same body + line: `License: AGPL-3.0. v2.1.23. ~86K LOC, 25 tools, 22MB binary.` +6. **r/ExperiencedDevs** — title from `reddit-experienceddevs-title.txt`, body from `reddit-experienceddevs.md` -6. Log URLs in [metrics-tracker.md](metrics-tracker.md) +7. **r/programming** — same body + line: `License: AGPL-3.0. v2.1.23. ~86K LOC, 25 tools, 22MB binary.` + +8. Log URLs in [metrics-tracker.md](metrics-tracker.md) ## After posting (30 min SLA on comments) diff --git a/docs/marketing/ready-to-post/lobsters.md b/docs/marketing/ready-to-post/lobsters.md new file mode 100644 index 0000000..7fdc9fe --- /dev/null +++ b/docs/marketing/ready-to-post/lobsters.md @@ -0,0 +1,20 @@ +Vestige Receipt Lock: local MCP guard against unverified "tests passed" agent claims + +Tags: rust, programming, security + +--- + +Your coding agent probably ends sessions with "all tests passed" or "the build is green." + +Vestige (MCP memory server, Rust, local) adds optional Receipt Lock: operational claims are checked against structured command receipts from the transcript. No matching successful receipt → claim can be blocked; inspectable veto at ~/.vestige/sanhedrin/latest.html + +```bash +npm install -g vestige-mcp-server@latest +claude mcp add vestige vestige-mcp -s user +vestige sandwich install --enable-sanhedrin +``` + +Same binary also does FSRS-6 cognitive memory (decay, dreaming, 3D dashboard). v2.1.23, ~86K LOC, 25 tools, AGPL-3.0. + +https://github.com/samvallad33/vestige +https://github.com/samvallad33/vestige/blob/main/docs/comparison.md From 6a37586c5f13b14c47097ba5c1d628a4d4b0fede Mon Sep 17 00:00:00 2001 From: Sam Valladares Date: Tue, 2 Jun 2026 12:40:48 -0500 Subject: [PATCH 3/4] Revert "Fix Pages workflow enablement and add Lobsters launch copy" This reverts commit 67f9550e6c32361bfc8af15675644404eea833db. --- .github/workflows/pages.yml | 2 -- docs/marketing/LAUNCH_NOW.md | 14 +++++--------- docs/marketing/ready-to-post/lobsters.md | 20 -------------------- 3 files changed, 5 insertions(+), 31 deletions(-) delete mode 100644 docs/marketing/ready-to-post/lobsters.md diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml index 2d54012..d30a8f3 100644 --- a/.github/workflows/pages.yml +++ b/.github/workflows/pages.yml @@ -37,8 +37,6 @@ jobs: sed -i 's|../marketing/assets/|assets/|g' _site/index.html || true - uses: actions/configure-pages@v5 - with: - enablement: true - uses: actions/upload-pages-artifact@v3 with: diff --git a/docs/marketing/LAUNCH_NOW.md b/docs/marketing/LAUNCH_NOW.md index d3c7739..7e2b887 100644 --- a/docs/marketing/LAUNCH_NOW.md +++ b/docs/marketing/LAUNCH_NOW.md @@ -10,22 +10,18 @@ ./scripts/marketing/preflight.sh ``` -2. **Enable GitHub Pages** (one-time, if preflight warns): Repo → Settings → Pages → Build: **GitHub Actions**. Or re-run deploy after the workflow with `enablement: true` lands. - -3. **Hacker News** → https://news.ycombinator.com/submit +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 -4. **Lobste.rs** — paste `ready-to-post/lobsters.md` +3. **X** — paste `ready-to-post/x-thread.txt` (one tweet per numbered block) -5. **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` -6. **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.` -7. **r/programming** — same body + line: `License: AGPL-3.0. v2.1.23. ~86K LOC, 25 tools, 22MB binary.` - -8. Log URLs in [metrics-tracker.md](metrics-tracker.md) +6. Log URLs in [metrics-tracker.md](metrics-tracker.md) ## After posting (30 min SLA on comments) diff --git a/docs/marketing/ready-to-post/lobsters.md b/docs/marketing/ready-to-post/lobsters.md deleted file mode 100644 index 7fdc9fe..0000000 --- a/docs/marketing/ready-to-post/lobsters.md +++ /dev/null @@ -1,20 +0,0 @@ -Vestige Receipt Lock: local MCP guard against unverified "tests passed" agent claims - -Tags: rust, programming, security - ---- - -Your coding agent probably ends sessions with "all tests passed" or "the build is green." - -Vestige (MCP memory server, Rust, local) adds optional Receipt Lock: operational claims are checked against structured command receipts from the transcript. No matching successful receipt → claim can be blocked; inspectable veto at ~/.vestige/sanhedrin/latest.html - -```bash -npm install -g vestige-mcp-server@latest -claude mcp add vestige vestige-mcp -s user -vestige sandwich install --enable-sanhedrin -``` - -Same binary also does FSRS-6 cognitive memory (decay, dreaming, 3D dashboard). v2.1.23, ~86K LOC, 25 tools, AGPL-3.0. - -https://github.com/samvallad33/vestige -https://github.com/samvallad33/vestige/blob/main/docs/comparison.md From a355da99a6f93e52d349c33ca95debe63aa56c9a Mon Sep 17 00:00:00 2001 From: Sam Valladares Date: Tue, 2 Jun 2026 12:40:48 -0500 Subject: [PATCH 4/4] Revert "Add developer launch kit for Vestige v2.1.23" This reverts commit 00511948ffd345e17b3f12a858114fc35375f502. --- .github/workflows/pages.yml | 46 ----- CLAUDE.md | 3 +- README.md | 59 +------ docs/LAUNCH_STATS.md | 88 --------- docs/comparison.md | 82 --------- docs/launch/blog-post.md | 2 +- docs/launch/demo-script.md | 12 +- docs/launch/receipt-lock.md | 167 ------------------ docs/launch/reddit-cross-reference.md | 25 ++- docs/launch/show-hn.md | 38 ++-- docs/marketing/LAUNCH_NOW.md | 35 ---- docs/marketing/README.md | 33 ---- docs/marketing/assets/.gitkeep | 0 docs/marketing/assets/CAPTURE.md | 40 ----- .../assets/dashboard-placeholder.svg | 10 -- docs/marketing/demo-video-storyboard.md | 32 ---- .../growth-engine/MARKETING-CLAUDE.md | 69 -------- docs/marketing/growth-engine/README.md | 84 --------- docs/marketing/mcp-registries.md | 57 ------ docs/marketing/metrics-tracker.md | 66 ------- .../ready-to-post/hn-first-comment.txt | 32 ---- docs/marketing/ready-to-post/hn-title.txt | 1 - .../reddit-experienceddevs-title.txt | 1 - .../ready-to-post/reddit-experienceddevs.md | 19 -- docs/marketing/ready-to-post/x-thread.txt | 18 -- docs/marketing/wave-a-launch.md | 47 ----- docs/marketing/wave-b-launch.md | 45 ----- docs/website/index.html | 82 --------- package.json | 3 +- packages/vestige-mcp-npm/README.md | 28 +-- packages/vestige-mcp-npm/package.json | 1 - scripts/marketing/preflight.sh | 47 ----- scripts/marketing/seed-baseline-memories.sh | 29 --- scripts/marketing/setup-marketing-instance.sh | 44 ----- 34 files changed, 42 insertions(+), 1303 deletions(-) delete mode 100644 .github/workflows/pages.yml delete mode 100644 docs/LAUNCH_STATS.md delete mode 100644 docs/comparison.md delete mode 100644 docs/launch/receipt-lock.md delete mode 100644 docs/marketing/LAUNCH_NOW.md delete mode 100644 docs/marketing/README.md delete mode 100644 docs/marketing/assets/.gitkeep delete mode 100644 docs/marketing/assets/CAPTURE.md delete mode 100644 docs/marketing/assets/dashboard-placeholder.svg delete mode 100644 docs/marketing/demo-video-storyboard.md delete mode 100644 docs/marketing/growth-engine/MARKETING-CLAUDE.md delete mode 100644 docs/marketing/growth-engine/README.md delete mode 100644 docs/marketing/mcp-registries.md delete mode 100644 docs/marketing/metrics-tracker.md delete mode 100644 docs/marketing/ready-to-post/hn-first-comment.txt delete mode 100644 docs/marketing/ready-to-post/hn-title.txt delete mode 100644 docs/marketing/ready-to-post/reddit-experienceddevs-title.txt delete mode 100644 docs/marketing/ready-to-post/reddit-experienceddevs.md delete mode 100644 docs/marketing/ready-to-post/x-thread.txt delete mode 100644 docs/marketing/wave-a-launch.md delete mode 100644 docs/marketing/wave-b-launch.md delete mode 100644 docs/website/index.html delete mode 100755 scripts/marketing/preflight.sh delete mode 100755 scripts/marketing/seed-baseline-memories.sh delete mode 100755 scripts/marketing/setup-marketing-instance.sh diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml deleted file mode 100644 index d30a8f3..0000000 --- a/.github/workflows/pages.yml +++ /dev/null @@ -1,46 +0,0 @@ -name: Deploy GitHub Pages - -on: - push: - branches: [main] - paths: - - 'docs/website/**' - - 'docs/marketing/assets/**' - - '.github/workflows/pages.yml' - workflow_dispatch: - -permissions: - contents: read - pages: write - id-token: write - -concurrency: - group: pages - cancel-in-progress: false - -jobs: - deploy: - runs-on: ubuntu-latest - environment: - name: github-pages - url: ${{ steps.deployment.outputs.page_url }} - steps: - - uses: actions/checkout@v4 - - - name: Prepare site root - run: | - mkdir -p _site - cp -r docs/website/* _site/ - mkdir -p _site/assets - cp -r docs/marketing/assets/* _site/assets/ 2>/dev/null || true - # Fix asset paths for Pages (no parent ../) - sed -i 's|../marketing/assets/|assets/|g' _site/index.html || true - - - uses: actions/configure-pages@v5 - - - uses: actions/upload-pages-artifact@v3 - with: - path: _site - - - id: deployment - uses: actions/deploy-pages@v4 diff --git a/CLAUDE.md b/CLAUDE.md index c9034d6..4ee5762 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -18,8 +18,7 @@ dashboard embedded into the release binary. The core product promise is: ## Working Rules - Prefer source evidence over memory. Use `rg`, tests, and nearby code before - making claims about behavior. This public repo guidance does not override - private user-level memory protocols loaded outside the repository. + making claims about behavior. - Keep release changes scoped. Do not rewrite unrelated modules during a version/tag cleanup unless the release gate requires it. - Preserve local-first behavior. Heavy models, Sanhedrin-style verifier hooks, diff --git a/README.md b/README.md index fb612ad..f747715 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ # Vestige -### Local memory and receipts for MCP-compatible AI agents. +### Local cognitive memory for MCP-compatible AI agents. [![GitHub stars](https://img.shields.io/github/stars/samvallad33/vestige?style=social)](https://github.com/samvallad33/vestige) [![Release](https://img.shields.io/github/v/release/samvallad33/vestige)](https://github.com/samvallad33/vestige/releases/latest) @@ -10,23 +10,11 @@ [![License](https://img.shields.io/badge/license-AGPL--3.0-blue)](LICENSE) [![MCP Compatible](https://img.shields.io/badge/MCP-compatible-green)](https://modelcontextprotocol.io) -**Your coding agent forgets yesterday and can lie about today.** Vestige gives it a local brain — FSRS-6 memory that learns and forgets — plus **Receipt Lock** that blocks "tests passed" unless a real command receipt exists. +**Your agent forgets project decisions between sessions. Vestige gives it local, inspectable memory.** -```bash -npm install -g vestige-mcp-server@latest -claude mcp add vestige vestige-mcp -s user -``` +Built on proven memory and retrieval ideas — FSRS-6 spaced repetition, prediction error gating, synaptic tagging, spreading activation, and memory consolidation — all running in a single Rust binary with a local dashboard. 100% local. Zero cloud. -| | | -|---|---| -| **Receipt Lock** — optional hook layer; vetoes unverified "green build" claims | **3D dashboard** — `vestige dashboard` → `localhost:3927` | -| ![Receipt Lock demo](docs/marketing/assets/receipt-lock.gif) · [capture guide](docs/marketing/assets/CAPTURE.md) | ![Memory dashboard](docs/marketing/assets/dashboard-placeholder.svg) | - -*Replace placeholders with GIFs from [`CAPTURE.md`](docs/marketing/assets/CAPTURE.md) before Wave B launch.* - -**v2.1.23** · ~86K LOC Rust · **25** MCP tools · **30** cognitive modules · **1,200+** tests · **22MB** binary · 100% local · AGPL-3.0 - -[Quick Start](#quick-start) | [Receipt Lock](#receipt-lock) | [Dashboard](#-3d-memory-dashboard) | [Compare vs RAG](docs/comparison.md) | [Launch stats](docs/LAUNCH_STATS.md) | [Docs](docs/) +[Quick Start](#quick-start) | [Dashboard](#-3d-memory-dashboard) | [How It Works](#-the-cognitive-science-stack) | [Tools](#-25-mcp-tools) | [Docs](docs/) @@ -67,43 +55,6 @@ codex mcp add vestige -- vestige-mcp # → "You prefer TypeScript over JavaScript." ``` -## Receipt Lock - -Coding agents often finish with confident summaries like "tests passed" or -"the build is green." Receipt Lock checks those operational claims against -structured command receipts from the current transcript before they become part -of the final answer. - -If the agent claims verification happened but no matching successful command -receipt exists, Vestige can block the claim and write an inspectable local -receipt instead of letting the agent invent a clean ending. - -Receipt Lock is optional and works through the Claude Code Cognitive Sandwich -hook layer: - -```bash -# Install the local memory server first -npm install -g vestige-mcp-server@latest - -# Add normal MCP memory -claude mcp add vestige vestige-mcp -s user - -# Optional: enable Receipt Lock / Sanhedrin hooks -vestige sandwich install --enable-sanhedrin - -# Optional: point Sanhedrin at any OpenAI-compatible endpoint -vestige sandwich install \ - --enable-sanhedrin \ - --sanhedrin-endpoint=http://127.0.0.1:11434/v1/chat/completions \ - --sanhedrin-model=qwen2.5:14b -``` - -Receipts are local: - -- Latest JSON: `~/.vestige/sanhedrin/latest.json` -- Latest HTML: `~/.vestige/sanhedrin/latest.html` -- Command ledger: `~/.vestige/sanhedrin/command-receipts.jsonl` -
Other platforms & install methods @@ -471,8 +422,6 @@ vestige dashboard # Open 3D dashboard in browser | [CLAUDE.md Setup](docs/CLAUDE-SETUP.md) | Templates for proactive memory | | [Configuration](docs/CONFIGURATION.md) | CLI commands, environment variables | | [Integrations](docs/integrations/) | Codex, Xcode, Cursor, VS Code, JetBrains, Windsurf | -| [Comparison vs RAG/Mem0](docs/comparison.md) | When to use Vestige | -| [Marketing kit](docs/marketing/README.md) | Launch waves, growth engine, metrics | | [Changelog](CHANGELOG.md) | Version history | --- diff --git a/docs/LAUNCH_STATS.md b/docs/LAUNCH_STATS.md deleted file mode 100644 index 4bd1d92..0000000 --- a/docs/LAUNCH_STATS.md +++ /dev/null @@ -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) diff --git a/docs/comparison.md b/docs/comparison.md deleted file mode 100644 index 9a78a3e..0000000 --- a/docs/comparison.md +++ /dev/null @@ -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 diff --git a/docs/launch/blog-post.md b/docs/launch/blog-post.md index 08178ba..886bb5a 100644 --- a/docs/launch/blog-post.md +++ b/docs/launch/blog-post.md @@ -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. diff --git a/docs/launch/demo-script.md b/docs/launch/demo-script.md index 162efb8..4740dc4 100644 --- a/docs/launch/demo-script.md +++ b/docs/launch/demo-script.md @@ -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. diff --git a/docs/launch/receipt-lock.md b/docs/launch/receipt-lock.md deleted file mode 100644 index a27df5a..0000000 --- a/docs/launch/receipt-lock.md +++ /dev/null @@ -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 | -|--------|--------| -| 0–3h | 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, 8–10 AM US Eastern -- **Reddit:** Same day, +1–2h after HN -- **X:** Pin thread during HN peak diff --git a/docs/launch/reddit-cross-reference.md b/docs/launch/reddit-cross-reference.md index d03f5f6..eae7aaf 100644 --- a/docs/launch/reddit-cross-reference.md +++ b/docs/launch/reddit-cross-reference.md @@ -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 --- diff --git a/docs/launch/show-hn.md b/docs/launch/show-hn.md index adc58ab..8cc5a95 100644 --- a/docs/launch/show-hn.md +++ b/docs/launch/show-hn.md @@ -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 diff --git a/docs/marketing/LAUNCH_NOW.md b/docs/marketing/LAUNCH_NOW.md deleted file mode 100644 index 7e2b887..0000000 --- a/docs/marketing/LAUNCH_NOW.md +++ /dev/null @@ -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 diff --git a/docs/marketing/README.md b/docs/marketing/README.md deleted file mode 100644 index 75acb1e..0000000 --- a/docs/marketing/README.md +++ /dev/null @@ -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) | 60–90s 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). diff --git a/docs/marketing/assets/.gitkeep b/docs/marketing/assets/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/docs/marketing/assets/CAPTURE.md b/docs/marketing/assets/CAPTURE.md deleted file mode 100644 index 7f45315..0000000 --- a/docs/marketing/assets/CAPTURE.md +++ /dev/null @@ -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` | 8–12s loop | Agent claims "tests passed" → Sanhedrin veto → `~/.vestige/sanhedrin/latest.html` receipt | -| `dashboard-dream.gif` | 10–15s loop | Graph view → trigger dream in Claude → purple dream mode, golden connection lines | -| `memory-born.gif` | 5–8s | Feed tab: `MemoryCreated` WebSocket event + new node burst on graph | -| `demo-full.mp4` | 60–90s | 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. diff --git a/docs/marketing/assets/dashboard-placeholder.svg b/docs/marketing/assets/dashboard-placeholder.svg deleted file mode 100644 index 4a50448..0000000 --- a/docs/marketing/assets/dashboard-placeholder.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - Vestige 3D Memory Dashboard - Run vestige dashboard  capture GIF per docs/marketing/assets/CAPTURE.md - - - - - - diff --git a/docs/marketing/demo-video-storyboard.md b/docs/marketing/demo-video-storyboard.md deleted file mode 100644 index 98f2942..0000000 --- a/docs/marketing/demo-video-storyboard.md +++ /dev/null @@ -1,32 +0,0 @@ -# Demo Video Storyboard (60–90s) - -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:00–0:08 | 3D dashboard graph, nodes pulsing | "Your AI forgets everything between sessions." | -| 0:08–0:18 | Claude Code: "Remember I prefer TypeScript" → Feed: MemoryCreated | "Vestige stores it with prediction error gating — not a dumb bucket." | -| 0:18–0:30 | New session: "What are my language preferences?" → correct answer | "New session. Same brain." | -| 0:30–0:45 | Search → graph nodes pulse blue (spreading activation) | "Search runs a 7-stage cognitive pipeline." | -| 0:45–0:58 | Dream mode: purple wash, golden edges | "Dream consolidation finds connections you never typed." | -| 0:58–1:15 | Terminal: agent says "tests passed" → veto / sanhedrin HTML | "Receipt Lock: no receipt, no claim." | -| 1:15–1:25 | Terminal: install commands | `npm install -g vestige-mcp-server@latest` | -| 1:25–1: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:58–1:15 first -- **Wave B:** Ship `dashboard-dream.gif` + full `demo-full.mp4` diff --git a/docs/marketing/growth-engine/MARKETING-CLAUDE.md b/docs/marketing/growth-engine/MARKETING-CLAUDE.md deleted file mode 100644 index ef3aae0..0000000 --- a/docs/marketing/growth-engine/MARKETING-CLAUDE.md +++ /dev/null @@ -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** (800–1200 words): expand top objection OR one cognitive module OR Receipt Lock story -2. **3–5 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 | 8–12 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 diff --git a/docs/marketing/growth-engine/README.md b/docs/marketing/growth-engine/README.md deleted file mode 100644 index b2b4af5..0000000 --- a/docs/marketing/growth-engine/README.md +++ /dev/null @@ -1,84 +0,0 @@ -# Vestige Marketing Growth Engine - -Repeatable weekly loop: Vestige remembers what worked, Claude Code drafts what’s 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 + 3–5 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 | diff --git a/docs/marketing/mcp-registries.md b/docs/marketing/mcp-registries.md deleted file mode 100644 index aaa7a98..0000000 --- a/docs/marketing/mcp-registries.md +++ /dev/null @@ -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 | diff --git a/docs/marketing/metrics-tracker.md b/docs/marketing/metrics-tracker.md deleted file mode 100644 index d995ba9..0000000 --- a/docs/marketing/metrics-tracker.md +++ /dev/null @@ -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 | diff --git a/docs/marketing/ready-to-post/hn-first-comment.txt b/docs/marketing/ready-to-post/hn-first-comment.txt deleted file mode 100644 index ba24fb5..0000000 --- a/docs/marketing/ready-to-post/hn-first-comment.txt +++ /dev/null @@ -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. diff --git a/docs/marketing/ready-to-post/hn-title.txt b/docs/marketing/ready-to-post/hn-title.txt deleted file mode 100644 index f01f5d8..0000000 --- a/docs/marketing/ready-to-post/hn-title.txt +++ /dev/null @@ -1 +0,0 @@ -Show HN: Vestige – blocks coding agents from claiming "tests passed" without receipts diff --git a/docs/marketing/ready-to-post/reddit-experienceddevs-title.txt b/docs/marketing/ready-to-post/reddit-experienceddevs-title.txt deleted file mode 100644 index 3aab4ba..0000000 --- a/docs/marketing/ready-to-post/reddit-experienceddevs-title.txt +++ /dev/null @@ -1 +0,0 @@ -My coding agent kept saying "tests passed" when they hadn't. I added a receipt check before the summary ships. diff --git a/docs/marketing/ready-to-post/reddit-experienceddevs.md b/docs/marketing/ready-to-post/reddit-experienceddevs.md deleted file mode 100644 index 410f87b..0000000 --- a/docs/marketing/ready-to-post/reddit-experienceddevs.md +++ /dev/null @@ -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. diff --git a/docs/marketing/ready-to-post/x-thread.txt b/docs/marketing/ready-to-post/x-thread.txt deleted file mode 100644 index cc81fec..0000000 --- a/docs/marketing/ready-to-post/x-thread.txt +++ /dev/null @@ -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. diff --git a/docs/marketing/wave-a-launch.md b/docs/marketing/wave-a-launch.md deleted file mode 100644 index 74303d6..0000000 --- a/docs/marketing/wave-a-launch.md +++ /dev/null @@ -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:00–11:00 AM | HN comments | 30-min reply SLA | - -## Day 1–2 — 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). diff --git a/docs/marketing/wave-b-launch.md b/docs/marketing/wave-b-launch.md deleted file mode 100644 index 8f1084e..0000000 --- a/docs/marketing/wave-b-launch.md +++ /dev/null @@ -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 4–5 — 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. diff --git a/docs/website/index.html b/docs/website/index.html deleted file mode 100644 index 7246339..0000000 --- a/docs/website/index.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - Vestige — Local memory and receipts for AI agents - - - - - - -
-

- v2.1.23 - 25 MCP tools - ~86K LOC Rust - AGPL-3.0 -

- -

Your agent forgets yesterday.
It can lie about today.

-

Vestige is a local MCP memory server: real FSRS-6 forgetting and consolidation, plus optional Receipt Lock that blocks “tests passed” without command receipts.

- -
npm install -g vestige-mcp-server@latest
-claude mcp add vestige vestige-mcp -s user
- GitHub → - -

Wave A: Receipt Lock

-
Coding agents finish with confident summaries. Vestige checks operational claims against structured command receipts before they become your final answer.
-

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 ~/.vestige/sanhedrin/.

-
vestige sandwich install --enable-sanhedrin
-

Receipt Lock docs

- -

Wave B: A brain, not a bucket

- Vestige 3D memory dashboard -

Memories decay on FSRS-6 curves. Search strengthens them (Testing Effect). dream consolidates offline. The 3D dashboard shows pulses, connections, and dream replay in real time.

-

vestige dashboardlocalhost:3927/dashboard

- -

Vestige vs the rest

- - - - - - - - - -
RAGNative AI memoryVestige
ForgettingNoneOpaqueFSRS-6
Local / privateVariesCloud100% local
ContradictionsBoth chunksNodeep_reference
Fake “tests passed”N/AN/AReceipt Lock
VisualizationNoneNone3D graph
-

Full comparison (Mem0, RAG, native)

- -

Install

-
npm install -g vestige-mcp-server@latest
-vestige health
-claude mcp add vestige vestige-mcp -s user
-

Also works with Codex, Cursor, VS Code Copilot, JetBrains, Windsurf, Xcode. See integration guides.

- - -
- - diff --git a/package.json b/package.json index 1057869..9d759a6 100644 --- a/package.json +++ b/package.json @@ -7,8 +7,7 @@ "license": "AGPL-3.0-only", "repository": { "type": "git", - "url": "https://github.com/samvallad33/vestige", - "homepage": "https://samvallad33.github.io/vestige/" + "url": "https://github.com/samvallad33/vestige" }, "scripts": { "build:mcp": "cargo build --release --package vestige-mcp", diff --git a/packages/vestige-mcp-npm/README.md b/packages/vestige-mcp-npm/README.md index b7a01c2..98e6575 100644 --- a/packages/vestige-mcp-npm/README.md +++ b/packages/vestige-mcp-npm/README.md @@ -1,12 +1,8 @@ # vestige-mcp-server -**v2.1.23** — Vestige MCP Server: local cognitive memory and optional Receipt Lock for MCP-compatible AI agents. +Vestige MCP Server - A synthetic hippocampus for AI assistants. -- **Memory:** FSRS-6 spaced repetition, prediction error gating, dreaming, 3D dashboard -- **Receipt Lock:** blocks "tests passed" / "build green" without command receipts (optional hooks) -- **Stats:** ~86K LOC Rust · 25 tools · 1,200+ tests · 22MB binary · 100% local - -Homepage: https://samvallad33.github.io/vestige/ · Repo: https://github.com/samvallad33/vestige +Built on 130 years of cognitive science research, Vestige provides biologically-inspired memory that decays, strengthens, and consolidates like the human mind. ## Installation @@ -58,25 +54,6 @@ codex mcp add vestige -- vestige-mcp Then restart your MCP client. -## Optional Receipt Lock for Claude Code - -Receipt Lock is part of Vestige's optional Cognitive Sandwich hook layer. Normal -MCP memory stays lightweight and local. If you want claim checking for summaries -like "tests passed" or "lint is clean," enable Sanhedrin and point it at any -OpenAI-compatible chat endpoint: - -```bash -vestige sandwich install --enable-sanhedrin - -vestige sandwich install \ - --enable-sanhedrin \ - --sanhedrin-endpoint=http://127.0.0.1:11434/v1/chat/completions \ - --sanhedrin-model=qwen2.5:14b -``` - -If a claim is missing command evidence, Vestige writes local receipts under -`~/.vestige/sanhedrin/` so the veto is inspectable instead of opaque. - ## Usage with Claude Desktop Add to your Claude Desktop configuration: @@ -109,7 +86,6 @@ vestige sandwich install # Manage optional Claude Code hook files ## Features - **FSRS-6 Algorithm**: State-of-the-art spaced repetition for optimal memory retention -- **Receipt Lock**: Optional command-receipt checking for test/build/lint/typecheck claims - **Dual-Strength Memory**: Bjork & Bjork (1992) - Storage + Retrieval strength model - **Synaptic Tagging**: Memories become important retroactively (Frey & Morris 1997) - **Semantic Search**: Local embeddings via nomic-embed-text-v1.5 (768 dimensions) diff --git a/packages/vestige-mcp-npm/package.json b/packages/vestige-mcp-npm/package.json index 272681e..1ff860f 100644 --- a/packages/vestige-mcp-npm/package.json +++ b/packages/vestige-mcp-npm/package.json @@ -29,7 +29,6 @@ "type": "git", "url": "git+https://github.com/samvallad33/vestige.git" }, - "homepage": "https://samvallad33.github.io/vestige/", "engines": { "node": ">=18" }, diff --git a/scripts/marketing/preflight.sh b/scripts/marketing/preflight.sh deleted file mode 100755 index 590464a..0000000 --- a/scripts/marketing/preflight.sh +++ /dev/null @@ -1,47 +0,0 @@ -#!/usr/bin/env bash -# Pre-launch checks before Wave A posts. -set -euo pipefail - -ROOT="$(cd "$(dirname "$0")/../.." && pwd)" -cd "${ROOT}" - -FAIL=0 -pass() { echo "OK $1"; } -fail() { echo "FAIL $1"; FAIL=1; } - -echo "=== Vestige Launch Preflight ===" - -command -v vestige-mcp >/dev/null && pass "vestige-mcp on PATH" || fail "vestige-mcp not found" -command -v npm >/dev/null && pass "npm available" || fail "npm missing" - -VER="$(vestige-mcp --version 2>/dev/null || true)" -[[ "${VER}" == *"2.1."* ]] && pass "version ${VER}" || fail "unexpected version: ${VER}" - -vestige health >/dev/null 2>&1 && pass "vestige health" || fail "vestige health failed" - -[[ -f docs/LAUNCH_STATS.md ]] && pass "LAUNCH_STATS.md" || fail "missing LAUNCH_STATS.md" -[[ -f docs/launch/receipt-lock.md ]] && pass "receipt-lock.md" || fail "missing receipt-lock.md" -[[ -f docs/website/index.html ]] && pass "landing page source" || fail "missing website" -[[ -f .github/workflows/pages.yml ]] && pass "pages workflow" || fail "missing pages workflow" - -if curl -sf --max-time 5 "https://samvallad33.github.io/vestige/" >/dev/null 2>&1; then - pass "GitHub Pages live" -else - echo "WARN GitHub Pages not live yet — push main and enable Pages → GitHub Actions" -fi - -MARKETING_DIR="${HOME}/.vestige-marketing" -if [[ -d "${MARKETING_DIR}" ]]; then - pass "marketing data dir exists" -else - echo "WARN run scripts/marketing/setup-marketing-instance.sh" -fi - -echo "" -if [[ "${FAIL}" -eq 0 ]]; then - echo "Preflight PASSED — ready for Wave A" - exit 0 -else - echo "Preflight FAILED — fix items above" - exit 1 -fi diff --git a/scripts/marketing/seed-baseline-memories.sh b/scripts/marketing/seed-baseline-memories.sh deleted file mode 100755 index 9b2a384..0000000 --- a/scripts/marketing/seed-baseline-memories.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/usr/bin/env bash -# Seed marketing Vestige with launch facts (separate from dev memory). -set -euo pipefail - -MARKETING_DIR="${VESTIGE_MARKETING_DIR:-$HOME/.vestige-marketing}" -TAGS="marketing,baseline,vestige-launch" - -ingest() { - vestige ingest "$1" --data-dir "${MARKETING_DIR}" --tags "${TAGS}" --node-type note -} - -echo "Seeding into ${MARKETING_DIR}..." - -ingest "Vestige v2.1.23 launch stats: ~86K LOC Rust, 25 MCP tools, 30 cognitive modules, 1200+ tests, 22MB binary, AGPL-3.0, npm vestige-mcp-server@latest, homepage samvallad33.github.io/vestige" - -ingest "Wave A hook Receipt Lock: block operational claims like tests passed or build green unless matching command receipts exist. Optional vestige sandwich install --enable-sanhedrin. Veto receipts at ~/.vestige/sanhedrin/" - -ingest "Wave B product: FSRS-6 spaced repetition memory, prediction error gating, memory dreaming, 3D dashboard localhost:3927, deep_reference contradictions, 100 percent local after embedding download" - -ingest "Canonical install: npm install -g vestige-mcp-server@latest && vestige health && claude mcp add vestige vestige-mcp -s user. Do NOT tell users sudo mv unless manual binary install failed." - -ingest "Messaging guardrails: no revolutionary game-changer AI-powered. Acknowledge Mem0 RAG native Claude memory honestly. Lead pain first tool second. Author Sam Valladares age 22 solo." - -ingest "North star metric: weekly npm installs vestige-mcp-server and active MCP connections not stars alone. Track in docs/marketing/metrics-tracker.md" - -ingest "Comparison anchor docs/comparison.md: RAG is retrieval, Vestige is cognitive lifecycle with forgetting consolidation Receipt Lock. Mem0 is cloud API Vestige is local AGPL." - -vestige stats --data-dir "${MARKETING_DIR}" 2>/dev/null || true -echo "Baseline seed complete." diff --git a/scripts/marketing/setup-marketing-instance.sh b/scripts/marketing/setup-marketing-instance.sh deleted file mode 100755 index e465c06..0000000 --- a/scripts/marketing/setup-marketing-instance.sh +++ /dev/null @@ -1,44 +0,0 @@ -#!/usr/bin/env bash -# One-time setup: dedicated Vestige store + Claude Code MCP entry for marketing. -set -euo pipefail - -MARKETING_DIR="${VESTIGE_MARKETING_DIR:-$HOME/.vestige-marketing}" -BIN_DIR="${HOME}/.local/bin" -WRAPPER="${BIN_DIR}/vestige-mcp-marketing" - -echo "==> Marketing data dir: ${MARKETING_DIR}" -mkdir -p "${MARKETING_DIR}" - -if ! command -v vestige-mcp >/dev/null 2>&1; then - echo "Install Vestige first: npm install -g vestige-mcp-server@latest" - exit 1 -fi - -mkdir -p "${BIN_DIR}" -cat > "${WRAPPER}" < Wrapper: ${WRAPPER}" - -if command -v claude >/dev/null 2>&1; then - if claude mcp list 2>/dev/null | grep -q vestige-marketing; then - echo "==> claude mcp: vestige-marketing already registered" - else - claude mcp add vestige-marketing "${WRAPPER}" -s user - echo "==> Added: claude mcp add vestige-marketing ${WRAPPER} -s user" - fi -else - echo "==> Claude Code not found — register manually:" - echo " claude mcp add vestige-marketing ${WRAPPER} -s user" -fi - -echo "==> Seeding baseline memories..." -"$(dirname "$0")/seed-baseline-memories.sh" - -echo "" -echo "Done. Open Claude Code with MARKETING-CLAUDE.md:" -echo " cp docs/marketing/growth-engine/MARKETING-CLAUDE.md ~/vestige-marketing-CLAUDE.md" -echo " vestige health --data-dir ${MARKETING_DIR}"