Skip to main content

Installation

Current version

PyPI - Version

Quick install

Install or upgrade with a single command on macOS and Linux:

curl -fsSL https://files.remotivelabs.com/remotivelabs-cli/install.sh | bash
note

Piping to bash runs the script without giving you a chance to read it first. To review it, open install.sh before running, or skip the script entirely and follow Manual installation using your package manager.

info

On Windows, WSL2 is supported.

Install script options

To pass options through curl … | bash, add -s -- before them:

# Install a specific version
curl -fsSL https://files.remotivelabs.com/remotivelabs-cli/install.sh | bash -s -- 0.23.4

# Force a reinstall even if already up to date
curl -fsSL https://files.remotivelabs.com/remotivelabs-cli/install.sh | bash -s -- -f

# Print what would happen without changing anything
curl -fsSL https://files.remotivelabs.com/remotivelabs-cli/install.sh | bash -s -- --dry-run
How the script installs per platform
PlatformMethodFallback
macOSChoose Homebrew tap or signed .pkg-
Debian / Ubuntuapt + RemotiveLabs apt repositoryself-contained bundle
Red Hat Enterprise Linux (RHEL) / Fedora / SUSE Linux Enterprise (SUSE)dnf/yum + RemotiveLabs yum repositoryself-contained bundle
Other Linux (e.g. Arch)self-contained bundle under ~/.local (no root)
Signed artifacts

Signatures use Privacy Guard (GPG); checksums use Secure Hash Algorithm (SHA) 256-bit digests.

ArtifactSignedNotarizedVerified on install by
macOS .pkg✅ RemotiveLabs Developer ID✅ stapledGatekeeper + SHA-256 (install script)
macOS Homebrew bundle✅ RemotiveLabs Developer IDSHA-256 (Homebrew)
Debian / Ubuntu (apt)✅ signed apt repositoryapt verifies the repository signature
RHEL / Fedora (yum/dnf)✅ RemotiveLabs GPG key (from v0.23.5)dnf/yum verifies each package (gpgcheck=1)
Linux tar bundleSHA-256 (.sha256), verified by the install script
Pipx / PyPI wheelHTTPS (PyPI)

Manual install

If you prefer to manage the installation yourself, choose your platform and use one of the methods below instead of the install script.

.deb

On Debian and Ubuntu, add the RemotiveLabs apt repository and install:

curl -fsSL https://packages.remotivelabs.com/apt-repo-signing-key.gpg | sudo gpg --dearmor -o /usr/share/keyrings/remotivelabs-apt.gpg
echo "deb [signed-by=/usr/share/keyrings/remotivelabs-apt.gpg] https://packages.remotivelabs.com remotivelabs-apt main" | sudo tee /etc/apt/sources.list.d/remotivelabs.list
sudo apt update
sudo apt install remotivelabs-cli

Upgrade:

sudo apt update
sudo apt install remotivelabs-cli

.rpm

On RHEL, Fedora, and SUSE, add the RemotiveLabs yum repository and install:

sudo tee /etc/yum.repos.d/remotivelabs.repo > /dev/null <<EOF
[remotivelabs]
name=Remotivelabs
baseurl=https://packages.remotivelabs.com/yum/remotivelabs-yum
enabled=1
repo_gpgcheck=0
gpgcheck=1
gpgkey=https://files.remotivelabs.com/remotivelabs-cli/remotivelabs-rpm-signing-key.gpg
EOF
sudo dnf install remotivelabs-cli

Upgrade:

sudo dnf upgrade remotivelabs-cli

On the first install, dnf asks you to confirm the import of the RemotiveLabs signing key. Its fingerprint is:

97AD 3C39 C481 B264 EECC  C165 67AB C659 C983 948B
info

Packages are GPG-signed from v0.23.5 onwards. To install an older (unsigned) version, pass --nogpgcheck to dnf.

.tar

A self-contained bundle that ships its own Python, available for x86_64 and aarch64. It requires glibc, so musl-based distributions such as Alpine aren't supported (install with pip/pipx instead). This is the best option when you manage the installation yourself.

Install to ~/.local/opt and add a symlink to your PATH:

