Gluesync Control

Gluesync Control is the app that starts, stops, updates and collects the logs of Gluesync on a Windows Server. It is one program with two faces: a window (gluesync.exe) and the gluesync command line (gluesync.com). It comes with Windows setup wizard 1.4.0 (released October 17, 2026) and later, and replaces the control app and the PowerShell scripts run.ps1, stop.ps1, update.ps1 and collect-logs.ps1 of earlier kits. It runs no PowerShell.

Gluesync Control is for Gluesync on Windows Server. On Linux, keep using run.sh, stop.sh, update.sh and collect-logs.sh from the kit.

Where it is installed

The setup wizard installs Gluesync Control in the install folder (by default C:\Program Files\Gluesync), next to the other programs of the installer:

  • Desktop shortcut: Gluesync Control opens the window. The shortcut is created when the platform has started for the first time. It replaces the old Gluesync CLI shortcut.

  • Command line: the install folder is added to the system PATH, so gluesync <command> works from any terminal you open after the install. Open a new terminal after the installation, so that it sees the new PATH.

  • Administrator rights: the window asks for administrator rights once, when it starts. Run the command line from an elevated terminal (Command Prompt or PowerShell opened with Run as administrator). In a terminal that is not elevated, a command stops with GS-CTL-007 and exit code 740 instead of opening a prompt in another window. gluesync --help and gluesync --version work in any terminal.

  • Which Gluesync folder: by default the folder of gluesync.exe, so a standard install needs no option. To manage an installation in another folder, add --folder <path> (the folder, or its docker-compose.yaml) to any command.

To get Gluesync Control on a server installed with an earlier version, run gluesync-windows-setup-wizard.msi 1.4.0 or later on that server. It replaces an older gluesync.exe. From 1.4.1, Gluesync Control keeps itself up to date, see Automatic updates of Gluesync Control.

Installs made with a setup wizard before 1.4.0 keep run.ps1, stop.ps1, update.ps1 and collect-logs.ps1 in the install folder, and they keep working there. Gluesync itself may also place its own collect-logs.ps1 in the install folder, for the log upload of the Gluesync Control Plane. That file belongs to the platform: leave it in place.

The window

Double-click Gluesync Control or run gluesync with no arguments. The header shows the state (Running, Stopped, Starting or Docker not running), the installed version and the address of the Gluesync Control Plane as a link. The window has four tabs.

Tab What it does

Overview

The state in words, the address, the version, the number of services running, the Docker service and the Gluesync folder. Start, Stop, Restart and Open Gluesync: only what makes sense in the current state is enabled. Stop and Restart ask first. While Gluesync starts, a progress view shows Docker, the image downloads (with size and percentage), the services and the final check, and Cancel stops the start. A cancelled start continues from the downloaded image layers the next time.

Update

The versions this server can move to, with the newest selected and a list for an older one. Update to <version> asks for confirmation, warns that Gluesync restarts and that database migrations are one-way, then shows the progress (backup, images, restart, check). Update from file…​ installs from an update package, see Offline update. The tab also says when Gluesync is up to date, when updates are paused for maintenance and when the update service cannot be reached (with Try again). From 1.4.1, a banner above the cards, "Gluesync Control <version> is available" with Update now, offers an update of Gluesync Control itself, see Automatic updates of Gluesync Control.

Support

Collects a support bundle. Set the days of logs (default 3), the size limit in MB (default 1024), and the ticket number and e-mail address to upload the bundle to MOLO17 support, or tick Keep the bundle on this server only. Collect logs shows the progress, then the file, its size and Open folder. See Collect logs for support.

Settings

The proxy that Gluesync uses (PROXY_HTTP and PROXY_HTTPS in the .env file of the Gluesync folder). Edit, then Save. An empty field removes the setting and every other line of the file stays. Gluesync reads the file when it starts, so the window then offers Restart Gluesync. From 1.4.1, the switch Update Gluesync Control automatically (on by default) and Check for an update now are here too, see Automatic updates of Gluesync Control.

If you close the window during a long operation, it asks you to confirm first.

The command line

gluesync                          open the window
gluesync run | start              start Gluesync
gluesync stop                     stop Gluesync
gluesync restart                  stop, then start
gluesync status [--json]          show what is running
gluesync update [options]         update Gluesync
gluesync collect-logs [options]   collect a support bundle
gluesync self-update [options]    update Gluesync Control itself (1.4.1 and later)
gluesync open                     open Gluesync in the browser
gluesync --help | --version
         --folder <path>          the Gluesync folder, before or after the command

