← All reportsPublic report

usememos/memos

Open-source, self-hosted note-taking tool built for quick capture. Markdown-native, lightweight, and fully yours.

63k stars Go View on GitHubprofiled 11d ago
Try GitZoid
74PRs this week
14Contributors
0Deps scanned
0Issues found
01 · Repo overview

How memos is put together

Memos is a self-hosted, Markdown-native note-taking application. The backend is a single Go binary that serves an HTTP API defined in protobuf and exposed through a gRPC-Gateway (plus an MCP router, RSS feeds, a native file server for media, and an embedded React SPA built into server/router/frontend/dist). Data flows from the React/TypeScript frontend over ConnectRPC/gRPC-Gateway routes into an API v1 service layer backed by a store package with pluggable SQL drivers (SQLite via modernc.org/sqlite, MySQL, PostgreSQL), optional S3-compatible object storage for attachments, and runtime configuration loaded from /etc/secrets deployment files.

Languages

GoTypeScriptProtocol BuffersSQL

Frameworks

Echo v5gRPC + grpc-gateway/v2ConnectRPC (connectrpc.com/connect)React 19Vite 8Tailwind CSS 4goldmark (Markdown)CEL (google/cel-go filter engine)

Datastores

SQLite (modernc.org/sqlite, pure-Go driver)MySQL (go-sql-driver/mysql)PostgreSQL (lib/pq)

Infrastructure

Docker (neosmemo/memos image, port 5230, volume /var/opt/memos)UNIX socket listener option (profile.UNIXSock)S3-compatible object storage (AWS SDK v2, MinIO via testcontainers)Testcontainers-based integration testsBuf-managed protobuf toolchaininstall.sh native binary installer script

Major components

cmd/memos

CLI entrypoint using cobra/viper that loads the profile, initializes logging, opens the store, and starts/shuts down the HTTP server.

server (Echo host)

Assembles the Echo v5 HTTP server: CORS middleware, /healthz, frontend static serving, file server, RSS, gRPC-Gateway API v1, SSE hub, and MCP routes; manages graceful shutdown and the instance secret key.

server/auth

Authentication machinery: authenticator, token issuance/validation (JWT), request context injection, and credential extraction (Authorization header tokens plus SameSite=Lax refresh-token cookie per cors.go comments).

server/router/api/v1

The primary REST/gRPC-Gateway API surface including an SSE hub for long-lived event streams and a markdown service shared with RSS.

store (+ store/db drivers)

Persistence layer over SQLite/MySQL/PostgreSQL covering memos, users, attachments, IdPs, instance settings, inbox, reactions, spaces, and transactionally-safe authentication configuration mutations.

internal/storage (s3 driver)

Attachment storage abstraction with an S3-compatible driver built on aws-sdk-go-v2, exercised against gofakes3/MinIO in tests.

internal libraries (filter, markdown, idp/oauth2, ai, httpgetter, webhook, email, scheduler)

Domain engines: CEL-based memo filtering, custom goldmark Markdown extensions (mentions/tags/math/GFM email), OAuth2 identity-provider flow, AI transcription/audio handling, URL metadata fetching, outbound webhooks, email notifications, and job scheduling.

web (React SPA)

TypeScript React 19 frontend using ConnectRPC web clients, TanStack Query, CodeMirror editor, react-markdown with rehype-sanitize, Leaflet maps, i18next localization, built by Vite into the Go binary's static dist.

Over the last five weeks, the memos project has been steadily expanding from a single memo stream into a more collaborative and organized product. The biggest shift was the introduction of 'spaces' for multi-space memo collaboration, alongside a redesigned route-aware sidebar with a global composer. Meanwhile, a long tail of work polished storage (new attachment drivers, authenticated S3 proxying), editing reliability (IME input, tag autocomplete, markdown fixes), internationalization (Hebrew, Russian, Japanese, Chinese), and security (patching a crypto dependency vulnerability).

Week by week

2026-08-24A quieter week focused on making the new spaces feature usable in the interface.latest2 changes

Feature

Space-aware UI and filtering

The interface now understands which space you are in, letting you filter memos by space.

Fix

Memo length limit validation

Settings now properly enforce the maximum length allowed for memo content.

2026-08-17The biggest week, headlined by multi-space collaboration plus broad polish to storage, editing, and languages.6 changes

Feature

Multi-space memo collaboration

Memos can now be organized and collaborated on across multiple spaces rather than one flat list.

Fix

Secure S3 attachment access

Files stored in Amazon S3 are now served through authenticated routes instead of being exposed directly.

Feature

Global memo composer in the sidebar

You can write a new memo from anywhere in the app using a composer built into the sidebar.

Fix

Currency no longer treated as math

Writing amounts like $5 in a memo no longer gets misinterpreted as mathematical notation.

Chore

Hebrew language support

The app gained full Hebrew translations, including right-to-left layout corrections.

Chore

Upgraded to Go 1.27

The backend was moved to the latest version of its programming language for security and performance.

2026-08-10Storage and attachments got smarter, with named drivers, media metadata, and location filters.6 changes

Feature

Named attachment storage drivers

Administrators can now choose from several clearly named options for where uploaded files live.

Feature

Memo location filters

You can now filter your memo list by location information attached to each memo.

Feature

Insert attachment images into memos

Uploaded images can be placed directly inside the text of a memo rather than just appended.

Fix

Safer SQLite writes

Database updates now use a stricter locking method to avoid conflicts when many things change at once.

Fix

Typing in Asian languages fixed

The editor no longer breaks mid-word when composing text with input methods like Japanese or Chinese IMEs.

Chore

Traditional Chinese completed

The Traditional Chinese translation set was finished out.

2026-08-03Navigation was rebuilt around a unified sidebar, and a security vulnerability in a core library was patched.6 changes

Feature

Unified route-aware sidebar

All navigation was consolidated into a single sidebar that adapts to wherever you are in the app.

Fix

Security patch for crypto library

A known vulnerability (CVE-2026-39829) in an encryption dependency was fixed by upgrading it.

Refactor

Saved views replace shortcuts

Memo views were reworked so users can save and revisit custom filtered views of their memos.

Feature

Resizable desktop sidebar rail

On desktop, the narrow sidebar strip can now be resized to taste.

Feature

Markdown attachment images

Images attached to a memo can be referenced and displayed within its markdown content.

Fix

Shared-memo thumbnails keep access tokens

Attachment previews on shared memos no longer break because they lost their share token.

2026-07-27Tags, usernames, and mentions got formalized, with performance work on live updates.6 changes

Feature

Username format and mention syntax

Usernames now follow a defined format and can be used to @mention people in memos.

Feature

Unified tag syntax

Hashtag tags were standardized so they are recognized consistently everywhere in memos.

Refactor

Faster live update connections

Real-time updates were made cheaper by cutting redundant connections behind the scenes.

Fix

Windows emoji typing restored

Entering emoji on Windows keyboards works again in the editor.

Chore

Quick-create entry point

A global shortcut for creating new memos was added.

Fix

Menus stay above popovers

Dropdown menus no longer get hidden underneath overlapping popup elements.

03 · Security check

Dependencies and code review

0 dependencies scanned

Dependency advisories

Security Watch

No known advisories across 0 scanned dependencies.

No known advisories in the scanned dependencies.

Code review

No concrete code-level issues confirmed.

Get this report every week for your repos.

GitZoid learns each repo, reports what changed, and flags what needs attention. One flat price for the whole team.

$19 a month, flat · First 10 outputs free · No card required