Mindket

Memos

Newversion 2 · updated
Star64.4k

Overview

A free, MIT-licensed note-taking app that you host yourself, where short thoughts and longer Markdown notes gather in a personal timeline. The setup notes cover Docker, Compose, a binary, Kubernetes, HTTPS, backups, upgrades, the Web Clipper, the API, webhooks and Claude Code over MCP.

Memos is an open-source project on GitHub in the Productivity category, listed by Mindket. It is free. This is version 2, last updated on . Install it from GitHub as its README says. Get Mindket’s setup notes on your Mindket account, as a zip.

At a glance

Runs in
  • The Memos Web Clipper for Chrome and Firefox saves pages, selections and images as Markdown with a link to the source. Its page says it also works with Edge, Brave and Arc
  • Memogram, a Telegram bot that saves your messages and images to Memos
  • The built-in MCP server at /mcp, which lets AI assistants such as Claude search, create and update your memos
  • The REST and gRPC APIs, with personal access tokens
Start with
docker run -d \
  --name memos \
  -p 5230:5230 \

Platform

ClaudeAI chat
DockerContainer
LinuxOperating system
macOSOperating system
WindowsOperating system

About

What it is

Memos is an open-source, self-hosted note-taking app for everyday thoughts. A memo can be a single sentence or a longer entry in Markdown. Each one stays with the day you wrote it, so your notes build up into a personal timeline you can look back through. Tags connect related thoughts across days. The record lives on your own server, and you choose what stays private, what goes to family and friends, and what is published on the web.

  1. You start the server with Docker or a release binary
  2. The first account you create becomes the host admin
  3. You write memos in Markdown and pick who can read each
  4. Tags and saved Views bring related memos back later
  5. Visibility, Spaces and share links decide who reads them

The server ships as one Docker image or one binary. SQLite is the default database, and MySQL and PostgreSQL are options.

Who it suits

People who want one private place for quick thoughts and are happy to run a small server to get it. It also fits small groups, because a Space lets members write side by side while each keeps their own memos. Skip it if you do not want to look after a server. You run the backups and the upgrades yourself. The live demo at https://demo.usememos.com lets you try it first.

Who uses it, and how
IndustryWho uses itHow they use itExample
Personal notesAnyone who jots things down through the dayWrite short memos, tag them and look back through the timelineSomeone types a one-line idea, adds #reading to it and opens that tag later to find it again.
Task trackingPeople who keep checklists inside their notesAdd checklists to memos and save a View for what is unfinishedA user makes a View with the filter has_task_list && has_incomplete_tasks and opens it from the sidebar.
Teams and familiesSmall groups who want one shared placeCreate a Space, invite existing users and choose who reads each memoA team lead opens the Space switcher, chooses Create Space, names it and invites a colleague, who accepts from the Inbox.
Research and readingPeople who collect what they read onlineClip pages and selections with the Web Clipper, which keeps a link to the sourceA reader selects a paragraph in an article and clips it with the page’s example template. The memo gets a Source line with the page title and URL, followed by a Description line.
Developers and homelabPeople who already run their own servicesCall the REST API, receive webhooks or connect an AI assistant over MCPA developer makes a personal access token and runs the docs’ curl line against the /api/memos address of their instance.

Where to use it

Memos runs on hardware you control and opens in a browser. The README and the docs name these ways to connect it to other tools.

  • The Memos Web Clipper for Chrome and Firefox saves pages, selections and images as Markdown with a link to the source. Its page says it also works with Edge, Brave and Arc
  • Memogram, a Telegram bot that saves your messages and images to Memos
  • The built-in MCP server at /mcp, which lets AI assistants such as Claude search, create and update your memos
  • The REST and gRPC APIs, with personal access tokens
  • Webhooks that post when a memo is created, updated or deleted, or when a comment is created
