mrkeyoor.com_
Wed 16 Sept 05:25 UTC
Self-Hostedevaluationupdated 27 Aug 2026

memos review

Memos is a self-hosted, Markdown-based notes app built around fast capture in a chronological feed. It gives individuals and small groups a private place for short notes, links, attachments, and shared memos without handing the data to a hosted notes vendor.

+212stars / 7d
Verdict

Our Memos build passed in 170 seconds, but the 420-second test run ended with 11 packages passing and 1 failing, so source builders should budget time to inspect the suite. Use it if short, chronological notes fit your habits and you want a clean self-hosted web app with several database choices. Choose Joplin or Logseq if offline clients, notebooks, or linked knowledge work are central requirements.

We ran it

Lab card: what happened when we ran memosScreenshot of memos (usememos.com)
Install✓ · 86s288 packages
Build✓ · 170s
Tests✗ · 420s11 passed · 1 failed of 12 (go test)
Repo1180 files~170,451 lines of source · 9.2 MB · 8 CI workflows

Answers from our run

Does memos build from source?

Dependencies installed in 86 seconds (288 packages), and the build succeeded in 170 seconds. We cloned commit 76a7629 into a clean Debian container with 3 CPUs and no project-specific setup.

Do memos's tests pass?

Not all of them: 11 of 12 passed and 1 failed when we ran the project's own test command (go test). Some failures need services or credentials a bare container does not have.

Who should not use memos?

People who need reliable offline mobile access: open issue #6231 asks for an offline PWA because notes currently become unavailable without a connection.

What are the alternatives to memos?

Joplin, Logseq, Standard Notes. Our Memos build passed in 170 seconds, but the 420-second test run ended with 11 packages passing and 1 failing, so source builders should budget time to inspect the suite.

Setup4/5Quick container path; our source test run still failed
Docs4/5Clear deployment choices and explicit upgrade notes
Community5/562,570 stars with current issue and pull request activity
Maturity4/5Multiple databases and APIs, with migration gaps still reported

Discussed on

  1. hnMemos: A lightweight, self-hosted memo hub129 points
  2. hnMemos – An open-source, lightweight note-taking solution4 points

Who it’s for

Self-hosters who want a small notes service with a browser interface and SQLite by default.
People who think in short entries, daily logs, links, and tags rather than folders full of long documents.
Teams that want REST, gRPC, webhooks, or MCP access to notes they control.
Operators who want the option to move from SQLite to MySQL or PostgreSQL.

Who it’s NOT for

People who need reliable offline mobile access: open issue #6231 asks for an offline PWA because notes currently become unavailable without a connection.
Anyone expecting built-in, version-neutral backup migration: issue #6224 describes copying the database file and asks for a supported export and import flow.
Writers who need a full document editor with every extended Markdown feature: issue #6218 requests admonitions, while the product is designed around short memos.
Operators who want source builds to pass cleanly on a fresh container without investigation: our test command ended with 1 failed package.

Setup reality

Our sandbox install succeeded in 86 seconds with 288 packages, and the build succeeded in 170 seconds. Tests ran for 420 seconds and failed overall: 11 packages passed and 1 failed out of 12. The log tail shows successful router, store, cache, and database packages, then only FAIL, so it does not identify the failed assertion or its cause.

The README's quickest route is a container on port 5230 with a persistent directory mounted at /var/opt/memos. Native binaries, Docker Compose, Kubernetes, and source builds are also documented. SQLite works for a single instance; MySQL and PostgreSQL are supported choices. Public traffic needs a reverse proxy and HTTPS.

Our checkout had 1,180 files, about 170,451 source lines, and 8 CI workflow files, but no Dockerfile or top-level tests directory. Version 0.30 also changed the default to private mode when no instance URL is supplied, and older MCP clients need updated routes and tool names.

Memos works best as a private stream of short notes

Memos puts Markdown entries into a chronological feed, closer to a private microblog than a conventional notebook tree. You open the browser, write, choose a visibility level, and move on. Tags, attachments, links, comments, reactions, and relations give those entries more structure when needed. The simple shape is the attraction: people who abandon heavier knowledge systems may keep using a feed that asks for fewer filing decisions.

The project supports a single Go binary or a container, with SQLite, MySQL, and PostgreSQL as database choices. Its REST and gRPC APIs make it more than a personal scratchpad. Version 0.30 added an OpenAPI-driven MCP endpoint, signed webhooks, file-backed deployment settings, and an official browser clipper. Those interfaces are useful for teams that want notes to feed scripts or agents while keeping storage on their own server.

The Docker path is shorter than the source path

