mirror of
https://github.com/samvallad33/vestige.git
synced 2026-06-08 20:25:16 +02:00
Revert "Add developer launch kit for Vestige v2.1.23"
This reverts commit 00511948ff.
This commit is contained in:
parent
6a37586c5f
commit
a355da99a6
34 changed files with 42 additions and 1303 deletions
46
.github/workflows/pages.yml
vendored
46
.github/workflows/pages.yml
vendored
|
|
@ -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
|
||||
|
|
@ -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,
|
||||
|
|
|
|||
59
README.md
59
README.md
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
# Vestige
|
||||
|
||||
### Local memory and receipts for MCP-compatible AI agents.
|
||||
### Local cognitive memory for MCP-compatible AI agents.
|
||||
|
||||
[](https://github.com/samvallad33/vestige)
|
||||
[](https://github.com/samvallad33/vestige/releases/latest)
|
||||
|
|
@ -10,23 +10,11 @@
|
|||
[](LICENSE)
|
||||
[](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` |
|
||||
|  · [capture guide](docs/marketing/assets/CAPTURE.md) |  |
|
||||
|
||||
*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/)
|
||||
|
||||
</div>
|
||||
|
||||
|
|
@ -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`
|
||||
|
||||
<details>
|
||||
<summary>Other platforms & install methods</summary>
|
||||
|
||||
|
|
@ -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 |
|
||||
|
||||
---
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
@ -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
|
||||
|
|
@ -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.
|
||||
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
||||
---
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -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).
|
||||
|
|
@ -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.
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="960" height="540" viewBox="0 0 960 540">
|
||||
<rect width="960" height="540" fill="#0a0a12"/>
|
||||
<text x="480" y="250" fill="#8b9cf7" font-family="system-ui,sans-serif" font-size="28" text-anchor="middle">Vestige 3D Memory Dashboard</text>
|
||||
<text x="480" y="290" fill="#6b7280" font-family="system-ui,sans-serif" font-size="16" text-anchor="middle">Run vestige dashboard capture GIF per docs/marketing/assets/CAPTURE.md</text>
|
||||
<circle cx="320" cy="380" r="12" fill="#6366f1" opacity="0.9"/>
|
||||
<circle cx="480" cy="360" r="16" fill="#a78bfa" opacity="0.95"/>
|
||||
<circle cx="640" cy="390" r="10" fill="#6366f1" opacity="0.7"/>
|
||||
<line x1="320" y1="380" x2="480" y2="360" stroke="#fbbf24" stroke-width="2" opacity="0.6"/>
|
||||
<line x1="480" y1="360" x2="640" y2="390" stroke="#fbbf24" stroke-width="2" opacity="0.6"/>
|
||||
</svg>
|
||||
|
|
@ -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`
|
||||
|
|
@ -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
|
||||
|
|
@ -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 |
|
||||
|
|
@ -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 |
|
||||
|
|
@ -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 |
|
||||
|
|
@ -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.
|
||||
|
|
@ -1 +0,0 @@
|
|||
Show HN: Vestige – blocks coding agents from claiming "tests passed" without receipts
|
||||
|
|
@ -1 +0,0 @@
|
|||
My coding agent kept saying "tests passed" when they hadn't. I added a receipt check before the summary ships.
|
||||
|
|
@ -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.
|
||||
|
|
@ -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.
|
||||
|
|
@ -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).
|
||||
|
|
@ -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.
|
||||
|
|
@ -1,82 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<title>Vestige — Local memory and receipts for AI agents</title>
|
||||
<meta name="description" content="FSRS-6 cognitive memory + Receipt Lock for MCP agents. 22MB Rust binary. 100% local." />
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
||||
<link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@400;600;700&family=IBM+Plex+Mono&display=swap" rel="stylesheet" />
|
||||
<style>
|
||||
:root { --bg: #07070f; --fg: #e8e8f0; --muted: #9ca3af; --accent: #818cf8; --gold: #fbbf24; --card: #12121c; }
|
||||
* { box-sizing: border-box; margin: 0; padding: 0; }
|
||||
body { font-family: 'IBM Plex Sans', system-ui, sans-serif; background: var(--bg); color: var(--fg); line-height: 1.6; }
|
||||
a { color: var(--accent); }
|
||||
.wrap { max-width: 880px; margin: 0 auto; padding: 2rem 1.25rem 4rem; }
|
||||
h1 { font-size: clamp(1.75rem, 5vw, 2.5rem); font-weight: 700; line-height: 1.2; margin-bottom: 1rem; }
|
||||
h2 { font-size: 1.35rem; margin: 2.5rem 0 1rem; color: var(--accent); }
|
||||
p.lead { font-size: 1.15rem; color: var(--muted); margin-bottom: 1.5rem; }
|
||||
.badge { display: inline-block; font-size: 0.75rem; font-family: 'IBM Plex Mono', monospace; background: var(--card); padding: 0.25rem 0.6rem; border-radius: 4px; margin-right: 0.5rem; margin-bottom: 0.5rem; }
|
||||
pre { background: var(--card); padding: 1rem; border-radius: 8px; overflow-x: auto; font-family: 'IBM Plex Mono', monospace; font-size: 0.9rem; margin: 1rem 0; border: 1px solid #1f1f2e; }
|
||||
.hero-img { width: 100%; border-radius: 12px; border: 1px solid #1f1f2e; margin: 1.5rem 0; }
|
||||
table { width: 100%; border-collapse: collapse; font-size: 0.9rem; margin: 1rem 0; }
|
||||
th, td { border: 1px solid #1f1f2e; padding: 0.6rem 0.75rem; text-align: left; }
|
||||
th { background: var(--card); }
|
||||
.cta { display: inline-block; background: var(--accent); color: #fff; font-weight: 600; padding: 0.75rem 1.25rem; border-radius: 8px; text-decoration: none; margin-top: 0.5rem; }
|
||||
.cta:hover { filter: brightness(1.1); }
|
||||
footer { margin-top: 3rem; font-size: 0.85rem; color: var(--muted); }
|
||||
.hook { border-left: 3px solid var(--gold); padding-left: 1rem; margin: 1.5rem 0; font-style: italic; color: #d1d5db; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="wrap">
|
||||
<p>
|
||||
<span class="badge">v2.1.23</span>
|
||||
<span class="badge">25 MCP tools</span>
|
||||
<span class="badge">~86K LOC Rust</span>
|
||||
<span class="badge">AGPL-3.0</span>
|
||||
</p>
|
||||
|
||||
<h1>Your agent forgets yesterday.<br />It can lie about today.</h1>
|
||||
<p class="lead">Vestige is a local MCP memory server: real FSRS-6 forgetting and consolidation, plus optional <strong>Receipt Lock</strong> that blocks “tests passed” without command receipts.</p>
|
||||
|
||||
<pre>npm install -g vestige-mcp-server@latest
|
||||
claude mcp add vestige vestige-mcp -s user</pre>
|
||||
<a class="cta" href="https://github.com/samvallad33/vestige">GitHub →</a>
|
||||
|
||||
<h2>Wave A: Receipt Lock</h2>
|
||||
<div class="hook">Coding agents finish with confident summaries. Vestige checks operational claims against structured command receipts before they become your final answer.</div>
|
||||
<p>If the agent claims verification happened but no matching successful receipt exists, the claim can be blocked and an inspectable local veto is written to <code>~/.vestige/sanhedrin/</code>.</p>
|
||||
<pre>vestige sandwich install --enable-sanhedrin</pre>
|
||||
<p><a href="https://github.com/samvallad33/vestige#receipt-lock">Receipt Lock docs</a></p>
|
||||
|
||||
<h2>Wave B: A brain, not a bucket</h2>
|
||||
<img class="hero-img" src="../marketing/assets/dashboard-placeholder.svg" alt="Vestige 3D memory dashboard" width="960" height="540" />
|
||||
<p>Memories decay on FSRS-6 curves. Search strengthens them (Testing Effect). <code>dream</code> consolidates offline. The 3D dashboard shows pulses, connections, and dream replay in real time.</p>
|
||||
<p><code>vestige dashboard</code> → <a href="http://localhost:3927/dashboard">localhost:3927/dashboard</a></p>
|
||||
|
||||
<h2>Vestige vs the rest</h2>
|
||||
<table>
|
||||
<thead><tr><th></th><th>RAG</th><th>Native AI memory</th><th>Vestige</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td>Forgetting</td><td>None</td><td>Opaque</td><td><strong>FSRS-6</strong></td></tr>
|
||||
<tr><td>Local / private</td><td>Varies</td><td>Cloud</td><td><strong>100% local</strong></td></tr>
|
||||
<tr><td>Contradictions</td><td>Both chunks</td><td>No</td><td><strong>deep_reference</strong></td></tr>
|
||||
<tr><td>Fake “tests passed”</td><td>N/A</td><td>N/A</td><td><strong>Receipt Lock</strong></td></tr>
|
||||
<tr><td>Visualization</td><td>None</td><td>None</td><td><strong>3D graph</strong></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p><a href="https://github.com/samvallad33/vestige/blob/main/docs/comparison.md">Full comparison (Mem0, RAG, native)</a></p>
|
||||
|
||||
<h2>Install</h2>
|
||||
<pre>npm install -g vestige-mcp-server@latest
|
||||
vestige health
|
||||
claude mcp add vestige vestige-mcp -s user</pre>
|
||||
<p>Also works with Codex, Cursor, VS Code Copilot, JetBrains, Windsurf, Xcode. See <a href="https://github.com/samvallad33/vestige/tree/main/docs/integrations">integration guides</a>.</p>
|
||||
|
||||
<footer>
|
||||
Built by Sam Valladares (22, solo). Stats: <a href="../LAUNCH_STATS.md">LAUNCH_STATS.md</a> · Science: <a href="../SCIENCE.md">SCIENCE.md</a>
|
||||
</footer>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -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",
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -29,7 +29,6 @@
|
|||
"type": "git",
|
||||
"url": "git+https://github.com/samvallad33/vestige.git"
|
||||
},
|
||||
"homepage": "https://samvallad33.github.io/vestige/",
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -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."
|
||||
|
|
@ -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}" <<EOF
|
||||
#!/usr/bin/env bash
|
||||
export VESTIGE_DATA_DIR="${MARKETING_DIR}"
|
||||
exec vestige-mcp "\$@"
|
||||
EOF
|
||||
chmod +x "${WRAPPER}"
|
||||
echo "==> 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}"
|
||||
Loading…
Add table
Add a link
Reference in a new issue