Ways to run it
RouteWhat you runWhat the docs say
DockerOne docker run command with the neosmemo/memos imageThe simplest production-style deployment for one instance. The image covers linux/amd64, linux/arm64 and linux/arm/v7
Docker ComposeA compose file kept next to your data folderA good default when you want a checked-in file, predictable restarts and easier upgrades
BinaryA release archive for your platformLinux (amd64, arm64, armv7), macOS (Intel and Apple Silicon) and Windows (amd64). You manage the service, upgrades and HTTPS yourself
KubernetesA Deployment, a Service, an Ingress and a volumeFor people who already operate a cluster. Use one replica with SQLite
SourceA tagged checkout, built into one binaryFor a fork, a custom patch or a build pinned to an exact revision

How to set it up

Get it saves a zip of Mindket’s setup notes in your downloads folder, with a page for each route and add-on from the maker’s README and docs. The main route is one Docker command.

What you need first
NeedDetail
A hostDocker on the machine that runs Memos, or a machine for one of the binary platforms
A browserThe app opens at http://localhost:5230 with Docker and http://localhost:8081 as a binary
A data folderOne your user can write to. The README’s command uses ~/.memos
A databaseSQLite is the default and needs nothing extra. MySQL or PostgreSQL if you want one
An accountYou create the first one in the app, and it becomes the host admin
For MCP or the APIA personal access token from your user settings
  1. Install Docker if it is not there yet.
  2. Run the command below.
  3. Open http://localhost:5230 and create the first account.
  4. In the instance settings, choose private or public access and decide whether registration stays off.
docker run -d \
  --name memos \
  -p 5230:5230 \
  -v ~/.memos:/var/opt/memos \
  neosmemo/memos:stable

The Docker page gives the same command with --restart unless-stopped added. If the page does not load, the Getting Started page points you to the container’s logs.

docker logs memos

How to use it

Open the composer from the sidebar and write. Markdown works, checklists work, and a tag is a word after a hash sign. The Getting Started page suggests a first memo like this one, shortened here (its Code section is left out).

# Welcome to Memos

This is my first memo.

## Tasks
- [x] Install Memos
- [ ] Write a real note

## Tags
Trying #memos and #getting-started

Choose a visibility in the editor: PRIVATE, PROTECTED, PUBLIC or SPACE. New memos start as PRIVATE. To bring memos back, search with Quick Find or save a View. A View is a named filter, and opening it shows the memos that match right now.

tag in ["work"] && has_incomplete_tasks
created_ts >= now - duration("168h")
visibility == "PUBLIC"

Those three come from the docs’ list of example Views. They find open work items, notes from the last week and public posts. Settings has an Export & Import page that moves one account’s memos as a ZIP. Since 26.10 an instance administrator exports, and every account can import.

Example

You want a place for quick thoughts and a list of what is still open. You start the server with the command above, open http://localhost:5230 and create your account. In the composer you paste the first memo from the Getting Started page. Then you open Views from the sidebar, choose Create, give the View a title and enter the filter the docs give for unfinished tasks.

has_task_list && has_incomplete_tasks

Validate checks the filter without saving it, and Save adds the View to the sidebar. Opening it lists the memos that still have a task to do, which is how the docs say to keep browsing unfinished tasks.

For newcomers and experts

If you are new. Self-hosted means the app runs on a computer you control, not on a company’s servers. A memo is one note, short or long. With the README’s command, everything Memos keeps sits in the ~/.memos folder, so that one folder is what you back up. The first account you create is the admin. New memos start as PRIVATE, so only you, and the instance’s administrators, can read them. Try the demo first if you only want to see how it feels.

For experts. In 0.31 the docs split the canonical address from the access policy. MEMOS_INSTANCE_URL sets the public address, and the ACCESS instance setting picks private or public. Changing the URL later never changes an existing policy. A fresh instance started with the quick-start command comes up private, because that command leaves the URL out.

All MEMOS_* variables map to command-line flags, and a flag beats its variable. MEMOS_DRIVER takes sqlite, mysql or postgres, and MEMOS_DSN carries the connection string. The Docker image also reads a _FILE suffix on any of them, so a Docker secret can supply the value. Since 26.10, declarative configuration files can manage identity providers, instance settings and bootstrap administrators. Memos applies them at startup unless MEMOS_CONFIG_APPLY is set to off.

