# 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](README.fr.md)** | **[Full documentation](GUIDE.en.md)** --- ## 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: ```bash 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: ```bash cp .env.docker.example .env.docker # Edit .env.docker: set NEXTAUTH_URL, NEXTAUTH_SECRET, and ADMIN_EMAIL docker compose up -d ``` ### Local Development ```bash git clone https://github.com/yourusername/Memento.git cd Memento # macOS / Linux ./scripts/deploy-local.sh # Windows PowerShell .\scripts\deploy-local.ps1 ``` Or manually: ```bash 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: ```bash # .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. ```json // 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](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](.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](https://github.com/yourusername/Memento/issues) - **Feature ideas**: [Start a discussion](https://github.com/yourusername/Memento/discussions) - **Pull requests**: Fork, create a branch, and submit a PR --- ## Support If you find Memento useful, consider supporting its development: - **[Ko-fi](https://ko-fi.com/yourusername)** - One-time or monthly support - **[GitHub Sponsors](https://github.com/sponsors/yourusername)** - 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](LICENSE) for details.