Run the commands from an elevated terminal. They wait until the work is done, write to the console, and return the real exit code, so they work in scripts: gluesync status && echo up, %ERRORLEVEL% or $LASTEXITCODE. Errors are printed as [ERROR] GS-CTL-003 CONTROL_START_FAILED: <message> followed by Fix: <what to try>.

Command What it does

gluesync run
gluesync start

Starts Gluesync with the same steps as the old run.ps1: it gives the Docker service access to the Gluesync folder, writes the system proxy to .env, pulls the images on the first start only, and runs docker-compose up -d --remove-orphans. A stopped Docker service is started first. It then waits up to 120 seconds for the services and prints Gluesync is running: https://<server address>.

gluesync stop

Runs docker-compose down --remove-orphans. Containers and networks are removed. Volumes and images are never removed, so your data stays. If the Docker service is stopped, Gluesync is already stopped.

gluesync restart

stop, then start. A failed stop does not start Gluesync.

gluesync status

Shows the state (running, partly running, stopped, Docker not running, not installed), the installed version, the services running out of the expected ones, the address, the Docker service and the folder. Exit code 0 when Gluesync is running and 3 when it is not. --json prints the same information as one JSON object.

gluesync update

Updates Gluesync. See Update Gluesync.

gluesync collect-logs

Collects a support bundle. See Collect logs for support.

gluesync self-update

Updates Gluesync Control itself. See Automatic updates of Gluesync Control. --check shows whether a newer version exists and works in a terminal that is not elevated.

gluesync open

Opens the address of the Gluesync Control Plane in your browser, as the signed-in user.

Old scripts and the new commands

Before setup wizard 1.4.0 Now, command line Now, window

.\run.ps1

gluesync run (or gluesync start)

Overview, Start

.\stop.ps1

gluesync stop

Overview, Stop

.\update.ps1

gluesync update

Update tab

.\collect-logs.ps1, Upload Logs

gluesync collect-logs

Support tab

Open in Browser

gluesync open

Overview, Open Gluesync

(new)

gluesync restart, gluesync status [--json]

Overview, Restart; Settings (proxy)

Update Gluesync

gluesync update --list [--channel ga|beta|alpha]
gluesync update --dry-run [--version <x.y.z.w>|latest] [--channel ga|beta|alpha] [--package <file>]
gluesync update [--version <x.y.z.w>|latest] [--channel ga|beta|alpha] [-y]
gluesync update --package <file> [-y]
Option Meaning

--list

Shows the installed version, the release channel and its latest version, and the versions you can update to. Versions that are not offered are listed with the reason. Changes nothing.

--dry-run

Shows the plan (which images change) and stops. Changes nothing.

--version <x.y.z.w> or --version latest

Updates to that version. Without this option the newest version offered is used.

--channel ga|beta|alpha

The release channel that sets the newest version you can reach. The default is ga. Beta and alpha ask for confirmation twice, unless you add -y.

--package <file>

Updates from an update package, with no network access. See Offline update. It cannot be combined with --version or --channel.

-y

Does not ask for confirmation.

Online update

The online update lists the Gluesync versions newer than the installed one, up to the latest general availability (GA) version, and you pick one. It only upgrades: an older or the same version is refused. A version is offered only when every agent you have installed has an image for it.

When you start the update, Gluesync Control:

  1. Checks that the Docker service is running, that no other update is running and that the Docker drive has enough free space.

  2. Backs up docker-compose.yml and .env to %ProgramData%\MOLO17\Gluesync\backups\<date-time> (the last five backups are kept).

  3. Updates the image tags in docker-compose.yml and pulls the new images. Your comments and every other line of the file stay as they are.

  4. Restarts the services with docker-compose up -d --remove-orphans.

  5. Checks, for up to five minutes, that every service is running and that Core Hub runs the new version.

If a step fails after the compose file was changed, or you stop the update (Ctrl+C or Cancel), Gluesync Control restores the backed up files and starts the previous version again. The result says whether the rollback worked.

Core Hub migrates its database when it starts with a newer version, and that migration is one-way. A rollback restores the images and the configuration files, not the database. Take a configuration backup before you update a production system.