Views use a subset of CEL that Memos translates for SQLite, MySQL and PostgreSQL, so a regular expression behaves as each engine does. New webhooks get a Standard Webhooks-compatible signing secret, older unsigned ones can generate one in the edit dialog, and a receiver should verify the raw body before it parses anything. On Kubernetes, a Service named memos injects MEMOS_PORT=tcp://10.x.x.x:5230. Memos cannot parse that and falls back to port 0, until you turn service links off or set the port yourself.

Good to know

You run the server, so the care is yours. These points come from the README and the docs.

  • Backups: the README says to back up the ~/.memos folder. With MySQL or PostgreSQL you also dump the database, and attachments kept outside the database need their own copy. The Backup & Restore page says to test a restore once
  • Upgrades: migrations run at startup, and downgrading after one has run is not supported. Your backup is the way back. From 0.22 through 0.30, go to 0.31.0 first, then to 26.10. From a version earlier than 0.22, run 0.25.3, then 0.31.0, then 26.10. Every user signs in again after 26.10, and personal access tokens keep working
  • Versions: the stable tag follows stable releases. The Upgrade page says to pin a specific version tag in production and upgrade on purpose
  • First run: the quick-start command starts private, so ordinary memo pages need a sign-in. Explicit share links still open their one memo without a sign-in until you revoke them or they expire. Switching to private mode does not revoke them
  • Public memos: they can expose attached files and links along with the text. The Security page says to review visibility and attachments
  • Tokens: a personal access token shows its value once and has no expiry unless you set one. The Security page says to use one per integration and to rotate any that leak
  • Demo mode: never enable it in production. It uses a fixed JWT secret
  • Data sent out: the pages say nothing about the server reporting usage. The Web Clipper page says the extension has no analytics, ads or usage tracking. Webhooks post only to addresses users add, and private addresses are refused unless you allow them. If you set them up, attachments go to an S3-compatible store, and the API Reference’s AI Service sends audio to the instance’s configured transcription provider
  • Export: it covers one account’s memos, is not encrypted and leaves out other people’s memos, accounts and settings. It does not replace an instance backup
  • Web Clipper: it needs Memos 0.26.0 or later, and it cannot read browser-owned pages such as settings screens. There it saves only the title and URL
  • License: MIT. The LICENSE file reads “Copyright (c) 2025 Memos”

README and files

README

Memos: setup notes

This kit holds setup notes only. Mindket wrote them. Memos itself comes from its maker's Docker image, release binaries and source code: https://github.com/usememos/memos

These notes are not made or endorsed by the Memos maintainers. The README says Memos is "an open-source, self-hosted note-taking app that brings your everyday thoughts together in a personal timeline." The documentation is at https://usememos.com/docs

