[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-77258":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":9,"totalLinesOfCode":9,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":9,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":9,"rankLanguage":9,"license":9,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":22,"hasPages":22,"topics":9,"createdAt":9,"pushedAt":9,"updatedAt":24,"readmeContent":25,"aiSummary":26,"trendingCount":16,"starSnapshotCount":16,"syncStatus":27,"lastSyncTime":28,"discoverSource":29},77258,"fast-note-sync-service","haierkeys\u002Ffast-note-sync-service","haierkeys","High-performance, low-latency note synchronization, online management, and remote REST API service platform.",null,"https:\u002F\u002Fgithub.com\u002Fhaierkeys\u002Ffast-note-sync-service","Go",1506,136,5,95,0,51,107,260,153,19.41,false,"main","2026-06-12 02:03:42","[简体中文](https:\u002F\u002Fgithub.com\u002Fhaierkeys\u002Ffast-note-sync-service\u002Fblob\u002Fmaster\u002Fdocs\u002FREADME.zh-CN.md) \u002F [English](https:\u002F\u002Fgithub.com\u002Fhaierkeys\u002Ffast-note-sync-service\u002Fblob\u002Fmaster\u002FREADME.md) \u002F [日本語](https:\u002F\u002Fgithub.com\u002Fhaierkeys\u002Ffast-note-sync-service\u002Fblob\u002Fmaster\u002Fdocs\u002FREADME.ja.md) \u002F [한국어](https:\u002F\u002Fgithub.com\u002Fhaierkeys\u002Ffast-note-sync-service\u002Fblob\u002Fmaster\u002Fdocs\u002FREADME.ko.md) \u002F [繁體中文](https:\u002F\u002Fgithub.com\u002Fhaierkeys\u002Ffast-note-sync-service\u002Fblob\u002Fmaster\u002Fdocs\u002FREADME.zh-TW.md)\n\nIf you have any issues, please open a new [issue](https:\u002F\u002Fgithub.com\u002Fhaierkeys\u002Ffast-note-sync-service\u002Fissues\u002Fnew), or join the Telegram group for help: [https:\u002F\u002Ft.me\u002Fobsidian_users](https:\u002F\u002Ft.me\u002Fobsidian_users)\n\nFor users in mainland China, we recommend using the Tencent `cnb.cool` mirror: [https:\u002F\u002Fcnb.cool\u002Fhaierkeys\u002Ffast-note-sync-service](https:\u002F\u002Fcnb.cool\u002Fhaierkeys\u002Ffast-note-sync-service)\n\n\n\u003Ch1 align=\"center\">Fast Note Sync Service\u003C\u002Fh1>\n\n\u003Cp align=\"center\">\n    \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fhaierkeys\u002Ffast-note-sync-service\u002Freleases\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Frelease\u002Fhaierkeys\u002Ffast-note-sync-service?style=flat-square\" alt=\"release\">\u003C\u002Fa>\n    \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fhaierkeys\u002Ffast-note-sync-service\u002Freleases\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fv\u002Ftag\u002Fhaierkeys\u002Ffast-note-sync-service?label=release-alpha&style=flat-square\" alt=\"alpha-release\">\u003C\u002Fa>\n    \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fhaierkeys\u002Ffast-note-sync-service\u002Fblob\u002Fmaster\u002FLICENSE\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002Fhaierkeys\u002Ffast-note-sync-service?style=flat-square\" alt=\"license\">\u003C\u002Fa>\n    \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLanguage-Go-00ADD8?style=flat-square\" alt=\"Go\">\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Cstrong>High-performance, low-latency note sync, online management, and remote REST API service platform\u003C\u002Fstrong>\n  \u003Cbr>\n  \u003Cem>Built with Golang + WebSocket + React\u003C\u002Fem>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  Data sync requires the client plugin: \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fhaierkeys\u002Fobsidian-fast-note-sync\">Obsidian Fast Note Sync Plugin\u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Cdiv align=\"center\">\n  \u003Cdiv align=\"center\">\n    \u003Ca href=\"\u002Fdocs\u002Fimages\u002Fvault.png\">\u003Cimg src=\"\u002Fdocs\u002Fimages\u002Fvault.png\" alt=\"fast-note-sync-service-preview\" width=\"400\" \u002F>\u003C\u002Fa>\n    \u003Ca href=\"\u002Fdocs\u002Fimages\u002Fattach.png\">\u003Cimg src=\"\u002Fdocs\u002Fimages\u002Fattach.png\" alt=\"fast-note-sync-service-preview\" width=\"400\" \u002F>\u003C\u002Fa>\n    \u003C\u002Fdiv>\n  \u003Cdiv align=\"center\">\n    \u003Ca href=\"\u002Fdocs\u002Fimages\u002Fnote.png\">\u003Cimg src=\"\u002Fdocs\u002Fimages\u002Fnote.png\" alt=\"fast-note-sync-service-preview\" width=\"400\" \u002F>\u003C\u002Fa>\n    \u003Ca href=\"\u002Fdocs\u002Fimages\u002Fsetting.png\">\u003Cimg src=\"\u002Fdocs\u002Fimages\u002Fsetting.png\" alt=\"fast-note-sync-service-preview\" width=\"400\" \u002F>\u003C\u002Fa>\n  \u003C\u002Fdiv>\n\u003C\u002Fdiv>\n\n---\n\n## 🎯 Core Features\n\n* **🧰 Native MCP (Model Context Protocol) Support**:\n  * `FNS` can act as an MCP server and integrate with compatible AI clients such as `Cherry Studio`, `Cursor`, etc., enabling AI to read and write private notes and attachments, with all changes synced in real time across all devices.\n* **🚀 REST API Support**:\n  * Provides standard REST API endpoints, supporting programmatic access (e.g., automation scripts, AI assistant integrations) for CRUD operations on Obsidian notes.\n  * See [RESTful API Documentation](\u002Fdocs\u002FREST_API.md) or [OpenAPI Documentation](\u002Fdocs\u002Fswagger.yaml) for details.\n* **💻 Web Management Panel**:\n  * Built-in modern management interface for easily creating users, generating plugin configurations, and managing vaults and note content.\n* **🔄 Multi-device Note Sync**:\n  * Supports automatic **Vault** creation.\n  * Supports note management (create, delete, update, query) with millisecond-level real-time distribution to all online devices.\n* **🖼️ Attachment Sync Support**:\n  * Full support for syncing non-note files such as images.\n  * Supports chunked upload\u002Fdownload for large attachments with configurable chunk sizes for improved sync efficiency.\n* **⚙️ Config Sync**:\n  * Supports syncing `.obsidian` configuration files.\n  * Supports syncing `PDF` reading progress state.\n* **📝 Note History**:\n  * View historical revision versions of each note on the web panel and plugin side.\n  * (Requires server v1.2+)\n* **🗑️ Recycle Bin**:\n  * Automatically moves deleted notes to the recycle bin.\n  * Supports restoring notes from the recycle bin. (Attachment restore will be added in future updates)\n\n* **🚫 Offline Sync Strategy**:\n  * Supports automatic merging of offline note edits. (Requires plugin-side settings)\n  * Offline deletions are automatically reconciled upon reconnection. (Requires plugin-side settings)\n\n* **🔗 Sharing Feature**:\n  * Create\u002Frevoke note sharing links.\n  * Automatically resolves referenced images, audio, video, and other attachments in shared notes.\n  * Provides sharing access statistics.\n  * Supports setting access passwords for shared notes.\n  * Supports generating short links for shared notes.\n* **📂 Directory Sync**:\n  * Supports create\u002Frename\u002Fmove\u002Fdelete sync for folders.\n\n* **🌳 Git Automation**:\n  * Automatically commits and pushes changes to a remote Git repository when attachments or notes are modified.\n  * Automatically releases system memory after tasks complete.\n\n* **☁️ Multi-Storage Backup & One-way Mirror Sync**:\n  * Supports multiple storage protocols: S3, OSS, R2, WebDAV, local, and more.\n  * Supports scheduled full\u002Fincremental ZIP archive backups.\n  * Supports one-way mirror sync of Vault resources to remote storage.\n  * Automatically cleans up expired backups with configurable retention days.\n\n* **🗄️ Multi-Database Support**:\n  * Natively supports SQLite, MySQL, PostgreSQL, and other mainstream databases, catering to both personal and team deployment needs.\n\n## ☕ Sponsorship & Support\n\n- If you find this project useful and want to support its continued development, please consider supporting me through:\n\n  | Ko-fi *(outside mainland China)*                                                                               |    | WeChat Donation *(mainland China)*                        |\n  |--------------------------------------------------------------------------------------------------|----|------------------------------------------------|\n  | [\u003Cimg src=\"\u002Fdocs\u002Fimages\u002Fkofi.png\" alt=\"BuyMeACoffee\" height=\"150\">](https:\u002F\u002Fko-fi.com\u002Fhaierkeys) | or | \u003Cimg src=\"\u002Fdocs\u002Fimages\u002Fwxds.png\" height=\"150\"> |\n\n  - Supporter list:\n    - \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fhaierkeys\u002Ffast-note-sync-service\u002Fblob\u002Fmaster\u002Fdocs\u002FSupport.zh-CN.md\">Support.zh-CN.md\u003C\u002Fa>\n    - \u003Ca href=\"https:\u002F\u002Fcnb.cool\u002Fhaierkeys\u002Ffast-note-sync-service\u002F-\u002Fblob\u002Fmaster\u002Fdocs\u002FSupport.zh-CN.md\">Support.zh-CN.md (cnb.cool mirror)\u003C\u002Fa>\n\n## ⏱️ Changelog\n\n- ♨️ [View Changelog](\u002Fdocs\u002FCHANGELOG.md)\n\n## 🗺️ Roadmap\n\n\n- [ ] Add WebSocket `Protobuf` transport format support to enhance sync efficiency.\n- [ ] Isolate and optimize the existing authorization mechanism to improve overall security.\n- [ ] Add real-time note updates in WebGui.\n- [ ] Add client-to-client peer-to-peer messaging (non-note & attachment, similar to localsend, without client-side save, server-side save supported).\n- [ ] Improve various help documentation.\n- [ ] Support more intranet penetration (relay gateway) methods.\n- [ ] Quick deployment plan:\n  * Only requires a public server address, username, and password to complete FNS server deployment.\n- [ ] Optimize the current offline note merging solution and add conflict resolution mechanisms.\n\nWe are continuously improving. Here are our future development plans:\n\n> **If you have suggestions for improvement or new ideas, feel free to share them by submitting an issue — we will carefully evaluate and adopt suitable suggestions.**\n\n## 🚀 Quick Deployment\n\nWe provide multiple installation methods. **One-click script** or **Docker** is recommended.\n\n### Method 1: One-Click Script (Recommended)\n\nAutomatically detects the system environment and completes installation and service registration.\n\n```bash\nbash \u003C(curl -fsSL https:\u002F\u002Fraw.githubusercontent.com\u002Fhaierkeys\u002Ffast-note-sync-service\u002Fmaster\u002Fscripts\u002Fquest_install.sh)\n```\n\nFor users in mainland China, you can use the Tencent `cnb.cool` mirror:\n```bash\nbash \u003C(curl -fsSL https:\u002F\u002Fcnb.cool\u002Fhaierkeys\u002Ffast-note-sync-service\u002F-\u002Fgit\u002Fraw\u002Fmaster\u002Fscripts\u002Fquest_install.sh) --cnb\n```\n\n\n**Script main behaviors:**\n\n  * Automatically downloads the Release binary for the current system.\n  * Installs to `\u002Fopt\u002Ffast-note` by default and creates a global shortcut command `fns` at `\u002Fusr\u002Flocal\u002Fbin\u002Ffns`.\n  * Configures and starts a Systemd (Linux) or Launchd (macOS) service for auto-start on boot.\n  * **Management commands**: `fns [install|uninstall|start|stop|status|update|menu]`\n  * **Interactive menu**: Run `fns` directly to enter the interactive menu, which supports install\u002Fupgrade, service control, auto-start configuration, and switching between GitHub \u002F CNB mirrors.\n\n-----\n\n### Method 2: Docker Deployment\n\n#### Docker Run\n\n```bash\n# 1. Pull the image\ndocker pull haierkeys\u002Ffast-note-sync-service:latest\n\n# 2. Start the container\ndocker run -tid --name fast-note-sync-service \\\n    -p 9000:9000 \\\n    -v \u002Fdata\u002Ffast-note-sync\u002Fstorage\u002F:\u002Ffast-note-sync\u002Fstorage\u002F \\\n    -v \u002Fdata\u002Ffast-note-sync\u002Fconfig\u002F:\u002Ffast-note-sync\u002Fconfig\u002F \\\n    haierkeys\u002Ffast-note-sync-service:latest\n```\n\n#### Docker Compose\n\nCreate a `docker-compose.yaml` file:\n\n```yaml\nversion: '3'\nservices:\n  fast-note-sync-service:\n    image: haierkeys\u002Ffast-note-sync-service:latest\n    container_name: fast-note-sync-service\n    restart: always\n    ports:\n      - \"9000:9000\"  # RESTful API & WebSocket port; \u002Fapi\u002Fuser\u002Fsync is the WebSocket endpoint\n    volumes:\n      - .\u002Fstorage:\u002Ffast-note-sync\u002Fstorage  # Data storage\n      - .\u002Fconfig:\u002Ffast-note-sync\u002Fconfig    # Config files\n```\n\nStart the service:\n\n```bash\ndocker compose up -d\n```\n\n-----\n\n### Method 3: Manual Binary Installation\n\nDownload the latest release for your OS from [Releases](https:\u002F\u002Fgithub.com\u002Fhaierkeys\u002Ffast-note-sync-service\u002Freleases), extract, and run:\n\n```bash\n.\u002Ffast-note-sync-service run -c config\u002Fconfig.yaml\n```\n\n## 📖 Usage Guide\n\n1.  **Access the management panel**:\n    Open `http:\u002F\u002F{ServerIP}:9000` in your browser.\n2.  **Initial setup**:\n    Register an account on first access. *(To disable registration, set `user.register-is-enable: false` in the config file)*\n3.  **Configure the client**:\n    Log in to the management panel and click **\"Copy API Config\"**.\n4.  **Connect Obsidian**:\n    Open the Obsidian plugin settings page and paste the copied config.\n\n\n## ⚙️ Configuration\n\nThe default config file is `config.yaml`, which the program will automatically look for in the **root directory** or the **config\u002F** directory.\n\nView the full configuration example: [config\u002Fconfig.yaml](https:\u002F\u002Fgithub.com\u002Fhaierkeys\u002Ffast-note-sync-service\u002Fblob\u002Fmaster\u002Fconfig\u002Fconfig.yaml)\n\n## 🌐 Nginx Reverse Proxy Configuration Example\n\nView the full configuration example: [https-nginx-example.conf](https:\u002F\u002Fgithub.com\u002Fhaierkeys\u002Ffast-note-sync-service\u002Fblob\u002Fmaster\u002Fscripts\u002Fhttps-nginx-example.conf)\n\n## 🧰 MCP (Model Context Protocol) Support\n\nFNS now natively supports **MCP (Model Context Protocol)** with both **SSE** and **StreamableHTTP** transport modes.\n\nYou can connect FNS as an MCP server directly to compatible AI clients such as Cherry Studio, Cursor, Claude Code, hermes-agent, etc. Once connected, the AI can read and write private notes and attachments. All MCP-generated changes are synced in real time to all your devices via WebSocket.\n\n### Common Request Headers\n\nThe following headers are supported regardless of transport mode:\n\n- **Auth Header**: `Authorization: Bearer \u003Cyour API Token>` (obtained from the Copy API Config in WebGUI)\n- **Optional Header**: `X-Default-Vault-Name: \u003Cvault name>` (specifies the default vault for MCP operations; used if the `vault` parameter is not specified in a tool call)\n- **Optional Header**: `X-Client: \u003Cclient type>` (client type connecting via MCP, e.g.: Cherry Studio \u002F OpenClaw)\n- **Optional Header**: `X-Client-Version: \u003Cclient version>` (client version connecting via MCP, e.g.: 1.1)\n- **Optional Header**: `X-Client-Name: \u003Cclient name>` (client name connecting via MCP, e.g.: Mac)\n\n---\n\n### Integration: StreamableHTTP Mode (Recommended)\n\nStreamableHTTP is the standard transport protocol in the MCP ecosystem. It uses a single endpoint for all requests, is more firewall-friendly, and is natively supported by newer MCP clients (e.g., Claude Code, hermes-agent).\n\n- **Endpoint**: `http:\u002F\u002F\u003Cyour server IP or domain>:\u003Cport>\u002Fapi\u002Fmcp`\n- **Methods**: `POST` (send request\u002Fnotification), `GET` (listen for server-sent events), `DELETE` (terminate session)\n\n#### Example: Claude Code \u002F hermes-agent \u002F Cursor, etc.\n\n*(Note: Replace `\u003CServerIP>`, `\u003CPort>`, `\u003CToken>`, and `\u003CVaultName>` with your actual values)*\n\n```json\n{\n  \"mcpServers\": {\n    \"fns\": {\n      \"url\": \"http:\u002F\u002F\u003CServerIP>:\u003CPort>\u002Fapi\u002Fmcp\",\n      \"type\": \"http\",\n      \"headers\": {\n        \"Content-Type\": \"application\u002Fjson\",\n        \"Authorization\": \"Bearer \u003CToken>\",\n        \"X-Default-Vault-Name\": \"\u003CVaultName>\",\n        \"X-Client\": \"\u003CClient>\",\n        \"X-Client-Version\": \"\u003CClientVersion>\",\n        \"X-Client-Name\": \"\u003CClientName>\"\n      }\n    }\n  }\n}\n```\n\n---\n\n### Integration: SSE Mode (Backward Compatible)\n\nSSE mode is the legacy transport protocol, fully retained for backward compatibility. Suitable for MCP clients that only support SSE (e.g., Cherry Studio).\n\n- **Endpoint**: `http:\u002F\u002F\u003Cyour server IP or domain>:\u003Cport>\u002Fapi\u002Fmcp\u002Fsse`\n\n#### Example: Cherry Studio \u002F Cline, etc.\n\n*(Note: Replace `\u003CServerIP>`, `\u003CPort>`, `\u003CToken>`, and `\u003CVaultName>` with your actual values)*\n\n```json\n{\n  \"mcpServers\": {\n    \"fns\": {\n      \"url\": \"http:\u002F\u002F\u003CServerIP>:\u003CPort>\u002Fapi\u002Fmcp\u002Fsse\",\n      \"type\": \"sse\",\n      \"headers\": {\n        \"Content-Type\": \"application\u002Fjson\",\n        \"Authorization\": \"Bearer \u003CToken>\",\n        \"X-Default-Vault-Name\": \"\u003CVaultName>\",\n        \"X-Client\": \"\u003CClient>\",\n        \"X-Client-Version\": \"\u003CClientVersion>\",\n        \"X-Client-Name\": \"\u003CClientName>\"\n      }\n    }\n  }\n}\n```\n\n## 🔗 Clients & Client Plugins\n\n* Obsidian Fast Note Sync Plugin\n  * [Obsidian Fast Note Sync Plugin](https:\u002F\u002Fgithub.com\u002Fhaierkeys\u002Fobsidian-fast-note-sync) \u002F [cnb.cool mirror](https:\u002F\u002Fcnb.cool\u002Fhaierkeys\u002Fobsidian-fast-note-sync)\n* Third-party Clients\n  * [FastNodeSync-CLI](https:\u002F\u002Fgithub.com\u002FGo1c\u002FFastNodeSync-CLI) — A Python-based command-line client implementing bidirectional real-time sync via the FNS WebSocket API. Designed for headless Linux server environments (e.g., OpenClaw), delivering sync capabilities equivalent to Obsidian desktop\u002Fmobile clients.","Fast Note Sync Service 是一个高性能、低延迟的笔记同步、在线管理和远程REST API服务平台。该项目使用Go语言开发，并结合WebSocket和React技术，提供了原生MCP（Model Context Protocol）支持，可以作为MCP服务器与兼容的AI客户端集成，实现AI对私有笔记和附件的读写操作，并实时同步到所有设备上。此外，它还提供标准的REST API接口，便于开发者进行二次开发或集成。适用于需要高效笔记管理和跨设备同步的应用场景，特别适合于团队协作和个人知识管理。",2,"2026-06-11 03:55:13","trending"]