Remplace les références obsolètes note.parsanet.org / notes.parsanet.org dans les guides de déploiement et l'exemple Docker. Co-authored-by: Cursor <cursoragent@cursor.com>
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
Docker (recommended)
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 |
| 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!
- Bug reports: Open an issue
- Feature ideas: Start a discussion
- Pull requests: Fork, create a branch, and submit a PR
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.