Duple Documentation and Tutorials


How Does It Work?
Activate Your App
Start, Stop and Restart
Create a New Private Cloud
Connect to an Existing Private Cloud
Public/Private Keys
Duple Folder
Private Cloud's Name
Multiple Private Cloud
Collaborative Folder

How Does It Work?

Duple is a new kind of app that simplifies the concept of a private cloud. No more servers or complicated installation. One app, one storage, you're good to go!

The entirety of your private cloud is contained inside a single folder called a repository folder. This folder can be stored anywhere: USB hard drive, NAS, cloud file storage, etc... However in order to use your private cloud, DupleCLI needs to be able to access your repository folder. That's why it is better to store it somewhere easily accessible from anywhere. You can't read the data contained inside the repository folder without using DupleCLI.

On your devices (where DupleCLI is installed), you get a second folder called Duple (inside your "My Documents" folder). This folder contains the readable data, it's where you work with your private cloud: add, modify and remove your files there.

Your data is always at least in two places at the same time: inside the Duple folder (present on every desktop device where DupleCLI is installed) and in the repository folder.

Activate Your App

Before doing anything, you need to activate your app using your serial number (12 alphanumerical characters):

duplecli --activate XXXX-XXXX-XXXX

If your serial number changed, just re-activate your app using the same command above, and restart DupleCLI.

Start, Stop and Restart

To start DupleCLI, use:

duplecli --start

to stop it:

duplecli --stop

and to restart it:

duplecli --restart

You will need to start the app first before entering any command.

Create a New Private Cloud

To create a new private cloud, use the command:

duplecli --create

This command requires 2 pieces of information: 1) where to store your private cloud (repository folder) and 2) how to access it (connection info). Use the --repopath flag to specify where to store the repository folder. For the connection info, use the --connection flag. For example, to store your private cloud locally (on your hard drive or a mounted distant file system) use:

duplecli --create --connection local --repopath /local/repo/path

Right now Duple supports only 2 types of connection: local and SFTP. More protocols will be added in the future. To use a SFTP connection instead of a local one, the --connection flag requires more info:

  • --username the SFTP connection's login
  • --password the SFTP connection's password (prompted after launching the command)
  • --address the IPv4, IPv6 or domain name of the SFTP storage
  • --port the SFTP connection's port

For example, to store your private cloud on a SFTP storage on your local network, use:

duplecli --create --connection sftp --username user --password --address --port 22 --repopath /distant/repo/path

It will then ask you for the connection's password.

That's it! You've created your private cloud! You can start adding files by moving them into the Duple folder that's just been created inside your "My Documents". This folder contains the entirety of your private cloud.

Connect to an Existing Private Cloud

To connect to a private cloud, use the command:

duplecli --connect

This command works exactly like duplecli --create, it requires the same 2 pieces of info: 1) where your private cloud is (repository folder) and 2) how to access it (connection info). An example of how to connect to a local repository:

duplecli --connect --connection local --repopath /local/repo/path

and how to connect to a distant SFTP repository:

duplecli --connect --connection sftp --username user --password --address --port 22 --repopath /distant/repo/path

Public/Private Keys

When connecting over SFTP, it is safer to use a public/private key pair instead of a password. To do so, the --connection flag accepts 3 pieces of information:

  • --publickey the public key path
  • --privatekey the private key path
  • --privatekeypassword the private key password, if any (optional)

DupleCLI copies and stores locally the key pair in the configuration files. RSA, ECDSA and ED25519 keys (PEM and OpenSSH formats) are supported. The --publickey and --privatekey flags replace the --password flag. Here's an example:

duplecli --create --connection sftp --username user --address --port 22 --publickey /path/to/public/key --privatekey /path/to/private/key --repopath /distant/repo/path

and with a password-protected private key:

duplecli --connect --connection sftp --username user --address --port 22 --publickey /path/to/public/key --privatekey /path/to/private/key --privatekeypassword --repopath /distant/repo/path

DupleCLI will then ask you for the private key's password.


DupleCLI synchronizes the data inside your Duple folder across all devices and with the repository folder. This happens when:

  • DupleCLI starts
  • a modification is detected inside the Duple folder
  • another device notifies via P2P that an update is available

If you still want to force a synchronization, you can use:

duplecli --update

The synchronization is always multi-directional. In case of conflict no data is overwritten or deleted, instead the conflicted file is renamed with a warning like File (User's conflicted copy 2019-06-12). You will then have to decide which version to keep.

The technology has been designed to preserve the storage's lifespan. It will only query the storage when necessary, allowing it to fall into sleep mode as much as possible.

However the P2P network interconnecting the devices is not available yet (see missing features in bugs). If you want to download updates regularly you can set a crontab with duplecli --update every X min depending on your needs. Keep in mind that querying regularly your storage prevents it from going into sleep mode, and it also reduces its lifespan. Use it carefully, or wait for the P2P network functionality.


You can check the synchronization status using:

duplecli --status

If some error occurred during the sync, you will get:

status: [online] synchronized [error]

Duple Folder

The Duple folder where you access your private cloud files can be renamed or moved while DupleCLI is running.

You can also set its name when you create or connect to a private cloud using the flag --watchpath. An example:

duplecli --create --connection local --watchpath /my/new/duple/path --repopath /local/repo/path

The Duple folder will be created at /my/new/duple/path.

Private Cloud's Name

You can change the name of your private cloud using the flag --reponame when creating it:

duplecli --create --connection local --reponame "new name" --repopath /local/repo/path

Multiple Private Cloud

You can create and connect to as many private clouds as you want. Just repeat the command duplecli --create or duplecli --connect as needed.

You can use the flag --watchpath to specify where to put the Duple folder containing the private cloud's files.

Collaborative Folder

A collaborative folder is a space where you can share your files with other people. We don't officially have sharing features, however the technology behind Duple is ready for it. We want to wait in order to get the user experience right.

Fortunately, you can already have collaborative folders by creating another private cloud and sharing the access to it with other people.

If you want to have the full user experience of a normal collaborative folder with DupleCLI, and have everything under one folder, you can set the path of the shared Duple folder with --watchpath inside your private cloud's original Duple folder. For example, create your private cloud normally using:

duplecli --create --connection local --reponame "private cloud" --repopath /local/repo1

then create (or connect) your shared cloud with the --watchpath inside your private cloud's Duple folder:

duplecli --create --connection local --reponame "shared cloud" --watchpath /home/user/Duple/sharedFolder --repopath /local/repo2

Everything inside /home/user/Duple will be synchronized with your private cloud (/local/repo1) and everything inside /home/user/Duple/sharedFolder will be synchronized with your shared cloud (/local/repo2). You get one general folder for everything, with the shared folder inside. However the shared cloud's data gets duplicated to the private cloud (available in 2 repository folders).