Memos — a uduapp (upstream: usememos/memos)
Behavior-preserving restructure of the MemoEditor subsystem for simplicity and extensibility: - Add a data-driven command catalog (editorCommands.ts) as the single source for formatting verbs; the toolbar, active-state hook, and WYSIWYG handle all derive from it, so adding a verb is a one-file change. - Add a createSuggestionExtension factory; TagSuggestion consumes it, so new `/` or `@` triggers reuse the shared popup in ~10 lines. - Collapse FormattingController into a single EditorController with an optional `formatting` capability; PlainEditor is an honest textarea fallback (no faked formatting); replace stringly-typed isActive with typed getActiveFormats. - Move audio-recorder state out of the reducer into useAudioRecorder, keeping a single recorderBusy flag in the store. - Convert the editor context to an external store (useSyncExternalStore) with per-slice subscriptions, so typing no longer re-renders the toolbar, insert menu, or metadata. - Extract the shared #tag lexing grammar (tag-grammar.ts) used by both the editor tokenizer and the remark renderer. - Remove dead reducer actions/cases and fix a preview blob-URL leak on the upload path. Add tests for the command catalog, suggestion factory, and autosave. |
||
|---|---|---|
| .github | ||
| cmd/memos | ||
| docs | ||
| internal | ||
| proto | ||
| scripts | ||
| server | ||
| store | ||
| web | ||
| .dockerignore | ||
| .gitignore | ||
| .golangci.yaml | ||
| .release-please-manifest.json | ||
| AGENTS.md | ||
| CHANGELOG.md | ||
| CODEOWNERS | ||
| go.mod | ||
| go.sum | ||
| LICENSE | ||
| README.md | ||
| release-please-config.json | ||
| SECURITY.md | ||
Featured Sponsors
|
Warp is an agentic development environment. |
Cut code review time & bugs in half, instantly. |
Memos
Open-source, self-hosted note-taking tool built for quick capture. Markdown-native, lightweight, and fully yours.
Features
- Instant Capture — Timeline-first UI. Open, write, done — no folders to navigate.
- Total Data Ownership — Self-hosted on your infrastructure. Notes stored in Markdown, always portable. Zero telemetry.
- Radical Simplicity — Single Go binary, ~20MB Docker image. One command to deploy with SQLite, MySQL, or PostgreSQL.
- Open & Extensible — MIT-licensed with full REST and gRPC APIs for integration.
Quick Start
Docker (Recommended)
docker run -d \
--name memos \
-p 5230:5230 \
-v ~/.memos:/var/opt/memos \
neosmemo/memos:stable
Open http://localhost:5230 and start writing!
Native Binary
curl -fsSL https://raw.githubusercontent.com/usememos/memos/main/scripts/install.sh | sh
Try the Live Demo
Don't want to install yet? Try our live demo first!
Other Installation Methods
- Docker Compose - Recommended for production deployments
- Pre-built Binaries - Available for Linux, macOS, and Windows
- Kubernetes - Helm charts and manifests available
- Build from Source - For development and customization
See our installation guide for detailed instructions.
Contributing
Contributions are welcome — bug reports, feature suggestions, pull requests, documentation, and translations.
Sponsors
- CodeRabbit - Cut code review time & bugs in half, instantly
- Warp - The agentic development environment
- SSD Nodes - Affordable VPS hosting for self-hosters
- InstaPods - Get your app online in seconds • Deploy Memos in 30 Seconds
Love Memos? Sponsor us on GitHub to help keep the project growing!
Star History
License
Memos is open-source software licensed under the MIT License. See our Privacy Policy for details on data handling.
Website • Documentation • Demo • Discord • X/Twitter