Mem's core is a pile of notes you can ask questions of. Keep notes as Markdown in SQLite, index them for keyword and embedding search, answer questions with links back to the notes used, and have a model pull tasks and projects out of what you wrote. An agent builds that for one person in a sitting, and your notes stay on your machine: only the text sent to a model leaves it. What it won't have is the part Mem now sells as an agent: connections to Gmail, Slack and Todoist, scheduled routines, capture by voice, email or WhatsApp, and apps that sync offline across devices.
Before you buildCheck Mem Free first: 25 new notes and 25 messages a month is enough to judge it for a week. It stops being enough once you capture daily.
Build me a personal notes app with AI search and chat to replace Mem. Requirements: - Node.js 22 + TypeScript: a Fastify server and a React front end built with Vite. `npm start` serves http://127.0.0.1:4830 only. - Storage: better-sqlite3 with the `sqlite-vec` extension in ./data/notes.db: notes (title, Markdown body, created, updated), tags, collections (a note can sit in several) and one embedding per chunk of about 300 words. Every note is also mirrored to ./notes/<id>.md so the plain files outlive the app. - Capture: a "new note" box on every page, paste-a-URL to save an article (`@mozilla/readability`), drag-and-drop import of a folder of Markdown files, and a `POST /api/capture` endpoint guarded by a token in .env so a phone shortcut can send text. - Editor: Markdown in CodeMirror 6 with [[wiki links]], a backlinks panel and autosave after one second of idle time. - Search: one box that merges SQLite FTS5 keyword hits with embedding similarity (reciprocal rank fusion) and shows the matching chunk under each result. - Ask: a chat panel that retrieves the 8 best chunks and answers through an OpenAI-compatible endpoint (LLM_BASE_URL, LLM_API_KEY, EMBED_MODEL and CHAT_MODEL in .env), with the notes it used as links. If nothing relevant comes back it says so instead of guessing. - Tasks and projects: after a note is saved, a background job asks the model for tasks (with a due date only when the note states one) and projects. They land on a Tasks page where I confirm, edit or dismiss each one. - Export: one button writes every note and collection to a ZIP of Markdown files. - Single user. No accounts, no telemetry, local-first. Outbound calls: the model endpoint only, and the README must say exactly which text is sent. - Out of scope: Gmail, Slack or Todoist connections, scheduled routines, voice notes, sync between devices, mobile apps. - README: setup, the .env keys, where the data lives, and how to point EMBED_MODEL and CHAT_MODEL at a local Ollama server so nothing leaves the machine.
Opens your agent with the prompt filled in, you press enter. Or copy it and paste it into an empty folder.
The first prompt builds the core. Run these one at a time in the same folder to grow it into your own Mem.
Add an importer for a Mem export to the notes app in this folder. Requirements: - A command `notes import-mem <path>` that accepts a folder of Markdown files or one large Markdown file; for a single file, split it on top-level headings into separate notes. - Take the title from the first heading or the file name, keep created dates from front matter when present, and keep any collection names found in the file path or front matter as collections. - Embed every imported note after saving, in batches, with a progress line per batch. - `--dry-run` is the default and prints how many notes it would create; `--apply` writes. Running it twice must not duplicate notes. - Update the README with the Mem export steps.
Add voice capture to the notes app in this folder. Requirements: - A record button in the browser (`MediaRecorder`) that uploads the audio to a local endpoint and transcribes it with a whisper.cpp server listening on WHISPER_URL in .env. - Save the transcript as a note with the audio file kept in ./data/audio/ and linked from the note; a model call tidies the text into paragraphs but the raw transcript stays in a collapsed block. - A size limit per recording and a clear error when the whisper server is not running. - Update the README with how to start whisper.cpp and which model size to try first.
Add a weekly review to the notes app in this folder. Requirements: - A job (`node-cron`) at REVIEW_DAY and REVIEW_TIME in .env that collects notes created or edited in the last 7 days and asks the model for a summary: themes, open tasks, notes worth linking. - Save the result as a new note titled with the week, tagged review, with links to every note it mentions. - A "run review now" button, and a log of each run with the notes included and the model used. - Update the README.
Add email capture to the notes app in this folder. Requirements: - Poll one IMAP folder named in .env (`imapflow`); each new message becomes a note with the subject as the title and the plain-text body, with attachments listed but not stored. - Skip messages already imported (by Message-ID) and cap the body at 20,000 characters. - Mark processed messages as read; never delete or move anything in the mailbox. - Update the README with the app-password steps for Gmail and a note that the mailbox credentials stay in .env.
Mem files notes for you: you capture quickly from wherever you are and ask for them later, while it works out tasks and links. People pay to skip tidying and for capture paths such as email, voice and the share sheet that all land in one place. The free tier stops at 25 new notes a month, so regular users end up on a paid plan.
Estimate · Runs on your own machine. Embedding a few thousand notes costs cents; chat and task extraction are per-token, a few dollars a month at heavy use and nothing on a local Ollama model. The build is token usage on your agent plan.
| Plan | Monthly | Annual, per month | What you get |
|---|---|---|---|
| Free | $0 | — | 25 messages to Mem, 25 new notes and 25 tracked notes a month, 15 open tasks and projects, 3 hours of Voice Mode. |
| Plus | $9 | — | 50 messages, 50 new notes and 50 tracked notes a month, 25 open tasks and projects, 10 hours of Voice Mode. |
| Pro | $29 | — | 100 messages, 100 new notes and 100 tracked notes a month, 50 open tasks and projects, 1 custom routine with 50 runs, 1 connection, 25 hours of Voice Mode. |
| Pro 2x | $49 | — | 200 messages and new notes a month, 100 open tasks and projects, 2 routines, 2 connections, 50 hours of Voice Mode. |
| Pro 5x | $99 | — | 500 messages and new notes a month, 250 open tasks and projects, 5 routines, 5 connections, 125 hours of Voice Mode. |
| Pro 10x | $149 | — | 1,000 messages and new notes a month, 500 open tasks and projects, 10 routines, 10 connections, 250 hours of Voice Mode. |
| Pro 20x | $199 | — | 2,000 messages and new notes a month, 1,000 open tasks and projects, 20 routines, 20 connections, 500 hours of Voice Mode. |
Free gives 25 messages to Mem, 25 new notes a month and 3 hours of Voice Mode.
Yes. An AI coding agent such as Claude Code, Codex or Cursor can build a usable personal version in one session with the prompt on this page, running on your own machine.
About $9 a month on the Plus plan, $108 a year (checked 2026-10-19).
Connections that read Gmail, Slack and Todoist as context for your tasks; Scheduled custom routines that prepare briefings and send reminders; Voice Mode transcripts and capture by push-to-talk, email or WhatsApp; Mac, Windows and iOS apps that work offline and sync across devices; Heads Up, the panel that surfaces related notes while you write. If any of those matter to you, keep paying.
Yes: Khoj (open source), Obsidian (free), Logseq (open source).