Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 52 additions & 0 deletions .github/workflows/deploy-docs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
name: Deploy Docs

on:
push:
branches: [main]
paths:
- 'website/**'
workflow_dispatch:

permissions:
contents: read
pages: write
id-token: write

concurrency:
group: pages
cancel-in-progress: false

jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0

- uses: oven-sh/setup-bun@v2
with:
bun-version: 1.1.38

- name: Install dependencies
working-directory: website
run: bun install

- name: Build docs
working-directory: website
run: bun run docs:build

- uses: actions/upload-pages-artifact@v3
with:
path: website/.vitepress/dist

deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
needs: build
runs-on: ubuntu-latest
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@ __pycache__/
.pytest_cache/
mempal.yaml
.a5c/
.claude/
.codex/
.codex

# Environment
.env
Expand Down
7 changes: 7 additions & 0 deletions netlify.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
[build]
base = "website"
command = "bun run docs:build"
publish = ".vitepress/dist"

[build.environment]
DOCS_BASE = "/"
36 changes: 36 additions & 0 deletions website/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# dependencies (bun install)
node_modules

# output
out
dist
.vitepress/dist
.vitepress/.temp
*.tgz

# code coverage
coverage
*.lcov

# logs
logs
*.log
report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json

# dotenv environment variable files
.env
.env.development.local
.env.test.local
.env.production.local
.env.local

# caches
.eslintcache
.cache
*.tsbuildinfo

# IntelliJ based IDEs
.idea

# Finder (MacOS) folder config
.DS_Store
103 changes: 103 additions & 0 deletions website/.vitepress/config.mts
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
import { defineConfig } from 'vitepress'
import { withMermaid } from 'vitepress-plugin-mermaid'

const docsBase = process.env.DOCS_BASE || '/mempalace/'

export default withMermaid(
defineConfig({
title: 'MemPalace',
description: 'Give your AI a memory. Local-first storage and retrieval for AI workflows, with benchmark results and MCP tooling.',
base: docsBase,

head: [
Comment on lines +6 to +12

Copilot AI Apr 9, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PR description mentions “dark mode default”, but the VitePress config doesn’t set appearance/initial theme, so the site will follow system preference by default. Either adjust the description or set the VitePress appearance option to default to dark so the implementation matches the stated behavior.

Copilot uses AI. Check for mistakes.
['link', { rel: 'icon', href: `${docsBase}mempalace_logo.png` }],
['link', { rel: 'preconnect', href: 'https://fonts.googleapis.com' }],
['link', { rel: 'preconnect', href: 'https://fonts.gstatic.com', crossorigin: '' }],
['link', { href: 'https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap', rel: 'stylesheet' }],
['meta', { property: 'og:title', content: 'MemPalace — AI Memory System' }],
['meta', { property: 'og:description', content: '96.6% LongMemEval recall. Zero API calls. Local, free, open source.' }],
['meta', { property: 'og:image', content: `${docsBase}mempalace_logo.png` }],
],

themeConfig: {
logo: '/mempalace_logo.png',
siteTitle: 'MemPalace',

nav: [
{ text: 'Guide', link: '/guide/getting-started' },
{ text: 'Concepts', link: '/concepts/the-palace' },
{ text: 'Reference', link: '/reference/cli' },
],

sidebar: {
'/guide/': [
{
text: 'Guide',
items: [
{ text: 'Getting Started', link: '/guide/getting-started' },
{ text: 'Mining Your Data', link: '/guide/mining' },
{ text: 'Searching Memories', link: '/guide/searching' },
{ text: 'MCP Integration', link: '/guide/mcp-integration' },
{ text: 'Claude Code Plugin', link: '/guide/claude-code' },
{ text: 'Gemini CLI', link: '/guide/gemini-cli' },
{ text: 'OpenClaw Skill', link: '/guide/openclaw' },
{ text: 'Local Models', link: '/guide/local-models' },
{ text: 'Auto-Save Hooks', link: '/guide/hooks' },
{ text: 'Configuration', link: '/guide/configuration' },
],
},
],
'/concepts/': [
{
text: 'Concepts',
items: [
{ text: 'The Palace', link: '/concepts/the-palace' },
{ text: 'Memory Stack', link: '/concepts/memory-stack' },
{ text: 'AAAK Dialect', link: '/concepts/aaak-dialect' },
{ text: 'Knowledge Graph', link: '/concepts/knowledge-graph' },
{ text: 'Specialist Agents', link: '/concepts/agents' },
{ text: 'Contradiction Detection', link: '/concepts/contradiction-detection' },
],
},
],
'/reference/': [
{
text: 'Reference',
items: [
{ text: 'CLI Commands', link: '/reference/cli' },
{ text: 'MCP Tools', link: '/reference/mcp-tools' },
{ text: 'Python API', link: '/reference/python-api' },
{ text: 'API Reference', link: '/reference/api-reference' },
{ text: 'Module Map', link: '/reference/modules' },
{ text: 'Benchmarks', link: '/reference/benchmarks' },
{ text: 'Contributing', link: '/reference/contributing' },
],
},
],
},

socialLinks: [
{ icon: 'github', link: 'https://github.com/milla-jovovich/mempalace' },
{ icon: 'discord', link: 'https://discord.com/invite/ycTQQCu6kn' },
],

search: {
provider: 'local',
},

footer: {
message: 'Released under the MIT License.',
copyright: 'Copyright © 2026 MemPalace contributors',
},

editLink: {
pattern: 'https://github.com/milla-jovovich/mempalace/edit/main/website/:path',
text: 'Edit this page on GitHub',
},
},

mermaid: {
theme: 'dark',
},
})
)
6 changes: 6 additions & 0 deletions website/.vitepress/theme/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import DefaultTheme from 'vitepress/theme'
import './style.css'

export default {
extends: DefaultTheme,
}
Loading