A lightweight, self-hosted memo hub for capturing and organizing your thoughts.
This is a customized fork of usememos/memos, forked from v0.23.0.
This project uses two independent version numbers:
- Application version (e.g.,
v0.30.0) — the release version, incremented when new features or improvements are added. This is what you see in Docker tags and GitHub releases. - Database schema version (e.g.,
0.25.2) — the database migration version, only incremented when the database structure changes. Defined instore/migration/SCHEMA_VERSION.
The application version may increase without any database schema change. For example, multiple feature releases can share the same schema version if they only involve frontend or API changes.
Note: You don't need to worry about the database schema version in daily use. It only matters when migrating from the original usememos/memos. The original project ties its database version to the application version — even if the database hasn't changed, the version number still increases with each minor release (e.g., v0.26 → v0.27). So the compatibility range "v0.24.0 ~ v0.26.2" below refers to the original project's application version, not actual database changes.
See CHANGELOG.md for a detailed list of features and improvements compared to the original Memos.
Highlights:
- Tag management with pinning and emoji support
- Export memos as beautiful images
- Pinned memos displayed in separate column/drawer
- Code block collapse/expand
- Improved calendar heatmap
- URL-based filter persistence
- And more...
- Privacy First - Self-hosted, your data stays with you
- Markdown Support - Write with familiar markdown syntax, including task lists, code blocks, and more
- Tag Organization - Organize memos with tags, pin important tags, add emoji icons
- Timeline View - Browse your memos chronologically with activity heatmap
- Multi-platform - Access from any device via web browser, responsive design for mobile
- Lightweight - Minimal resource usage with SQLite as default database
- RESTful API - Full API support for integration and automation
- SSO Support - OAuth2 identity provider integration
- Webhook - Event notifications for automation workflows
- Multi-language - i18n support for multiple languages
| Frontend | Backend |
|---|---|
| React | Go |
| TypeScript | SQLite / MySQL / PostgreSQL |
| Tailwind CSS | gRPC + REST API |
| Vite |
docker run -d \
--init \
--name memos \
--restart unless-stopped \
--publish 5230:5230 \
--volume ~/.memos/:/var/opt/memos \
chriscurrycc/memos:latestThen visit http://localhost:5230 in your browser.
services:
memos:
image: chriscurrycc/memos:latest
container_name: memos
restart: unless-stopped
ports:
- 5230:5230
volumes:
- ~/.memos/:/var/opt/memosSee Development Guide for detailed instructions.
Memos can be configured via environment variables:
| Variable | Description | Default |
|---|---|---|
MEMOS_PORT |
Server port | 5230 |
MEMOS_MODE |
Running mode (prod, dev, demo) |
prod |
MEMOS_DRIVER |
Database driver (sqlite, mysql, postgres) |
sqlite |
MEMOS_DSN |
Database connection string | ~/.memos/memos_prod.db |
Example with MySQL:
docker run -d \
--name memos \
--restart unless-stopped \
--publish 5230:5230 \
-e MEMOS_DRIVER=mysql \
-e MEMOS_DSN="user:password@tcp(host:3306)/memos" \
chriscurrycc/memos:latestOne-time update:
docker run --rm \
--volume /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower \
--run-once \
memosScheduled auto-update (e.g., at 3:00 AM UTC+8 daily):
docker run -d \
--name watchtower \
--restart unless-stopped \
--volume /var/run/docker.sock:/var/run/docker.sock \
-e TZ=Asia/Shanghai \
containrrr/watchtower \
--schedule "0 0 3 * * *" \
memosdocker pull chriscurrycc/memos:latest
docker stop memos && docker rm memos
docker run -d \
--init \
--name memos \
--restart unless-stopped \
--publish 5230:5230 \
--volume ~/.memos/:/var/opt/memos \
chriscurrycc/memos:latestIf you are migrating from the original usememos/memos project:
Compatibility:
- From v0.23.0 ~ v0.23.1: Fully compatible
- From v0.24.0 ~ v0.26.2: Compatible after running the migration repair script below
For detailed information about what changed at the database level and what the repair script does, see the Migration Guide.
WARNING: Back up your data BEFORE migrating. This step is NOT optional.
If the migration fails or produces unexpected results, having a backup is the ONLY way to recover your data. Stop the service first, then copy your data directory (default:
~/.memos/). For MySQL/PostgreSQL users, your database is on an external server, so you also need to runmysqldump/pg_dump. See the Migration Guide for detailed backup instructions.
Migration Repair:
If migrating from upstream v0.24.0 ~ v0.26.2, run the migration repair script before starting this fork's service, to fix database schema differences and create missing tables. The script requires sqlite3, mysql, or psql CLI tools depending on your database driver:
# SQLite (default path: ~/.memos/memos_prod.db)
curl -sL https://raw.githubusercontent.com/chriscurrycc/memos/main/scripts/migration-repair.sh | bash -s -- --driver sqlite --dsn ~/.memos/memos_prod.db
# MySQL
curl -sL https://raw.githubusercontent.com/chriscurrycc/memos/main/scripts/migration-repair.sh | bash -s -- --driver mysql --dsn "user:password@tcp(host:3306)/memos"
# PostgreSQL
curl -sL https://raw.githubusercontent.com/chriscurrycc/memos/main/scripts/migration-repair.sh | bash -s -- --driver postgres --dsn "postgresql://user:password@host:5432/memos"The script is idempotent and safe to run multiple times.
Use the MCP server to connect AI assistants (Claude Code, Claude Desktop, Cursor, etc.) to your Memos instance:
npx @chriscurrycc/memos-mcp17 tools for memo CRUD & search, tags, resources, relations, and review — plus 6 workflow prompts (digest, review, relation graph, etc.). See the memos-mcp repo for setup instructions.
- Development Guide - Set up local development environment
- Development on Windows - Windows-specific setup
- API Documentation - REST API reference
- How I develop this project - Development blog
Contributions are welcome! Feel free to:
- Report bugs or request features via Issues
- Submit Pull Requests
- usememos/memos - The original project this fork is based on
This project is licensed under the MIT License - see the LICENSE file for details.
If you have any questions, feel free to contact me.
