---
mw_bundle: 1
type: hub_digest
slug: demo
author: "mdfy Demo"
url: https://memory.wiki/hub/demo
concept_count: 40
updated: 2026-06-24T08:17:32.070Z
source: "memory.wiki"
---

# mdfy Demo's knowledge — concept digest

> A hand-curated example hub showing what mdfy makes possible — captured AI conversations, research notes, project decisions, and the bundles that synthesise them. Paste any URL into Claude, ChatGPT, or Cursor to see the full payload.

_40 concepts extracted across this hub. Each entry links to the supporting documents — fetch any of them as `https://memory.wiki/raw/<id>?compact=1` for the dense full text._

## Concepts

### mdfy
*entity • weight 123 • 6 docs*

> A tool that stores project context and decision history, integrated into Cursor via custom rules.

- [AI memory architectures: a Claude conversation](https://memory.wiki/yt2ZZqyI)
  Captured from a working session with Claude Opus, 2026-03-12. Cleaned, structured, and saved as a permanent URL so the next AI session can pick up where we left off.
- [Karpathy's LLM Wiki concept, in one read](https://memory.wiki/T7ZGdpOm)
  Andrej Karpathy, Twitter thread (2024). Topic: a personal LLM-readable wiki — one place a person writes their knowledge, the LLM reads it instead of building memory by inference.
- [Formatting tour: math, diagrams, code, tables](https://memory.wiki/F1q9U1YP)
  A reference for what renders in mdfy. Every block below appears in real docs across this hub.
- [Microsoft GraphRAG: what we learned](https://memory.wiki/6WkjlKgA)
  Read the 2024 paper and the follow-ups (Project NotebookLM, the v1.1 release, the open-source community fork). Notes for the team to reference when "GraphRAG" comes up.
- [Mem0 vs Letta: extracted memory comparison](https://memory.wiki/_ybJOqIB)
  Side-by-side after 3 weeks of using both in parallel on the same chat corpus.
- [llms.txt adoption: who's actually shipping it](https://memory.wiki/qKRfGtCa)
  Snapshot 2026-05-01. I'll re-run this every quarter.

_Related:_ implements pattern → **Hub-shaped memory** · integrated into → **Cursor** · solves problem for → **ChatGPT** · integrates with → **Cursor** · integrates with → **Claude**

### Supabase
*entity • weight 62 • 6 docs*

> Backend-as-a-service providing authentication, database, and row-level security without separate auth overhead.

- [Decision: Supabase pgvector over Pinecone](https://memory.wiki/frK9IDOy)
  Logged 2026-03-08 after a 2-day evaluation. Status: locked.
- [Decision: Keep the Markdown engine in Rust + WASM](https://memory.wiki/5DWOm2ya)
  Recurring conversation that I'm now closing.
- [Decision: Anthropic Haiku for hub-recall reranker](https://memory.wiki/sB3a5eOG)
  Logged 2026-04-11.
- [Decision: Inline graph_data in bundle URLs](https://memory.wiki/yIpXMsqc)
  Companion to the public spec version at /spec. This is the engineering-side version with the receipts.
- [Decision: Drop [[wikilinks]] permanently](https://memory.wiki/DDxqHKdd)
  See /spec for the public statement. This is the internal "why" we don't surface in marketing.
- [PDF import test](https://memory.wiki/ta8mE-Dk)
  Body text above the embedded image:

_Related:_ enables approach → **Vendor consolidation** · exemplifies approach → **Vendor consolidation** · reduces complexity → **Vendor consolidation** · integrates → **pgvector** · exemplifies strategy → **Vendor consolidation**

### Vendor consolidation
*concept • weight 61 • 6 docs*

> The operational principle of reducing authentication surfaces, SDKs, and control planes by keeping vector search within the existing Postgres infrastructure.

- [Decision: Supabase pgvector over Pinecone](https://memory.wiki/frK9IDOy)
  Logged 2026-03-08 after a 2-day evaluation. Status: locked.
- [Decision: Keep the Markdown engine in Rust + WASM](https://memory.wiki/5DWOm2ya)
  Recurring conversation that I'm now closing.
- [Decision: Anthropic Haiku for hub-recall reranker](https://memory.wiki/sB3a5eOG)
  Logged 2026-04-11.
- [Decision: Inline graph_data in bundle URLs](https://memory.wiki/yIpXMsqc)
  Companion to the public spec version at /spec. This is the engineering-side version with the receipts.
- [Decision: Drop [[wikilinks]] permanently](https://memory.wiki/DDxqHKdd)
  See /spec for the public statement. This is the internal "why" we don't surface in marketing.
- [Acme Pulse — project README](https://memory.wiki/SWys7jXa)
  Acme Pulse is a landing-page builder for marketing teams. Build, A/B test, ship — all without engineering bandwidth.

_Related:_ guides → **Supabase** · guides → **Vercel AI Gateway**

### Structural moat
*concept • weight 53 • 6 docs*

> The defensible advantage created by mdfy's vendor-neutral positioning, which competitors cannot replicate due to inherent conflicts of interest.

- [Show HN plan (working draft)](https://memory.wiki/r_HaRypO)
  Living plan that I refine before launch day.
- [Launch day: what success looks like](https://memory.wiki/mXy_aztt)
  Show HN day plan. The thresholds I'm pre-committing to so I don't accidentally move them post-hoc.
- [GTM: the three channels I'll work](https://memory.wiki/8MD8xlLA)
  Concentration > spray. If I pick five channels and half-do them, none of them work.
- [What I'm NOT doing](https://memory.wiki/q13ymHpq)
  Negative space matters more than the positive list when the work is wide. Pinning this somewhere I'll re-read.
- [Cross-AI as a structural moat](https://memory.wiki/1tyw7rGT)
  The argument distilled, because I keep getting this question.
- [The structural moat: cross-AI portability](https://memory.wiki/rBRZ_nni)
  A single AI vendor can build deeper integration against its own model than mdfy ever could. None of them can deliver a URL that works across their competitors. The portability is the product.

_Related:_ enables → **Cross-AI memory**

### Claude
*entity • weight 46 • 6 docs*

> Anthropic's AI model cited as an example of vendor lock-in through projects and memory features.

- [AI memory architectures: a Claude conversation](https://memory.wiki/yt2ZZqyI)
  Captured from a working session with Claude Opus, 2026-03-12. Cleaned, structured, and saved as a permanent URL so the next AI session can pick up where we left off.
- [Karpathy's LLM Wiki concept, in one read](https://memory.wiki/T7ZGdpOm)
  Andrej Karpathy, Twitter thread (2024). Topic: a personal LLM-readable wiki — one place a person writes their knowledge, the LLM reads it instead of building memory by inference.
- [Formatting tour: math, diagrams, code, tables](https://memory.wiki/F1q9U1YP)
  A reference for what renders in mdfy. Every block below appears in real docs across this hub.
- [The structural moat: cross-AI portability](https://memory.wiki/rBRZ_nni)
  A single AI vendor can build deeper integration against its own model than mdfy ever could. None of them can deliver a URL that works across their competitors. The portability is the product.
- [Decision: ship graph_data inside the bundle URL](https://memory.wiki/kxn9T-Vv)
  **Status**: shipped 2026-05-12 (commit `ba7344c4`)
- [Wiring mdfy into Cursor](https://memory.wiki/TEuiwop8)
  `.cursor/rules/mdfy.mdc`:

_Related:_ developed by → **Anthropic**

### pgvector
*entity • weight 45 • 6 docs*

> PostgreSQL extension providing vector data type and HNSW indexing for efficient similarity search.

- [Decision: Supabase pgvector over Pinecone](https://memory.wiki/frK9IDOy)
  Logged 2026-03-08 after a 2-day evaluation. Status: locked.
- [Decision: Keep the Markdown engine in Rust + WASM](https://memory.wiki/5DWOm2ya)
  Recurring conversation that I'm now closing.
- [Decision: Anthropic Haiku for hub-recall reranker](https://memory.wiki/sB3a5eOG)
  Logged 2026-04-11.
- [Decision: Inline graph_data in bundle URLs](https://memory.wiki/yIpXMsqc)
  Companion to the public spec version at /spec. This is the engineering-side version with the receipts.
- [Decision: Drop [[wikilinks]] permanently](https://memory.wiki/DDxqHKdd)
  See /spec for the public statement. This is the internal "why" we don't surface in marketing.
- [Decision log](https://memory.wiki/SrgEHFCI)
  ADR-style records. Append-only — never edit a decision, append a new one that supersedes.

### mdfy.app
*entity • weight 37 • 3 docs*

> The platform hosting this hub with a hierarchical document structure and permission system.

- [Welcome to [mdfy.app](http://mdfy.app)](https://memory.wiki/2WqRPNiV)
  Status: shipped 2026-04.
- [Mem0 vs Letta: extracted memory comparison](https://memory.wiki/_ybJOqIB)
  Side-by-side after 3 weeks of using both in parallel on the same chat corpus.
- [How Claude should read this hub](https://memory.wiki/NFnDceE2)
  Meta-doc, intended for AI agents that fetch this hub URL as context. Written in second-person to the AI.

_Related:_ provides via → **bundle URL**

### Authentication
*tag • weight 36 • 6 docs*

> Core security domain covering user identity, session management, and authorization patterns.

- [API conventions](https://memory.wiki/LhYW7tc1)
  The API uses versioned paths, HTTP verbs mapped to standard operations with soft deletes by default, and consistent error shapes with machine codes. Authentication supports JWT tokens for signed-in users and per-document capability tokens for anonymous edits, with rate limiting at 60 requests per minute and cursor-based pagination capped at 200 rows per response.
- [Acme Pulse — project README](https://memory.wiki/SWys7jXa)
  Acme Pulse is a landing-page builder for marketing teams. Build, A/B test, ship — all without engineering bandwidth.
- [Auth pattern — Supabase Auth + RLS](https://memory.wiki/mjpt9oz8)
  Same vendor as DB → JWT `sub` ↔ `auth.users.id` join is native (no email-lookup roundtrip) RLS lives next to the data — auth and authz are one table read away Magic link + Google + GitHub out of the box Free up to 50k MAU; matches our pre-revenue runway
- [DB schema notes](https://memory.wiki/HsxL91R7)
  `users` — owned by Supabase Auth `organizations` — top-level tenant `organization_members` — (user_id, organization_id, role) `pages` — a landing page `page_versions` — append-only history per page `page_blocks` — section-level content (headline / hero / cta / form / etc.) `ab_tests` — variant assignment + outcome
- [UI patterns](https://memory.wiki/wp12y7sM)
  Design tokens live in `globals.css` as CSS variables: `--background`, `--accent`, `--text-primary`, etc. Use `var(--...)` everywhere. Don't hardcode hex. Dark mode via `[data-theme="dark"]` on `<html>`. Tokens get re-bound at the document root.
- [Decision log](https://memory.wiki/SrgEHFCI)
  ADR-style records. Append-only — never edit a decision, append a new one that supersedes.

### bundle URL
*entity • weight 35 • 5 docs*

> The delivery mechanism for markdown digests that now carries embedded graph analysis instead of doc list only

- [The structural moat: cross-AI portability](https://memory.wiki/rBRZ_nni)
  A single AI vendor can build deeper integration against its own model than mdfy ever could. None of them can deliver a URL that works across their competitors. The portability is the product.
- [Decision: ship graph_data inside the bundle URL](https://memory.wiki/kxn9T-Vv)
  **Status**: shipped 2026-05-12 (commit `ba7344c4`)
- [Wiring mdfy into Cursor](https://memory.wiki/TEuiwop8)
  `.cursor/rules/mdfy.mdc`:
- [Welcome to [mdfy.app](http://mdfy.app)](https://memory.wiki/2WqRPNiV)
  Status: shipped 2026-04.
- [Wiring mdfy into Claude Code](https://memory.wiki/iok3gZo6)
  Tested against Claude Code v1.x. Single command, single line in CLAUDE.md, persistent across sessions.

### AI tool integration
*concept • weight 33 • 5 docs*

> Ability to paste hub URL directly into Claude, ChatGPT, Cursor, or Codex for question-answering against the hub.

- [Wiring mdfy into Cursor](https://memory.wiki/TEuiwop8)
  `.cursor/rules/mdfy.mdc`:
- [Wiring mdfy into Claude Code](https://memory.wiki/iok3gZo6)
  Tested against Claude Code v1.x. Single command, single line in CLAUDE.md, persistent across sessions.
- [Wiring mdfy into Codex via AGENTS.md](https://memory.wiki/y4sEEo1R)
  Codex CLI + AGENTS.md. Same shape as the Claude Code recipe but with caveats specific to Codex's caching.
- [mdfy MCP server: setup in 4 lines](https://memory.wiki/PrxR1Uj4)
  For Claude Desktop, Cursor, and any other MCP-enabled tool.
- [README — start here](https://memory.wiki/csFtDM3c)
  Entry point for this demo hub.

### Hacker News
*entity • weight 31 • 5 docs*

> Primary GTM channel chosen for high ICP overlap with developers and format alignment with technical credibility.

- [Show HN plan (working draft)](https://memory.wiki/r_HaRypO)
  Living plan that I refine before launch day.
- [Launch day: what success looks like](https://memory.wiki/mXy_aztt)
  Show HN day plan. The thresholds I'm pre-committing to so I don't accidentally move them post-hoc.
- [GTM: the three channels I'll work](https://memory.wiki/8MD8xlLA)
  Concentration > spray. If I pick five channels and half-do them, none of them work.
- [What I'm NOT doing](https://memory.wiki/q13ymHpq)
  Negative space matters more than the positive list when the work is wide. Pinning this somewhere I'll re-read.
- [Cross-AI as a structural moat](https://memory.wiki/1tyw7rGT)
  The argument distilled, because I keep getting this question.

### Database Design
*tag • weight 30 • 6 docs*

> Data modeling domain including schema design, migrations, and query optimization strategies.

- [Acme Pulse — project README](https://memory.wiki/SWys7jXa)
  Acme Pulse is a landing-page builder for marketing teams. Build, A/B test, ship — all without engineering bandwidth.
- [Auth pattern — Supabase Auth + RLS](https://memory.wiki/mjpt9oz8)
  Same vendor as DB → JWT `sub` ↔ `auth.users.id` join is native (no email-lookup roundtrip) RLS lives next to the data — auth and authz are one table read away Magic link + Google + GitHub out of the box Free up to 50k MAU; matches our pre-revenue runway
- [DB schema notes](https://memory.wiki/HsxL91R7)
  `users` — owned by Supabase Auth `organizations` — top-level tenant `organization_members` — (user_id, organization_id, role) `pages` — a landing page `page_versions` — append-only history per page `page_blocks` — section-level content (headline / hero / cta / form / etc.) `ab_tests` — variant assignment + outcome
- [API conventions](https://memory.wiki/LhYW7tc1)
  The API uses versioned paths, HTTP verbs mapped to standard operations with soft deletes by default, and consistent error shapes with machine codes. Authentication supports JWT tokens for signed-in users and per-document capability tokens for anonymous edits, with rate limiting at 60 requests per minute and cursor-based pagination capped at 200 rows per response.
- [UI patterns](https://memory.wiki/wp12y7sM)
  Design tokens live in `globals.css` as CSS variables: `--background`, `--accent`, `--text-primary`, etc. Use `var(--...)` everywhere. Don't hardcode hex. Dark mode via `[data-theme="dark"]` on `<html>`. Tokens get re-bound at the document root.
- [Decision log](https://memory.wiki/SrgEHFCI)
  ADR-style records. Append-only — never edit a decision, append a new one that supersedes.

### mdfy Platform
*entity • weight 30 • 6 docs*

> Knowledge management platform designed for AI-first workflows with URL-based sharing.

- [Wiring mdfy into Cursor](https://memory.wiki/TEuiwop8)
  `.cursor/rules/mdfy.mdc`:
- [Wiring mdfy into Claude Code](https://memory.wiki/iok3gZo6)
  Tested against Claude Code v1.x. Single command, single line in CLAUDE.md, persistent across sessions.
- [Wiring mdfy into Codex via AGENTS.md](https://memory.wiki/y4sEEo1R)
  Codex CLI + AGENTS.md. Same shape as the Claude Code recipe but with caveats specific to Codex's caching.
- [mdfy MCP server: setup in 4 lines](https://memory.wiki/PrxR1Uj4)
  For Claude Desktop, Cursor, and any other MCP-enabled tool.
- [The structural moat: cross-AI portability](https://memory.wiki/rBRZ_nni)
  A single AI vendor can build deeper integration against its own model than mdfy ever could. None of them can deliver a URL that works across their competitors. The portability is the product.
- [Decision: ship graph_data inside the bundle URL](https://memory.wiki/kxn9T-Vv)
  **Status**: shipped 2026-05-12 (commit `ba7344c4`)

### Cursor IDE
*entity • weight 30 • 6 docs*

> Code editor that can fetch and utilize mdfy bundle URLs for project context.

- [Wiring mdfy into Cursor](https://memory.wiki/TEuiwop8)
  `.cursor/rules/mdfy.mdc`:
- [Wiring mdfy into Claude Code](https://memory.wiki/iok3gZo6)
  Tested against Claude Code v1.x. Single command, single line in CLAUDE.md, persistent across sessions.
- [Wiring mdfy into Codex via AGENTS.md](https://memory.wiki/y4sEEo1R)
  Codex CLI + AGENTS.md. Same shape as the Claude Code recipe but with caveats specific to Codex's caching.
- [mdfy MCP server: setup in 4 lines](https://memory.wiki/PrxR1Uj4)
  For Claude Desktop, Cursor, and any other MCP-enabled tool.
- [The structural moat: cross-AI portability](https://memory.wiki/rBRZ_nni)
  A single AI vendor can build deeper integration against its own model than mdfy ever could. None of them can deliver a URL that works across their competitors. The portability is the product.
- [Decision: ship graph_data inside the bundle URL](https://memory.wiki/kxn9T-Vv)
  **Status**: shipped 2026-05-12 (commit `ba7344c4`)

_Related:_ fetches → **bundle URL**

### Cursor
*entity • weight 30 • 6 docs*

> Code editor that consumes mdfy bundles as context for chat and composer sessions.

- [Show HN plan (working draft)](https://memory.wiki/r_HaRypO)
  Living plan that I refine before launch day.
- [Launch day: what success looks like](https://memory.wiki/mXy_aztt)
  Show HN day plan. The thresholds I'm pre-committing to so I don't accidentally move them post-hoc.
- [GTM: the three channels I'll work](https://memory.wiki/8MD8xlLA)
  Concentration > spray. If I pick five channels and half-do them, none of them work.
- [What I'm NOT doing](https://memory.wiki/q13ymHpq)
  Negative space matters more than the positive list when the work is wide. Pinning this somewhere I'll re-read.
- [Cross-AI as a structural moat](https://memory.wiki/1tyw7rGT)
  The argument distilled, because I keep getting this question.
- [Onboarding script: 5 slides](https://memory.wiki/Ts4Vh6Zw)
  Source of truth for the WelcomeOverlay copy. Any change in the component should be reflected here, and vice versa.

_Related:_ positioned to deliver → **Cross-AI memory**

### API Design
*tag • weight 28 • 6 docs*

> RESTful interface design covering endpoints, error handling, and client-server communication.

- [Acme Pulse — project README](https://memory.wiki/SWys7jXa)
  Acme Pulse is a landing-page builder for marketing teams. Build, A/B test, ship — all without engineering bandwidth.
- [Auth pattern — Supabase Auth + RLS](https://memory.wiki/mjpt9oz8)
  Same vendor as DB → JWT `sub` ↔ `auth.users.id` join is native (no email-lookup roundtrip) RLS lives next to the data — auth and authz are one table read away Magic link + Google + GitHub out of the box Free up to 50k MAU; matches our pre-revenue runway
- [DB schema notes](https://memory.wiki/HsxL91R7)
  `users` — owned by Supabase Auth `organizations` — top-level tenant `organization_members` — (user_id, organization_id, role) `pages` — a landing page `page_versions` — append-only history per page `page_blocks` — section-level content (headline / hero / cta / form / etc.) `ab_tests` — variant assignment + outcome
- [API conventions](https://memory.wiki/LhYW7tc1)
  The API uses versioned paths, HTTP verbs mapped to standard operations with soft deletes by default, and consistent error shapes with machine codes. Authentication supports JWT tokens for signed-in users and per-document capability tokens for anonymous edits, with rate limiting at 60 requests per minute and cursor-based pagination capped at 200 rows per response.
- [UI patterns](https://memory.wiki/wp12y7sM)
  Design tokens live in `globals.css` as CSS variables: `--background`, `--accent`, `--text-primary`, etc. Use `var(--...)` everywhere. Don't hardcode hex. Dark mode via `[data-theme="dark"]` on `<html>`. Tokens get re-bound at the document root.
- [Decision log](https://memory.wiki/SrgEHFCI)
  ADR-style records. Append-only — never edit a decision, append a new one that supersedes.

### Resend
*entity • weight 27 • 6 docs*

> Email service provider supporting both transactional and marketing communication channels.

- [Decision log](https://memory.wiki/SrgEHFCI)
  ADR-style records. Append-only — never edit a decision, append a new one that supersedes.
- [Acme Pulse — project README](https://memory.wiki/SWys7jXa)
  Acme Pulse is a landing-page builder for marketing teams. Build, A/B test, ship — all without engineering bandwidth.
- [Auth pattern — Supabase Auth + RLS](https://memory.wiki/mjpt9oz8)
  Same vendor as DB → JWT `sub` ↔ `auth.users.id` join is native (no email-lookup roundtrip) RLS lives next to the data — auth and authz are one table read away Magic link + Google + GitHub out of the box Free up to 50k MAU; matches our pre-revenue runway
- [DB schema notes](https://memory.wiki/HsxL91R7)
  `users` — owned by Supabase Auth `organizations` — top-level tenant `organization_members` — (user_id, organization_id, role) `pages` — a landing page `page_versions` — append-only history per page `page_blocks` — section-level content (headline / hero / cta / form / etc.) `ab_tests` — variant assignment + outcome
- [API conventions](https://memory.wiki/LhYW7tc1)
  The API uses versioned paths, HTTP verbs mapped to standard operations with soft deletes by default, and consistent error shapes with machine codes. Authentication supports JWT tokens for signed-in users and per-document capability tokens for anonymous edits, with rate limiting at 60 requests per minute and cursor-based pagination capped at 200 rows per response.
- [UI patterns](https://memory.wiki/wp12y7sM)
  Design tokens live in `globals.css` as CSS variables: `--background`, `--accent`, `--text-primary`, etc. Use `var(--...)` everywhere. Don't hardcode hex. Dark mode via `[data-theme="dark"]` on `<html>`. Tokens get re-bound at the document root.

### ChatGPT
*entity • weight 27 • 6 docs*

> Example of an AI provider whose memory feature is intentionally confined to its own product.

- [AI memory architectures: a Claude conversation](https://memory.wiki/yt2ZZqyI)
  Captured from a working session with Claude Opus, 2026-03-12. Cleaned, structured, and saved as a permanent URL so the next AI session can pick up where we left off.
- [Karpathy's LLM Wiki concept, in one read](https://memory.wiki/T7ZGdpOm)
  Andrej Karpathy, Twitter thread (2024). Topic: a personal LLM-readable wiki — one place a person writes their knowledge, the LLM reads it instead of building memory by inference.
- [Formatting tour: math, diagrams, code, tables](https://memory.wiki/F1q9U1YP)
  A reference for what renders in mdfy. Every block below appears in real docs across this hub.
- [The structural moat: cross-AI portability](https://memory.wiki/rBRZ_nni)
  A single AI vendor can build deeper integration against its own model than mdfy ever could. None of them can deliver a URL that works across their competitors. The portability is the product.
- [Decision: ship graph_data inside the bundle URL](https://memory.wiki/kxn9T-Vv)
  **Status**: shipped 2026-05-12 (commit `ba7344c4`)
- [Wiring mdfy into Cursor](https://memory.wiki/TEuiwop8)
  `.cursor/rules/mdfy.mdc`:

### Next.js App Router
*entity • weight 26 • 6 docs*

> Chosen routing framework leveraging RSC and Server Actions to match the project's data-heavy, read-mostly workload.

- [Decision log](https://memory.wiki/SrgEHFCI)
  ADR-style records. Append-only — never edit a decision, append a new one that supersedes.
- [Acme Pulse — project README](https://memory.wiki/SWys7jXa)
  Acme Pulse is a landing-page builder for marketing teams. Build, A/B test, ship — all without engineering bandwidth.
- [Auth pattern — Supabase Auth + RLS](https://memory.wiki/mjpt9oz8)
  Same vendor as DB → JWT `sub` ↔ `auth.users.id` join is native (no email-lookup roundtrip) RLS lives next to the data — auth and authz are one table read away Magic link + Google + GitHub out of the box Free up to 50k MAU; matches our pre-revenue runway
- [DB schema notes](https://memory.wiki/HsxL91R7)
  `users` — owned by Supabase Auth `organizations` — top-level tenant `organization_members` — (user_id, organization_id, role) `pages` — a landing page `page_versions` — append-only history per page `page_blocks` — section-level content (headline / hero / cta / form / etc.) `ab_tests` — variant assignment + outcome
- [API conventions](https://memory.wiki/LhYW7tc1)
  The API uses versioned paths, HTTP verbs mapped to standard operations with soft deletes by default, and consistent error shapes with machine codes. Authentication supports JWT tokens for signed-in users and per-document capability tokens for anonymous edits, with rate limiting at 60 requests per minute and cursor-based pagination capped at 200 rows per response.
- [UI patterns](https://memory.wiki/wp12y7sM)
  Design tokens live in `globals.css` as CSS variables: `--background`, `--accent`, `--text-primary`, etc. Use `var(--...)` everywhere. Don't hardcode hex. Dark mode via `[data-theme="dark"]` on `<html>`. Tokens get re-bound at the document root.

### Vercel AI Gateway
*entity • weight 26 • 6 docs*

> AI provider abstraction layer offering failover and zero data retention for model access.

- [Acme Pulse — project README](https://memory.wiki/SWys7jXa)
  Acme Pulse is a landing-page builder for marketing teams. Build, A/B test, ship — all without engineering bandwidth.
- [Decision log](https://memory.wiki/SrgEHFCI)
  ADR-style records. Append-only — never edit a decision, append a new one that supersedes.
- [Auth pattern — Supabase Auth + RLS](https://memory.wiki/mjpt9oz8)
  Same vendor as DB → JWT `sub` ↔ `auth.users.id` join is native (no email-lookup roundtrip) RLS lives next to the data — auth and authz are one table read away Magic link + Google + GitHub out of the box Free up to 50k MAU; matches our pre-revenue runway
- [DB schema notes](https://memory.wiki/HsxL91R7)
  `users` — owned by Supabase Auth `organizations` — top-level tenant `organization_members` — (user_id, organization_id, role) `pages` — a landing page `page_versions` — append-only history per page `page_blocks` — section-level content (headline / hero / cta / form / etc.) `ab_tests` — variant assignment + outcome
- [API conventions](https://memory.wiki/LhYW7tc1)
  The API uses versioned paths, HTTP verbs mapped to standard operations with soft deletes by default, and consistent error shapes with machine codes. Authentication supports JWT tokens for signed-in users and per-document capability tokens for anonymous edits, with rate limiting at 60 requests per minute and cursor-based pagination capped at 200 rows per response.
- [UI patterns](https://memory.wiki/wp12y7sM)
  Design tokens live in `globals.css` as CSS variables: `--background`, `--accent`, `--text-primary`, etc. Use `var(--...)` everywhere. Don't hardcode hex. Dark mode via `[data-theme="dark"]` on `<html>`. Tokens get re-bound at the document root.

_Related:_ similar pattern → **Resend**

### Cross-AI memory
*concept • weight 26 • 6 docs*

> The core thesis: a memory layer that persists across multiple AI providers simultaneously, structurally unavailable to single-vendor AI companies.

- [Show HN plan (working draft)](https://memory.wiki/r_HaRypO)
  Living plan that I refine before launch day.
- [Launch day: what success looks like](https://memory.wiki/mXy_aztt)
  Show HN day plan. The thresholds I'm pre-committing to so I don't accidentally move them post-hoc.
- [GTM: the three channels I'll work](https://memory.wiki/8MD8xlLA)
  Concentration > spray. If I pick five channels and half-do them, none of them work.
- [What I'm NOT doing](https://memory.wiki/q13ymHpq)
  Negative space matters more than the positive list when the work is wide. Pinning this somewhere I'll re-read.
- [Cross-AI as a structural moat](https://memory.wiki/1tyw7rGT)
  The argument distilled, because I keep getting this question.
- [Decision: Drop [[wikilinks]] permanently](https://memory.wiki/DDxqHKdd)
  See /spec for the public statement. This is the internal "why" we don't surface in marketing.

_Related:_ creates advantage → **Structural moat**

### Anthropic
*entity • weight 25 • 6 docs*

> Incumbent AI vendor mentioned as competitive threat with integrated memory and user lock-in.

- [Decision: Supabase pgvector over Pinecone](https://memory.wiki/frK9IDOy)
  Logged 2026-03-08 after a 2-day evaluation. Status: locked.
- [Decision: Keep the Markdown engine in Rust + WASM](https://memory.wiki/5DWOm2ya)
  Recurring conversation that I'm now closing.
- [Decision: Anthropic Haiku for hub-recall reranker](https://memory.wiki/sB3a5eOG)
  Logged 2026-04-11.
- [Decision: Inline graph_data in bundle URLs](https://memory.wiki/yIpXMsqc)
  Companion to the public spec version at /spec. This is the engineering-side version with the receipts.
- [Decision: Drop [[wikilinks]] permanently](https://memory.wiki/DDxqHKdd)
  See /spec for the public statement. This is the internal "why" we don't surface in marketing.
- [Show HN plan (working draft)](https://memory.wiki/r_HaRypO)
  Living plan that I refine before launch day.

_Related:_ supports strategy → **Vendor consolidation**

### Next.js 15
*entity • weight 25 • 6 docs*

> Chosen frontend framework leveraging React Server Components and caching for performance.

- [Acme Pulse — project README](https://memory.wiki/SWys7jXa)
  Acme Pulse is a landing-page builder for marketing teams. Build, A/B test, ship — all without engineering bandwidth.
- [Auth pattern — Supabase Auth + RLS](https://memory.wiki/mjpt9oz8)
  Same vendor as DB → JWT `sub` ↔ `auth.users.id` join is native (no email-lookup roundtrip) RLS lives next to the data — auth and authz are one table read away Magic link + Google + GitHub out of the box Free up to 50k MAU; matches our pre-revenue runway
- [DB schema notes](https://memory.wiki/HsxL91R7)
  `users` — owned by Supabase Auth `organizations` — top-level tenant `organization_members` — (user_id, organization_id, role) `pages` — a landing page `page_versions` — append-only history per page `page_blocks` — section-level content (headline / hero / cta / form / etc.) `ab_tests` — variant assignment + outcome
- [API conventions](https://memory.wiki/LhYW7tc1)
  The API uses versioned paths, HTTP verbs mapped to standard operations with soft deletes by default, and consistent error shapes with machine codes. Authentication supports JWT tokens for signed-in users and per-document capability tokens for anonymous edits, with rate limiting at 60 requests per minute and cursor-based pagination capped at 200 rows per response.
- [UI patterns](https://memory.wiki/wp12y7sM)
  Design tokens live in `globals.css` as CSS variables: `--background`, `--accent`, `--text-primary`, etc. Use `var(--...)` everywhere. Don't hardcode hex. Dark mode via `[data-theme="dark"]` on `<html>`. Tokens get re-bound at the document root.
- [Decision log](https://memory.wiki/SrgEHFCI)
  ADR-style records. Append-only — never edit a decision, append a new one that supersedes.

### Hub-shaped memory
*concept • weight 24 • 3 docs*

> The chosen architecture where users author structured notes as URL-addressable resources that the AI reads, preserving human control over memory curation.

- [AI memory architectures: a Claude conversation](https://memory.wiki/yt2ZZqyI)
  Captured from a working session with Claude Opus, 2026-03-12. Cleaned, structured, and saved as a permanent URL so the next AI session can pick up where we left off.
- [Karpathy's LLM Wiki concept, in one read](https://memory.wiki/T7ZGdpOm)
  Andrej Karpathy, Twitter thread (2024). Topic: a personal LLM-readable wiki — one place a person writes their knowledge, the LLM reads it instead of building memory by inference.
- [Formatting tour: math, diagrams, code, tables](https://memory.wiki/F1q9U1YP)
  A reference for what renders in mdfy. Every block below appears in real docs across this hub.

_Related:_ implemented by → **mdfy** · depends on → **URL-addressable knowledge**

### Performance Optimization
*concept • weight 24 • 5 docs*

> Critical performance considerations driving technical architecture decisions.

- [Decision: Supabase pgvector over Pinecone](https://memory.wiki/frK9IDOy)
  Logged 2026-03-08 after a 2-day evaluation. Status: locked.
- [Decision: Keep the Markdown engine in Rust + WASM](https://memory.wiki/5DWOm2ya)
  Recurring conversation that I'm now closing.
- [Decision: Anthropic Haiku for hub-recall reranker](https://memory.wiki/sB3a5eOG)
  Logged 2026-04-11.
- [Decision: Inline graph_data in bundle URLs](https://memory.wiki/yIpXMsqc)
  Companion to the public spec version at /spec. This is the engineering-side version with the receipts.
- [Decision: Drop [[wikilinks]] permanently](https://memory.wiki/DDxqHKdd)
  See /spec for the public statement. This is the internal "why" we don't surface in marketing.

### Knowledge Management
*tag • weight 24 • 6 docs*

> Domain of organizing, storing, and retrieving information for human and AI use.

- [AI memory architectures: a Claude conversation](https://memory.wiki/yt2ZZqyI)
  Captured from a working session with Claude Opus, 2026-03-12. Cleaned, structured, and saved as a permanent URL so the next AI session can pick up where we left off.
- [Karpathy's LLM Wiki concept, in one read](https://memory.wiki/T7ZGdpOm)
  Andrej Karpathy, Twitter thread (2024). Topic: a personal LLM-readable wiki — one place a person writes their knowledge, the LLM reads it instead of building memory by inference.
- [Formatting tour: math, diagrams, code, tables](https://memory.wiki/F1q9U1YP)
  A reference for what renders in mdfy. Every block below appears in real docs across this hub.
- [Microsoft GraphRAG: what we learned](https://memory.wiki/6WkjlKgA)
  Read the 2024 paper and the follow-ups (Project NotebookLM, the v1.1 release, the open-source community fork). Notes for the team to reference when "GraphRAG" comes up.
- [Mem0 vs Letta: extracted memory comparison](https://memory.wiki/_ybJOqIB)
  Side-by-side after 3 weeks of using both in parallel on the same chat corpus.
- [llms.txt adoption: who's actually shipping it](https://memory.wiki/qKRfGtCa)
  Snapshot 2026-05-01. I'll re-run this every quarter.

### Row-level security
*concept • weight 24 • 6 docs*

> Supabase RLS capability co-locating authentication and authorization with data, justifying single-vendor consolidation.

- [Decision log](https://memory.wiki/SrgEHFCI)
  ADR-style records. Append-only — never edit a decision, append a new one that supersedes.
- [Acme Pulse — project README](https://memory.wiki/SWys7jXa)
  Acme Pulse is a landing-page builder for marketing teams. Build, A/B test, ship — all without engineering bandwidth.
- [Auth pattern — Supabase Auth + RLS](https://memory.wiki/mjpt9oz8)
  Same vendor as DB → JWT `sub` ↔ `auth.users.id` join is native (no email-lookup roundtrip) RLS lives next to the data — auth and authz are one table read away Magic link + Google + GitHub out of the box Free up to 50k MAU; matches our pre-revenue runway
- [DB schema notes](https://memory.wiki/HsxL91R7)
  `users` — owned by Supabase Auth `organizations` — top-level tenant `organization_members` — (user_id, organization_id, role) `pages` — a landing page `page_versions` — append-only history per page `page_blocks` — section-level content (headline / hero / cta / form / etc.) `ab_tests` — variant assignment + outcome
- [API conventions](https://memory.wiki/LhYW7tc1)
  The API uses versioned paths, HTTP verbs mapped to standard operations with soft deletes by default, and consistent error shapes with machine codes. Authentication supports JWT tokens for signed-in users and per-document capability tokens for anonymous edits, with rate limiting at 60 requests per minute and cursor-based pagination capped at 200 rows per response.
- [UI patterns](https://memory.wiki/wp12y7sM)
  Design tokens live in `globals.css` as CSS variables: `--background`, `--accent`, `--text-primary`, etc. Use `var(--...)` everywhere. Don't hardcode hex. Dark mode via `[data-theme="dark"]` on `<html>`. Tokens get re-bound at the document root.

_Related:_ supports → **Vendor consolidation** · supports decision → **Vendor consolidation**

### React Hook Form
*entity • weight 23 • 6 docs*

> Primary form handling library paired with Zod schemas for both client and server validation.

- [UI patterns](https://memory.wiki/wp12y7sM)
  Design tokens live in `globals.css` as CSS variables: `--background`, `--accent`, `--text-primary`, etc. Use `var(--...)` everywhere. Don't hardcode hex. Dark mode via `[data-theme="dark"]` on `<html>`. Tokens get re-bound at the document root.
- [Acme Pulse — project README](https://memory.wiki/SWys7jXa)
  Acme Pulse is a landing-page builder for marketing teams. Build, A/B test, ship — all without engineering bandwidth.
- [Auth pattern — Supabase Auth + RLS](https://memory.wiki/mjpt9oz8)
  Same vendor as DB → JWT `sub` ↔ `auth.users.id` join is native (no email-lookup roundtrip) RLS lives next to the data — auth and authz are one table read away Magic link + Google + GitHub out of the box Free up to 50k MAU; matches our pre-revenue runway
- [DB schema notes](https://memory.wiki/HsxL91R7)
  `users` — owned by Supabase Auth `organizations` — top-level tenant `organization_members` — (user_id, organization_id, role) `pages` — a landing page `page_versions` — append-only history per page `page_blocks` — section-level content (headline / hero / cta / form / etc.) `ab_tests` — variant assignment + outcome
- [API conventions](https://memory.wiki/LhYW7tc1)
  The API uses versioned paths, HTTP verbs mapped to standard operations with soft deletes by default, and consistent error shapes with machine codes. Authentication supports JWT tokens for signed-in users and per-document capability tokens for anonymous edits, with rate limiting at 60 requests per minute and cursor-based pagination capped at 200 rows per response.
- [Decision log](https://memory.wiki/SrgEHFCI)
  ADR-style records. Append-only — never edit a decision, append a new one that supersedes.

_Related:_ pairs with → **Zod** · validates with → **Zod**

### Claude Code
*entity • weight 23 • 5 docs*

> AI coding feature mentioned as a primary context for AI-native developer adoption.

- [Wiring mdfy into Cursor](https://memory.wiki/TEuiwop8)
  `.cursor/rules/mdfy.mdc`:
- [Wiring mdfy into Claude Code](https://memory.wiki/iok3gZo6)
  Tested against Claude Code v1.x. Single command, single line in CLAUDE.md, persistent across sessions.
- [Wiring mdfy into Codex via AGENTS.md](https://memory.wiki/y4sEEo1R)
  Codex CLI + AGENTS.md. Same shape as the Claude Code recipe but with caveats specific to Codex's caching.
- [mdfy MCP server: setup in 4 lines](https://memory.wiki/PrxR1Uj4)
  For Claude Desktop, Cursor, and any other MCP-enabled tool.
- [Decision: Inline graph_data in bundle URLs](https://memory.wiki/yIpXMsqc)
  Companion to the public spec version at /spec. This is the engineering-side version with the receipts.

### AI Integration
*tag • weight 22 • 6 docs*

> Artificial intelligence features and infrastructure including vector search and multi-provider setup.

- [The structural moat: cross-AI portability](https://memory.wiki/rBRZ_nni)
  A single AI vendor can build deeper integration against its own model than mdfy ever could. None of them can deliver a URL that works across their competitors. The portability is the product.
- [Decision: ship graph_data inside the bundle URL](https://memory.wiki/kxn9T-Vv)
  **Status**: shipped 2026-05-12 (commit `ba7344c4`)
- [Wiring mdfy into Cursor](https://memory.wiki/TEuiwop8)
  `.cursor/rules/mdfy.mdc`:
- [Acme Pulse — project README](https://memory.wiki/SWys7jXa)
  Acme Pulse is a landing-page builder for marketing teams. Build, A/B test, ship — all without engineering bandwidth.
- [Auth pattern — Supabase Auth + RLS](https://memory.wiki/mjpt9oz8)
  Same vendor as DB → JWT `sub` ↔ `auth.users.id` join is native (no email-lookup roundtrip) RLS lives next to the data — auth and authz are one table read away Magic link + Google + GitHub out of the box Free up to 50k MAU; matches our pre-revenue runway
- [DB schema notes](https://memory.wiki/HsxL91R7)
  `users` — owned by Supabase Auth `organizations` — top-level tenant `organization_members` — (user_id, organization_id, role) `pages` — a landing page `page_versions` — append-only history per page `page_blocks` — section-level content (headline / hero / cta / form / etc.) `ab_tests` — variant assignment + outcome

### Obsidian
*entity • weight 22 • 4 docs*

> The primary subject being tested for import functionality and markdown compatibility.

- [Microsoft GraphRAG: what we learned](https://memory.wiki/6WkjlKgA)
  Read the 2024 paper and the follow-ups (Project NotebookLM, the v1.1 release, the open-source community fork). Notes for the team to reference when "GraphRAG" comes up.
- [Mem0 vs Letta: extracted memory comparison](https://memory.wiki/_ybJOqIB)
  Side-by-side after 3 weeks of using both in parallel on the same chat corpus.
- [llms.txt adoption: who's actually shipping it](https://memory.wiki/qKRfGtCa)
  Snapshot 2026-05-01. I'll re-run this every quarter.
- [Karpathy wiki: the parts that map](https://memory.wiki/glqi_Xjw)
  Expansion of demo-karpathy-llm-wiki. That doc is the public summary; this is the internal "where it lines up with us and where it doesn't" working note.

### Vector recall
*concept • weight 22 • 3 docs*

> Memory pattern using embeddings and cosine similarity retrieval; trades precision for breadth but risks memory drift beyond user control.

- [AI memory architectures: a Claude conversation](https://memory.wiki/yt2ZZqyI)
  Captured from a working session with Claude Opus, 2026-03-12. Cleaned, structured, and saved as a permanent URL so the next AI session can pick up where we left off.
- [Karpathy's LLM Wiki concept, in one read](https://memory.wiki/T7ZGdpOm)
  Andrej Karpathy, Twitter thread (2024). Topic: a personal LLM-readable wiki — one place a person writes their knowledge, the LLM reads it instead of building memory by inference.
- [Formatting tour: math, diagrams, code, tables](https://memory.wiki/F1q9U1YP)
  A reference for what renders in mdfy. Every block below appears in real docs across this hub.

_Related:_ implemented by → **ChatGPT**

### Accessibility
*tag • weight 22 • 6 docs*

> Non-negotiable requirements including WCAG AA contrast, keyboard navigation, and semantic HTML for interactive elements.

- [Acme Pulse — project README](https://memory.wiki/SWys7jXa)
  Acme Pulse is a landing-page builder for marketing teams. Build, A/B test, ship — all without engineering bandwidth.
- [Auth pattern — Supabase Auth + RLS](https://memory.wiki/mjpt9oz8)
  Same vendor as DB → JWT `sub` ↔ `auth.users.id` join is native (no email-lookup roundtrip) RLS lives next to the data — auth and authz are one table read away Magic link + Google + GitHub out of the box Free up to 50k MAU; matches our pre-revenue runway
- [DB schema notes](https://memory.wiki/HsxL91R7)
  `users` — owned by Supabase Auth `organizations` — top-level tenant `organization_members` — (user_id, organization_id, role) `pages` — a landing page `page_versions` — append-only history per page `page_blocks` — section-level content (headline / hero / cta / form / etc.) `ab_tests` — variant assignment + outcome
- [API conventions](https://memory.wiki/LhYW7tc1)
  The API uses versioned paths, HTTP verbs mapped to standard operations with soft deletes by default, and consistent error shapes with machine codes. Authentication supports JWT tokens for signed-in users and per-document capability tokens for anonymous edits, with rate limiting at 60 requests per minute and cursor-based pagination capped at 200 rows per response.
- [UI patterns](https://memory.wiki/wp12y7sM)
  Design tokens live in `globals.css` as CSS variables: `--background`, `--accent`, `--text-primary`, etc. Use `var(--...)` everywhere. Don't hardcode hex. Dark mode via `[data-theme="dark"]` on `<html>`. Tokens get re-bound at the document root.
- [Decision log](https://memory.wiki/SrgEHFCI)
  ADR-style records. Append-only — never edit a decision, append a new one that supersedes.

_Related:_ applies to all → **Component hierarchy**

### Codex CLI
*entity • weight 22 • 4 docs*

> Command-line interface that integrates with AGENTS.md to load project context and caches configuration at session start.

- [Wiring mdfy into Cursor](https://memory.wiki/TEuiwop8)
  `.cursor/rules/mdfy.mdc`:
- [Wiring mdfy into Claude Code](https://memory.wiki/iok3gZo6)
  Tested against Claude Code v1.x. Single command, single line in CLAUDE.md, persistent across sessions.
- [Wiring mdfy into Codex via AGENTS.md](https://memory.wiki/y4sEEo1R)
  Codex CLI + AGENTS.md. Same shape as the Claude Code recipe but with caveats specific to Codex's caching.
- [mdfy MCP server: setup in 4 lines](https://memory.wiki/PrxR1Uj4)
  For Claude Desktop, Cursor, and any other MCP-enabled tool.

### Vercel
*entity • weight 22 • 6 docs*

> Early production adopter with comprehensive llms.txt implementation including per-product child files.

- [Open questions](https://memory.wiki/ir0K6-u2)
  Things we're carrying. Not decisions — placeholders.
- [Acme Pulse — project README](https://memory.wiki/SWys7jXa)
  Acme Pulse is a landing-page builder for marketing teams. Build, A/B test, ship — all without engineering bandwidth.
- [Auth pattern — Supabase Auth + RLS](https://memory.wiki/mjpt9oz8)
  Same vendor as DB → JWT `sub` ↔ `auth.users.id` join is native (no email-lookup roundtrip) RLS lives next to the data — auth and authz are one table read away Magic link + Google + GitHub out of the box Free up to 50k MAU; matches our pre-revenue runway
- [DB schema notes](https://memory.wiki/HsxL91R7)
  `users` — owned by Supabase Auth `organizations` — top-level tenant `organization_members` — (user_id, organization_id, role) `pages` — a landing page `page_versions` — append-only history per page `page_blocks` — section-level content (headline / hero / cta / form / etc.) `ab_tests` — variant assignment + outcome
- [API conventions](https://memory.wiki/LhYW7tc1)
  The API uses versioned paths, HTTP verbs mapped to standard operations with soft deletes by default, and consistent error shapes with machine codes. Authentication supports JWT tokens for signed-in users and per-document capability tokens for anonymous edits, with rate limiting at 60 requests per minute and cursor-based pagination capped at 200 rows per response.
- [UI patterns](https://memory.wiki/wp12y7sM)
  Design tokens live in `globals.css` as CSS variables: `--background`, `--accent`, `--text-primary`, etc. Use `var(--...)` everywhere. Don't hardcode hex. Dark mode via `[data-theme="dark"]` on `<html>`. Tokens get re-bound at the document root.

_Related:_ supports strategy → **Vendor consolidation**

### llms.txt
*concept • weight 22 • 6 docs*

> Plain-text discoverability standard for AI agents at site root, analogous to robots.txt and sitemap.xml.

- [The structural moat: cross-AI portability](https://memory.wiki/rBRZ_nni)
  A single AI vendor can build deeper integration against its own model than mdfy ever could. None of them can deliver a URL that works across their competitors. The portability is the product.
- [Decision: ship graph_data inside the bundle URL](https://memory.wiki/kxn9T-Vv)
  **Status**: shipped 2026-05-12 (commit `ba7344c4`)
- [Wiring mdfy into Cursor](https://memory.wiki/TEuiwop8)
  `.cursor/rules/mdfy.mdc`:
- [Microsoft GraphRAG: what we learned](https://memory.wiki/6WkjlKgA)
  Read the 2024 paper and the follow-ups (Project NotebookLM, the v1.1 release, the open-source community fork). Notes for the team to reference when "GraphRAG" comes up.
- [Mem0 vs Letta: extracted memory comparison](https://memory.wiki/_ybJOqIB)
  Side-by-side after 3 weeks of using both in parallel on the same chat corpus.
- [llms.txt adoption: who's actually shipping it](https://memory.wiki/qKRfGtCa)
  Snapshot 2026-05-01. I'll re-run this every quarter.

### Zod
*entity • weight 21 • 6 docs*

> Schema validation library used identically on client and server to enforce data integrity.

- [Acme Pulse — project README](https://memory.wiki/SWys7jXa)
  Acme Pulse is a landing-page builder for marketing teams. Build, A/B test, ship — all without engineering bandwidth.
- [Auth pattern — Supabase Auth + RLS](https://memory.wiki/mjpt9oz8)
  Same vendor as DB → JWT `sub` ↔ `auth.users.id` join is native (no email-lookup roundtrip) RLS lives next to the data — auth and authz are one table read away Magic link + Google + GitHub out of the box Free up to 50k MAU; matches our pre-revenue runway
- [DB schema notes](https://memory.wiki/HsxL91R7)
  `users` — owned by Supabase Auth `organizations` — top-level tenant `organization_members` — (user_id, organization_id, role) `pages` — a landing page `page_versions` — append-only history per page `page_blocks` — section-level content (headline / hero / cta / form / etc.) `ab_tests` — variant assignment + outcome
- [API conventions](https://memory.wiki/LhYW7tc1)
  The API uses versioned paths, HTTP verbs mapped to standard operations with soft deletes by default, and consistent error shapes with machine codes. Authentication supports JWT tokens for signed-in users and per-document capability tokens for anonymous edits, with rate limiting at 60 requests per minute and cursor-based pagination capped at 200 rows per response.
- [UI patterns](https://memory.wiki/wp12y7sM)
  Design tokens live in `globals.css` as CSS variables: `--background`, `--accent`, `--text-primary`, etc. Use `var(--...)` everywhere. Don't hardcode hex. Dark mode via `[data-theme="dark"]` on `<html>`. Tokens get re-bound at the document root.
- [Decision log](https://memory.wiki/SrgEHFCI)
  ADR-style records. Append-only — never edit a decision, append a new one that supersedes.

_Related:_ integrates validation → **React Hook Form**

### shadcn/ui
*entity • weight 21 • 6 docs*

> Source of primitive components re-exported in the project to maintain consistent branding.

- [Acme Pulse — project README](https://memory.wiki/SWys7jXa)
  Acme Pulse is a landing-page builder for marketing teams. Build, A/B test, ship — all without engineering bandwidth.
- [Auth pattern — Supabase Auth + RLS](https://memory.wiki/mjpt9oz8)
  Same vendor as DB → JWT `sub` ↔ `auth.users.id` join is native (no email-lookup roundtrip) RLS lives next to the data — auth and authz are one table read away Magic link + Google + GitHub out of the box Free up to 50k MAU; matches our pre-revenue runway
- [DB schema notes](https://memory.wiki/HsxL91R7)
  `users` — owned by Supabase Auth `organizations` — top-level tenant `organization_members` — (user_id, organization_id, role) `pages` — a landing page `page_versions` — append-only history per page `page_blocks` — section-level content (headline / hero / cta / form / etc.) `ab_tests` — variant assignment + outcome
- [API conventions](https://memory.wiki/LhYW7tc1)
  The API uses versioned paths, HTTP verbs mapped to standard operations with soft deletes by default, and consistent error shapes with machine codes. Authentication supports JWT tokens for signed-in users and per-document capability tokens for anonymous edits, with rate limiting at 60 requests per minute and cursor-based pagination capped at 200 rows per response.
- [UI patterns](https://memory.wiki/wp12y7sM)
  Design tokens live in `globals.css` as CSS variables: `--background`, `--accent`, `--text-primary`, etc. Use `var(--...)` everywhere. Don't hardcode hex. Dark mode via `[data-theme="dark"]` on `<html>`. Tokens get re-bound at the document root.
- [Decision log](https://memory.wiki/SrgEHFCI)
  ADR-style records. Append-only — never edit a decision, append a new one that supersedes.

### URL-addressable knowledge
*concept • weight 21 • 3 docs*

> Design principle enabling AI systems to read structured user-authored content from persistent, addressable locations outside the AI interface.

- [AI memory architectures: a Claude conversation](https://memory.wiki/yt2ZZqyI)
  Captured from a working session with Claude Opus, 2026-03-12. Cleaned, structured, and saved as a permanent URL so the next AI session can pick up where we left off.
- [Karpathy's LLM Wiki concept, in one read](https://memory.wiki/T7ZGdpOm)
  Andrej Karpathy, Twitter thread (2024). Topic: a personal LLM-readable wiki — one place a person writes their knowledge, the LLM reads it instead of building memory by inference.
- [Formatting tour: math, diagrams, code, tables](https://memory.wiki/F1q9U1YP)
  A reference for what renders in mdfy. Every block below appears in real docs across this hub.

_Related:_ enables approach → **Hub-shaped memory**

### Component hierarchy
*concept • weight 21 • 6 docs*

> Atomic structure (atoms → molecules → organisms → pages) establishes reusability rules and prevents circular dependencies in the codebase.

- [Acme Pulse — project README](https://memory.wiki/SWys7jXa)
  Acme Pulse is a landing-page builder for marketing teams. Build, A/B test, ship — all without engineering bandwidth.
- [Auth pattern — Supabase Auth + RLS](https://memory.wiki/mjpt9oz8)
  Same vendor as DB → JWT `sub` ↔ `auth.users.id` join is native (no email-lookup roundtrip) RLS lives next to the data — auth and authz are one table read away Magic link + Google + GitHub out of the box Free up to 50k MAU; matches our pre-revenue runway
- [DB schema notes](https://memory.wiki/HsxL91R7)
  `users` — owned by Supabase Auth `organizations` — top-level tenant `organization_members` — (user_id, organization_id, role) `pages` — a landing page `page_versions` — append-only history per page `page_blocks` — section-level content (headline / hero / cta / form / etc.) `ab_tests` — variant assignment + outcome
- [API conventions](https://memory.wiki/LhYW7tc1)
  The API uses versioned paths, HTTP verbs mapped to standard operations with soft deletes by default, and consistent error shapes with machine codes. Authentication supports JWT tokens for signed-in users and per-document capability tokens for anonymous edits, with rate limiting at 60 requests per minute and cursor-based pagination capped at 200 rows per response.
- [UI patterns](https://memory.wiki/wp12y7sM)
  Design tokens live in `globals.css` as CSS variables: `--background`, `--accent`, `--text-primary`, etc. Use `var(--...)` everywhere. Don't hardcode hex. Dark mode via `[data-theme="dark"]` on `<html>`. Tokens get re-bound at the document root.
- [Decision log](https://memory.wiki/SrgEHFCI)
  ADR-style records. Append-only — never edit a decision, append a new one that supersedes.

_Related:_ structures placement of → **React Hook Form** · sources primitives from → **shadcn/ui**

## Concept relations
_20 highest-weight edges between the top concepts._

- **Claude** developed by **Anthropic**
- **Hub-shaped memory** implemented by **mdfy**
- **mdfy** implements pattern **Hub-shaped memory**
- **Supabase** enables approach **Vendor consolidation**
- **Cross-AI memory** creates advantage **Structural moat**
- **Vector recall** implemented by **ChatGPT**
- **URL-addressable knowledge** enables approach **Hub-shaped memory**
- **Anthropic** supports strategy **Vendor consolidation**
- **Supabase** exemplifies approach **Vendor consolidation**
- **Supabase** reduces complexity **Vendor consolidation**
- **React Hook Form** pairs with **Zod**
- **Row-level security** supports **Vendor consolidation**
- **Supabase** integrates **pgvector**
- **Supabase** exemplifies strategy **Vendor consolidation**
- **Zod** integrates validation **React Hook Form**
- **Row-level security** supports decision **Vendor consolidation**
- **Supabase** provides **Row-level security**
- **Vendor consolidation** guides **Supabase**
- **React Hook Form** validates with **Zod**
- **mdfy.app** provides via **bundle URL**

## All documents
_50 public documents, ordered by recency. Each entry includes a one-paragraph gist for quick scanning. Fetch any as `https://memory.wiki/raw/<id>?compact=1` for the full body._
- [API conventions](https://memory.wiki/LhYW7tc1)
  The API uses versioned paths, HTTP verbs mapped to standard operations with soft deletes by default, and consistent error shapes with machine codes. Authentication supports JWT tokens for signed-in users and per-document capability tokens for anonymous edits, with rate limiting at 60 requests per minute and cursor-based pagination capped at 200 rows per response.
  _sections:_ URL shape: /api/v1/<resource> for stable endpoints. Versioned via the path. Sub-resources nest: /api/v1/pages/<id>/blocks. | HTTP verbs: GET — idempotent read; POST — create; PATCH — partial update (default for edits); PUT — full replace (rare, use sparingly); DELETE — soft delete (sets deletedat); pass ?permanent=true for hard delete | Error shape: Every error response: | Authentication: Two paths, in order of precedence: | Rate limiting: Sliding window, IP-based, 60 req/min default. Override per-route in middleware.ts. Returns 429 with Retry-After header. | Pagination: Cursor-based, not offset. ?cursor=<opaque>&limit=20. Response includes nextCursor (or null if last page). | …
- [Open questions](https://memory.wiki/ir0K6-u2)
  Things we're carrying. Not decisions — placeholders.
  _sections:_ Pricing model: Three candidates: | Webhook delivery semantics: We emit webhooks on page.published, page.updated, form.submitted.; At-least-once (current) — receivers must dedupe; Exactly-once — requires distributed ledger / message ID tracking; Practical answer is probably at-least-once + a webhookid header for receiver-side dedup | i18n strategy: Currently English-only. Korean is the next likely market based on inbound interest. Options: | Per-block vs per-page versioning: Currently versioning at the page level. Marketing users edit one | Cron jobs ownership: Right now cron lives in api/cron/ routes triggered by Vercel
- [Decision log](https://memory.wiki/SrgEHFCI)
  ADR-style records. Append-only — never edit a decision, append a new one that supersedes.
  _sections:_ ADR-001 — Next.js App Router over Pages Router (2026-03-04): Context. Greenfield project. Both routers are stable. | ADR-002 — Supabase over Neon + Clerk (2026-03-04): Context. Need DB + auth. | ADR-003 — Resend over SendGrid (2026-03-12): Context. Transactional + marketing email. | ADR-004 — pgvector over Pinecone (2026-04-02): Context. Need vector similarity for AI features. | ADR-005 — Tailwind 4 over CSS Modules (2026-04-08): Context. Component styling. | ADR-006 — Vercel AI Gateway over direct Anthropic SDK (2026-04-22): Context. Multiple AI providers for failover. | ADR-007 — Postgres over DynamoDB (2026-05-08): Context. Block-level content with complex relationships.
- [UI patterns](https://memory.wiki/wp12y7sM)
  Design tokens live in `globals.css` as CSS variables: `--background`, `--accent`, `--text-primary`, etc. Use `var(--...)` everywhere. Don't hardcode hex. Dark mode via `[data-theme="dark"]` on `<html>`. Tokens get re-bound at the document root.
  _sections:_ Tailwind 4 conventions: Design tokens live in globals.css as CSS variables: --background, --accent, --text-primary, etc.; Use var(--...) everywhere. Don't hardcode hex.; Dark mode via [data-theme="dark"] on <html>. Tokens get re-bound at the document root. | Component organization: text | Form validation: Zod schemas live next to the form. useForm from React Hook Form. | Loading states: Prefer <Suspense> boundaries with skeletons over conditional | Empty states: Every list view has an empty state with: icon + 1-line copy + 1 | …
- [DB schema notes](https://memory.wiki/HsxL91R7)
  `users` — owned by Supabase Auth `organizations` — top-level tenant `organization_members` — (user_id, organization_id, role) `pages` — a landing page `page_versions` — append-only history per page `page_blocks` — section-level content (headline / hero / cta / form / etc.) `ab_tests` — variant assignment + outcome
  _sections:_ Core tables: users — owned by Supabase Auth; organizations — top-level tenant; organizationmembers — (userid, organizationid, role); pages — a landing page; pageversions — append-only history per page; pageblocks — section-level content (headline / hero / cta / form / etc.); …; abtests — variant assignment + outcome; … | Migration naming: NNNdescriptivename.sql where NNN is zero-padded. Don't reuse | Views vs functions: View when the result is a deterministic projection of base tables. No side effects.; Function (PL/pgSQL) when you need parameters or row-by-row logic.; Avoid materialised views for now — refresh complexity > query speed gain at our scale. | …
- [Auth pattern — Supabase Auth + RLS](https://memory.wiki/mjpt9oz8)
  Same vendor as DB → JWT `sub` ↔ `auth.users.id` join is native (no email-lookup roundtrip) RLS lives next to the data — auth and authz are one table read away Magic link + Google + GitHub out of the box Free up to 50k MAU; matches our pre-revenue runway
  _sections:_ Why Supabase Auth (not Clerk / NextAuth / Auth0): Same vendor as DB → JWT sub ↔ auth.users.id join is native (no email-lookup roundtrip); RLS lives next to the data — auth and authz are one table read away; Magic link + Google + GitHub out of the box; Free up to 50k MAU; matches our pre-revenue runway | RLS policies (per role): sql | Session handling: Server components → createServerClient with cookie store; Client components → @supabase/ssr browser client; API routes → verify the JWT with verifyAuthToken (see lib/verify-auth.ts); Anonymous edits → cookie-grouped anonymousid until first sign-in | …
- [Acme Pulse — project README](https://memory.wiki/SWys7jXa)
  Acme Pulse is a landing-page builder for marketing teams. Build, A/B test, ship — all without engineering bandwidth.
  _sections:_ Stack: | Layer | Choice | Why | | Folder structure: text | Local dev: bash | Deploy: main → Vercel preview; production branch → mdfy.app; Migrations run via supabase db push --include-all (NOT auto on deploy) | Where to look when: Auth flow questions → docs/auth.md (this bundle); DB / migration questions → docs/db-schema.md; API endpoint conventions → docs/api-conventions.md; UI component patterns → docs/ui-patterns.md; "Why we chose X" → docs/decision-log.md; Open questions / parking lot → docs/open-questions.md; …
- [PDF import test](https://memory.wiki/ta8mE-Dk)
  Body text above the embedded image:
- [Claude prompts I keep reusing](https://memory.wiki/wzixoDcN)
  Personal pack. Not authoritative, just what's working for me as of 2026-05.
  _sections:_ Re-read mode: > "Read this URL as context. Summarise the key claims in 3 bullets. Then ask me one question that exposes the weakest claim in the summary." | Decision mode: > "You're an opinionated engineering manager. The context is at <URL>. I'm trying to decide whether to <decision>. Recommend an action, then explain the single  | Audit mode: > "List every assumption in this doc that isn't backed by evidence elsewhere in the hub. For each, suggest what evidence would make the assumption checkable." | Reading list mode: > "From <bundle URL>, what's the ideal reading order if I have only 15 minutes? Order them by 'most value gained from reading first'." | …
- [Welcome to [mdfy.app](http://mdfy.app)](https://memory.wiki/2WqRPNiV)
  Status: shipped 2026-04.
  _sections:_ What a bundle URL returns: GET mdfy.app/b/{id} returns plain markdown. The body is composed of (in order): | Query parameters: ?compact — strip low-density sections from every member stub. Default off.; ?full=1 — inline every member doc's full body inside the response, in member order. Default off. Use when you want one giant context blob.; ?graph=0 — omit the graphdata block. Use when the receiving AI just wants prose.; ?recall=$Q — filter member stubs to only the ones matching query $Q. Cheap on the server (we already have the recall index per bundle). | …
- [Onboarding script: 5 slides](https://memory.wiki/Ts4Vh6Zw)
  Source of truth for the WelcomeOverlay copy. Any change in the component should be reflected here, and vice versa.
  _sections:_ The rule: One CTA per slide. Survives dogfood testing. Multiple actions per slide degrade completion to ~0%. | Slide 1 — Intro: Badge: Personal knowledge hub for the AI era; Title: Your AI memory, deployable to any AI.; Body: ChatGPT, Claude, and Cursor forget you between sessions. mdfy turns what you write into a URL any AI can read — you decide the shape, mdfy keeps the index; CTA: Next → | Slide 2 — Capture: Step badge: STEP 01; Title: Capture anything.; Body: Paste a ChatGPT or Claude share link. Drop a PDF, DOCX, or code file. Pull a GitHub repo of .md files. Each becomes clean markdown at a permanent URL — no; CTA: Next → | …
- [How Claude should read this hub](https://memory.wiki/NFnDceE2)
  Meta-doc, intended for AI agents that fetch this hub URL as context. Written in second-person to the AI.
  _sections:_ Priority order: When you fetch mdfy.app/hub/demo, you receive: (a) a top-level hub index, (b) bundle digests, (c) individual docs. Read in this order: | Skip rules: Don't fetch private-vault docs. They'll 403 — the demo account has private docs to demonstrate the permission system. Skipping is correct.; Don't fetch deleted docs. They're in the trash and not in the index.; Don't recurse on bundle-of-bundles. The hub structure is doc → bundle → hub, never doc → bundle → bundle. | …
- [RFC: 3-state permission model](https://memory.wiki/El2-Kzy6)
  Status: shipped in v6. Logged here as the historical record.
  _sections:_ Why a 3-state model: For v5 we had two states: "draft" (private) and "public". The model worked for the majority case but produced friction in two scenarios: | The three states: Public — anyone with the URL can view. The default for docs that go in a hub. | Transitions: Public → Restricted: add an email. The doc is no longer in the public hub view but it's still browsable to the listed users.; Restricted → Public: clear allowedemails. Doc becomes hub-visible.; Public/Restricted → Private: set isdraft = true. Doc disappears from everywhere except the owner's sidebar.; Private → Public: clear isdraft. Doc lands in the public hub. | …
- [Mermaid: 6 diagram types side by side](https://memory.wiki/9uh4qUuz)
  Quick tour of the Mermaid types the renderer handles. Useful when designing a new doc and deciding which shape fits.
  _sections:_ Flowchart — direction LR, the simplest case: mermaid | Sequence diagram — actor-to-actor over time: mermaid | Pie: mermaid | Gantt: mermaid | State diagram: mermaid | ER: mermaid | When NOT to use Mermaid: If the diagram is showing more than 12 elements, or if the layout matters (e.g. a system architecture diagram where physical placement = something), Mermaid's a
- [Tables: alignment, code, math inline](https://memory.wiki/hjlgK4OA)
  Showing the table-rendering primitives. Tables are where most documents fall apart — wrong alignment, wide cells, code formatting eats the layout. The patterns below work.
  _sections:_ Right-align numerics, left-align text: | Provider | Embedding model | Dim | Latency p95 (ms) | $/1M tokens | | Inline code inside cells: | Endpoint | Method | Auth | Description | | Math inside cells: | Concept | Notation | Where it shows up | | When to break out of a table: If a row needs more than ~80 chars of prose in any one cell, the table is the wrong shape. Use a bulleted list or a short heading hierarchy instead. Tables earn
- [Microsoft GraphRAG: what we learned](https://memory.wiki/6WkjlKgA)
  Read the 2024 paper and the follow-ups (Project NotebookLM, the v1.1 release, the open-source community fork). Notes for the team to reference when "GraphRAG" comes up.
  _sections:_ The thesis, in one sentence: > Build a knowledge graph from a document corpus, run community detection on it, and answer queries by traversing the graph instead of just embedding-matching. | What's good: Multi-hop reasoning. GraphRAG beats naive RAG on the "compare X and Y across documents" class of questions. The community-detection step gives it a structural p; Honest about its costs. The paper is explicit that GraphRAG is 10-50x more expensive than naive RAG to build, because the graph extraction is an LLM-per-chunk o; The open-source release is real. The Python package works. The community fork (rust-graphrag) shaves indexing time by ~3x. | …
- [Mem0 vs Letta: extracted memory comparison](https://memory.wiki/_ybJOqIB)
  Side-by-side after 3 weeks of using both in parallel on the same chat corpus.
  _sections:_ Setup: I forked my Claude Code session log (about 280 conversations, 6 months) and fed it through both Mem0 and Letta. Both got the same input, same time window. I ask | What Mem0 produced: Facts. Direct, dry, accurate. "User is building mdfy.app. User prefers Rust + TypeScript. User has shipped 3 Chrome extensions." Mostly nouns and verbs.; Extraction quality. Strong. It picked up the cross-AI thesis from the corpus correctly, including the specific phrase "structural moat."; Misses. Anything stylistic. It noted "user works in Korean and English" but didn't capture how I work in each. The where-and-when-I-write-Korean nuance was invi | …
- [What I'm NOT doing](https://memory.wiki/q13ymHpq)
  Negative space matters more than the positive list when the work is wide. Pinning this somewhere I'll re-read.
  _sections:_ …
- [Decision: Anthropic Haiku for hub-recall reranker](https://memory.wiki/sB3a5eOG)
  Logged 2026-04-11.
  _sections:_ What we ship: Hybrid retrieval (BM25 + pgvector union, top-30) → Anthropic Haiku 4.5 reranks → top-k returned to caller. | …
- [Karpathy wiki: the parts that map](https://memory.wiki/glqi_Xjw)
  Expansion of demo-karpathy-llm-wiki. That doc is the public summary; this is the internal "where it lines up with us and where it doesn't" working note.
  _sections:_ The Karpathy quote that started this: > "Obsidian is the IDE. The LLM is the programmer. The wiki is the codebase." | What maps directly: The user is the author. Karpathy explicitly says the wiki is hand-curated. The AI is the programmer reading it, not the writer.; Markdown is the substrate. Every example he gave is markdown.; The "wiki" word. Both his framing and ours land on it. | What doesn't map: Three structural differences: | Where I think Karpathy is right: The deepest claim — that a personal knowledge layer is the missing piece between you and the AI tools you use every day — is exactly right. The disagreement is  | …
- [Cross-AI as a structural moat](https://memory.wiki/1tyw7rGT)
  The argument distilled, because I keep getting this question.
  _sections:_ The claim: AI companies cannot build cross-AI memory. The cross-AI position is structurally available only to a non-AI-company. | The reasoning: Every AI company has the same revenue equation: users staying inside the product. ChatGPT's memory works in ChatGPT because making it work in Cursor would teach | The implication: The layer above the AI providers is structurally available to a player whose revenue doesn't depend on holding the user inside any one wall. That's us. | Two pushbacks I've heard: > "But the AI companies will partner with each other." | …
- [Decision: Keep the Markdown engine in Rust + WASM](https://memory.wiki/5DWOm2ya)
  Recurring conversation that I'm now closing.
  _sections:_ The question that keeps coming up: "Why not just use remark / markdown-it / marked? They run in JS, no WASM boundary, no Rust build step." | …
- [Gemini on diagram prompting](https://memory.wiki/qP599HA4)
  Gemini 2.5 Pro, after I asked it to generate Mermaid for a 3-tier auth flow.
  _sections:_ The first try: I gave Gemini the API endpoints, the role table, and asked for "a Mermaid sequenceDiagram showing how an authenticated request flows through middleware → handle | The reframe: I asked: "Why did you choose that shape?" Its answer was honest — it had matched the prompt syntactically (the words in my ask) to common diagram templates in t | The takeaway: The order I now use, every time I prompt for a diagram:
- [Claude on Rust performance pitfalls](https://memory.wiki/77bvsdJ4)
  Captured chat with Claude Sonnet on 2026-04-02, after I asked it to audit our WASM rendering path. Cleaned, kept the calls I'm acting on.
  _sections:_ The setup: I'd been seeing the editor stutter on docs over ~30KB. The render call (comrak → WASM → JS) sat at 18-25ms p95 — not catastrophic, but mismatched with how snapp | What Claude actually said: It went past the obvious "use &str more" advice and pointed at: | What I'm doing about it: Skipping (1) for now. The win is < 1% of total render time and the change costs LOC + readability. Filed as FLAVORALLOCDEFER if we ever care.; Acting on (2) this week. The per-line loop is straightforward and the gain is measurable in the editor profile.; Caching the flavor descriptor at module scope (fix for (3)). Tiny change, real win. | …
- [Claude pair: writing the v6 onboarding overlay](https://memory.wiki/igQZHNzq)
  Working session pulling the 5-slide welcome design that ships with v6.
  _sections:_ What I came in with: A blank WelcomeOverlay.tsx and a one-line brief: "five slides, dismissible, has to convince a first-time visitor that mdfy is the deploy-to-any-AI thing in unde | The decisions that mattered: One CTA per slide. Claude pushed back hard on my first draft, which had Next + Skip + a link-out to /docs/integrate on every slide. Its argument: "you're testin | What I'd keep: The "one CTA per slide" rule. It survived contact with three users.; The five-step arc: hook → capture → hub → deploy → surfaces. Each slide answers one question.; Dismissible at any point. The badge state is persisted to localStorage so it never shows twice. | …
- [Decision: Supabase pgvector over Pinecone](https://memory.wiki/frK9IDOy)
  Logged 2026-03-08 after a 2-day evaluation. Status: locked.
  _sections:_ What we picked: pgvector + HNSW inside the existing Supabase Postgres instance. Not Pinecone, Weaviate, Chroma, or Turbopuffer. | What we measured: I built two prototypes against the same 4,200-document corpus (my actual hub plus a synthetic test set): | …
- [Decision: Inline graph_data in bundle URLs](https://memory.wiki/yIpXMsqc)
  Companion to the public spec version at /spec. This is the engineering-side version with the receipts.
  _sections:_ What we do: Every bundle URL (e.g. mdfy.app/b/wpwVCSDF) returns markdown with the bundle's graphdata JSON inlined as a fenced code block at the top of the response. The rec | The alternative we rejected: Lazy / on-demand: ship the URL with just the doc list, let the caller pull /api/bundles/{id}/graph separately if they want analysis. | The query knobs: We added two ? params so callers can dial cost:; ?graph=0 — omit the graphdata block (recall scenarios where the model just wants the prose); ?full=1 — inline every member doc inside the response (max-context scenarios) | …
- [Decision: Drop [[wikilinks]] permanently](https://memory.wiki/DDxqHKdd)
  See /spec for the public statement. This is the internal "why" we don't surface in marketing.
  _sections:_ What we're not building: [[wikilinks]] syntax. No [[target]], no [[target|alias]], no autocomplete on [[, no per-page backlinks panel built off literal-text matches. None of it. | The argument from the Obsidian side: "You can't be a wiki without wikilinks. Every wiki shape since Ward Cunningham has had them." True. We're not building a wiki shape. We're building a hub shape, | Three reasons I went the other way: 1. The links should come from the AI, not the markup. mdfy already maintains a conceptindex and conceptrelations graph that's automatically populated by the AI  | …
- [Context engineering: where it goes next](https://memory.wiki/AXAIfrBG)
  Trend note, written 2026-05-12. I'll mark this as out of date if it doesn't hold up.
  _sections:_ The bet: The phrase "prompt engineering" is collapsing into "context engineering" over the next 12 months. Both will exist; one will become the load-bearing skill. | What I'm seeing: Every AI tool that mattered in 2024 was a chat box. Every AI tool that matters in 2026 has at least one persistent context layer:; Cursor — project context, sidebar history, AGENTS.md; Claude Projects — project files, project instructions, scoped memory; ChatGPT — GPTs, memory, project workspaces; Codex CLI — AGENTS.md, conversation transcripts; Claude Code — CLAUDE.md, hooks, MCP servers; … | …
- [llms.txt adoption: who's actually shipping it](https://memory.wiki/qKRfGtCa)
  Snapshot 2026-05-01. I'll re-run this every quarter.
  _sections:_ What llms.txt is, briefly: A plain-text discoverability file at the root of a site (/llms.txt) that tells AI agents what's available, in what shape, and where to fetch it. Inspired by rob | …
- [GTM: the three channels I'll work](https://memory.wiki/8MD8xlLA)
  Concentration > spray. If I pick five channels and half-do them, none of them work.
  _sections:_ The three: 1. Hacker News. One Show HN at launch. One follow-up post in 4 weeks. After that, organic posts when there's a real artifact (a benchmark, a build-in-public mil; The ICP overlap is genuinely high (developers using multiple AI tools).; The format rewards specificity (technical write-ups, real numbers, no marketing fluff).; I can write in my actual voice without translating. | …
- [Launch day: what success looks like](https://memory.wiki/mXy_aztt)
  Show HN day plan. The thresholds I'm pre-committing to so I don't accidentally move them post-hoc.
  _sections:_ The realistic upside: Top of HN front page for 4+ hours. Requires hitting the front page within the first hour after posting (HN's ranking algorithm strongly favours early velocity) ; 800-1500 sign-ups within 24h; ~150-300 trial-to-keeper conversions (define "keeper" as: still has at least one doc 14 days post-sign-up); 4-6 inbound press / podcast queries; 1-3 inbound investor reach-outs (which I'll defer politely; not raising) | The reasonable mid case: Front page for 1-2 hours, conversation in the 100-200 comment range.; 200-400 sign-ups; 30-80 keepers; The bigger value is the conversation itself — I'll mine the comments for what reads as the most compelling and the most repelling | …
- [Math: every flavour we render](https://memory.wiki/y3zQ915R)
  A tour of what KaTeX gives us inside the renderer. Useful as a copy-paste reference for new docs.
  _sections:_ Inline math: Euler's identity is $e^{i\pi} + 1 = 0$. The Cauchy-Schwarz inequality is $|\langle u, v \rangle| \le \|u\|\|v\|$ — the same inequality that limits how strongly  | Block math: The Gaussian integral, foundational for normalising kernels: | Matrices: $$ | Aligned equations: $$ | What we *don't* render (yet): Custom macros. KaTeX supports \newcommand, but we don't wire it through the editor — adding it would require either a per-doc macro registry or a hub-wide one. 
- [README — start here](https://memory.wiki/csFtDM3c)
  Entry point for this demo hub.
  _sections:_ What is this: A working hub belonging to a fictional founder building a personal-knowledge layer for the AI era. The content is real-shaped: actual decisions, actual research | What's in here: 50 documents spread across 7 folders + 13 at the root level.; 7 bundles, including one private (the financials vault), one restricted-access (engineering decisions), and five public.; A concept index auto-derived from the content — every key term has a page at /hub/demo/concepts/{slug}.; The hub URL itself (mdfy.app/hub/demo) is paste-able into Claude, ChatGPT, Cursor, or Codex. Try it. | How to use the demo: 1. Pick a folder in the sidebar. Each has a coherent theme. | …
- [My current personal stack](https://memory.wiki/UaxcbLwD)
  The actual tools I use day to day, as of 2026-05.
  _sections:_ Editor / IDE: VS Code + Claude Code — daily driver. Claude Code's CLAUDE.md integration is the single most important productivity multiplier in my stack.; Cursor — pulled out for big refactors where I want a stronger model + agent loop. Not the daily driver because the indexing pause on large repos is annoying.; Vim — for quick edits over SSH or in repos I haven't set up. Always installed, rarely the primary. | …
- [Mistakes I made building v6](https://memory.wiki/bDVLxgav)
  Honest list. I write these because I want to remember them, not because I think they're inspirational.
  _sections:_ 1. Built `[[wikilinks]]` before deciding we were a wiki: Spent ~2 days implementing [[]] resolution, autocomplete, backlinks panel. Then realised the AI-derived conceptindex was strictly better and made the manual [[] | 2. Tried y-prosemirror for the editor: The vision was real-time collab. The reality was that y-prosemirror + the comrak-WASM pipeline didn't compose cleanly. Three days of trying to make CRDTs and a  | 3. Wrote the AGENTS.md integration before testing it lived in Cursor: I wrote the integration docs based on what I expected Cursor's behaviour to be. The docs said "Cursor reads AGENTS.md per session, edits show up next session."  | …
- [Show HN plan (working draft)](https://memory.wiki/r_HaRypO)
  Living plan that I refine before launch day.
  _sections:_ Title: Show HN: mdfy – Your AI memory, deployable to any AI | …
- [Feature ideas backlog](https://memory.wiki/wyULEr1h)
  Ranked by gut-feel value:effort. Not committed to any of these.
  _sections:_ Top 5 — high value, manageable effort: 1. Inline graphdata in bundle URL — already shipping. The decision write-up is at demo-dec-bundle-graph-inline. This is the load-bearing feature for the cross-A | …
- [Glossary](https://memory.wiki/_bhW7pVA)
  Terms used across this hub, in plain language.
  _sections:_ Hub: A user's public URL on mdfy. Lives at mdfy.app/hub/{slug}. Contains: a concept index, all the user's bundles, optional curated content. The hub is the unit that | Bundle: A topical grouping of documents. Has its own URL (mdfy.app/b/{id}). Carries pre-computed analysis (themes, insights, connections, document summaries, reading or | Doc: A single markdown document. Lives at mdfy.app/d/{id}. The atomic unit. Everything else is built out of docs. | Concept index: The auto-derived list of every distinct concept the AI extracted from your hub's documents. Each concept links to the docs it appears in. Updated by the capture | …
- [RFC: hub recall API](https://memory.wiki/OGySiVoO)
  Status: shipped.
  _sections:_ The endpoint: POST mdfy.app/api/hub/{slug}/recall | How the recall actually works: 1. Embedding lookup. Embed the question with text-embedding-3-small (1536 dim).; Vector. pgvector cosine match against documents.embedding (HNSW index, efsearch = 40).; Lexical. Postgres totsvector full-text search against documents.fts. | What's tunable: k — number of results to return. 1-20.; level — "doc" returns whole docs; "chunk" returns specific passages (chunks are pre-computed at ~500 tokens each).; rerank — boolean. Default true. Costs ~300ms p95. False for speed-first paths.; minscore — discard results below a cosine threshold. Useful for "don't return anything if nothing matches." | …
- [GPT-5 on context-budget rituals](https://memory.wiki/EyW4HU4-)
  ChatGPT-5 share link, 2026-04-09. I'd been losing context across sessions and wanted a framework, not another "use Projects" answer.
  _sections:_ The prompt: I dumped four things: the v6 AGENTS.md draft, the mdfy Foundations bundle, the most recent 50 Cursor chat turns, and a one-paragraph statement of what I was try | What it built: A worksheet, not a heuristic. The structure was: | The caveat: The worksheet over-fits to coding sessions. For research / writing, the ratios invert: live conversation shrinks (you're not iterating on a turn-by-turn loop) a | …
- [mdfy MCP server: setup in 4 lines](https://memory.wiki/PrxR1Uj4)
  For Claude Desktop, Cursor, and any other MCP-enabled tool.
  _sections:_ What MCP gives us: MCP (Model Context Protocol) is Anthropic's open standard for letting AI tools call external services. The mdfy MCP server exposes seven tools — read, search, c | Setup: Add this to your MCP config (Claude Desktop: ~/Library/Application Support/Claude/mcpconfig.json; Cursor: .cursor/mcp.json in the project): | Authentication: The MCP server reads MDFYEDITTOKEN and MDFYUSEREMAIL from the environment. Add them to the MCP config like this: | The tools exposed: | Tool | Purpose | | What changes in your workflow: Before MCP: you ask Claude "summarise the launch plan", and Claude says "I'd need to read the plan — paste it for me." After MCP: Claude calls mdfyread with the
- [Wiring mdfy into Claude Code](https://memory.wiki/iok3gZo6)
  Tested against Claude Code v1.x. Single command, single line in CLAUDE.md, persistent across sessions.
  _sections:_ What you put in CLAUDE.md: Drop this somewhere near the top of the file (CLAUDE.md is loaded into every Claude Code session as system context): | Context: When you need background on this project, fetch: | Why this works: Claude Code respects CLAUDE.md. It's not a hint; it's a contract. Anything in CLAUDE.md is in the session's persistent system prompt.; mdfy hubs are URL-shaped. No SDK, no auth, no streaming setup — just a GET that returns markdown plus an inlined graphdata JSON block.; Token cost is tunable. Add ?compact to the URL to strip low-density sections. Most users save 30-40% of the context window this way. | …
- [Wiring mdfy into Codex via AGENTS.md](https://memory.wiki/y4sEEo1R)
  Codex CLI + AGENTS.md. Same shape as the Claude Code recipe but with caveats specific to Codex's caching.
  _sections:_ What you put in AGENTS.md: Drop this near the top: | Context: Load https://mdfy.app/hub/<your-slug> before answering project | Project bundle: https://mdfy.app/b/<bundle-id>?compact | Why two scopes (hub + bundle): The hub gives the AI breadth: who you are, what you're building, what your prior work shows. The bundle gives it depth: the specific docs related to the current | What's different from Claude Code: Codex caches AGENTS.md at the start of a session. If you edit AGENTS.md mid-session, Codex doesn't see the change until the next session. This caught me twice o | …
- [Karpathy's LLM Wiki concept, in one read](https://memory.wiki/T7ZGdpOm)
  Andrej Karpathy, Twitter thread (2024). Topic: a personal LLM-readable wiki — one place a person writes their knowledge, the LLM reads it instead of building memory by inference.
  _sections:_ Source: Andrej Karpathy, Twitter thread (2024). Topic: a personal LLM-readable wiki — one place a person writes their knowledge, the LLM reads it instead of building me | Core argument: > The most reliable AI memory is the one the human authored. Anything inferred from a chat transcript is lossy; anything written deliberately is durable. | Where Karpathy's vision stops: Single unified wiki. One person, one wiki. The structure is whatever the user makes inside that wiki. | Where mdfy goes further: Three composable scopes instead of one: doc, bundle, hub. The same URL primitive scales from a one-note share to a project context to a full knowledge graph. Ka | …
- [The structural moat: cross-AI portability](https://memory.wiki/rBRZ_nni)
  A single AI vendor can build deeper integration against its own model than mdfy ever could. None of them can deliver a URL that works across their competitors. The portability is the product.
  _sections:_ One line summary: > A single AI vendor can build deeper integration against its own model than mdfy ever could. None of them can deliver a URL that works across their competitors | Why this matters: Notion, Mem.ai, Roam, Obsidian — each is a destination. The user is asked to live inside the tool. mdfy is the opposite shape: the user lives wherever they alre | What gets ported: The doc body (clean markdown); The graph analysis (themes, insights, concept relations) attached to bundles; The concept index attached to hubs; Privacy gating (Public / Restricted / Private) — the URL behaves the same way the rendered viewer does | …
- [Wiring mdfy into Cursor](https://memory.wiki/TEuiwop8)
  `.cursor/rules/mdfy.mdc`:
  _sections:_ How Cursor uses this: On every new chat or composer session, Cursor evaluates files matched by the rule and includes them as context. When mdfy URL is in the rule body, Cursor fetche | What we observed in practice: First few messages: Cursor doesn't always fetch — it relies on its own RAG over the local repo. Fine.; Once the user types something topic-specific ("how did we decide the pricing tier?"), Cursor fetches the bundle URL and the answer comes back cited to the right; Cursor's [doc:N] citations don't propagate the way Claude Chat's do — Cursor inlines snippets but doesn't link back. Acceptable for a code-editor surface. | …
- [Formatting tour: math, diagrams, code, tables](https://memory.wiki/F1q9U1YP)
  A reference for what renders in mdfy. Every block below appears in real docs across this hub.
  _sections:_ KaTeX math: Inline: $E = mc^2$. Display: | Mermaid diagrams: mermaid | Code with highlighting: typescript | Tables: | Scope | URL | Cost |
- [Decision: ship graph_data inside the bundle URL](https://memory.wiki/kxn9T-Vv)
  **Status**: shipped 2026-05-12 (commit `ba7344c4`)
  _sections:_ Context: A bundle URL returns a markdown digest. Before this change the digest contained only the doc list + annotations. The canvas analysis (themes, insights, concept  | Decision: Embed the graphdata JSON as markdown sections inside the /raw/bundle/<id> response by default. Add ?graph=0 opt-out for callers that want the legacy doc-list-on | Why: The viral loop runs through URLs. If pasting a URL gives the receiving AI more than the sending AI could give without mdfy, the URL is genuinely portable. Witho | …
- [AI memory architectures: a Claude conversation](https://memory.wiki/yt2ZZqyI)
  Captured from a working session with Claude Opus, 2026-03-12. Cleaned, structured, and saved as a permanent URL so the next AI session can pick up where we left off.
  _sections:_ The question: What architecture should a personal memory layer use? Three patterns are in production today: | What Claude argued: > Vector recall trades precision for breadth. Episodic snapshots trade verbosity for fidelity. Hub-shaped memory trades automation for author-control. | Takeaway for mdfy: This is the existing direction. Worth checking against the spec page — /spec already documents the URL contract. No code change needed; this conversation just v | Related concepts: Vector recall, episodic snapshot, hub-shaped memory; Forgetting as a feature; URL-addressable knowledge

---

_Need everything? [Full hub index](https://memory.wiki/raw/hub/demo?compact=1) lists every public document. [llms.txt manifest](https://memory.wiki/hub/demo/llms.txt) explains how to crawl this hub._