The README's recommended command maps port 5230 and mounts ~/.memos at /var/opt/memos. That is an unusually small deployment surface for a web notes system. The deployment guide also covers Compose, Kubernetes, a native binary, source builds, and reverse proxies. It tells operators to put production traffic behind HTTPS, which is the right boundary for an app that may hold private text and access tokens.

Building commit 76a7629 told a less tidy story. Our 3-CPU, 8 GB Debian sandbox needed 86 seconds to install 288 packages and another 170 seconds to build. The repository contained 1,180 files and about 170,451 source lines. This is a developed application with a Go server and web client, even though the one-line container command makes the finished artifact look tiny.

What happened when we ran it

Our install completed in 86 seconds with 288 packages, and the build completed in 170 seconds. Tests then ran for the full 420-second limit recorded by the lab and returned exit code 1. The aggregate result was 11 passed packages and 1 failed package out of 12. A prospective contributor can get the code compiled in a plain container, but cannot assume the checked-out commit has a clean test result there.

The final log lines show successful runs for the MCP and RSS routers, server tests, store, cache, and the SQLite, MySQL, and PostgreSQL database packages. The store test package alone took 307.552 seconds. After those lines, the output ends with FAIL; it does not show the failed assertion or name the failing package. We cannot tell from this evidence whether the cause was code, environment, or timeout behavior, so any narrower explanation would be guesswork.

Our scan found 8 CI workflow files, no Dockerfile in the checkout, and no top-level tests directory. That does not conflict with the published container route, but it matters to anyone auditing how the image is produced from this exact tree. The failed test step is also separate from runtime suitability: we did not measure note latency, multi-user load, upgrade safety, or database recovery.

Offline use and backup migration remain real gaps

Memos is browser-first. Open issue #6231 asks for offline PWA support because the reporter cannot access notes on Android without a connection. That is a decisive limitation for commuters, field workers, and anyone treating a notes app as an always-available memory. A locally hosted server does not make the client local; network loss can still remove access at the moment a note is needed.

Migration deserves a dry run before storing years of material. Issue #6224 describes moving data by overwriting the database file and asks for an export and import feature that handles version differences. SQLite files are easy to copy, yet attachments and schema versions make a dependable restore procedure more than one file command. Test backup and rollback against the exact release you deploy, especially before changing database engines.

Long-form writers may also hit the product's deliberately narrow editing model. Version 0.30 rebuilt the editor around CodeMirror 6 and added footnotes, task-list behavior, better paste handling, and multi-column feeds. Issue #6218 still requests Markdown admonitions. Memos can hold longer documents, but the timeline, memo detail view, and quick-capture language all point toward brief entries rather than a document publishing system.

Version 0.30 tightened access and changed integrations

Instances without MEMOS_INSTANCE_URL or the matching command option now start in private mode. Anonymous visitors go to sign-in, anonymous API access is limited, and RSS feeds are unavailable. Operators who relied on public browsing must set the instance URL deliberately. This safer default can still surprise an upgrade if a deployment depended on the older behavior without encoding it in configuration.

The same release changed shared-memo routes, saved time filters, and MCP behavior. The MCP server is now a stateless tools-only endpoint at /mcp, with service-prefixed names and revised error output. Existing agent clients may break until their route and tool calls are updated. The release notes identify these changes plainly, which makes the migration manageable as long as someone reads them before replacing the image.

August activity supports adoption, with upgrades treated carefully

GitHub recorded the last push on August 26, 2026, and listed 49 combined issues and pull requests. Recent activity included a 0.31 release pull request, documentation work, a raw-Markdown route, and new bug reports. The latest published release returned by GitHub was v0.30.0 from July 26. A current push plus active issue discussion is stronger health evidence than the release date alone.

Memos is easy to recommend to a self-hoster whose notes already resemble a private timeline. The container route, three database options, APIs, and browser clipper leave room to grow. Our failed 420-second test run, absent offline access, and unresolved backup workflow are reasons to test restoration and upgrades before making it the only copy of important notes.

Alternatives

ProjectWhat it isPick it when
Joplin gh↗A desktop and mobile notes app with sync, notebooks, plugins, and end-to-end encryption.pick this instead when offline clients and a traditional notebook hierarchy matter more than a web timeline.
Logseq gh↗A local-first outliner centered on linked blocks, journals, and knowledge graphs.pick this instead when backlinks and block references are the main way you organize thought.
Standard NotesAn encrypted notes application with desktop, mobile, web, and self-hosted components.pick this instead when end-to-end encryption and polished native clients outrank a simple self-hosted feed.

Sources

  1. Memos README
  2. Memos v0.30.0 release notes
  3. Offline PWA issue
  4. Backup export and import issue
  5. Memos deployment guide

More self-hosted reviews

newsnow · forem · octo-server · runtime · openfang · SparkyFitness · the whole board →