diff --git a/public/images/blog/agent-memory-provenance-audit-trails/header.png b/public/images/blog/agent-memory-provenance-audit-trails/header.png new file mode 100644 index 0000000..8f7f994 Binary files /dev/null and b/public/images/blog/agent-memory-provenance-audit-trails/header.png differ diff --git a/public/images/blog/agent-memory-provenance-audit-trails/og.png b/public/images/blog/agent-memory-provenance-audit-trails/og.png new file mode 100644 index 0000000..e38f5ec Binary files /dev/null and b/public/images/blog/agent-memory-provenance-audit-trails/og.png differ diff --git a/public/images/blog/ai-agent-memory-vs-rag/header.png b/public/images/blog/ai-agent-memory-vs-rag/header.png new file mode 100644 index 0000000..ed43261 Binary files /dev/null and b/public/images/blog/ai-agent-memory-vs-rag/header.png differ diff --git a/public/images/blog/ai-agent-memory-vs-rag/og.png b/public/images/blog/ai-agent-memory-vs-rag/og.png new file mode 100644 index 0000000..6b03f56 Binary files /dev/null and b/public/images/blog/ai-agent-memory-vs-rag/og.png differ diff --git a/public/images/blog/episodic-vs-semantic-memory/header.png b/public/images/blog/episodic-vs-semantic-memory/header.png new file mode 100644 index 0000000..9822c41 Binary files /dev/null and b/public/images/blog/episodic-vs-semantic-memory/header.png differ diff --git a/public/images/blog/episodic-vs-semantic-memory/og.png b/public/images/blog/episodic-vs-semantic-memory/og.png new file mode 100644 index 0000000..bb92c71 Binary files /dev/null and b/public/images/blog/episodic-vs-semantic-memory/og.png differ diff --git a/public/images/blog/persistent-memory-for-ai-support-agents/header.png b/public/images/blog/persistent-memory-for-ai-support-agents/header.png new file mode 100644 index 0000000..2423edd Binary files /dev/null and b/public/images/blog/persistent-memory-for-ai-support-agents/header.png differ diff --git a/public/images/blog/persistent-memory-for-ai-support-agents/og.png b/public/images/blog/persistent-memory-for-ai-support-agents/og.png new file mode 100644 index 0000000..e193ba7 Binary files /dev/null and b/public/images/blog/persistent-memory-for-ai-support-agents/og.png differ diff --git a/public/images/blog/self-hosted-memory-postgres-pgvector/header.png b/public/images/blog/self-hosted-memory-postgres-pgvector/header.png new file mode 100644 index 0000000..6bc587b Binary files /dev/null and b/public/images/blog/self-hosted-memory-postgres-pgvector/header.png differ diff --git a/public/images/blog/self-hosted-memory-postgres-pgvector/og.png b/public/images/blog/self-hosted-memory-postgres-pgvector/og.png new file mode 100644 index 0000000..46660bf Binary files /dev/null and b/public/images/blog/self-hosted-memory-postgres-pgvector/og.png differ diff --git a/src/content/blog/agent-memory-provenance-audit-trails.mdx b/src/content/blog/agent-memory-provenance-audit-trails.mdx index 3d0be75..447f845 100644 --- a/src/content/blog/agent-memory-provenance-audit-trails.mdx +++ b/src/content/blog/agent-memory-provenance-audit-trails.mdx @@ -4,6 +4,8 @@ slug: agent-memory-provenance-audit-trails date: "2026-05-25T09:00:00+02:00" description: When an AI agent answers from memory, you need to know where it learned the answer. This post explains the provenance model in Statewave — what we store, what it costs, and what it enables for compliance, debugging, and trust. author: Statewave team +image: /images/blog/agent-memory-provenance-audit-trails/og.png +headerImage: /images/blog/agent-memory-provenance-audit-trails/header.png tags: - provenance - audit diff --git a/src/content/blog/ai-agent-memory-vs-rag.mdx b/src/content/blog/ai-agent-memory-vs-rag.mdx index 5c37271..cbd2d3c 100644 --- a/src/content/blog/ai-agent-memory-vs-rag.mdx +++ b/src/content/blog/ai-agent-memory-vs-rag.mdx @@ -4,6 +4,8 @@ slug: ai-agent-memory-vs-rag date: "2026-05-25T09:00:00+02:00" description: Retrieval-augmented generation and an agent memory runtime overlap at the embedding store, but they answer different questions. Here's where the two diverge and which to reach for. author: Statewave team +image: /images/blog/ai-agent-memory-vs-rag/og.png +headerImage: /images/blog/ai-agent-memory-vs-rag/header.png tags: - memory - rag diff --git a/src/content/blog/episodic-vs-semantic-memory.mdx b/src/content/blog/episodic-vs-semantic-memory.mdx index b7c8d13..4d521df 100644 --- a/src/content/blog/episodic-vs-semantic-memory.mdx +++ b/src/content/blog/episodic-vs-semantic-memory.mdx @@ -4,6 +4,8 @@ slug: episodic-vs-semantic-memory date: "2026-08-07T09:00:00+02:00" description: Episodic memory stores what happened; semantic memory stores what's true. Here's how AI agents use each, when to convert one to the other, and how to store it. author: Statewave team +image: /images/blog/episodic-vs-semantic-memory/og.png +headerImage: /images/blog/episodic-vs-semantic-memory/header.png tags: - memory - episodic-memory diff --git a/src/content/blog/persistent-memory-for-ai-support-agents.mdx b/src/content/blog/persistent-memory-for-ai-support-agents.mdx index a484a0f..24f65db 100644 --- a/src/content/blog/persistent-memory-for-ai-support-agents.mdx +++ b/src/content/blog/persistent-memory-for-ai-support-agents.mdx @@ -4,6 +4,8 @@ slug: persistent-memory-for-ai-support-agents date: "2026-05-25T09:00:00+02:00" description: A practical walkthrough of giving a support agent durable memory of customers across sessions — what to record, how to compile it, how to retrieve it, and what to expect from the support workflow benchmark. author: Statewave team +image: /images/blog/persistent-memory-for-ai-support-agents/og.png +headerImage: /images/blog/persistent-memory-for-ai-support-agents/header.png tags: - support - tutorial diff --git a/src/content/blog/self-hosted-memory-postgres-pgvector.mdx b/src/content/blog/self-hosted-memory-postgres-pgvector.mdx index 7aab251..8e8e6b9 100644 --- a/src/content/blog/self-hosted-memory-postgres-pgvector.mdx +++ b/src/content/blog/self-hosted-memory-postgres-pgvector.mdx @@ -4,6 +4,8 @@ slug: self-hosted-memory-postgres-pgvector date: "2026-05-25T09:00:00+02:00" description: Why Statewave is Postgres-only by design, what pgvector buys you over a dedicated vector database, and what the deployment shape looks like in production. author: Statewave team +image: /images/blog/self-hosted-memory-postgres-pgvector/og.png +headerImage: /images/blog/self-hosted-memory-postgres-pgvector/header.png tags: - postgres - pgvector diff --git a/src/lib/blog.ts b/src/lib/blog.ts index b842650..5adcf3b 100644 --- a/src/lib/blog.ts +++ b/src/lib/blog.ts @@ -28,6 +28,12 @@ export interface BlogPostFrontmatter { * "/blog/my-post/cover.png"). Optional — falls back to the site-wide * default OG image (DEFAULT_OG_IMAGE in lib/seo-meta.ts) when unset. */ image?: string + /** Site-relative path to this post's banner image, shown inline at the + * top of the post itself (below the title card, above the article + * body). Separate from `image` (the OG/social-share card) because the + * two can reasonably differ — this one renders on the page, `image` + * never does. Optional — posts without one just skip the banner. */ + headerImage?: string } export interface BlogPost { diff --git a/src/pages/BlogPostPage.tsx b/src/pages/BlogPostPage.tsx index 2b12c52..db69c54 100644 --- a/src/pages/BlogPostPage.tsx +++ b/src/pages/BlogPostPage.tsx @@ -190,6 +190,17 @@ export function BlogPostPage() {
By {post.meta.author}
+ + {post.meta.headerImage && ( + + )}