Do not run two updates at once. An update started from the Gluesync Control Plane is not detected by gluesync update.

Offline update

For a server with no internet access, download the update package, gluesync-update-windows-amd64-<version>.tar.gz, from Get Gluesync – offline downloads on a connected computer, copy it to the server, and run:

gluesync update --package C:\Temp\gluesync-update-windows-amd64-<version>.tar.gz

In the window, use Update from file…​ on the Update tab. Gluesync Control checks every file of the package against its manifest, loads the images with docker load, then backs up, restarts and checks Gluesync as in the online update. Downgrades and the installed version are refused, and an installed agent that the package has no image for blocks the update.

Offline install and offline update need Windows Server 2022 or later. The offline packages carry Windows Server 2022 images only. On Windows Server 2019, gluesync update --package stops with GS-UPD-024 and the window disables Update from file…​. Online install and online update still work on Windows Server 2019.

Automatic updates of Gluesync Control

From version 1.4.1, Gluesync Control updates itself. This is different from updating Gluesync: it replaces only the programs of the setup wizard (gluesync.exe, gluesync.com, gluesync-setup.exe and gluesync-launch.exe). The Gluesync platform, its containers, its configuration and its data are not touched, Gluesync keeps running and no restart is needed.

How it works

When a newer version is published, Gluesync Control downloads the new setup wizard MSI from MOLO17 and installs it over the existing installation, in a binaries-only mode (the GLUESYNC_SELFUPDATE=1 MSI property). Only a strictly newer version is installed, never the same one or an older one. A server that cannot reach the update service, or that is in maintenance, simply tries again later.

Gluesync Control looks for an update in three ways:

  • Every day: a scheduled task, \MOLO17\Gluesync Control self-update, runs as SYSTEM once a day, after a random delay of up to 2 hours. The setup wizard creates it on install, repair and upgrade and removes it on uninstall.

  • When the window opens: a check in the background. If a newer version exists, the Update tab shows a banner, "Gluesync Control <version> is available", with Update now. After an update, the window says "Updated to Gluesync Control <version>."

  • By hand: gluesync self-update.

What is checked before it installs

Nothing is installed unless every check passes. A file that fails a check is deleted.

  1. The size of the download equals the size in the MOLO17 catalog.

  2. The SHA-256 of the download equals the one in the catalog.

  3. The Authenticode signature is valid. If the revocation servers cannot be reached, the check is repeated without revocation, because the file already matched the catalog hash over HTTPS. A revoked certificate always fails.

  4. The signer is MOLO17: the signer certificate has a CN or an O that contains MOLO17.

  5. The ProductVersion of the MSI is the version announced by the catalog.

The checks run again right before the installation. Unsigned builds are therefore never installed by self-update.

Gluesync Control also waits when it is not a good moment, and tries again at the next run: the Gluesync setup is not finished (an install or a restart is pending), another Gluesync Control program (a window or a command) is open, or Windows Installer is busy. A copy of gluesync.exe that was not installed by the MSI does not update itself.

Turn automatic updates off

  • Settings: switch off Update Gluesync Control automatically in the Settings tab (on by default). The daily task and the check at start then do nothing. Check for an update now in Settings and the command gluesync self-update still work, because you asked.

  • Machine policy: set the DWORD value DisableControlSelfUpdate to 1 in HKLM\SOFTWARE\Policies\MOLO17\Gluesync. It turns off the daily task, the check in the window, the Update now button and the gluesync self-update command (which stops with GS-SUP-001, exit code 301). It wins over the switch, which is shown disabled with "turned off by your administrator".

The command

gluesync self-update [--check] [--quiet] [-y]
gluesync self-update --verify-file <msi> [--expect-version X] [--expect-sha256 H] [--expect-size N]
Option Meaning

--check

Prints the running version and the newest published version, and installs nothing. Exit code 0 when Gluesync Control is up to date and 4 when a newer version exists. It also works in a terminal that is not elevated.

-y

Does not ask for confirmation.

--quiet

What the scheduled task runs: no question and no output unless something fails. The Settings switch applies.

--verify-file <msi>

Runs the same checks on a local MSI (size and SHA-256 when you give --expect-size and --expect-sha256, signature, signer, and the MSI version, compared with --expect-version when given). It prints PASS or FAIL for each check and installs nothing. It needs no elevation. Exit code 0 when every check passed, otherwise the code of the first check that failed.

