Files
Momento/README.md
Antigravity 96e7902f01
Some checks failed
CI / Lint, Unit Tests & Build (push) Failing after 1m22s
CI / Deploy production (on server) (push) Has been skipped
feat: publication IA (magazine/brief/essay) + fixes critique
Publication IA:
- 4 templates (magazine, brief, essay, simple) avec CSS riche
- Rewrite IA (article/exercises/tutorial/reference/mixed)
- Modération avec timeout 12s + fallback safe
- Quotas publish_enhance par tier (basic=2, pro=15, business=100)
- Détection contenu stale (hash)
- Migration DB publishedContent/publishedTemplate/publishedSourceHash

Fixes:
- cheerio v1.2: Element -> AnyNode (domhandler), decodeEntities cast
- _isShared ajouté au type Note (champ virtuel serveur)
- callout colors PDF export: extraction fonction pure testable
- admin/published: guard note.userId null
- Cmd+S fonctionne en mode dialog (pas seulement fullPage)

i18n:
- 23 clés publish* traduites dans les 15 locales
- Extension Web Clipper: 13 locales mise à jour

Tests:
- callout-colors.test.ts (6 tests)
- note-visible-in-view.test.ts (5 tests)
- entitlements.test.ts + byok-entitlements.test.ts: mock usageLog + unstubAllEnvs
- 199/199 tests passent

Tracker: user-stories.md sync avec sprint-status.yaml
2026-06-28 07:32:57 +00:00

7.1 KiB

Memento

A smart, AI-powered note-taking app. Like Google Keep, but with notebooks, semantic search, AI agents, and a built-in MCP server.

Lire en francais / Read in French | Full documentation


Features

Notes & Organization

  • Rich text (Notion-like), checklist, Markdown, and plain text notes
  • Notebooks with contextual labels
  • Responsive masonry grid and tabs (OneNote-style) view
  • Image upload, note sharing, archive, and trash
  • 10 pastel color themes + dark mode
  • Note history with version restore
  • Drag-and-drop card reordering

AI & Automation

  • Semantic search powered by embeddings
  • Auto-generated tags and title suggestions
  • Configurable AI agents with custom instructions and scheduling
  • Persistent AI chat conversations
  • Memory Echo - discover hidden connections between notes
  • Batch auto-organization and smart labels
  • AI-generated notebook summaries
  • Visual workflow builder
  • In-app notifications for agent results

Integrations

  • MCP Server with 22 tools - connect Claude Desktop, N8N, or any MCP client
  • REST API for custom integrations
  • RSS feed support
  • Canvas/Lab whiteboard (Excalidraw)

Platform

  • 15 languages (EN, FR, AR, DE, ES, FA, HI, IT, JA, KO, NL, PL, PT, RU, ZH)
  • Progressive Web App (PWA)
  • Reminder system with recurrence
  • Data export/import (JSON)
  • Admin panel for AI providers, SMTP, and settings

Quick Start

The interactive deploy script handles everything - environment config, container build, and startup:

git clone https://github.com/yourusername/Memento.git
cd Memento

# macOS / Linux
./scripts/deploy-docker.sh

# Windows PowerShell
.\scripts\deploy-docker.ps1

The script will ask for your ADMIN_EMAIL (the first user registered with this email gets ADMIN role), AI provider, and other settings. It auto-generates secrets.

Or manually:

cp .env.docker.example .env.docker
# Edit .env.docker: set NEXTAUTH_URL, NEXTAUTH_SECRET, and ADMIN_EMAIL
docker compose up -d

Local Development

git clone https://github.com/yourusername/Memento.git
cd Memento

# macOS / Linux
./scripts/deploy-local.sh

# Windows PowerShell
.\scripts\deploy-local.ps1

Or manually:

cd Memento/memento-note
cp .env.example .env
# Edit .env with your DATABASE_URL, NEXTAUTH_SECRET, ADMIN_EMAIL, etc.
npm install --legacy-peer-deps
npx prisma migrate dev
npm run dev

AI Providers

Memento supports 8 AI providers, configurable independently for tags, embeddings, and chat:

