<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[Syncplify Developers' Blog]]></title><description><![CDATA[Release notes and blog by the developers at Syncplify.]]></description><link>https://blog.syncplify.com</link><image><url>https://substackcdn.com/image/fetch/$s_!9Dt2!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb33dc11f-1e7e-4d89-8614-c24873c70d3c_512x512.png</url><title>Syncplify Developers&apos; Blog</title><link>https://blog.syncplify.com</link></image><generator>Substack</generator><lastBuildDate>Thu, 30 Apr 2026 22:47:28 GMT</lastBuildDate><atom:link href="https://blog.syncplify.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Syncplify]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[syncplify@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[syncplify@substack.com]]></itunes:email><itunes:name><![CDATA[Syncplify]]></itunes:name></itunes:owner><itunes:author><![CDATA[Syncplify]]></itunes:author><googleplay:owner><![CDATA[syncplify@substack.com]]></googleplay:owner><googleplay:email><![CDATA[syncplify@substack.com]]></googleplay:email><googleplay:author><![CDATA[Syncplify]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[HA Deployments and the Safe-List: Don't Skip This Step]]></title><description><![CDATA[How one missing configuration entry can turn your load-balancer into a self-inflicted denial-of-service machine]]></description><link>https://blog.syncplify.com/p/ha-deployments-and-the-safe-list</link><guid isPermaLink="false">https://blog.syncplify.com/p/ha-deployments-and-the-safe-list</guid><dc:creator><![CDATA[Syncplify]]></dc:creator><pubDate>Wed, 29 Apr 2026 09:50:57 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/a0d0cafb-d435-4dce-bd12-0c98000c9918_6500x6500.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Load balancers are interesting network citizens. They connect, they probe, they disconnect, often without completing any authentication. That is <strong>exactly what they are designed to do</strong>. From a security standpoint, however, that pattern looks indistinguishable from a port scanner or a connection-flood attack.</p><p>Syncplify Server! has a built-in protection mechanism, called <em>Protector!</em>, that <strong>automatically block-lists IP addresses exhibiting suspicious behavior</strong>. It works brilliantly against actual attacks. Against your own load balancer, though, it will work just as well, and that is the problem. If your load balancer&#8217;s IP address is not in the <code>safe-list</code>, <em>Protector!</em> will eventually block it, and when that happens, every node behind that load balancer stops accepting connections. Not because the software failed. Because it did exactly what it was told.</p><p>The fix is a single configuration step: <strong>every IP address used by every load balancer in your HA deployment must go in the safe-list</strong>. Not the allow-list (which has entirely different semantics), not the block-list (obviously), the safe-list. Safe-listed addresses are never auto-blocked, regardless of how many times they connect and disconnect without authenticating. This is precisely what the safe-list was designed for. Full details on all three list types are in our <a href="https://kb.syncplify.com/books/syncplify-server/page/block-list-allow-list-and-safe-list">knowledge base</a>, alongside the complete <a href="https://kb.syncplify.com/books/syncplify-server/page/high-availability-ha-how-to-setup">HA setup guide</a>. If you are running a load-balanced HA cluster and have not checked this, now is a good time.</p>]]></content:encoded></item><item><title><![CDATA[Syncplify Server! Is Coming to Docker]]></title><description><![CDATA[A slightly less informal announcement...]]></description><link>https://blog.syncplify.com/p/syncplify-server-is-coming-to-docker</link><guid isPermaLink="false">https://blog.syncplify.com/p/syncplify-server-is-coming-to-docker</guid><dc:creator><![CDATA[Syncplify]]></dc:creator><pubDate>Sat, 25 Apr 2026 13:03:12 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!EFpx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e502e16-1233-42cd-8ba5-4e5c47474359_1153x1020.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>We have been listening. For a while now, customers and prospects have been asking whether Syncplify Server! can run inside a container. The answer will soon be &#8220;yes&#8221;. And we think (or at least hope) you will appreciate how we did it.</p><p>Containerizing a product like Syncplify Server! is not trivial. The server runs three cooperating processes: the SyngoDB database engine, the REST API and control plane, and one worker process per virtual site. These processes communicate over <em>loopback</em> addresses, which <strong>do not cross container network boundaries</strong>. Rather than rewiring the IPC layer entirely, we chose a monolith container model: all three processes share a single network namespace inside one container. Every <em>loopback</em> address works identically to bare metal, and IPC code didn&#8217;t need to be altered.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!EFpx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e502e16-1233-42cd-8ba5-4e5c47474359_1153x1020.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!EFpx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e502e16-1233-42cd-8ba5-4e5c47474359_1153x1020.png 424w, https://substackcdn.com/image/fetch/$s_!EFpx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e502e16-1233-42cd-8ba5-4e5c47474359_1153x1020.png 848w, https://substackcdn.com/image/fetch/$s_!EFpx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e502e16-1233-42cd-8ba5-4e5c47474359_1153x1020.png 1272w, https://substackcdn.com/image/fetch/$s_!EFpx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e502e16-1233-42cd-8ba5-4e5c47474359_1153x1020.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!EFpx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e502e16-1233-42cd-8ba5-4e5c47474359_1153x1020.png" width="1153" height="1020" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3e502e16-1233-42cd-8ba5-4e5c47474359_1153x1020.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1020,&quot;width&quot;:1153,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:158377,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://blog.syncplify.com/i/195402073?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e502e16-1233-42cd-8ba5-4e5c47474359_1153x1020.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!EFpx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e502e16-1233-42cd-8ba5-4e5c47474359_1153x1020.png 424w, https://substackcdn.com/image/fetch/$s_!EFpx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e502e16-1233-42cd-8ba5-4e5c47474359_1153x1020.png 848w, https://substackcdn.com/image/fetch/$s_!EFpx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e502e16-1233-42cd-8ba5-4e5c47474359_1153x1020.png 1272w, https://substackcdn.com/image/fetch/$s_!EFpx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e502e16-1233-42cd-8ba5-4e5c47474359_1153x1020.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">A glance of the containerized Syncplify Server! processes (courtesy of Portainer)</figcaption></figure></div><p>The bigger challenge was the worker lifecycle. On Linux, virtual site workers have always been managed by systemd. Inside a container there is no systemd. We built a <strong>small in-process supervisor that replaces systemd in container mode</strong>: it forks, monitors, and terminates worker processes directly, with graceful SIGTERM handling and a even a kill-timeout that mimics bare metal and VM operation. The switch is activated by a single environment variable.</p><p>The container image is built for both <code>linux/amd64</code> and <code>linux/arm64</code> and published as a multi-arch manifest on Docker Hub. Deployment is a single <code>docker compose up -d</code>. The data directory, log directory, and user &#8220;homes&#8221; are mounted from the host, so the license, configuration, and all virtual site data persist across container restarts and image updates.</p><p>It even support hybrid clustering, with some nodes running in bare-metal/VMs, and some other nodes running in/as containers!</p><p>We are in the final testing phase. The Docker image and a full deployment guide will ship soon with one of the upcoming release. Stay tuned.</p>]]></content:encoded></item><item><title><![CDATA[Container Support Coming Soon]]></title><description><![CDATA[You asked for it, we listened...]]></description><link>https://blog.syncplify.com/p/container-support-coming-soon</link><guid isPermaLink="false">https://blog.syncplify.com/p/container-support-coming-soon</guid><dc:creator><![CDATA[Syncplify]]></dc:creator><pubDate>Thu, 23 Apr 2026 23:59:06 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!E7E1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffcc58925-808b-463c-bca9-d4326bd3f214_813x520.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Yes, you&#8217;re not hallucinating, this is it:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!E7E1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffcc58925-808b-463c-bca9-d4326bd3f214_813x520.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!E7E1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffcc58925-808b-463c-bca9-d4326bd3f214_813x520.png 424w, https://substackcdn.com/image/fetch/$s_!E7E1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffcc58925-808b-463c-bca9-d4326bd3f214_813x520.png 848w, https://substackcdn.com/image/fetch/$s_!E7E1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffcc58925-808b-463c-bca9-d4326bd3f214_813x520.png 1272w, https://substackcdn.com/image/fetch/$s_!E7E1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffcc58925-808b-463c-bca9-d4326bd3f214_813x520.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!E7E1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffcc58925-808b-463c-bca9-d4326bd3f214_813x520.png" width="813" height="520" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fcc58925-808b-463c-bca9-d4326bd3f214_813x520.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:520,&quot;width&quot;:813,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:69382,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://blog.syncplify.com/i/195297404?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffcc58925-808b-463c-bca9-d4326bd3f214_813x520.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!E7E1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffcc58925-808b-463c-bca9-d4326bd3f214_813x520.png 424w, https://substackcdn.com/image/fetch/$s_!E7E1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffcc58925-808b-463c-bca9-d4326bd3f214_813x520.png 848w, https://substackcdn.com/image/fetch/$s_!E7E1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffcc58925-808b-463c-bca9-d4326bd3f214_813x520.png 1272w, https://substackcdn.com/image/fetch/$s_!E7E1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffcc58925-808b-463c-bca9-d4326bd3f214_813x520.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>When Syncplify Server! v7.5 is released (please, be patient just another little bit!!) it will come with an additional deployment option on top of the usual &#8220;download and install&#8221;: a <strong>docker container</strong> image.</p><p>Stay tuned for more&#8230;</p>]]></content:encoded></item><item><title><![CDATA[Syncplify Server! v7.1.3 released]]></title><description><![CDATA[Importance of this update: MINOR]]></description><link>https://blog.syncplify.com/p/syncplify-server-v713-released</link><guid isPermaLink="false">https://blog.syncplify.com/p/syncplify-server-v713-released</guid><dc:creator><![CDATA[Syncplify]]></dc:creator><pubDate>Wed, 22 Apr 2026 12:40:33 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/bf64db4e-4eab-4cd0-a0d4-3c7f3a6d7d5c_2501x2500.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>We are happy to announce that we have just released a new version of our flagship software product, Syncplify Server!</p><h4><strong>What&#8217;s changed?</strong></h4><ul><li><p>Upgraded back-end SyngoDB server to version 6.2.3</p></li><li><p>Fixed several accessibilty issues in the WebClient! UI</p></li><li><p>Fixed a few minor bugs to all 4 UIs (Setup, SuperAdmin, Admin, and WebClient!)</p></li></ul><p>Please, also read <a href="https://blog.syncplify.com/p/note-about-all-v6-upgrades">this note</a> which pertains to all updates/upgrades. And, as usual, you can <a href="https://syngo.to/download">download the most recent release from our website</a>.</p><p>Thank you all for trusting our software with your secure file transfers!</p>]]></content:encoded></item><item><title><![CDATA[We put our new HA cluster through hell...]]></title><description><![CDATA[Spoiler alert: it didn't flinch :)]]></description><link>https://blog.syncplify.com/p/we-put-our-new-ha-cluster-through</link><guid isPermaLink="false">https://blog.syncplify.com/p/we-put-our-new-ha-cluster-through</guid><dc:creator><![CDATA[Syncplify]]></dc:creator><pubDate>Tue, 21 Apr 2026 10:44:45 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!-2sj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F213e1a9c-2f4a-49d4-ac3e-10c8254ed7e3_1893x1193.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>At Syncplify, we don&#8217;t test our software the easy way.</p><p>Meet <code>grinder</code>, our in-house multi-protocol stress testing utility. It doesn&#8217;t just push data at a server as fast as the network allows. It simulates the worst real-world conditions imaginable: connection drops, jitter, backoff cycles, the full chaos of a production environment having a very bad day. Two instances, each hammering a different node of the same cluster simultaneously, with 10 concurrent connections each and a 50MB buffer per session.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!IR1O!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62c67a18-7aa3-4685-abd6-75aabb65df4c_1915x1150.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!IR1O!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62c67a18-7aa3-4685-abd6-75aabb65df4c_1915x1150.png 424w, https://substackcdn.com/image/fetch/$s_!IR1O!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62c67a18-7aa3-4685-abd6-75aabb65df4c_1915x1150.png 848w, https://substackcdn.com/image/fetch/$s_!IR1O!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62c67a18-7aa3-4685-abd6-75aabb65df4c_1915x1150.png 1272w, https://substackcdn.com/image/fetch/$s_!IR1O!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62c67a18-7aa3-4685-abd6-75aabb65df4c_1915x1150.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!IR1O!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62c67a18-7aa3-4685-abd6-75aabb65df4c_1915x1150.png" width="1456" height="874" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/62c67a18-7aa3-4685-abd6-75aabb65df4c_1915x1150.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:874,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:134328,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://blog.syncplify.com/i/194899665?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62c67a18-7aa3-4685-abd6-75aabb65df4c_1915x1150.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!IR1O!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62c67a18-7aa3-4685-abd6-75aabb65df4c_1915x1150.png 424w, https://substackcdn.com/image/fetch/$s_!IR1O!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62c67a18-7aa3-4685-abd6-75aabb65df4c_1915x1150.png 848w, https://substackcdn.com/image/fetch/$s_!IR1O!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62c67a18-7aa3-4685-abd6-75aabb65df4c_1915x1150.png 1272w, https://substackcdn.com/image/fetch/$s_!IR1O!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62c67a18-7aa3-4685-abd6-75aabb65df4c_1915x1150.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Two <code>grinder</code> instances in action simultaneously</figcaption></figure></div><p>In short: <code>grinder</code> is every SFTP server&#8217;s nightmare. And we pointed two of them at a two-node Syncplify Server! v7.5.0 HA cluster running our brand-new clustering subsystem.</p><p>The result? Completely smooth. Rock stable. Not a single crack.</p><p>Node one held at <strong>426 MiB/s</strong>. Node two at <strong>341 MiB/s</strong>. Combined throughput north of <strong>750 MiB/s</strong> (that&#8217;s mebibytes per second, not megabits!) sustained across both nodes simultaneously, under full <code>grinder</code> conditions, while the HA subsystem handled synchronization in the background without breaking a sweat.</p><p>The dashboard tells the story clearly: 30-40 concurrent active sessions across both nodes, uploads and downloads running in parallel, data transfer peaking near 1,000 MiB/s on individual bursts. Zero rejected sessions. Zero instability.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-2sj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F213e1a9c-2f4a-49d4-ac3e-10c8254ed7e3_1893x1193.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-2sj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F213e1a9c-2f4a-49d4-ac3e-10c8254ed7e3_1893x1193.png 424w, https://substackcdn.com/image/fetch/$s_!-2sj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F213e1a9c-2f4a-49d4-ac3e-10c8254ed7e3_1893x1193.png 848w, https://substackcdn.com/image/fetch/$s_!-2sj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F213e1a9c-2f4a-49d4-ac3e-10c8254ed7e3_1893x1193.png 1272w, https://substackcdn.com/image/fetch/$s_!-2sj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F213e1a9c-2f4a-49d4-ac3e-10c8254ed7e3_1893x1193.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-2sj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F213e1a9c-2f4a-49d4-ac3e-10c8254ed7e3_1893x1193.png" width="1456" height="918" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/213e1a9c-2f4a-49d4-ac3e-10c8254ed7e3_1893x1193.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:918,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:460800,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.syncplify.com/i/194899665?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F213e1a9c-2f4a-49d4-ac3e-10c8254ed7e3_1893x1193.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!-2sj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F213e1a9c-2f4a-49d4-ac3e-10c8254ed7e3_1893x1193.png 424w, https://substackcdn.com/image/fetch/$s_!-2sj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F213e1a9c-2f4a-49d4-ac3e-10c8254ed7e3_1893x1193.png 848w, https://substackcdn.com/image/fetch/$s_!-2sj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F213e1a9c-2f4a-49d4-ac3e-10c8254ed7e3_1893x1193.png 1272w, https://substackcdn.com/image/fetch/$s_!-2sj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F213e1a9c-2f4a-49d4-ac3e-10c8254ed7e3_1893x1193.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This is the same <strong>new HA algorithm we teased recently</strong>, the one we rebuilt from scratch to handle time drift, fast catch-up after node inactivity, and per-node per-site draining with full observability. Under <code>grinder</code> load, it performed exactly as designed.</p><p>We&#8217;ll have more to share soon, including the full release details. But if you run Syncplify Server! in a high-availability deployment you&#8217;ll definitely want to deploy this new version when it becomes available.</p>]]></content:encoded></item><item><title><![CDATA[Syncplify Server! v6.2.60 released]]></title><description><![CDATA[Status of this update: for HA clusters only | LLTS release]]></description><link>https://blog.syncplify.com/p/syncplify-server-v6260-released</link><guid isPermaLink="false">https://blog.syncplify.com/p/syncplify-server-v6260-released</guid><dc:creator><![CDATA[Syncplify]]></dc:creator><pubDate>Mon, 20 Apr 2026 16:30:02 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/8c63092d-ae8a-491d-aba4-93ae0e17f35b_500x500.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>This is <strong>not a routine release</strong>.</p><p>Syncplify Server! v6.x has been retired and is under <strong>Limited Long-Term Support (<a href="https://kb.syncplify.com/books/faq-popular-topics/page/what-is-llts-limited-long-term-support">LLTS</a>)</strong>. Under normal circumstances, no new v6 builds would be produced. This release is an exception, made exclusively because a critical defect affecting some but not all HA (high-availability) clusters warranted a backport.</p><h4>What&#8217;s in this release</h4><ul><li><p><strong>Critical fix (backported from v7):</strong> Corrected an HA node communication defect that could (in some limited cases) cause cluster nodes to exchange excessive inter-node traffic, consuming significant network bandwidth while performing no useful work. In severe cases this could degrade the cluster performance.</p></li></ul><p>That&#8217;s it. There are no new features, no other fixes, and no roadmap changes. This is a surgical release for one reason only.</p><h4>A reminder about v6 support status</h4><p><strong>Version 6 is retired</strong>. LLTS means we address critical defects when the impact is severe enough to justify it. It does not mean v6 is back on the active development track, and it does not mean future issues will always receive backports.</p><p>If you are running v6, the right long-term answer remains the same: <strong>upgrade to v7.</strong> It is more secure, more capable, and actively maintained. Every day on v6 is a day without the improvements, protections, and fixes that ship continuously in v7.</p><p>If you are running an HA cluster on v6 and cannot upgrade immediately, apply this release. Then make upgrading to v7 your next scheduled priority.</p><p>You can <a href="https://syngo.to/download">download the most recent releases from our website</a>.</p><p>Thank you for your continued trust in Syncplify.</p>]]></content:encoded></item><item><title><![CDATA[High Availability, Redesigned From The Ground Up]]></title><description><![CDATA[What the new HA engine means for your Syncplify Server! deployments]]></description><link>https://blog.syncplify.com/p/high-availability-redesigned-from</link><guid isPermaLink="false">https://blog.syncplify.com/p/high-availability-redesigned-from</guid><dc:creator><![CDATA[Syncplify]]></dc:creator><pubDate>Mon, 20 Apr 2026 15:16:12 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!7Xhm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc7d2e79-e1af-4491-8dd4-c05b3f749a78_1871x776.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>High Availability is <strong>one of the hardest problems</strong> in distributed systems engineering. Not because the individual mechanisms are exotic, but because the interactions between them, under the full range of real-world conditions, are subtle in ways that only reveal themselves over time. Clock drift that only appears during a DST transition. A network partition that heals in the middle of a pull cycle. A node that crashes between writing a change to the log and pushing it to peers.</p><p>The first generation of Syncplify Server!&#8217;s HA subsystem was built incrementally, as the product grew and as customer deployments grew more ambitious. It worked. But four years of production data, support cases, and internal tooling gave us a precise catalog of the edge cases it handled imperfectly and the operational experiences that were harder than they needed to be. Rather than continue grafting improvements onto a design which foundational assumptions were no longer sound, we made the decision to <strong>rewrite the entire HA subsystem from scratch</strong>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7Xhm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc7d2e79-e1af-4491-8dd4-c05b3f749a78_1871x776.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7Xhm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc7d2e79-e1af-4491-8dd4-c05b3f749a78_1871x776.png 424w, https://substackcdn.com/image/fetch/$s_!7Xhm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc7d2e79-e1af-4491-8dd4-c05b3f749a78_1871x776.png 848w, https://substackcdn.com/image/fetch/$s_!7Xhm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc7d2e79-e1af-4491-8dd4-c05b3f749a78_1871x776.png 1272w, https://substackcdn.com/image/fetch/$s_!7Xhm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc7d2e79-e1af-4491-8dd4-c05b3f749a78_1871x776.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7Xhm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc7d2e79-e1af-4491-8dd4-c05b3f749a78_1871x776.png" width="1456" height="604" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dc7d2e79-e1af-4491-8dd4-c05b3f749a78_1871x776.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:604,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:117143,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://blog.syncplify.com/i/194806269?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc7d2e79-e1af-4491-8dd4-c05b3f749a78_1871x776.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!7Xhm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc7d2e79-e1af-4491-8dd4-c05b3f749a78_1871x776.png 424w, https://substackcdn.com/image/fetch/$s_!7Xhm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc7d2e79-e1af-4491-8dd4-c05b3f749a78_1871x776.png 848w, https://substackcdn.com/image/fetch/$s_!7Xhm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc7d2e79-e1af-4491-8dd4-c05b3f749a78_1871x776.png 1272w, https://substackcdn.com/image/fetch/$s_!7Xhm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc7d2e79-e1af-4491-8dd4-c05b3f749a78_1871x776.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Preview of the &#8220;HA observability&#8221; UI section coming with the new HA subsystem</figcaption></figure></div><p>This is not a reversal. It&#8217;s engineering maturity. Here&#8217;s what changes.</p><h3>Automatic Recovery From Node Failures</h3><p>When a node goes offline, the current implementation keeps it marked offline until the cluster is explicitly told to reset it. A transient hiccup, something that resolved itself in 30 seconds, can still require administrative intervention to clear.</p><p>The <strong>new engine recovers automatically</strong>. When an offline node comes back, the cluster detects it, catches it up on any missed changes, and resumes normal operation. No manual steps, no scheduled tasks to babysit.</p><p>For most customers on stable infrastructure, this will never matter. For customers running in cloud environments with occasional transient connectivity events, it matters every week.</p><h3>A Dedicated Heartbeat, Separate From Data Sync</h3><p>The existing subsystem infers node health from whether data synchronization succeeds. If a node has nothing new to sync, there is no communication at all, and silence is indistinguishable from unavailability.</p><p>The new engine introduces a lightweight, <strong>continuous heartbeat that runs independently of data replication</strong>. The cluster always has an accurate, current picture of which nodes are reachable, regardless of whether any data has changed recently.</p><h3>Continuous Clock Verification</h3><p>All timestamp-based HA implementations require synchronized clocks. The new engine goes further: it <strong>continuously verifies clock accuracy continuously during operation</strong>, not just at startup, and it can detect when a specific node is the one drifting, rather than only detecting that a difference exists. A node that determines it is the source of drift can self-quarantine from pushing changes, preventing incorrect data from propagating.</p><h3>Stronger Inter-Node Authentication</h3><p>Every inter-node request in the new design is <strong>cryptographically signed</strong>, covering the full request body. A timestamp embedded in every signature prevents replay attacks. Combined with TLS transport, this closes a class of inter-node threat scenarios that the previous implementation did not fully address.</p><h3>A Wire Format That Survives Rolling Upgrades</h3><p>The previous implementation used a binary encoding that fails silently when the data structures on two nodes diverge, as they inevitably do during an upgrade. The new design uses a versioned, human-readable wire format. Unknown fields are ignored gracefully. Protocol version mismatches are detected and reported cleanly rather than causing silent data corruption.</p><h3>Automatic Tombstone Purging</h3><p>Deletion records used to accumulate indefinitely, requiring manual cleanup. The new engine purges them automatically on a configurable schedule. A node that has been offline long enough to miss the purge window is handled gracefully on reconnection, with no operator involvement required.</p><h3>The Worker Is Simpler</h3><p>In the current design, the worker process participates in HA replication with its own sync cycle and its own database connections for that purpose. In the new design, replication is an <strong>exclusive responsibility of the </strong><em><strong>ss-webrest</strong></em><strong> process</strong>. The worker is notified of relevant changes via IPC and reloads only what changed. Its behavior is identical whether HA is enabled or not.</p><h3>What Does Not Change</h3><p>The behavioral contract is preserved. Two-node active-active HA, the same replicated collections, the same operational model. The upgrade path from the current implementation will be clear and documented.</p><p>We will publish more detail, including the migration procedure for existing clusters, closer to the release date. If your deployment has specific edge cases you want to make sure we have covered, or <strong>if you&#8217;re interested in BETA-TESTING this new HA approach</strong>, please reach out to us directly via <a href="https://syngo.to/support">https://syngo.to/support</a>.</p>]]></content:encoded></item><item><title><![CDATA[Enterprise-grade Observability For HA Clusters]]></title><description><![CDATA[Coming soon to Syncplify Server! v7]]></description><link>https://blog.syncplify.com/p/enterprise-grade-observability-for</link><guid isPermaLink="false">https://blog.syncplify.com/p/enterprise-grade-observability-for</guid><dc:creator><![CDATA[Syncplify]]></dc:creator><pubDate>Sun, 19 Apr 2026 10:26:27 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!3L8v!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42818a50-5d6d-4f7b-8a88-2dd915ac2890_1822x787.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>We&#8217;ve been quietly <strong>rethinking how Syncplify Server! v7 handles HA clusters</strong>, from the ground up.</p><p>Not a cosmetic refresh. A <strong>complete overhaul of the synchronization algorithm</strong>, with meaningful gains in speed and resource efficiency, plus first-class handling of edge cases that were simply not on the radar before: time drift, fast catch-up after extended node inactivity, and elegant <strong>per-node, per-site draining with full observability</strong>.</p><p>Speaking of observability, here&#8217;s a sneak peek at where things are headed:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!3L8v!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42818a50-5d6d-4f7b-8a88-2dd915ac2890_1822x787.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3L8v!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42818a50-5d6d-4f7b-8a88-2dd915ac2890_1822x787.png 424w, https://substackcdn.com/image/fetch/$s_!3L8v!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42818a50-5d6d-4f7b-8a88-2dd915ac2890_1822x787.png 848w, https://substackcdn.com/image/fetch/$s_!3L8v!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42818a50-5d6d-4f7b-8a88-2dd915ac2890_1822x787.png 1272w, https://substackcdn.com/image/fetch/$s_!3L8v!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42818a50-5d6d-4f7b-8a88-2dd915ac2890_1822x787.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3L8v!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42818a50-5d6d-4f7b-8a88-2dd915ac2890_1822x787.png" width="1456" height="629" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/42818a50-5d6d-4f7b-8a88-2dd915ac2890_1822x787.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:629,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:127695,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://blog.syncplify.com/i/194681285?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42818a50-5d6d-4f7b-8a88-2dd915ac2890_1822x787.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!3L8v!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42818a50-5d6d-4f7b-8a88-2dd915ac2890_1822x787.png 424w, https://substackcdn.com/image/fetch/$s_!3L8v!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42818a50-5d6d-4f7b-8a88-2dd915ac2890_1822x787.png 848w, https://substackcdn.com/image/fetch/$s_!3L8v!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42818a50-5d6d-4f7b-8a88-2dd915ac2890_1822x787.png 1272w, https://substackcdn.com/image/fetch/$s_!3L8v!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42818a50-5d6d-4f7b-8a88-2dd915ac2890_1822x787.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>No release date to announce yet. But if HA deployments matter to your infrastructure, this one is worth keeping an eye on.</p>]]></content:encoded></item><item><title><![CDATA[Syncplify R2FS! v2.0.3 released]]></title><description><![CDATA[Importance of this update: NORMAL]]></description><link>https://blog.syncplify.com/p/syncplify-r2fs-v203-released</link><guid isPermaLink="false">https://blog.syncplify.com/p/syncplify-r2fs-v203-released</guid><dc:creator><![CDATA[Syncplify]]></dc:creator><pubDate>Fri, 17 Apr 2026 11:20:51 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/d44195e8-9b38-4d00-88ba-34446798fd2e_2501x2534.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>We are happy to announce that we have just released a new version of our reverse-remote file system add-on for Syncplify Server!: R2FS!</p><h4><strong>What&#8217;s changed?</strong></h4><ul><li><p>Vastly improved the <strong>VFS Configuration</strong> section in the Admin UI, its user experience (UX) is now much cleaner and user-friendly</p></li></ul><p>As usual, you can <a href="https://syngo.to/download">download the most recent release from our website</a>.</p><p>Thank you all for trusting our software with your secure file transfers!</p>]]></content:encoded></item><item><title><![CDATA[Syncplify Server! v7.1.2 released]]></title><description><![CDATA[Importance of this update: NORMAL (HIGH if you run it in HA)]]></description><link>https://blog.syncplify.com/p/syncplify-server-v712-released</link><guid isPermaLink="false">https://blog.syncplify.com/p/syncplify-server-v712-released</guid><dc:creator><![CDATA[Syncplify]]></dc:creator><pubDate>Wed, 15 Apr 2026 18:22:38 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/b19f254e-8d12-4c31-8f24-075a752ef015_2501x2500.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>We are happy to announce that we have just released a new version of our flagship software product, Syncplify Server!</p><h4><strong>What&#8217;s changed?</strong></h4><ul><li><p>Fixed one critical bug that could cause mis-mapping of the REST API port for inter-node communication and synchronization between HA (high-availability) nodes belonging to the same set</p></li><li><p>Made setting permissions onto shared objects (files and folders) in WebClient! much clearer and easy to understand</p></li><li><p>Several other &#8220;quality of life&#8221; improvements to WebClient!, including but not limited to, a convenient &#8220;refresh&#8221; button, a more consistent editing experience for &#8220;self&#8221; (own profile), the ability to set custom colors (light and dark) for WebClient!&#8217;s title and disclaimer, and a few other accessibility improvements</p></li><li><p>Block-list items are now included in backup/restore operations (NEW!)</p></li><li><p>OTP inputs on all 3 UIs are now auto-focused if/when they appear</p></li><li><p>Vastly improved SMTP configuration and testing</p></li><li><p>Several more small bug-fixes to all 3 UIs (SuperAdmin, Admin, and WebClient!)</p></li></ul><p>Please, also read <a href="https://blog.syncplify.com/p/note-about-all-v6-upgrades">this note</a> which pertains to all updates/upgrades. And, as usual, you can <a href="https://syngo.to/download">download the most recent release from our website</a>.</p><p>Thank you all for trusting our software with your secure file transfers!</p>]]></content:encoded></item><item><title><![CDATA[AFT! v4.0 Is Finally Here!]]></title><description><![CDATA[File-transfer automation as Code, rebuilt from the ground up]]></description><link>https://blog.syncplify.com/p/aft-v40-is-finally-here</link><guid isPermaLink="false">https://blog.syncplify.com/p/aft-v40-is-finally-here</guid><dc:creator><![CDATA[Syncplify]]></dc:creator><pubDate>Wed, 15 Apr 2026 01:40:05 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/ba8efa4a-fb19-4e97-9050-17553afd5c84_1623x1050.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Syncplify AFT! v4.0 is now generally available. This is not an incremental release. Every line of code was rewritten: <strong>new engine, new architecture, new capabilities</strong>. If you have used any previous version of AFT!, the product you are upgrading to is a fundamentally different piece of software. And yet&#8230; <strong>95% (or more) of the code you wrote for the old version 3.x will still run, unchanged, with this new v4.0!</strong></p><p>Here is what changed, and why it matters.</p><p><strong>The SyncJS library is now the common cross-product engine.</strong> Previous versions of AFT! had their own <em>bespoke (and somewhat incompatible) SyncJS implementation</em>. 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.</p><p>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.</p><p>Speaking of which: the <a href="https://marketplace.visualstudio.com/items?itemName=syncplify.syncjs">SyncJS VSCode extension</a> is already AFT!-aware. Install it, set <code>syncjs.product</code> to <code>aft</code> (which is the default), and you get full IntelliSense for every SyncJS built-in, every AFT!-specific extension (<code>FsWatcher</code>, <code>RemoteWatcher</code>, <code>WaitForHaltSignal</code>, <code>Params</code>, <code>JobID</code>), and the full SyncJS API surface. The extension also bundles <strong>MCP servers</strong>, so AI coding assistants like GitHub Copilot (etc) have accurate, real-time awareness of the AFT! scripting API.</p><p><strong>Scripts can run long-lived jobs or one-shot executions.</strong> This is the design choice that opens the most doors. An AFT! script can run as a persistent process. <code>WaitForHaltSignal()</code> 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. <code>FsWatcher</code> monitors local directories for file-system events (create, write, remove, rename, chmod) and fires a callback the moment something changes. <code>RemoteWatcher</code> 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.</p><p><strong>The VFS Library replaces hardcoded credentials.</strong> 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 <code>VirtualFSByName()</code>. 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.</p><p><code>CopyToVFS/MoveToVFS</code><strong> transfer without touching local disk.</strong> 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&#8217;s a &#8220;move&#8221; operation, the source file is removed automatically after a successful transfer.</p><p><strong>Named Secrets keep credentials out of scripts.</strong> Passwords, API keys, and other sensitive values are stored encrypted in AFT!&#8217;s secrets store and retrieved at runtime with <code>GetSecret("secret-name")</code>. They never appear in plain-text anywhere in the script.</p><p><strong>The full SyncJS function library is available.</strong> That means SFTP, FTP/S, S3, Azure, and GCS client objects with a uniform upload/download API; fluent HTTP client for REST API calls; <strong>SQL</strong> database access; AMQP messaging (RabbitMQ and Azure Service Bus); <strong>PGP</strong> encryption and signing; HMAC signing and verification; <strong>CSV and XML</strong> parsing; email, Slack, <strong>Teams</strong>, <strong>Telegram</strong>, and Twilio notifications; <strong>process execution with output capture</strong>; encoding and compression; image processing; and <code>TcpConnect</code> for lightweight health checks. The <a href="https://blog.syncplify.com/p/21-new-functions-in-syncjs-core">21 new SyncJS core functions</a> announced last week are all available in AFT! v4 as well.</p><p><strong>The admin UI has been completely redesigned and vastly improved.</strong> 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.</p><p><strong>Migration from AFT! v3 is a single command.</strong> Run <code>aft import-from-aft3</code> 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.</p><p><strong>It ships as a single binary with no external dependencies.</strong> 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.</p><p>Come check out <a href="https://www.syncplify.com/syncplify-aft">the new AFT! at syncplify.com</a>!</p>]]></content:encoded></item><item><title><![CDATA[Syncplify R2FS! v2.0.2 released]]></title><description><![CDATA[Importance of this update: MINOR]]></description><link>https://blog.syncplify.com/p/syncplify-r2fs-v202-released</link><guid isPermaLink="false">https://blog.syncplify.com/p/syncplify-r2fs-v202-released</guid><dc:creator><![CDATA[Syncplify]]></dc:creator><pubDate>Mon, 13 Apr 2026 01:11:35 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/23c5c32d-c8cc-487d-be7e-832a5ac16fc4_2501x2534.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>We are glad to announce that we have just released a new version of our reverse-remote file system add-on for Syncplify Server!: R2FS!</p><h4><strong>What&#8217;s changed?</strong></h4><ul><li><p>Fixed a minor issue in the installer (not the software itself) that wasn&#8217;t able to correctly identify updates/upgrades for fully-licensed instances.</p></li></ul><p>As usual, you can <a href="https://syngo.to/download">download the most recent release from our website</a>.</p><p>Thank you all for trusting our software with your secure file transfers!</p>]]></content:encoded></item><item><title><![CDATA[AFT! v4.0.0 Is Coming Soon!]]></title><description><![CDATA[First major AFT! release in four years!]]></description><link>https://blog.syncplify.com/p/aft-v400-is-coming-soon</link><guid isPermaLink="false">https://blog.syncplify.com/p/aft-v400-is-coming-soon</guid><dc:creator><![CDATA[Syncplify]]></dc:creator><pubDate>Thu, 09 Apr 2026 09:54:12 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Il1i!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3283a05-59b9-40dc-a256-974ca844ed5c_1818x738.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Here&#8217;s a preliminary sneak-peek of the new AFT! v4.0.0 dashboard:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Il1i!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3283a05-59b9-40dc-a256-974ca844ed5c_1818x738.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Il1i!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3283a05-59b9-40dc-a256-974ca844ed5c_1818x738.png 424w, https://substackcdn.com/image/fetch/$s_!Il1i!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3283a05-59b9-40dc-a256-974ca844ed5c_1818x738.png 848w, https://substackcdn.com/image/fetch/$s_!Il1i!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3283a05-59b9-40dc-a256-974ca844ed5c_1818x738.png 1272w, https://substackcdn.com/image/fetch/$s_!Il1i!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3283a05-59b9-40dc-a256-974ca844ed5c_1818x738.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Il1i!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3283a05-59b9-40dc-a256-974ca844ed5c_1818x738.png" width="1456" height="591" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f3283a05-59b9-40dc-a256-974ca844ed5c_1818x738.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:591,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:99842,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://blog.syncplify.com/i/193596225?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3283a05-59b9-40dc-a256-974ca844ed5c_1818x738.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Il1i!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3283a05-59b9-40dc-a256-974ca844ed5c_1818x738.png 424w, https://substackcdn.com/image/fetch/$s_!Il1i!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3283a05-59b9-40dc-a256-974ca844ed5c_1818x738.png 848w, https://substackcdn.com/image/fetch/$s_!Il1i!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3283a05-59b9-40dc-a256-974ca844ed5c_1818x738.png 1272w, https://substackcdn.com/image/fetch/$s_!Il1i!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3283a05-59b9-40dc-a256-974ca844ed5c_1818x738.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Soon, soon, soon!</p>]]></content:encoded></item><item><title><![CDATA[21 New Functions In SyncJS Core]]></title><description><![CDATA[From HMAC signing to CSV parsing, and so much more!]]></description><link>https://blog.syncplify.com/p/21-new-functions-in-syncjs-core</link><guid isPermaLink="false">https://blog.syncplify.com/p/21-new-functions-in-syncjs-core</guid><dc:creator><![CDATA[Syncplify]]></dc:creator><pubDate>Wed, 08 Apr 2026 13:04:02 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/dc5f673c-6e5a-4db3-b400-f7daead8a3ac_683x175.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>SyncJS just got <strong>21 new core functions</strong>, available across Syncplify Server!, AFT!, and R2FS!. All of them. No flags, no tiers. If your product is up to date <em>(Server v7.1.1, R2FS! v2.0.0, and soon to be released AFT! v4.0.0)</em>, every function listed here is available in every script you write today.</p><p>Here is the complete addition:</p><p><strong>File operations</strong>: <code>GzipFile</code>, <code>GunzipFile</code>, <code>FileAgeSecs</code>, <code>FileSizeOf</code>, <code>WaitForFile</code>, <code>SplitFileByLines</code>, <code>SplitFileBySize</code></p><p><strong>Data and encoding</strong>: <code>ParseCSV</code>, <code>FormatCSV</code>, <code>ParseXML</code>, <code>Base64Encode</code>, <code>Base64Decode</code>, <code>HashString</code>, <code>FormatDateTime</code></p><p><strong>Cryptography</strong>: <code>HmacSign</code>, <code>HmacVerify</code>, <code>PGPSignFile</code>, <code>PGPVerifyFile</code></p><p><strong>Integration</strong>: <code>RunCapture</code>, <code>TcpConnect</code>, <code>SendToTeamsWebHook</code></p><h4>The three additions that change the most scripts</h4><p><strong>HMAC signing and verification</strong>. <code>HmacSign</code> and <code>HmacVerify</code> implement the pattern behind every major webhook security model: <em>GitHub, Stripe, Slack</em>, and virtually every cloud event system use HMAC-SHA256 to authenticate payloads. Until now, doing this from a SyncJS script meant shelling out to an external tool. That workaround is gone. Both functions support SHA-256 and SHA-512. <code>HmacVerify</code> uses constant-time comparison, so it is safe in authentication paths.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;javascript&quot;,&quot;nodeId&quot;:&quot;0c78f335-fe64-40c8-b6c8-6c5218628ae1&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-javascript">var key     = GetSecret("webhook-secret");
var sig     = HmacSign("sha256", key, payload);
var trusted = HmacVerify("sha256", key, payload, incomingSig);</code></pre></div><p><strong>Native CSV and XML parsing</strong>. The majority of real MFT scripts exist to read, transform, or route files based on their contents, not just their filenames. ParseCSV returns a two-dimensional array of strings. <code>ParseXML</code> returns a nested JavaScript object with a predictable structure: attributes under <code>_attrs</code>, text content under <code>_text</code>, repeated elements as arrays. Neither function requires a child process or an external dependency. The data is just there, in memory, ready to drive routing logic.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;javascript&quot;,&quot;nodeId&quot;:&quot;5382e77c-8918-4186-b1a9-2e4900e6069b&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-javascript">var rows = ParseCSV(ReadTextFile("/inbox/orders.csv"));
var doc  = ParseXML(ReadTextFile("/inbox/manifest.xml"));
Log("order count: " + rows.length + ", ship-to: " + doc.order._attrs.destination);</code></pre></div><p><strong>WaitForFile</strong>. If you have written a SyncJS script that waits for an upstream process to drop a trigger file, you have written the sleep/check/repeat loop manually. <code>WaitForFile</code> replaces it entirely. Pass a path, a timeout in milliseconds, and an optional poll interval. Get a boolean back.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;javascript&quot;,&quot;nodeId&quot;:&quot;7093aa43-8c68-48ea-94ac-4e8247418a91&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-javascript">if (!WaitForFile("/processing/trigger.flag", 30000)) {
  Log.Warn("trigger file did not arrive within 30 seconds");
  Exit(1);
}</code></pre></div><h4>The rest, in brief</h4><p><code>GzipFile</code> and <code>GunzipFile</code> compress and decompress single files in place or to a named destination. <code>SplitFileByLines</code> and <code>SplitFileBySize</code> partition large files into numbered chunks, the prerequisite step for any parallel-upload pattern. <code>FileAgeSecs</code> and <code>FileSizeOf</code> return exactly what the names say, useful for conditional logic without a full <code>StatFileSystemObject</code> call.</p><p><code>PGPSignFile</code> and <code>PGPVerifyFile</code> extend the existing <strong>PGP</strong> encrypt/decrypt pair with detached signature support. <code>HashString</code> brings string-level hashing to the same eight algorithms already supported by <code>HashFile</code>. <code>Base64Encode</code> and <code>Base64Decode</code> handle the encoding required by virtually every HTTP API.</p><p><code>RunCapture</code> turns the output of any OS command into a string your script can use directly. <code>TcpConnect</code> checks whether a host and port are reachable before committing to a full connection. <code>SendToTeamsWebHook</code> joins <em>Slack</em> and <em>Telegram</em> in the notification options. <code>FormatDateTime</code> formats timestamps using token-based patterns without requiring the standard library workarounds that JavaScript developers normally reach for.</p><h4>In conclusion</h4><p>Full documentation for every new function is in the <a href="https://docs.syncplify.com/v7/docs/scripting/">SyncJS scripting reference</a>. If you write scripts in VSCode, the <a href="https://blog.syncplify.com/p/develop-syncjs-scripts-in-vscode">Language Server extension</a> picks up all new symbols automatically after updating. No reinstall required.</p><p>And it doesn&#8217;t end here. SyncJS is becoming more and more central to the life and interoperation of all Syncplify software products, so we&#8217;re fully committed to its constant upkeep and improvement.</p>]]></content:encoded></item><item><title><![CDATA[Syncplify Server! v7.1.1 and R2FS! v2.0.1 released]]></title><description><![CDATA[Importance of this update: MINOR]]></description><link>https://blog.syncplify.com/p/syncplify-server-v711-and-r2fs-v201</link><guid isPermaLink="false">https://blog.syncplify.com/p/syncplify-server-v711-and-r2fs-v201</guid><dc:creator><![CDATA[Syncplify]]></dc:creator><pubDate>Wed, 08 Apr 2026 10:54:00 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/e06f0030-9ab2-42ae-b83a-3b3850470e96_2501x2500.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>We are glad to announce that we have just released a new version of our flagship software product, Syncplify Server!</p><h4><strong>What&#8217;s changed in Server!?</strong></h4><ul><li><p>Bumped the scripting subsystem to SyncJS v4.1.2, which adds 21 brand new utility functions to the language</p></li><li><p>Fixed a bug in the Admin UI that prevented clearing the SMTP configuration</p></li><li><p>Improved UX of the WebClient! UI to more explicitly incorporate the new browser security restrictions with regards to OS interoperation with the file/directory selectors during uploads</p></li></ul><h4><strong>What&#8217;s changed in R2FS!?</strong></h4><ul><li><p>Bumped the scripting subsystem to SyncJS v4.1.2, which adds 21 brand new utility functions to the language (same as in Server!)</p></li></ul><p>Please, also read <a href="https://blog.syncplify.com/p/note-about-all-v6-upgrades">this note</a> which pertains to all updates/upgrades. And, as usual, you can <a href="https://syngo.to/download">download the most recent release from our website</a>.</p><p>Thank you all for trusting our software with your secure file transfers!</p>]]></content:encoded></item><item><title><![CDATA[Develop SyncJS scripts in VSCode (with or without AI)]]></title><description><![CDATA[SyncJS in Visual Studio Code: Language Server and AI Agent Support]]></description><link>https://blog.syncplify.com/p/develop-syncjs-scripts-in-vscode</link><guid isPermaLink="false">https://blog.syncplify.com/p/develop-syncjs-scripts-in-vscode</guid><dc:creator><![CDATA[Syncplify]]></dc:creator><pubDate>Tue, 07 Apr 2026 18:55:40 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Cu7n!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8b63e79-1363-45c2-afcb-8fc64f00b8ff_1894x907.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>As SyncJS continues to expand across the Syncplify product family, now shipping in Syncplify Server! v7.1 and R2FS! v2.0, and arriving soon in its enhanced form in AFT! v4.0, one thing became clear: <strong>our customers needed proper tooling for the editors they already use</strong>.</p><p>Given that over 90% of developers work in VSCode or one of its derivatives, that was the obvious place to start.</p><p>SyncJS is 100% ECMA 5.1-compliant JavaScript at its core, but it also adds <strong>200+ functions, methods, structures, and symbols on top of the base language</strong>. Expecting every developer to memorize that extended API was never realistic.</p><p>So we built a VSCode extension that solves both problems at once: a full <em>Language Server</em> for inline documentation and auto-completion, and an <em>MCP (Model Context Protocol) server</em> so AI agents can write SyncJS scripts for you without hallucinating methods or structures that don&#8217;t exist.</p><p>Here&#8217;s how to get set up.</p><h4>1. Install the SyncJS extension</h4><p>Search for SyncJS in the VSCode Extension Marketplace and install it.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Cu7n!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8b63e79-1363-45c2-afcb-8fc64f00b8ff_1894x907.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Cu7n!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8b63e79-1363-45c2-afcb-8fc64f00b8ff_1894x907.png 424w, https://substackcdn.com/image/fetch/$s_!Cu7n!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8b63e79-1363-45c2-afcb-8fc64f00b8ff_1894x907.png 848w, https://substackcdn.com/image/fetch/$s_!Cu7n!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8b63e79-1363-45c2-afcb-8fc64f00b8ff_1894x907.png 1272w, https://substackcdn.com/image/fetch/$s_!Cu7n!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8b63e79-1363-45c2-afcb-8fc64f00b8ff_1894x907.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Cu7n!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8b63e79-1363-45c2-afcb-8fc64f00b8ff_1894x907.png" width="1456" height="697" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e8b63e79-1363-45c2-afcb-8fc64f00b8ff_1894x907.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:697,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:351507,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://blog.syncplify.com/i/193494538?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8b63e79-1363-45c2-afcb-8fc64f00b8ff_1894x907.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Cu7n!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8b63e79-1363-45c2-afcb-8fc64f00b8ff_1894x907.png 424w, https://substackcdn.com/image/fetch/$s_!Cu7n!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8b63e79-1363-45c2-afcb-8fc64f00b8ff_1894x907.png 848w, https://substackcdn.com/image/fetch/$s_!Cu7n!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8b63e79-1363-45c2-afcb-8fc64f00b8ff_1894x907.png 1272w, https://substackcdn.com/image/fetch/$s_!Cu7n!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8b63e79-1363-45c2-afcb-8fc64f00b8ff_1894x907.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4>2. Register the MCP servers in your User profile</h4><p>Once installed, open the command palette with <code>Shift+Ctrl+P</code> and run: <strong>SyncJS: Register SyncJS MCP Servers in User Profile</strong>.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!EesT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfd7906e-cf72-4320-8bc0-37945ab99d6c_610x89.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!EesT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfd7906e-cf72-4320-8bc0-37945ab99d6c_610x89.png 424w, https://substackcdn.com/image/fetch/$s_!EesT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfd7906e-cf72-4320-8bc0-37945ab99d6c_610x89.png 848w, https://substackcdn.com/image/fetch/$s_!EesT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfd7906e-cf72-4320-8bc0-37945ab99d6c_610x89.png 1272w, https://substackcdn.com/image/fetch/$s_!EesT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfd7906e-cf72-4320-8bc0-37945ab99d6c_610x89.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!EesT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfd7906e-cf72-4320-8bc0-37945ab99d6c_610x89.png" width="610" height="89" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dfd7906e-cf72-4320-8bc0-37945ab99d6c_610x89.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:89,&quot;width&quot;:610,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:12521,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.syncplify.com/i/193494538?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfd7906e-cf72-4320-8bc0-37945ab99d6c_610x89.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!EesT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfd7906e-cf72-4320-8bc0-37945ab99d6c_610x89.png 424w, https://substackcdn.com/image/fetch/$s_!EesT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfd7906e-cf72-4320-8bc0-37945ab99d6c_610x89.png 848w, https://substackcdn.com/image/fetch/$s_!EesT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfd7906e-cf72-4320-8bc0-37945ab99d6c_610x89.png 1272w, https://substackcdn.com/image/fetch/$s_!EesT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfd7906e-cf72-4320-8bc0-37945ab99d6c_610x89.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Reload your VSCode window when prompted for the change to take effect.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!AEJ7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02f08c49-0b3c-49fa-93ba-e6b84d8c1ddc_455x128.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!AEJ7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02f08c49-0b3c-49fa-93ba-e6b84d8c1ddc_455x128.png 424w, https://substackcdn.com/image/fetch/$s_!AEJ7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02f08c49-0b3c-49fa-93ba-e6b84d8c1ddc_455x128.png 848w, https://substackcdn.com/image/fetch/$s_!AEJ7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02f08c49-0b3c-49fa-93ba-e6b84d8c1ddc_455x128.png 1272w, https://substackcdn.com/image/fetch/$s_!AEJ7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02f08c49-0b3c-49fa-93ba-e6b84d8c1ddc_455x128.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!AEJ7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02f08c49-0b3c-49fa-93ba-e6b84d8c1ddc_455x128.png" width="455" height="128" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/02f08c49-0b3c-49fa-93ba-e6b84d8c1ddc_455x128.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:128,&quot;width&quot;:455,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:14435,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.syncplify.com/i/193494538?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02f08c49-0b3c-49fa-93ba-e6b84d8c1ddc_455x128.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!AEJ7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02f08c49-0b3c-49fa-93ba-e6b84d8c1ddc_455x128.png 424w, https://substackcdn.com/image/fetch/$s_!AEJ7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02f08c49-0b3c-49fa-93ba-e6b84d8c1ddc_455x128.png 848w, https://substackcdn.com/image/fetch/$s_!AEJ7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02f08c49-0b3c-49fa-93ba-e6b84d8c1ddc_455x128.png 1272w, https://substackcdn.com/image/fetch/$s_!AEJ7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02f08c49-0b3c-49fa-93ba-e6b84d8c1ddc_455x128.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h4>3. Add a SyncJS MCP server to your project</h4><p>After reloading, open the command palette again and run <strong>MCP: List Servers</strong>.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RSl5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc093e7fe-e7a7-4f27-a3dd-52e874350741_609x89.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RSl5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc093e7fe-e7a7-4f27-a3dd-52e874350741_609x89.png 424w, https://substackcdn.com/image/fetch/$s_!RSl5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc093e7fe-e7a7-4f27-a3dd-52e874350741_609x89.png 848w, https://substackcdn.com/image/fetch/$s_!RSl5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc093e7fe-e7a7-4f27-a3dd-52e874350741_609x89.png 1272w, https://substackcdn.com/image/fetch/$s_!RSl5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc093e7fe-e7a7-4f27-a3dd-52e874350741_609x89.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RSl5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc093e7fe-e7a7-4f27-a3dd-52e874350741_609x89.png" width="609" height="89" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c093e7fe-e7a7-4f27-a3dd-52e874350741_609x89.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:89,&quot;width&quot;:609,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:10028,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.syncplify.com/i/193494538?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc093e7fe-e7a7-4f27-a3dd-52e874350741_609x89.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!RSl5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc093e7fe-e7a7-4f27-a3dd-52e874350741_609x89.png 424w, https://substackcdn.com/image/fetch/$s_!RSl5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc093e7fe-e7a7-4f27-a3dd-52e874350741_609x89.png 848w, https://substackcdn.com/image/fetch/$s_!RSl5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc093e7fe-e7a7-4f27-a3dd-52e874350741_609x89.png 1272w, https://substackcdn.com/image/fetch/$s_!RSl5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc093e7fe-e7a7-4f27-a3dd-52e874350741_609x89.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Select the SyncJS flavor that matches your project: core SyncJS (symbols shared across all Syncplify products), or the extended symbol tables specific to Server! or AFT!.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5arn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd46ef262-260b-45d8-a5be-6335b2ca6b39_611x134.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5arn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd46ef262-260b-45d8-a5be-6335b2ca6b39_611x134.png 424w, https://substackcdn.com/image/fetch/$s_!5arn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd46ef262-260b-45d8-a5be-6335b2ca6b39_611x134.png 848w, https://substackcdn.com/image/fetch/$s_!5arn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd46ef262-260b-45d8-a5be-6335b2ca6b39_611x134.png 1272w, https://substackcdn.com/image/fetch/$s_!5arn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd46ef262-260b-45d8-a5be-6335b2ca6b39_611x134.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5arn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd46ef262-260b-45d8-a5be-6335b2ca6b39_611x134.png" width="611" height="134" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d46ef262-260b-45d8-a5be-6335b2ca6b39_611x134.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:134,&quot;width&quot;:611,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:14628,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.syncplify.com/i/193494538?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd46ef262-260b-45d8-a5be-6335b2ca6b39_611x134.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!5arn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd46ef262-260b-45d8-a5be-6335b2ca6b39_611x134.png 424w, https://substackcdn.com/image/fetch/$s_!5arn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd46ef262-260b-45d8-a5be-6335b2ca6b39_611x134.png 848w, https://substackcdn.com/image/fetch/$s_!5arn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd46ef262-260b-45d8-a5be-6335b2ca6b39_611x134.png 1272w, https://substackcdn.com/image/fetch/$s_!5arn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd46ef262-260b-45d8-a5be-6335b2ca6b39_611x134.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h4>4. Prompt your AI agent</h4><p>That&#8217;s it. Your AI agent now has precise, complete knowledge of the SyncJS language: its syntax, object model, and the full functional API. Write your prompt as you normally would.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!oB68!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feac2e083-5253-4363-838a-15c81d6a4171_545x192.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!oB68!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feac2e083-5253-4363-838a-15c81d6a4171_545x192.png 424w, https://substackcdn.com/image/fetch/$s_!oB68!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feac2e083-5253-4363-838a-15c81d6a4171_545x192.png 848w, https://substackcdn.com/image/fetch/$s_!oB68!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feac2e083-5253-4363-838a-15c81d6a4171_545x192.png 1272w, https://substackcdn.com/image/fetch/$s_!oB68!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feac2e083-5253-4363-838a-15c81d6a4171_545x192.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!oB68!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feac2e083-5253-4363-838a-15c81d6a4171_545x192.png" width="545" height="192" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/eac2e083-5253-4363-838a-15c81d6a4171_545x192.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:192,&quot;width&quot;:545,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:27392,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.syncplify.com/i/193494538?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feac2e083-5253-4363-838a-15c81d6a4171_545x192.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!oB68!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feac2e083-5253-4363-838a-15c81d6a4171_545x192.png 424w, https://substackcdn.com/image/fetch/$s_!oB68!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feac2e083-5253-4363-838a-15c81d6a4171_545x192.png 848w, https://substackcdn.com/image/fetch/$s_!oB68!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feac2e083-5253-4363-838a-15c81d6a4171_545x192.png 1272w, https://substackcdn.com/image/fetch/$s_!oB68!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feac2e083-5253-4363-838a-15c81d6a4171_545x192.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h4>5. Your SyncJS script is ready</h4><p>The agent produces a working SyncJS script. Review it, make any adjustments you want, then paste it directly into your Syncplify product&#8217;s web UI.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!sV7s!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F575c83c0-4dca-4038-b460-4421f78870d0_1747x1027.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!sV7s!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F575c83c0-4dca-4038-b460-4421f78870d0_1747x1027.png 424w, https://substackcdn.com/image/fetch/$s_!sV7s!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F575c83c0-4dca-4038-b460-4421f78870d0_1747x1027.png 848w, https://substackcdn.com/image/fetch/$s_!sV7s!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F575c83c0-4dca-4038-b460-4421f78870d0_1747x1027.png 1272w, https://substackcdn.com/image/fetch/$s_!sV7s!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F575c83c0-4dca-4038-b460-4421f78870d0_1747x1027.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!sV7s!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F575c83c0-4dca-4038-b460-4421f78870d0_1747x1027.png" width="1456" height="856" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/575c83c0-4dca-4038-b460-4421f78870d0_1747x1027.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:856,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:329339,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.syncplify.com/i/193494538?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F575c83c0-4dca-4038-b460-4421f78870d0_1747x1027.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!sV7s!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F575c83c0-4dca-4038-b460-4421f78870d0_1747x1027.png 424w, https://substackcdn.com/image/fetch/$s_!sV7s!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F575c83c0-4dca-4038-b460-4421f78870d0_1747x1027.png 848w, https://substackcdn.com/image/fetch/$s_!sV7s!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F575c83c0-4dca-4038-b460-4421f78870d0_1747x1027.png 1272w, https://substackcdn.com/image/fetch/$s_!sV7s!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F575c83c0-4dca-4038-b460-4421f78870d0_1747x1027.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The SyncJS VSCode extension is available today. Whether you prefer writing scripts by hand with full auto-completion and inline documentation, or delegating the first draft to an AI agent that actually knows the language, the tooling is there.</p><p>Install it, connect your agent, and let SyncJS do the heavy lifting across your entire Syncplify environment.</p>]]></content:encoded></item><item><title><![CDATA[Syncplify Server! v7.1.0 and R2FS! v2.0.0 released]]></title><description><![CDATA[Importance of this update: HIGH]]></description><link>https://blog.syncplify.com/p/syncplify-server-v710-and-r2fs-v200</link><guid isPermaLink="false">https://blog.syncplify.com/p/syncplify-server-v710-and-r2fs-v200</guid><dc:creator><![CDATA[Syncplify]]></dc:creator><pubDate>Tue, 07 Apr 2026 11:09:05 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/f54fbf07-f418-44fa-a95c-f80314b1abc3_2501x2500.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>We are glad to announce that we have just released a new version of our flagship software product, Syncplify Server!</p><h4><strong>What&#8217;s changed in Server!?</strong></h4><ul><li><p>Extracted the SyncJS scripting language (Syncplify&#8217;s very own extended version of JavaScript built on top of the ECMA 5.1 standard with the addition of many dedicated functions, methods, and types) into an independent shared library so that it can be ported to R2FS! and AFT! as well with perfect consistency</p></li><li><p>Removed deprecated <code>ioutil</code> package (Go) and switched to the recommended alternatives (<code>io</code>, <code>os</code>, etc&#8230;)</p></li><li><p>Fixed a bug with the multiplexed session counter for SSH-based subsystems which could, in certain conditions, &#8220;forget&#8221; to decrement the number of total active sessions in the dashboard</p></li><li><p>Fixed several cosmetic (and one functional) bugs in the Admin UI</p></li></ul><h4><strong>What&#8217;s changed in R2FS!?</strong></h4><ul><li><p>Added full SyncJS scripting and event-handling (uses the same SyncJS extended version of JavaScript also available in the Server! software) - now you can run your SyncJS scripts on the storage side as well!</p></li><li><p>Added indexed/searchable VFS-level &#8220;op log&#8221; directly in R2FS!&#8217;s back-end database (does not substitute log files, which are still there for full auditing trail)</p></li></ul><p>Please, also read <a href="https://blog.syncplify.com/p/note-about-all-v6-upgrades">this note</a> which pertains to all updates/upgrades. And, as usual, you can <a href="https://syngo.to/download">download the most recent release from our website</a>.</p><p>Thank you all for trusting our software with your secure file transfers!</p>]]></content:encoded></item><item><title><![CDATA[A searchable op-log is also coming to R2FS! v2.0]]></title><description><![CDATA[Granular, integrated, indexed, searchable operation log for the security-conscious sysadmin]]></description><link>https://blog.syncplify.com/p/a-searchable-op-log-is-also-coming</link><guid isPermaLink="false">https://blog.syncplify.com/p/a-searchable-op-log-is-also-coming</guid><dc:creator><![CDATA[Syncplify]]></dc:creator><pubDate>Fri, 03 Apr 2026 19:44:21 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!__cs!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F314a93c2-f579-4290-b6e4-b64cdd2583e5_1507x454.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>The second major feature landing in R2FS! v2.0 is a <strong>fully indexed, searchable operation log</strong>, stored directly in R2FS!&#8217;s SyngoDB backend, and &#8220;querable&#8221; (if the word even exists) from the admin UI in seconds.</p><p>Every file operation is recorded with timestamp, operation type, VFS, user, path(s), bytes received and sent, duration, and error status. You can filter by time range, operation, user, VFS, or any combination thereof. Precisely the kind of granular, on-demand visibility that system administrators have always wanted when something needs investigating.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!__cs!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F314a93c2-f579-4290-b6e4-b64cdd2583e5_1507x454.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!__cs!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F314a93c2-f579-4290-b6e4-b64cdd2583e5_1507x454.png 424w, https://substackcdn.com/image/fetch/$s_!__cs!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F314a93c2-f579-4290-b6e4-b64cdd2583e5_1507x454.png 848w, https://substackcdn.com/image/fetch/$s_!__cs!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F314a93c2-f579-4290-b6e4-b64cdd2583e5_1507x454.png 1272w, https://substackcdn.com/image/fetch/$s_!__cs!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F314a93c2-f579-4290-b6e4-b64cdd2583e5_1507x454.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!__cs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F314a93c2-f579-4290-b6e4-b64cdd2583e5_1507x454.png" width="1456" height="439" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/314a93c2-f579-4290-b6e4-b64cdd2583e5_1507x454.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:439,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:40618,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://blog.syncplify.com/i/193107170?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F314a93c2-f579-4290-b6e4-b64cdd2583e5_1507x454.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!__cs!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F314a93c2-f579-4290-b6e4-b64cdd2583e5_1507x454.png 424w, https://substackcdn.com/image/fetch/$s_!__cs!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F314a93c2-f579-4290-b6e4-b64cdd2583e5_1507x454.png 848w, https://substackcdn.com/image/fetch/$s_!__cs!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F314a93c2-f579-4290-b6e4-b64cdd2583e5_1507x454.png 1272w, https://substackcdn.com/image/fetch/$s_!__cs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F314a93c2-f579-4290-b6e4-b64cdd2583e5_1507x454.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>A quick clarification, though, for the security-conscious reader: this is <strong>not a replacement for the digitally signed, tamper-evident log files</strong> you already rely on. Those aren&#8217;t going anywhere.</p><p>The operation log is a complementary tool, optimized for interactive exploration rather than compliance attestation. Think of the signed log files as your forensic record and the op-log as your operational sidekick, both live side by side, each doing what they are designed to do.</p><p>As with SyncJS support, we&#8217;re not ready to commit to a specific release date, but v2.0 is close. Maybe even closer than you think.</p>]]></content:encoded></item><item><title><![CDATA[SyncJS coming soon to R2FS!]]></title><description><![CDATA[Syncplify Server!'s scripting and event-handling subsystem is being ported to R2FS! as well...]]></description><link>https://blog.syncplify.com/p/syncjs-coming-soon-to-r2fs</link><guid isPermaLink="false">https://blog.syncplify.com/p/syncjs-coming-soon-to-r2fs</guid><dc:creator><![CDATA[Syncplify]]></dc:creator><pubDate>Fri, 03 Apr 2026 11:35:45 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!EJkQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F548cdca2-15a7-4fbe-ab53-bfc54186be3a_1526x881.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>If you&#8217;ve built automation workflows on Syncplify Server!, you already know <strong>how powerful SyncJS can be</strong>. Event hooks, deep per-session control, file-system ops, HTTP/S calls, database connectivity, message queues, PGP encryption, and more&#8230; all scriptable in Syncplify&#8217;s very own extended JavaScript flavor, and portable across your entire deployment. That scripting and event handling subsystem is one of the most distinctive and beloved features of Syncplify Server!, and we&#8217;ve heard loud and clear that R2FS! users want it too.</p><p>Well, <strong>starting with R2FS! v2.0, you will have it</strong>. When this release lands, you&#8217;ll be able to execute SyncJS scripts not just on the server side (as always), but directly on the storage side via the R2FS! storage connector.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!EJkQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F548cdca2-15a7-4fbe-ab53-bfc54186be3a_1526x881.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!EJkQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F548cdca2-15a7-4fbe-ab53-bfc54186be3a_1526x881.png 424w, https://substackcdn.com/image/fetch/$s_!EJkQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F548cdca2-15a7-4fbe-ab53-bfc54186be3a_1526x881.png 848w, https://substackcdn.com/image/fetch/$s_!EJkQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F548cdca2-15a7-4fbe-ab53-bfc54186be3a_1526x881.png 1272w, https://substackcdn.com/image/fetch/$s_!EJkQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F548cdca2-15a7-4fbe-ab53-bfc54186be3a_1526x881.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!EJkQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F548cdca2-15a7-4fbe-ab53-bfc54186be3a_1526x881.png" width="1456" height="841" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/548cdca2-15a7-4fbe-ab53-bfc54186be3a_1526x881.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:841,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:61470,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://blog.syncplify.com/i/193059992?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F548cdca2-15a7-4fbe-ab53-bfc54186be3a_1526x881.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!EJkQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F548cdca2-15a7-4fbe-ab53-bfc54186be3a_1526x881.png 424w, https://substackcdn.com/image/fetch/$s_!EJkQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F548cdca2-15a7-4fbe-ab53-bfc54186be3a_1526x881.png 848w, https://substackcdn.com/image/fetch/$s_!EJkQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F548cdca2-15a7-4fbe-ab53-bfc54186be3a_1526x881.png 1272w, https://substackcdn.com/image/fetch/$s_!EJkQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F548cdca2-15a7-4fbe-ab53-bfc54186be3a_1526x881.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>That means <strong>your event-driven logic can live where your data lives</strong>, opening up automation patterns that simply weren&#8217;t possible before. </p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ayZQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d95eb77-88a7-4dcb-bbc7-be6596486d56_1527x302.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ayZQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d95eb77-88a7-4dcb-bbc7-be6596486d56_1527x302.png 424w, https://substackcdn.com/image/fetch/$s_!ayZQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d95eb77-88a7-4dcb-bbc7-be6596486d56_1527x302.png 848w, https://substackcdn.com/image/fetch/$s_!ayZQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d95eb77-88a7-4dcb-bbc7-be6596486d56_1527x302.png 1272w, https://substackcdn.com/image/fetch/$s_!ayZQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d95eb77-88a7-4dcb-bbc7-be6596486d56_1527x302.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ayZQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d95eb77-88a7-4dcb-bbc7-be6596486d56_1527x302.png" width="1456" height="288" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0d95eb77-88a7-4dcb-bbc7-be6596486d56_1527x302.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:288,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:29515,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.syncplify.com/i/193059992?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d95eb77-88a7-4dcb-bbc7-be6596486d56_1527x302.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ayZQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d95eb77-88a7-4dcb-bbc7-be6596486d56_1527x302.png 424w, https://substackcdn.com/image/fetch/$s_!ayZQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d95eb77-88a7-4dcb-bbc7-be6596486d56_1527x302.png 848w, https://substackcdn.com/image/fetch/$s_!ayZQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d95eb77-88a7-4dcb-bbc7-be6596486d56_1527x302.png 1272w, https://substackcdn.com/image/fetch/$s_!ayZQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d95eb77-88a7-4dcb-bbc7-be6596486d56_1527x302.png 1456w" sizes="100vw"></picture><div></div></div></a></figure></div><p>And because SyncJS scripts are already fully portable between Syncplify Server! and R2FS!, any script you&#8217;ve written and tested today will run without modification tomorrow <em>(with the exception of server-only contexts that simply don&#8217;t exist in R2FS!, but that&#8217;s obvious)</em>.</p><p>We&#8217;re not ready to announce a specific release date yet, but R2FS! v2.0 is on the near horizon. Stay tuned.</p>]]></content:encoded></item><item><title><![CDATA[The Dirty Secret of Cloud MFT]]></title><description><![CDATA[Your vendor holds the keys to your data...]]></description><link>https://blog.syncplify.com/p/the-dirty-secret-of-cloud-mft</link><guid isPermaLink="false">https://blog.syncplify.com/p/the-dirty-secret-of-cloud-mft</guid><dc:creator><![CDATA[Syncplify]]></dc:creator><pubDate>Thu, 02 Apr 2026 13:03:30 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/cdd606d5-381b-48f1-9d43-102c7ffc28b0_5156x3437.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Let&#8217;s talk about something the managed file transfer industry would rather you not think about too carefully.</p><p>When you move your organization&#8217;s file transfer operations to a cloud MFT platform, you typically hand your data to a third party. That&#8217;s the obvious part, the part everyone understands and accepts as the <strong>trade-off for convenience and scalability</strong>. What&#8217;s less obvious, and far less discussed, is what happens to certain encryption keys.</p><p>Most cloud MFT platforms encrypt your data at rest. They&#8217;ll tell you this proudly, and technically, they&#8217;re telling the truth. What they&#8217;re less eager to explain is that in the overwhelming majority of cases, they also manage the encryption keys. Their infrastructure. Their key management system. Their access.</p><p>Which means, if you read between the lines: they can decrypt your data. Not because they want to, not because they&#8217;re malicious, but simply because the architecture permits it.</p><h4>Why This Matters More Than You Think</h4><p>Consider what that architectural reality means in practice.</p><p>It means that a sufficiently serious <strong>breach of your vendor&#8217;s infrastructure is also a breach of your data</strong>, regardless of how strong the encryption algorithm is. Encryption only protects data if the keys are out of reach. When the keys live alongside the data in the same vendor environment, you don&#8217;t have two locks on the door. You have one.</p><p>It means that a subpoena, a national security letter, or a government inquiry directed at your vendor potentially becomes your problem, even if your organization was never the target. Your data&#8217;s legal exposure is no longer purely a function of your own legal standing.</p><p>It gets worse: It means that <strong>a rogue insider at your vendor has a theoretical path to your most sensitive files</strong>. Again, not likely. But in regulated industries, &#8220;not likely&#8221; is not a compliance posture.</p><p>It means, bluntly, that you&#8217;ve outsourced not just the infrastructure but the trust model itself.</p><h4>The Industry Has Normalized Something It Shouldn&#8217;t Have</h4><p>The uncomfortable truth is that most organizations never ask these questions during vendor evaluation. &#8220;Do you encrypt data at rest?&#8221; gets a yes, the checkbox gets checked, and the conversation moves on. The far more important question, <strong>&#8220;Who holds the encryption keys, and what would it take for someone other than us to access them?&#8221;</strong>, rarely gets asked.</p><p>This isn&#8217;t a criticism of IT and security teams. The cloud MFT market has spent years (and a remarkable amount of dollars) conditioning buyers to treat server-side encryption as sufficient. But it isn&#8217;t. Not for organizations operating in regulated industries, not for organizations handling sensitive partner data, and not for any organization that takes data sovereignty seriously.</p><p>The standard should be simple: <strong>your data should be encrypted in a way that makes it technically impossible for anyone other than you to access it</strong>. Not policy-impossible. Not contractually-impossible. Technically impossible.</p><h4>What Good Actually Looks Like</h4><p>True data sovereignty in a cloud file transfer context requires one thing above all else: encryption keys that never leave your control, managed on infrastructure you own, in a network you control.</p><p>This means the encryption and decryption of your data at rest happens on your side of the boundary, not your vendor&#8217;s. It means your vendor&#8217;s cloud infrastructure acts as a secure, highly available relay, moving encrypted data it cannot read, between parties it authenticates but cannot impersonate. It means that <strong>even in the worst-case scenario, a complete compromise of the cloud layer yields nothing useful to an attacker, because the keys were never there</strong>.</p><p>This architecture exists. It&#8217;s not theoretical, it&#8217;s not exotic, and it doesn&#8217;t require sacrificing the operational benefits of a managed cloud service.</p><p>It does, however, require vendors who were willing to build it that way from the ground up, rather than retrofit the appearance of security onto a model that was never designed with true key separation in mind.</p><p>At Syncplify, we&#8217;ve always believed that the right answer to &#8220;who holds the keys?&#8221; is unambiguous: you do. Always. Without exception.</p><p>We&#8217;ll have more to say about how we&#8217;ve put that belief into practice. Stay tuned.</p>]]></content:encoded></item></channel></rss>