...osx-x64-cli.pkg and ...osx-x64-agent.pkg? What is the function of both?

I’m a beginner!
I use duplicati-2.0.9.111_canary_2024-11-14-osx-x64-gui.dmg on macOS Sequoia.
I understand that …osx-x64-gui.pkg is the same app in a different installation format.
Should I use …osx-x64-cli.pkg and …osx-x64-agent.pkg?
What is the function of both?
Thank you very much!

Hi @webipsum thanks for the question.

The two packages cli.pkg and agent.pkg are new in v2.0.9.110 and follows the format for the other platforms.

There are currently three “interface type” packages:

  • GUI: The full package that includes the Duplicati.GUI.TrayIcon.exe / duplicati executable that will host the Duplicati server and show up in the desktop tray or menu bar.
    This package is recommended for most users as it is the simplest to get up and running.
    However, it includes a number of desktop components that may not be desired in more advanced setups (e.g., running on a machine with no desktop environment).

  • CLI: Same as the GUI package, but without the desktop component. These packages are a bit smaller and have less dependencies. If you are using this package you generally need to configure some way to start Duplicati.Server.exe / duplicati-server.

  • Agent: A reduced build that is intended to connect only to the Duplicati Console (https://app.duplicati.com) and can be configured from here.
    The Agent package is still a bit new, so at this point it is mostly intended for enterprise-style installations where many machines needs to be configured and managed centrally.
    At a later stage we will streamline this a bit so it is easier for single-user setups as well.

For MacOS there are the two formats: .dmg and .pkg. Most software on MacOS is delivered via a .dmg file where you copy in the app bundle, and you can do that with Duplicati as well. Since the CLI and Agent packages do not have an app bundle, there is no .dmg file for those.

The .pkg files are the installer format for MacOS and installs launch agents that automatically launches Duplicati when the user logs in. The GUI pkg will launch the app bundle on login, the agent will launch the agent on login, and the CLI will install a stub launcher that can be modified to start the server on login.

The GUI packages contains the support binaries, such as server-util, inside the app bundle, so invoking them requires the full path into the bundle.
The CLI and Agent packages installs these in /usr/local/Duplicati with symlinks into /usr/local/bin for easy access.

1 Like

This sounded like it would omit Avalonia which is used by the TrayIcon.
Avalonia was interesting due to the recent upgrade-while-in-use issues.
When I went to grab Windows CLI package, I found that there isn’t one.
Is this intended? I compared Linux’s instead, and CLI did omit Avalonia.

Yes, that is “by design” but not well explained (I will fix that in the docs).

The reason why there is a CLI package for Linux packages is that the TrayIcon/Avalonia has a number of desktop dependencies. If you are running a server version, the desktop is not there so installing it would require pulling in a large set of unwanted dependencies. To avoid this, the CLI packages are provided, which has no desktop dependencies.

For MacOS, the TrayIcon application is wrapped in a app bundle, which is the native way to have GUI based applications. While the bundle does contain CLI executables, it is not really logical how you find and execute them. For that reason there is now a .pkg for MacOS that offers only the CLI parts, installed so they are readily available from the commandline.

For Windows, all executables are just placed in a folder, and can be executed individually, similar to how other applications work. There is no need to have a CLI package here because the overhead of the TrayIcon is just a few KiB for an extra executable.

1 Like