Provider Type Setup
Ollama Local, free docker compose --profile ollama up -d
OpenAI Cloud, paid Set OPENAI_API_KEY
DeepSeek Cloud, paid Set DEEPSEEK_API_KEY
OpenRouter Cloud, paid Set OPENROUTER_API_KEY
Mistral AI Cloud, paid Set MISTRAL_API_KEY
Z.AI Cloud, paid Set ZAI_API_KEY
LM Studio Local, free Set LMSTUDIO_BASE_URL
Custom Any OpenAI-compatible API Set base URL + API key

Example for Ollama:

# .env.docker
AI_PROVIDER_TAGS=ollama
AI_PROVIDER_EMBEDDING=ollama
OLLAMA_BASE_URL="http://ollama:11434"
AI_MODEL_TAGS="granite4:latest"
AI_MODEL_EMBEDDING="embeddinggemma:latest"

All AI settings can also be configured from the admin panel at /admin/settings.


MCP Server

Connect AI agents to your notes via the Model Context Protocol.

// claude_desktop_config.json
{
  "mcpServers": {
    "memento": {
      "command": "docker",
      "args": ["exec", "-i", "memento-mcp", "node", "index.js"]
    }
  }
}

22 tools available - notes CRUD, notebooks, labels, reminders, search, export/import. Each API key is scoped to a user so only their notes are accessible.

For N8N or HTTP clients, use Streamable HTTP mode: http://localhost:3001/mcp with x-api-key header auth.


Tech Stack

Layer Technology
Framework Next.js 16, React 19, TypeScript 5
Styling Tailwind CSS 4, shadcn/ui
Database PostgreSQL 16, Prisma ORM 5
Auth NextAuth.js v5
AI Vercel AI SDK (OpenAI, Ollama, DeepSeek, OpenRouter, Mistral, Z.AI, LM Studio)
MCP @modelcontextprotocol/sdk
Email Nodemailer (SMTP) / Resend

Documentation

For the complete installation, deployment, and configuration guide, see GUIDE.en.md.


Project Structure

Memento/
├── docker-compose.yml        # Multi-container orchestration
├── .env.docker.example       # Docker environment template
├── scripts/                  # Deployment scripts
│   ├── deploy-docker.sh      # Docker deploy (macOS/Linux)
│   ├── deploy-local.sh       # Local deploy (macOS/Linux)
│   ├── deploy-docker.ps1     # Docker deploy (Windows)
│   └── deploy-local.ps1      # Local deploy (Windows)
├── memento-note/             # Next.js application
│   ├── app/                  # App Router (pages, actions, API)
│   ├── components/           # React UI components
│   ├── lib/                  # Business logic (AI, DB, mail, i18n)
│   ├── prisma/               # Schema + migrations
│   ├── locales/              # 15 i18n JSON files
│   └── Dockerfile            # Multi-stage build
├── mcp-server/               # MCP server (22 tools)
│   ├── index.js              # stdio mode
│   ├── index-sse.js          # HTTP Streamable mode
│   ├── tools.js              # Tool definitions
│   ├── auth.js               # API key authentication
│   └── Dockerfile            # Container build
└── n8n-memento-workflow.json # Pre-configured N8N workflow

Environment Variables

See .env.docker.example for the complete list. Key variables:

Variable Required Description
NEXTAUTH_URL Yes Public URL of the app
NEXTAUTH_SECRET Yes JWT secret (openssl rand -base64 32)
ADMIN_EMAIL Yes Email that automatically gets ADMIN role on registration
POSTGRES_PASSWORD Rec. PostgreSQL password (default: memento)
AI_PROVIDER_TAGS No AI provider for tags: ollama, openai, custom
OPENAI_API_KEY If OpenAI Your OpenAI API key

Contributing

Contributions are welcome!


Support

If you find Memento useful, consider supporting its development:

  • Ko-fi - One-time or monthly support
  • GitHub Sponsors - Recurring sponsorship
  • Star the repo - It's free and helps visibility

License

Apache License 2.0 with Commons Clause Restriction.

Free for personal, educational, and non-commercial use. Commercial use requires written permission from the author. See LICENSE for details.