AFT! v4.0 Is Finally Here!
Secure file-transfer automation (and more!) "as code" - rebuilt from the ground up
Syncplify AFT! v4.0 is now generally available. This is not an incremental release. Every line of code was rewritten: new engine, new architecture, new capabilities. If you have used any previous version of AFT!, the product you are upgrading to is a fundamentally different piece of software. And yet… 95% (or more) of the code you wrote for the old version 3.x will still run, unchanged, with this new v4.0!
Here is what changed, and why it matters.
The SyncJS library is now the common cross-product engine. Previous versions of AFT! had their own bespoke (and somewhat incompatible) SyncJS implementation. Starting with v4.0, every AFT! automation uses the new SyncJS engine shared library: the same engine that powers Syncplify Server! event handlers and R2FS! storage backend scripting tasks.
This is not a compatibility layer; it is a true unification. A script you write for AFT! will run on Syncplify Server! without modification (except for APIs that are product-specific by design), and vice versa. One scripting language. One API surface to learn. One VSCode extension to install.
Speaking of which: the SyncJS VSCode extension is already AFT!-aware. Install it, set syncjs.product to aft (which is the default), and you get full IntelliSense for every SyncJS built-in, every AFT!-specific extension (FsWatcher, RemoteWatcher, WaitForHaltSignal, Params, JobID), and the full SyncJS API surface. The extension also bundles MCP servers, so AI coding assistants like GitHub Copilot (etc) have accurate, real-time awareness of the AFT! scripting API.
Scripts can run long-lived jobs or one-shot executions. This is the design choice that opens the most doors. An AFT! script can run as a persistent process. WaitForHaltSignal() blocks the script until an operator stops it via the web UI or the REST API, which means scripts can react to events in real time rather than polling on a schedule. FsWatcher monitors local directories for file-system events (create, write, remove, rename, chmod) and fires a callback the moment something changes. RemoteWatcher does the same for remote directories. Both support recursive subdirectory tracking. Newly created subdirectories are covered automatically, with no extra logic required. Scheduled execution via a cron-compatible built-in scheduler is still fully supported for batch workloads. The two models coexist.
The VFS Library replaces hardcoded credentials. Connection profiles (SFTP, FTP/S, S3, Azure Blob, GCS, local filesystem) are defined once in the VFS Library with a name and tested independently. Scripts reference them by name using VirtualFSByName(). Credentials never appear in script code, and the same script works across environments by simply changing which named profile it references. This is the AFT! equivalent of the VFS Library concept that Syncplify Server! users already know well.
CopyToVFS/MoveToVFS transfer without touching local disk. When copying or moving a file from an SFTP server to an S3 bucket, AFT! streams it directly between the two endpoints. Nothing is staged locally. And if it’s a “move” operation, the source file is removed automatically after a successful transfer.
Named Secrets keep credentials out of scripts. Passwords, API keys, and other sensitive values are stored encrypted in AFT!’s secrets store and retrieved at runtime with GetSecret("secret-name"). They never appear in plain-text anywhere in the script.
The full SyncJS function library is available. That means SFTP, FTP/S, S3, Azure, and GCS client objects with a uniform upload/download API; fluent HTTP client for REST API calls; SQL database access; AMQP messaging (RabbitMQ and Azure Service Bus); PGP encryption and signing; HMAC signing and verification; CSV and XML parsing; email, Slack, Teams, Telegram, and Twilio notifications; process execution with output capture; encoding and compression; image processing; and TcpConnect for lightweight health checks. The 21 new SyncJS core functions announced last week are all available in AFT! v4 as well.
The admin UI has been completely redesigned and vastly improved. New dashboard, new script editor with syntax checking, cron job management, op log, license management, and settings, all rebuilt. Login is now protected by bcrypt-hashed passwords and TOTP-based two-factor authentication.
Migration from AFT! v3 is a single command. Run aft import-from-aft3 and your existing v3 JavaScript scripts are imported. They will require review, and likely some adaptation to the SyncJS API, but the import step eliminates the manual copy-paste work.
It ships as a single binary with no external dependencies. One file. No runtime, no sidecar processes. Drop it on Linux or Windows, run it interactively, or install it as a system service with one of the supplied installers, and it is operational. The binary is CGO-free and statically linked.
Come check out the new AFT! at syncplify.com!

