简体中文 / English / 日本語 / 한국어 / 繁體中文
For issues, please open a new issue, or join our Telegram group for help: https://t.me/obsidian_users
For users in mainland China, we recommend using the Tencent cnb.cool mirror: https://cnb.cool/haierkeys/fast-note-sync-service
High-performance, low-latency note sync, online management, and remote REST API service platform
Built with Golang + WebSocket + SQLite + React
Data access requires the client plugin: Obsidian Fast Note Sync Plugin
🧰 MCP (Model Context Protocol) Native Support:
FNS can serve as an MCP server, connecting to compatible AI clients such as Cherry Studio and Cursor, enabling AI to read and write private notes and attachments, with all changes synced to all devices in real time via WebSocket.🚀 REST API Support:
💻 Web Management Panel:
🔄 Multi-device Note Sync:
🖼️ Attachment Sync Support:
⚙️ Config Sync:
.obsidian configuration files.PDF reading progress synchronization.📝 Note History:
🗑️ Recycle Bin:
🚫 Offline Sync Strategy:
🔗 Sharing Feature:
📂 Directory Sync:
🌳 Git Automation:
☁️ Multi-storage Backup & Unidirectional Mirror Sync:
If you find this project useful and want to support its continued development, please support me via:
| Ko-fi (Outside China) | WeChat Pay (China) | |
|---|---|---|
![]() | or | ![]() |
We are continuously improving. Here are our future development plans:
If you have suggestions for improvements or new ideas, feel free to share them by opening an issue — we will carefully evaluate and adopt suitable proposals.
We provide multiple installation methods. One-click script or Docker is recommended.
Automatically detects the system environment and completes installation and service registration.
bash <(curl -fsSL https://raw.githubusercontent.com/haierkeys/fast-note-sync-service/master/scripts/quest_install.sh)
Users in China can use the Tencent cnb.cool mirror:
bash <(curl -fsSL https://cnb.cool/haierkeys/fast-note-sync-service/-/git/raw/master/scripts/quest_install.sh) --cnb
Main script behavior:
/opt/fast-note by default, with a global shortcut command fns created at /usr/local/bin/fns.fns [install|uninstall|start|stop|status|update|menu]fns directly opens an interactive menu supporting install/upgrade, service control, boot startup configuration, and switching between GitHub/CNB mirrors.# 1. Pull the image
docker pull haierkeys/fast-note-sync-service:latest
# 2. Start the 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 a 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; /api/user/sync is the WebSocket endpoint
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 and run:
./fast-note-sync-service run -c config/config.yaml
http://{ServerIP}:9000 in your browser.user.register-is-enable: false in the configuration file)The default configuration file is config.yaml. The program will automatically look for it in the root directory or the config/ directory.
View the full configuration example: config/config.yaml
View the full configuration example: https-nginx-example.conf
FNS natively supports MCP (Model Context Protocol).
FNS can serve as an MCP server, connecting to compatible AI clients such as Cherry Studio and Cursor, enabling AI to read and write private notes and attachments, with all changes synced to all devices in real time via WebSocket.
FNS provides the MCP interface via the SSE protocol, with the following general parameters:
http://<your-server-ip-or-domain>:<port>/api/mcp/sseAuthorization: Bearer <your-api-token> (obtained from the "Copy API Configuration" in the WebGUI)X-Default-Vault-Name: <VaultName> (used to specify the default vault for MCP operations if the vault parameter is not provided in the tool call)Please refer to the following configuration in your MCP client:
(Note: 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>"
}
}
}
}