CNC Sync Guide

Set up watch folders, processing, and destination delivery with confidence.

This guide walks through how CNC Sync is organised, how to set up reusable destinations and processing setups, and how monitoring, staging, and manual catch-up behave in practice.

What CNC Sync Does

CNC Sync watches one or more local folders, optionally runs a local processing step, and delivers the prepared result to a reusable destination.

App Settings

Global behaviour for the app itself.

Destinations

Reusable named FTP, SFTP, SCP, Local Folder, or Network Share targets.

Processing Setups

Reusable processing rules including external scripts.

Watch Folders

The monitored folders that combine watch, processing, and destination settings.

Typical Setup Flow

  1. Create a Destination.
  2. Create a Processing Setup.
  3. Create a Watch Folder that points to a local watch folder and staging folder, then select the destination and processing setup it should use.
  4. Validate settings.
  5. Start monitoring.

App Settings

Use App Settings for behaviour that applies to the whole app:

  • Launch At Login: start CNC Sync when the user logs in.
  • Start Minimized: start hidden/minimized when supported on the current platform.
  • Import Settings...: browse for a settings.json file from another machine or previous installation and import it into the current app profile.
  • Validate Settings: check the current configuration for missing or invalid items.

Settings are saved automatically as you change them.

Imported settings replace the current profile configuration. Passwords and SSH key passphrases are stored in the local OS secret store, so after moving a settings file between machines you may need to re-enter those secrets on the new machine.

Destinations

A destination defines one reusable delivery target:

  • Destination Name: friendly label shown in selectors.
  • Remote Base Path: optional base path on the target such as /uploads.

Supported destination types:

  • FTP: host, port, optional anonymous mode, and username/password when needed.
  • SFTP: host, port, username, and either password or private-key authentication.
  • SCP: host, port, username, and either password or private-key authentication.
  • Local Folder: a normal local filesystem path.
  • Network Share: an SMB share such as a NAS or another computer on the network.

SSH destination authentication:

  • Password: standard username/password sign-in.
  • Private Key: key file path plus optional key passphrase.

Network Share notes:

  • On macOS, explicit sign-in to a Mac SMB share may require enabling that account under Windows File Sharing.
  • On Linux, SMB shares work best when they are already mounted by the desktop environment.
  • On Linux, explicit SMB username/password access may still require mounting the share first in the desktop file manager.
  • If a destination requires a VPN first, choose it in Required VPN.
  • VPN profiles used by CNC Sync must be able to connect automatically without prompting for user interaction.
  • If enabled, Check destination before starting VPN tries the destination directly first and only starts the VPN if direct access fails.
  • If enabled, Disconnect VPN When Finished disconnects a VPN only when CNC Sync had to connect it itself, and only after a short idle window.
  • FTP Data Mode can be set to Auto Passive, Passive, or Active depending on how fussy the destination FTP server is about data connections.

The effective remote path is built from the destination base path plus the watch profile additional remote path.

Example: destination base path /uploads and watch additional remote path /watch1 becomes /uploads/watch1.

Processing Setups

A processing setup defines what happens to a detected file or folder before upload.

Default Upload

This is the default passthrough option. The source item is copied into staging/output and the copied result is uploaded.

External Script

This runs a local script or executable before upload.

Custom script bundles can also be imported once for the whole app from the left side of the Processing Setups tab. After import, each processing setup still chooses its own local Script Path from the imported files.

  • Mode: choose ExternalScript.
  • Runner: choose how to launch the script: Auto, PowerShell, Bash, Python, Command, or Direct.
  • Script Path: the local file to execute.
  • Custom Script Source URL: a shared customer script source used by the left-side Check / Import action.
  • Arguments Template: arguments passed to the script at runtime.

Supported placeholders:

  • {sourcePath}: the detected source file or folder.
  • {outputPath}: the prepared output folder where processed files should be written.
  • {scriptPath}: the selected script path.

Any other text is passed through literally, which means you can add extra fixed arguments if your script expects them.

"{sourcePath}" "{outputPath}"

For example, if your script expects a literal text parameter after the normal source and output paths, you can write:

"{sourcePath}" "{outputPath}" "watch1"

