High-performance, low-latency note synchronization, online management, and remote REST API service platform.
Go
2,434
1,495 commits
updated Aug 14, 2026
简体中文 / English / 日本語 / 한국어 / 繁體中文
If you have any questions, please create an issue or join our Telegram group for help: https://t.me/obsidian_users
For users in Mainland China, it is recommended to use the Tencent cnb.cool mirror repository: https://cnb.cool/haierkeys/fast-note-sync-service
High-performance, low-latency note synchronization, online management, and remote REST API service platform
Built with Golang + Websocket + React
Data provisioning requires integration with the client plugin: Obsidian Fast Note Sync Plugin
🧰 Native MCP (Model Context Protocol) Support:
FNS can be integrated as an MCP server into compatible AI clients such as Cherry Studio and Cursor. This enables the AI to read and write your personal notes and attachments, with all changes synchronized across all clients in real-time.🚀 REST API Support:
💻 Web Admin Panel:
🔄 Multi-Device Note Synchronization:
Vaults.🖼️ Attachment Sync Support:
⚙️ Configuration Sync:
.obsidian configuration files.PDF reading progress synchronization.📝 Note History:
🗑️ Trash Bin:
🚫 Offline Synchronization Strategy:
🔗 Sharing Feature:
📂 Folder Sync:
🌳 Git Automation:
☁️ Multi-Storage Backup & One-way Mirror Sync:
🗄️ Multi-Database Support:
If you find this plugin useful and want to support its ongoing development, please support me in the following ways:
Protobuf transfer format to enhance synchronization efficiency.We are continuously improving, and here is our future development roadmap:
If you have suggestions for improvement or new ideas, feel free to share them with us by submitting an issue — we will carefully evaluate and adopt suitable ones.
We provide multiple installation methods. We highly recommend using the One-click Script or Docker.
Automatically detects the system environment and completes the installation and service registration.
bash <(curl -fsSL https://raw.githubusercontent.com/haierkeys/fast-note-sync-service/master/scripts/quest_install.sh)
For users in China, you can use the Tencent cnb.cool mirror source:
bash <(curl -fsSL https://cnb.cool/haierkeys/fast-note-sync-service/-/git/raw/master/scripts/quest_install.sh) --cnb
Main Script Behaviors:
/opt/fast-note by default and creates a global shortcut command fns in /usr/local/bin/fns.fns [install|uninstall|start|stop|status|update|menu]fns directly to enter the interactive menu, supporting install/upgrade, service control, startup configuration, and switching between GitHub and CNB mirrors.# 1. Pull Image
docker pull haierkeys/fast-note-sync-service:latest
# 2. Start Container
docker run -tid --name fast-note-sync-service \
-p 9000:9000 \
-v /data/fast-note-sync/storage/:/fast-note-sync/storage/ \
-v /data/fast-note-sync/config/:/fast-note-sync/config/ \
haierkeys/fast-note-sync-service:latest
Create the docker-compose.yaml file:
version: '3'
services:
fast-note-sync-service:
image: haierkeys/fast-note-sync-service:latest
container_name: fast-note-sync-service
restart: always
ports:
- "9000:9000" # RESTful API & WebSocket port (where /api/user/sync is the WebSocket interface address)
volumes:
- ./storage:/fast-note-sync/storage # Data storage
- ./config:/fast-note-sync/config # Configuration files
Start the service:
docker compose up -d
Download the latest version for your system from Releases, extract it, and run:
./fast-note-sync-service run -c config/config.yaml
http://{Server_IP}:9000 in your browser.user.register-is-enable: false in the configuration file)The default configuration file is config.yaml. The application automatically searches in the root directory or the config/ directory.
View the complete configuration example: config/config.yaml
View the complete configuration example: https-nginx-example.conf
FNS now natively supports MCP (Model Context Protocol) and provides both SSE and StreamableHTTP transport protocols.
You can integrate FNS as an MCP server directly into compatible AI clients like Cherry Studio, Cursor, Claude Code, and hermes-agent. Once integrated, the AI will gain the ability to read and write your personal notes and attachments. In addition, all modifications made via MCP will be synchronized to your client devices in real-time via WebSocket.
For OAuth-protected MCP deployments with Stytch, see docs/runbook/mcp-oauth-stytch.md (简体中文, 繁體中文).
The following request headers are supported regardless of the transport mode used:
Authorization: Bearer <Your API Token> (obtained from the Copy API Config option in the WebGUI)X-Default-Vault-Name: <Vault Name> (specifies the default Vault name for MCP operations if no vault parameter is provided during a tool call)X-Client: <Client Type> (the type of client connecting to MCP, e.g., Cherry Studio, OpenClaw)X-Client-Version: <Client Version> (the version of the client connecting, e.g., 1.1)X-Client-Name: <Client Name> (the name of the client connecting, e.g., Mac)StreamableHTTP is the standard transport protocol in the MCP ecosystem. A single endpoint can handle all requests, making it more firewall-friendly. It is natively supported by newer MCP clients (such as Claude Code and hermes-agent).
http://<Your_Server_IP_or_Domain>:<Port>/api/mcpPOST (send requests/notifications), GET (listen for server-side push notifications), DELETE (terminate sessions)(Note: Please replace <ServerIP>, <Port>, <Token>, and <VaultName> with your actual information)
{
"mcpServers": {
"fns": {
"url": "http://<ServerIP>:<Port>/api/mcp",
"type": "http",
"headers": {
"Content-Type": "application/json",
"Authorization": "Bearer <Token>",
"X-Default-Vault-Name": "<VaultName>",
"X-Client": "<Client>",
"X-Client-Version": "<ClientVersion>",
"X-Client-Name": "<ClientName>"
}
}
}
}
SSE mode is the legacy transport protocol. It is fully retained to maintain backward compatibility, suitable for MCP clients that only support SSE (such as Cherry Studio).
http://<Your_Server_IP_or_Domain>:<Port>/api/mcp/sse(Note: Please replace <ServerIP>, <Port>, <Token>, and <VaultName> with your actual information)
{
"mcpServers": {
"fns": {
"url": "http://<ServerIP>:<Port>/api/mcp/sse",
"type": "sse",
"headers": {
"Content-Type": "application/json",
"Authorization": "Bearer <Token>",
"X-Default-Vault-Name": "<VaultName>",
"X-Client": "<Client>",
"X-Client-Version": "<ClientVersion>",
"X-Client-Name": "<ClientName>"
}
}
}
}
16,702 followers · starred Jul 2026
200 followers · starred Jul 2026
138 followers · starred Jun 2026
75 followers · starred Jan 2026
High-performance, low-latency note synchronization, online management, and remote REST API service platform.
Go
2,434
1,495 commits
updated Aug 14, 2026
简体中文 / English / 日本語 / 한국어 / 繁體中文
If you have any questions, please create an issue or join our Telegram group for help: https://t.me/obsidian_users
For users in Mainland China, it is recommended to use the Tencent cnb.cool mirror repository: https://cnb.cool/haierkeys/fast-note-sync-service
High-performance, low-latency note synchronization, online management, and remote REST API service platform
Built with Golang + Websocket + React
Data provisioning requires integration with the client plugin: Obsidian Fast Note Sync Plugin
🧰 Native MCP (Model Context Protocol) Support:
FNS can be integrated as an MCP server into compatible AI clients such as Cherry Studio and Cursor. This enables the AI to read and write your personal notes and attachments, with all changes synchronized across all clients in real-time.🚀 REST API Support:
💻 Web Admin Panel:
🔄 Multi-Device Note Synchronization:
Vaults.🖼️ Attachment Sync Support:
⚙️ Configuration Sync:
.obsidian configuration files.PDF reading progress synchronization.📝 Note History:
🗑️ Trash Bin:
🚫 Offline Synchronization Strategy:
🔗 Sharing Feature:
📂 Folder Sync:
🌳 Git Automation:
☁️ Multi-Storage Backup & One-way Mirror Sync:
🗄️ Multi-Database Support:
If you find this plugin useful and want to support its ongoing development, please support me in the following ways:
Protobuf transfer format to enhance synchronization efficiency.We are continuously improving, and here is our future development roadmap:
If you have suggestions for improvement or new ideas, feel free to share them with us by submitting an issue — we will carefully evaluate and adopt suitable ones.
We provide multiple installation methods. We highly recommend using the One-click Script or Docker.
Automatically detects the system environment and completes the installation and service registration.
bash <(curl -fsSL https://raw.githubusercontent.com/haierkeys/fast-note-sync-service/master/scripts/quest_install.sh)
For users in China, you can use the Tencent cnb.cool mirror source:
bash <(curl -fsSL https://cnb.cool/haierkeys/fast-note-sync-service/-/git/raw/master/scripts/quest_install.sh) --cnb
Main Script Behaviors:
/opt/fast-note by default and creates a global shortcut command fns in /usr/local/bin/fns.fns [install|uninstall|start|stop|status|update|menu]fns directly to enter the interactive menu, supporting install/upgrade, service control, startup configuration, and switching between GitHub and CNB mirrors.# 1. Pull Image
docker pull haierkeys/fast-note-sync-service:latest
# 2. Start Container
docker run -tid --name fast-note-sync-service \
-p 9000:9000 \
-v /data/fast-note-sync/storage/:/fast-note-sync/storage/ \
-v /data/fast-note-sync/config/:/fast-note-sync/config/ \
haierkeys/fast-note-sync-service:latest
Create the docker-compose.yaml file:
version: '3'
services:
fast-note-sync-service:
image: haierkeys/fast-note-sync-service:latest
container_name: fast-note-sync-service
restart: always
ports:
- "9000:9000" # RESTful API & WebSocket port (where /api/user/sync is the WebSocket interface address)
volumes:
- ./storage:/fast-note-sync/storage # Data storage
- ./config:/fast-note-sync/config # Configuration files
Start the service:
docker compose up -d
Download the latest version for your system from Releases, extract it, and run:
./fast-note-sync-service run -c config/config.yaml
http://{Server_IP}:9000 in your browser.user.register-is-enable: false in the configuration file)The default configuration file is config.yaml. The application automatically searches in the root directory or the config/ directory.
View the complete configuration example: config/config.yaml
View the complete configuration example: https-nginx-example.conf
FNS now natively supports MCP (Model Context Protocol) and provides both SSE and StreamableHTTP transport protocols.
You can integrate FNS as an MCP server directly into compatible AI clients like Cherry Studio, Cursor, Claude Code, and hermes-agent. Once integrated, the AI will gain the ability to read and write your personal notes and attachments. In addition, all modifications made via MCP will be synchronized to your client devices in real-time via WebSocket.
For OAuth-protected MCP deployments with Stytch, see docs/runbook/mcp-oauth-stytch.md (简体中文, 繁體中文).
The following request headers are supported regardless of the transport mode used:
Authorization: Bearer <Your API Token> (obtained from the Copy API Config option in the WebGUI)X-Default-Vault-Name: <Vault Name> (specifies the default Vault name for MCP operations if no vault parameter is provided during a tool call)X-Client: <Client Type> (the type of client connecting to MCP, e.g., Cherry Studio, OpenClaw)X-Client-Version: <Client Version> (the version of the client connecting, e.g., 1.1)X-Client-Name: <Client Name> (the name of the client connecting, e.g., Mac)StreamableHTTP is the standard transport protocol in the MCP ecosystem. A single endpoint can handle all requests, making it more firewall-friendly. It is natively supported by newer MCP clients (such as Claude Code and hermes-agent).
http://<Your_Server_IP_or_Domain>:<Port>/api/mcpPOST (send requests/notifications), GET (listen for server-side push notifications), DELETE (terminate sessions)(Note: Please replace <ServerIP>, <Port>, <Token>, and <VaultName> with your actual information)
{
"mcpServers": {
"fns": {
"url": "http://<ServerIP>:<Port>/api/mcp",
"type": "http",
"headers": {
"Content-Type": "application/json",
"Authorization": "Bearer <Token>",
"X-Default-Vault-Name": "<VaultName>",
"X-Client": "<Client>",
"X-Client-Version": "<ClientVersion>",
"X-Client-Name": "<ClientName>"
}
}
}
}
SSE mode is the legacy transport protocol. It is fully retained to maintain backward compatibility, suitable for MCP clients that only support SSE (such as Cherry Studio).
http://<Your_Server_IP_or_Domain>:<Port>/api/mcp/sse(Note: Please replace <ServerIP>, <Port>, <Token>, and <VaultName> with your actual information)
{
"mcpServers": {
"fns": {
"url": "http://<ServerIP>:<Port>/api/mcp/sse",
"type": "sse",
"headers": {
"Content-Type": "application/json",
"Authorization": "Bearer <Token>",
"X-Default-Vault-Name": "<VaultName>",
"X-Client": "<Client>",
"X-Client-Version": "<ClientVersion>",
"X-Client-Name": "<ClientName>"
}
}
}
}
16,702 followers · starred Jul 2026
200 followers · starred Jul 2026
138 followers · starred Jun 2026
75 followers · starred Jan 2026