Install CoveSync
Download the binary for your platform from the releases page. No installer required on Linux — just a single executable.
1 Linux
Download covesync-linux-amd64, make it executable, and move it to your PATH:
chmod +x covesync-linux-amd64 sudo mv covesync-linux-amd64 /usr/local/bin/covesync
2 Windows
Run the CoveSync-Setup.exe installer. CoveSync will be added to your Start menu and configured to run as a Windows Service automatically.
3 macOS
Download the .dmg, open it, and drag CoveSync to Applications. On first launch, macOS may ask you to allow it in System Settings → Privacy & Security.
First launch
1 Start the daemon
On Linux, run covesync in a terminal. On Windows and macOS the service starts automatically after installation.
covesync
You'll see a line like:
CoveSync started. Web UI: http://localhost:8485
2 Open the web UI
Open http://localhost:8485 in your browser (this is the default port — you can change it in ⚙️ Settings). The web UI will load without any certificate warning.
The web UI is only accessible from the same machine. It is not reachable from other devices on your network.
Add a peer
Both devices must be on the same network (same WiFi or LAN) and both must be running CoveSync.
Windows users: peer discovery requires the network profile to be set to Private. Go to Settings → Network & Internet → [your connection] → Network profile and select Private. If it's set to Public, peers will not appear and trust pairing will fail. CoveSync shows a warning in the Network Status card when a public interface is detected.
1 Go to the Peers tab
Open the web UI on Device A and click Peers. You should see Device B listed as a discovered device within a few seconds.
2 Enter Device B's code
Click Trust on Device B's entry. A modal opens showing your own code and asking for Device B's code.
On Device B's web UI, go to Settings → Security and note the 6-digit trust code. Type it into the modal on Device A and click Establish Trust.
Device A will now show an Awaiting their trust badge next to Device B until Device B completes their side.
3 Device B enters Device A's code
On Device B, click Trust next to Device A. Enter Device A's 6-digit code (shown in Device A's Settings → Security) and click Establish Trust. Both devices now show a Trusted badge.
If Device B missed the prompt, click the Awaiting their trust badge on Device A — a dialog shows your current code so you can read it to the other person.
Android companion app
Note: The Android app requires at least one PC running CoveSync on the same network. Two Android devices cannot sync with each other directly.
1 Install and open the app
Install CoveSync from the Google Play Store. Open the app — it will begin discovering devices on your network automatically.
2 Trust your PC
Your PC should appear in the app's Peers list. Tap it, verify the fingerprint matches your PC's web UI → Settings fingerprint, then tap Trust.
Accept the incoming trust request on your PC's web UI.
3 Share a folder to Android
On your PC's web UI, go to a synced folder → Share with peer → select your Android device. Accept the share invitation in the Android app and choose a local folder.
Large file limit: The Android app skips files that exceed a configurable per-file size limit (default: 500 MB). Skipped files are logged but not deleted from the host — they stay available on your PC. To change the limit, go to Settings → Sync Limits in the app and tap Max file size.
Run CoveSync on startup
1 Linux — systemd user service
covesync systemd-install systemctl --user enable --now covesync
CoveSync will start automatically when you log in, without requiring root.
2 macOS — launchd
covesync launchd-install
This installs a LaunchAgent that starts CoveSync at login.
3 Windows
The Windows installer configures CoveSync as a Windows Service automatically. No extra steps needed.
Browse & open files
Click Browse next to any synced folder to open the folder browser. It shows the files and subfolders inside the synced directory.
📂 Double-click to open a file
Files whose extension is in the openable list (images, PDFs, documents, audio, video, and more) show a pointer cursor. Double-click one to open it in the default application on your computer — just like double-clicking in your file manager.
To customise which extensions are openable, go to ⚙️ Settings → File Browser, edit the comma-separated list, and click Save.
View what synced
Click History next to any folder to see a full log of sync events for that folder — newest first.
Each entry shows the file path, the action (created, modified, deleted, or conflict backup), file size, a partial hash, the modification time, and which peer it came from.
🔍 Filter the history
Type any text into the Filter box and press Enter (or click Filter) to search across file paths and peer names. The pager updates to show only matching events. Click Clear to go back to the full log.
Send clipboard to a peer
Copy text on one device and send it to any trusted peer on your LAN in one click. Content is delivered directly — nothing is stored, nothing logged to the cloud.
1 Copy some text
Copy text to your clipboard as you normally would (Ctrl+C / Cmd+C).
2 Select a peer and click Send
At the top of the right column in the web UI, select a peer from the Send Clipboard dropdown and click Send.
On first use, your browser may show a permission prompt: "Allow [site] to read your clipboard?" or "Allow to paste from clipboard?" — click Allow. This only appears once. After granting, Send works with a single click.
The status line shows ↑ Sent to [peer] · HH:MM on success.
3 Receiving
The receiving peer's web UI polls for incoming content every 3 seconds. When content arrives it is written directly to the system clipboard and the status shows ↓ Received from [peer] · HH:MM.
If the tab isn't focused when content arrives, the status will say ↓ From [peer] · tap to copy — click the status line to copy manually.
Clipboard blocked? Always open the UI via http://localhost:8485. Accessing via an IP address disables clipboard access (the browser's Clipboard API requires a secure context). If you clicked Don't Allow on the permission prompt, clear the site permission in your browser settings and try again.
Sync filters (ignore patterns)
CoveSync can skip files that match a list of glob patterns — useful for excluding OS metadata, editor temp files, and other noise you never want to sync.
Open ⚙️ Settings → Sync Filters. The textarea lists one pattern per line. Edit the list and click Save. Changes take effect on the next sync cycle.
📋 Default patterns
These six patterns are active out of the box:
.DS_Store Thumbs.db desktop.ini *.tmp *.temp ~$*
They cover macOS desktop metadata, Windows thumbnail and display caches, generic temp files, and Microsoft Office lock files (e.g. ~$report.docx).
✏️ Pattern syntax
Patterns use Go's filepath.Match glob syntax and are always matched case-insensitively:
*.tmp— any filename ending in.tmp~$*— any filename starting with~$.DS_Store— an exact filename matchbuild.log— matchesbuild.loganywhere in the folder tree
Patterns match against the filename only, not the full path. To exclude an entire directory, move it outside the synced folder instead.
Per-device setting: each device maintains its own ignore list independently. A pattern on your laptop does not affect which files a peer chooses to sync.
Restoring defaults: if you clear all patterns and want the defaults back, re-enter: .DS_Store, Thumbs.db, desktop.ini, *.tmp, *.temp, ~$*.
Platform compatibility
What CoveSync syncs
CoveSync syncs file content and last-modified timestamps only. The following are silently dropped:
- Extended attributes — macOS Finder tags, resource forks, and xattrs; Linux xattrs; Windows Alternate Data Streams (ADS)
- Symlinks — symbolic links are skipped entirely. Only the real files they point to (if inside the folder) are synced.
- File permissions — UNIX mode bits, ownership, and ACLs are not preserved.
macOS aliases and Windows .lnk shortcuts are regular data files from the filesystem's perspective and are synced, though they may not resolve correctly if the target path differs on the receiving device.
Windows filename restrictions
Windows prohibits certain filenames that are valid on Linux and macOS:
- Names containing a colon — e.g.
meeting: notes.txt - Names ending in a space or period — e.g.
draftorfile. - Reserved device names —
CON,PRN,AUX,NUL,COM1–COM9,LPT1–LPT9
Files with these names will silently fail to sync on Windows peers. The error is recorded in the daemon log (look for WARN pull) but is not shown as a UI error. The file remains intact on all non-Windows devices.
Recommendation: avoid these naming conventions in any folder shared with Windows peers.
Case sensitivity (Linux ↔ macOS / Windows)
Linux filesystems are case-sensitive — Readme.txt and readme.txt are two distinct files. macOS and Windows treat them as the same file.
If a Linux host contains two files whose names differ only in case, both are synced, but on a macOS or Windows peer they will collide — the second to arrive overwrites the first with no warning.
Recommendation: do not use same-name-different-case files in folders shared with macOS or Windows peers.
Files locked by another process (Windows)
On Linux and macOS CoveSync can read files that are open by another application. On Windows, exclusively-locked files (e.g. a .pst archive open in Outlook) cannot be read — CoveSync skips them silently and retries on the next sync cycle. A WARN cannot hash line appears in the daemon log.
Microsoft Office lock files (~$*.docx, etc.) are excluded by the default sync filter and are never transferred.
Unicode filenames including emoji, Chinese, Arabic, and accented characters are fully supported on all platforms. No configuration required.
Restart the daemon
If the daemon appears stuck or unresponsive, open ⚙️ Settings → Maintenance and click Restart Daemon.
The UI shows a reconnecting spinner while the process restarts and reloads automatically once the daemon is back online.
Note: The restart relies on a service manager bringing the process back. On Linux this requires the systemd user service to be set up. On macOS it requires the launchd agent. On Windows it requires the Windows Service installed by the installer. If you started the daemon manually from a terminal, the restart button will stop it but it will not come back automatically.