What to expect

When an update is installed, there is nothing to do and nothing restarts. The command hands the verified MSI over to a helper that installs it and then exits with 0; the window, if it started the update, closes and opens again on the new version. The result is in %ProgramData%\MOLO17\Gluesync\self-update\last-result.json and in C:\GluesyncSupport\Logs\self-update.log, and the Windows Installer log of each update is in %ProgramData%\MOLO17\Gluesync\self-update\logs. The support bundle collects these files and the state of the daily task. If an update fails, the previous version stays installed and the next run tries again. The codes are in Self-update codes (GS-SUP).

To see whether a newer version is available, run the following command. It exits with 0 when you are up to date and 4 when a newer version exists:

gluesync self-update --check
Gluesync Control 1.4.0 cannot update itself. A server on 1.4.0 must be updated once by hand to 1.4.1: run gluesync-windows-setup-wizard.msi 1.4.1 or later on it. From 1.4.1 on, updates are automatic.

Collect logs for support

gluesync collect-logs [--days N] [--max-mb N] [--tail N] [--out <dir>]
                      [--local-only] [--ticket X --email Y] [--delete-after-upload]
Option Default Meaning

--days N

3

Collects the log files changed in the last N days (1 to 30), and the container logs of the same period.

--max-mb N

1024

Size limit of the log data, newest files first. A file that does not fit is skipped and listed in the manifest.

--tail N

50000

Lines of each container log.

--out <dir>

%ProgramData%\MOLO17\Gluesync\support

The folder where the bundle is written.

--local-only

off

Makes the bundle and never uploads it.

--ticket X --email Y

none

Uploads the bundle to MOLO17 support after the collection. Use the number of your ticket on the support portal and the e-mail address you opened it with. Both are needed. Without them the bundle stays on the server.

--delete-after-upload

off

Deletes the local bundle after an upload whose size was confirmed by the server.

For example, to collect the last three days and send them with your ticket:

gluesync collect-logs --ticket <ID> --email <you>

The bundle is a zip file, gluesync-support-<date-time>.zip, in %ProgramData%\MOLO17\Gluesync\support. It holds:

  • the Gluesync log files of the period and the installer logs (earlier archives such as .zip or .tar.gz files are not included);

  • the configuration files (docker-compose.yml, .env and the other configuration files of the Gluesync folder), with passwords, tokens, keys and other secrets replaced by ***;

  • a system snapshot: operating system, uptime, CPU, memory, disks and the biggest processes;

  • Docker diagnostics and the log of every container;

  • from 1.4.1, the self-update logs (self-update.log, last-result.json and the newest Windows Installer logs of the updates) and the state of the daily update task.

Collecting logs does not delete, move or change any of your files, and it runs at low priority so that it does not slow the server down. The three newest bundles are kept in the folder. Press Ctrl+C to cancel: the partial file is deleted. The upload goes to MOLO17 support over HTTPS, then over FTP if HTTPS cannot be reached, and a failed upload keeps the bundle and prints its path. Review a bundle before you send it if your configuration holds secrets under unusual names.

The upload needs a ticket number and an e-mail address. If you have no ticket yet, collect with --local-only and attach the file to a new ticket. If you can sign in to the Gluesync Control Plane, you can also send the logs from there. See Exporting and uploading logs to support.

Exit codes

Exit code Meaning

0

Done.

3

gluesync status: Gluesync is not running (stopped, partly running or Docker not running).

4

gluesync self-update --check: a newer Gluesync Control is published.

201 to 224

gluesync update: GS-UPD-001 to GS-UPD-024. See Update codes (GS-UPD).

230 to 240

gluesync collect-logs: GS-LOG-001 to GS-LOG-014. Warnings GS-LOG-101 to GS-LOG-106 do not change the exit code. See Support bundle codes (GS-LOG).

250 to 255

GS-CTL-001 to GS-CTL-006: no installation found, Docker not available, start failed, nothing running after the start, stop failed, wrong arguments. See Control codes (GS-CTL).

301 to 317

gluesync self-update: GS-SUP-001 to GS-SUP-017. See Self-update codes (GS-SUP).

740

GS-CTL-007: the command was run from a terminal that is not elevated.

1223

Stopped with Ctrl+C or Cancel.

Every code, its meaning and its fix are on Installer error codes and troubleshooting.