usememos/memos
Open-source, self-hosted note-taking tool built for quick capture. Markdown-native, lightweight, and fully yours.
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
Frameworks
Datastores
Infrastructure
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.
A quieter week focused on making the new spaces feature usable in the interface.
5 weeksWeek of 2026-08-24
Week of 2026-08-24latest
A quieter week focused on making the new spaces feature usable in the interface.
Week of 2026-08-17
The biggest week, headlined by multi-space collaboration plus broad polish to storage, editing, and languages.
Week of 2026-08-10
Storage and attachments got smarter, with named drivers, media metadata, and location filters.
Week of 2026-08-03
Navigation was rebuilt around a unified sidebar, and a security vulnerability in a core library was patched.
Week of 2026-07-27
Tags, usernames, and mentions got formalized, with performance work on live updates.
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.
Dependencies and code review
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