License: MIT. The LICENSE file (https://github.com/usememos/memos/blob/main/LICENSE) is the standard MIT License text and reads "Copyright (c) 2025 Memos".

The documentation says Memos is self-hosted by design: you control the infrastructure, the storage and the access policy. Source: https://usememos.com/docs/configuration/security

What installs

  • A Memos server: one binary that embeds the web app's frontend assets and also serves the API and the MCP endpoint. It runs as the Docker image neosmemo/memos, or as a release binary from the GitHub releases page, or from a build of the source. Source: https://usememos.com/docs/deploy
  • A data folder. The Backup & Restore page shows a SQLite database named memos_prod.db and an assets/ folder for uploaded files, kept under ~/.memos on the host in the Docker commands. The Storage page says attachments are stored in the database by default, with local files and S3-compatible storage as the other options. Source: https://usememos.com/docs/operations/backup-restore
  • Nothing in your coding agent or your browser, unless you add the optional pieces: an MCP connection (setup/claude-code.md and setup/other-mcp-clients.md) or the Web Clipper extension (setup/web-clipper.md).

What you need first

Main install command

With Docker installed, the README gives this. Then open http://localhost:5230 and create the first account.

docker run -d \
  --name memos \
  -p 5230:5230 \
  -v ~/.memos:/var/opt/memos \
  neosmemo/memos:stable

Source: https://github.com/usememos/memos/blob/main/README.md. The README says everything Memos keeps is in ~/.memos, so that one folder is what you back up.

Per-platform notes

  • setup/docker.md: the Docker route in full, with image tags, environment variables and external databases
  • setup/docker-compose.md: a checked-in Compose file
  • setup/binary.md: a release binary, and a build from source
  • setup/kubernetes.md: a cluster you already run
  • setup/reverse-proxy-and-https.md: serving an HTTPS address
  • setup/backup-and-upgrade.md: backing up the data, and upgrading
  • setup/claude-code.md: the built-in MCP server in Claude Code
  • setup/other-mcp-clients.md: any other MCP client
  • setup/api-and-webhooks.md: personal access tokens, the API and webhooks
  • setup/web-clipper.md: the browser extension that saves pages as memos

Update or remove

To update the Docker route, the Docker page gives these lines. The Upgrade page says to back up first, and that downgrading after a migration has run is not supported. Source: https://usememos.com/docs/deploy/docker

docker pull neosmemo/memos:stable
docker stop memos
docker rm memos
docker run -d \
  --name memos \
  --restart unless-stopped \
  -p 5230:5230 \
  -v ~/.memos:/var/opt/memos \
  neosmemo/memos:stable

The README says releases are tagged YY.MM.N, release candidates YY.MM.N-rc.K, with no v prefix. The tag stable follows stable releases, a month tag such as 26.10 follows the newest stable release of that month, and canary follows development builds. Coming from a release before v0.31.0, it says to run v0.31.0 once first. The Upgrade page adds that a version earlier than 0.22 runs 0.25.3 first, then 0.31.0, then 26.10: see setup/backup-and-upgrade.md. Source: https://github.com/usememos/memos/blob/main/README.md

The pages these notes drew on give no uninstall steps. By hand, and this is Mindket's note, not the maker's: stop and remove the container with docker stop memos and docker rm memos. The data folder is separate, so removing the container does not delete your memos, and deleting ~/.memos does.

Usage data and outbound connections

The pages these notes drew on say nothing about the server sending usage data. The Web Clipper page says the extension has no analytics, ads or usage tracking. Source: https://usememos.com/web-clipper

The pages do describe these outbound paths. Webhooks post to the addresses a user adds, and by default Memos refuses private addresses. An S3-compatible store is an attachment storage option. The API Reference lists an AI Service whose Transcribe call sends an audio file to the instance's configured transcription provider (https://usememos.com/docs/api/latest). The Web Clipper's guided setup uses a usememos.com account if you choose that path, and a direct connection needs none. Sources: https://usememos.com/docs/integrations/webhooks, https://usememos.com/docs/configuration/storage and https://usememos.com/web-clipper

Sources

Files
README.md  7 KB
setup/api-and-webhooks.md  5 KB
setup/backup-and-upgrade.md  7 KB
setup/binary.md  3 KB
setup/claude-code.md  4 KB
setup/docker-compose.md  2 KB
setup/docker.md  6 KB
setup/kubernetes.md  3 KB
setup/other-mcp-clients.md  2 KB
setup/reverse-proxy-and-https.md  3 KB
setup/web-clipper.md  3 KB

11 files, 45 KB, downloaded as a zip.

What’s new

  • Version 2 · 2026-11-09

    Updated by Mindket to the current version of this kit.

  • Version 1 · 2026-11-03

Compare with similar

Listed GitHub projects in the same category that share the most topics with this one.

ProductStarsActivityLanguageLicenseLast change
Memos This page64,351——MIT—
AFFiNEShares markdown · notes74,303————
OpenMausBotShares docker · self-hosted19,754ActiveTypeScriptApache-2.0
Numbers as Mindket last read them, from 2026-11-08 to 2026-11-10. Activity is read from each project’s last change on GitHub: Active within 30 days, Quiet within 180, Stale after that.

Reviews

No ratings yet

Write a review

No reviews yet.

What people say

Posts and comments that name this project on Hacker News, Bluesky, X, Reddit, Facebook and YouTube, found by a weekly search and on Trendshift. Mindket doesn’t write or check them. Open one to read it where it was posted.

TomteMemos: A lightweight, self-hosted memo hub129 points · 40 repliesGolangOSSmemos by @usememos (⭐️ 64304) Memos is an open-source, self-hosted note-taking app that brings your everyday thoughts together in a personal timeline. Your data stays yours, and... #go1 like@T1doo_AI灵感来了,别再发给文件传输助手!📝 Memos 像时间线一样记碎片笔记。 支持 Markdown、标签和搜索,还能自己部署。💭 https://t.co/cu1ZX6R1MR #Notes #SelfHosted #浇朋友 #蓝朋友 #互关 #for/opensourcevietnamBẢO VỆ NHẬT KÝ VÀ Ý TƯỞNG CÁ NHÂN: MEMOS LÀ GIẢI PHÁP GHI CHÚ TỰ HOST SIÊU NHẸ THAY THẾ FLOMO VÀ TWITTER RIÊNG TƯjustsomehumanAsk HN: What do you run on a $5 VPS that's worth keeping online 24/7?Not quite as cheap as $5 but I've been running at Hetzner CAX31 for a couple of years now and I run the following services / apps. Actual Budget - https://github.com/actualbudget/actual AirTrail - https://github.com/johanohly/AirTrail Beszel - https://github.com/henrygd/beszel Coder -…CherrypickedA timeline for your thoughts Memos lets you jot down thoughts in Markdown, add images, and later find them by search, tags, or scrolling any day. It’s self-hosted, zero telemetry, and built with Go, so your data stays yours. 🍒 Built by the Memos team github.com/usememos/memos #opensource #golang1 like@laogeai想随手记点东西又嫌笔记软件太重,Memos 走轻路线。 像一个自己搭的朋友圈,打开就是输入框,写完就发,一个二进制文件就能跑。 https://t.co/hQHkg47BEVsousou123213Memos Worker: A Cloudflare-Powered Notes and Knowledge BaseMemos Worker is a powerful and high-performance serverless application for notes and knowledge management. Built entirely on the Cloudflare ecosystem (Workers, Pages, D1, R2, KV), it provides a private, cost-effective notes solution that you can own forever. For me,it is mainly used to replace…GolangOSSmemos by @usememos (⭐️ 63838) A personal timeline for quick notes. Write short memos, find them later by search, tag, or date. Open source and self-hosted. #go1 like@Jacoo_hurt平时只想随手记几句,却不想打开一套复杂的笔记系统? Memos 是一款开源、自部署的轻量笔记工具,支持 Markdown、标签、搜索和时间线,不需要先建页面或文件夹,Docker 就能部署到自己的服务器。 GitHub:https://t.co/KjmtcUtJda #开源工具 #GitHub #SelfHostednotedwinShow HN: Journelly for iOS: like tweeting but for your eyes only (in plain text)Congrats on the launch! An application I use for a similar “tweeting but for your eyes only” experience is Memos and the MoeMemo’s app. My main reason for using memos is being able to self-hosted the server and I can use it in the browser and the app. links: https://github.com/usememos/memos…GolangOSSmemos by @usememos (⭐️ 63470) A personal timeline for quick notes. Write short memos, find them later by search, tag, or date. Open source and self-hosted. #go1 like

Searched

More from Mindket

See all from Mindket

Bonsai-27B-GGUF

lmstudio-community · Kit

A GGUF conversion of the 27B Bonsai model for LM Studio, with a 3.80 GB Q1_0 language file and a 0.93 GB BF16 vision projector. Tested for text, vision and par…

New

Runs DeepSeek-V4.1-Flash-1017 as a 2.9 bits-per-weight EXL3 quantization, a 196 GiB copy for people serving large models on their own hardware. Perplexity stay…

New

MusicGen Small

facebook · Kit

Generates short music clips from a text description or an audio prompt, in the small checkpoint of facebook's MusicGen. It suits developers and music hobbyists…

New

Similar projects

See all in Productivity

Crawl4AI

unclecode · Kit

UncleCode’s open source web crawler and scraper for language models and AI agents. It loads a page in a browser and returns clean Markdown, or JSON in a shape…

New87k

AFFiNE

toeverything · Kit

An open-source, local-first workspace where docs, whiteboards and databases are built from the same blocks, so one doc reads as a page or opens as an endless c…

New74.3k

OpenMausBot

milind-soni · Kit

Gives you a team of AI bots in a desktop chat app, each one a Claude or Codex agent on your machine with its own cloud computer. Aimed at people who want an op…

New19.8k