In that case, the script receives the real source path, the real output path, and the literal text watch1.

The bundled legacy_revision script uses one extra flag to enable the CYC Y-coordinate update:

"{sourcePath}" "{outputPath}" --update-cyc-y

That extra --update-cyc-y text is not replaced. It is passed straight through to the script as written.

Script contract:

  • Exit code 0 means success.
  • Non-zero means failure.
  • Optional stdout line: OUTPUT_PATH=/path/to/final/output

If OUTPUT_PATH= is printed, CNC Sync uploads that folder. If not, it uploads the prepared output folder it already passed in.

Shared Custom Script Imports

  • Paste the shared link once into Custom Script Source URL in the left Processing Setups panel.
  • Click Check / Import.
  • CNC Sync imports the files into the local Scripts folder under Imported/CustomSource.
  • Each processing setup can then choose whichever imported local script it needs using Script Path.

Imported scripts stay local and are executed locally. Repeated checks only archive and replace files that actually changed. Unchanged files are left alone, and junk files such as .DS_Store, ._*, Thumbs.db, desktop.ini, and ehthumbs.db are ignored during import.

Watch Folders

A watch folder ties everything together.

  • Profile Name: friendly label for this watch profile.
  • Enabled: whether this profile participates in monitoring.
  • Watch Folder: local folder being watched.
  • Staging Folder: local folder used for prepared output.
  • Additional Remote Path: optional path appended under the selected destination base path.
  • Processing Setup: which processing rule to run.
  • Destination: which destination to upload to.
  • Required Quiet Time: how long files or folders must stay unchanged before processing starts.
  • Stability Check Interval: how often CNC Sync checks pending items to see if they are ready.

Monitoring

The monitoring area shows:

  • whether monitoring is running
  • which watch profiles are active
  • the current task
  • the last processing summary

Start begins folder monitoring. Stop stops folder monitoring.

If enabled watch profiles exist and settings validate successfully, the app can auto-start monitoring on launch.

Changes to monitoring-related settings are applied live by reloading monitoring automatically.

Manual Catch-Up

Manual Catch-Up is for reconciling missed uploads.

It uses the local staging folder as a retry outbox. It:

  • reads the selected watch profile
  • looks for items still waiting in staging because a previous delivery did not complete successfully
  • retries those staged items to the selected destination
  • removes staged items after a successful upload

Use this when the destination was unavailable, monitoring was stopped, or staged items are still waiting locally after a failed delivery.

Scheduled catch-up uses the same staged-outbox model. It can only retry items that made it into staging while CNC Sync was running, so it cannot detect and reprocess files that were created while the app was not running and never made it into staging.

Activity Log

The Activity tab shows recent events with:

  • time
  • source/profile
  • message

Timestamps include milliseconds so quick processing sequences are easier to follow.

The log text is selectable for copy/paste.

The same activity stream is also written to a text file in the app data folder. On Linux that is typically ~/.config/CNC Sync/activity.log, on macOS it is ~/Library/Application Support/CNC Sync/activity.log, and on Windows it is typically %AppData%\CNC Sync\activity.log.

Help / About

The Help / About tab includes:

  • setup reminders
  • destination and VPN notes
  • shared custom-script import reminders
  • a link to the project page
  • a link to the update log / GitHub releases page

Security Prompts

CNC Sync is not yet code signed on Windows and is not yet notarized on macOS, so the first install or first launch may trigger platform trust prompts.

Windows

If the installer is flagged, keep the download and use More info then Run anyway if SmartScreen appears.

macOS

If macOS blocks the installer or app, open System Settings > Privacy & Security and choose Open Anyway.

What It Means

These prompts are expected platform trust checks for unsigned software, not CNC Sync reporting that it found malware.

Notes

  • FTP timestamps are not relied on for catch-up decisions.
  • Finder can be misleading for FTP or SMB browsing and refresh; use a dedicated client or your normal file manager when verifying remote contents.
  • Metadata junk such as .DS_Store, ._*, Thumbs.db, desktop.ini, and ehthumbs.db is ignored during watching, staging, catch-up, and upload.
  • On Linux AppImage builds, make the file executable before first launch. Launch At Login uses the current AppImage path, so move it to its long-term location before enabling login startup.