VERSION=$(curl -fsSL https://files.remotivelabs.com/remotivelabs-cli/latest/latest-version.txt)
ARCH=$(uname -m) # x86_64 or aarch64
curl -fsSL -O "https://files.remotivelabs.com/remotivelabs-cli/$VERSION/remotivelabs-cli-$VERSION-$ARCH.tar.gz"
mkdir -p ~/.local/opt
tar -xzf "remotivelabs-cli-$VERSION-$ARCH.tar.gz" -C ~/.local/opt
sudo ln -sf ~/.local/opt/remotivelabs-cli/remotive /usr/local/bin/remotive
remotive --version

Install with checksum verification against the published SHA-256 digest:

VERSION=$(curl -fsSL https://files.remotivelabs.com/remotivelabs-cli/latest/latest-version.txt)
ARCH=$(uname -m) # x86_64 or aarch64
curl -fsSL -O "https://files.remotivelabs.com/remotivelabs-cli/$VERSION/remotivelabs-cli-$VERSION-$ARCH.tar.gz"
curl -fsSL -O "https://files.remotivelabs.com/remotivelabs-cli/$VERSION/remotivelabs-cli-$VERSION-$ARCH.tar.gz.sha256"
sha256sum -c "remotivelabs-cli-$VERSION-$ARCH.tar.gz.sha256"
mkdir -p ~/.local/opt
tar -xzf "remotivelabs-cli-$VERSION-$ARCH.tar.gz" -C ~/.local/opt
sudo ln -sf ~/.local/opt/remotivelabs-cli/remotive /usr/local/bin/remotive
remotive --version

Proxy and certificates

If you are behind a corporate proxy, set both of these environment variables:

export HTTPS_PROXY=http://proxy:port
export https_proxy=http://proxy:port

If you need to use custom CA certificates:

export REQUESTS_CA_BUNDLE=/path/to/cacerts
export GRPC_DEFAULT_SSL_ROOTS_FILE_PATH=/path/to/cacerts

Verify installation

remotive --version
remotivelabs-cli 0.x.x (python 3.12.11; linux; native)

Authentication

To use RemotiveTopology or RemotiveCloud features you must have a RemotiveCloud account. If you don't have an account, it's created for you during the sign-in process. If your organization has an enterprise account, make sure to log in with the correct email and login option.

Login

When signing in, a web browser is opened to let you sign in with your credentials. Once you have signed in with the browser you are good to go. If you are in an environment where no browser is available, such as a virtual machine or docker, you can use headless support. Note that you still need access to a browser, just not on the target machine.

You can log in with more than one account (email) and have multiple credentials that you can switch between.

remotive cloud auth login

Follow the authentication flow until your browser says that you have been successfully logged on and then you should see the same output in the terminal.

Successfully logged on

Existing accounts

If you try to log in and already have existing credentials, you are prompted to use one of these first. Enter or 'Y' (default) lets you activate existing credentials (see below), and 'n' lets you log in again.

You have credentials available already, would you like to choose one of these instead? [Y/n]:

Switch between existing accounts

You can also activate existing accounts using the command below, which gives you the same prompt.

remotive cloud auth activate

Then choose the account to use:

┏━━━┳━━━━━━━━┳━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━┓
┃ # ┃ Active ┃ Type ┃ Token ┃ Account ┃ Created ┃ Expires ┃
┡━━━╇━━━━━━━━╇━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━┩
│ 1 │ x │ user │ A75A71ED20AACC48 │ user@domain.com │ 2025-06-16 │ 2026-06-16 │
│ 1 │ │ user │ BC5A719D20DA1C41 │ user2@domain.com │ 2025-06-16 │ 2026-06-16 │
└───┴────────┴──────┴──────────────────┴──────────────────────┴────────────┴────────────┘

Enter the number(# 1-2) of the account to select (q to quit) [1]:

Verify credentials

Verify that you are who you think you are:

remotive cloud auth whoami
{
"firstName": "John",
"lastName": "Dev",
"email": "john.dev@remotivelabs.com",
"picture": "https://lh3.googleusercontent.com/a/asdf=s96-c",
"uid": "xxx"
}

Set default organization

RemotiveTopology requires an organization to work, so you must set a default organization or use an environment variable.

remotive cloud auth organization set --it

This shows you the organizations you have available.

┏━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━┓
┃ # ┃ Name ┃ Uid ┃ Default ┃
┡━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━┩
│ 1 │ My org │ my-org │ │
│ 2 │ Another org │ mzfazxo2ypxxd9cbfig │ │
└───┴───────────────┴──────────────────────┴─────────┘

Enter the number(# 1-2) of the organisation to select (or q to quit):

You can also set it directly by organization id with remotive cloud auth organization set <id>, or print the current default with remotive cloud auth organization print. It's also possible to set this using an environment variable

export REMOTIVE_CLOUD_ORGANISATION=my-org

Specify access token

In CI environments, it's recommended that the access token comes from an external secret. Set the access token to use with REMOTIVE_CLOUD_AUTH_TOKEN (introduced in v0.3.5).

export REMOTIVE_CLOUD_AUTH_TOKEN=my-token-xxx