Remote development support
Remote development can be adopted by developers to use a lightweight client as an IDE UI, while a powerful remote host handles resource-intensive IDE tasks, such as project loading, indexing, analysis, building, running, debugging, and testing.
Even though IDE Services is currently best suited to manage locally installed JetBrains IDEs, you can still use it to manage some aspects of remote development setups.
What is supported
IDE Provisioner. Only auto-installation of single plugins to the JetBrains Client is supported.
When configuring plugin settings, select All or Remote Development in the Dev Environment filter field.
Only the Auto-install, Auto-install (Forced), Block, Block on Restart and Disable plugin rule types are available.
Disabling and blocking plugins isn't available.
VM options. You can add VM options for the remote backend separately from local IDEs and the JetBrains Client.
Restrictions. If IDE updates on Remote Development hosts are enabled, you can restrict IDE versions separately for local IDEs, the JetBrains Client, and the remote backend. Use the Dev Environment field of the restriction filter.
IDE version pinning on remote hosts. You can keep the remote backend on one IDE build. The host downloads and applies the build itself (see Pin the IDE version on remote hosts).
License Vault. Full support of license distribution and management.
AI Enterprise. Full support of AI Assistant management.
To manage the remote backend, pass the IDE Services tokens to the backend: configure the host. Otherwise, the configurations apply only to the JetBrains Client.
Requirements
For the above features to work with remote development setups, the following requirements must be met:
Toolbox App installed on the developer's local machine.
Remote Development provisioning is supported only for users who connect to their IDE through the JetBrains Toolbox App. Users connected via JetBrains Gateway will not have Remote Development available.
The backend should use an IDE with official Remote Development support. Currently, the following IDEs are supported: IntelliJ IDEA Ultimate, CLion, GoLand, PhpStorm, PyCharm Professional, RubyMine, WebStorm, and Rider.
Backend JetBrains IDE should be of version 2024.3 or newer.
JetBrains IDE Services plugin installed on the IDE's backend.
Pin the IDE version on remote hosts
A pin is a restriction that allows exactly one build of an IDE on the remote backend. Local IDEs are not affected. Once you save a pin, the following happens on each Remote Development host of the profile's users:
The JetBrains IDE Services plugin on the backend checks IDE Services for the required build every 15 minutes.
Toolbox Agent on the host downloads and prepares the build in the background. Developers can keep working in the current IDE.
Starting seven days before the effective date, the IDE displays a notification: This IDE version is no longer allowed by your organization. Update it by <date>. followed by the notification text of the pin.
On the effective date, the JetBrains Client displays the An Urgent Update is Required dialog. When the developer clicks Close IDE, Toolbox Agent applies the build and restarts the backend.
If no JetBrains Client is connected to the backend, Toolbox Agent applies the build without asking. After the last client disconnects, it waits 10 minutes first.
Pins have the following limitations:
Only Linux hosts (x64 and arm64) are supported.
You can pin IDE builds 262.1048 and later.
You can pin only one build per IDE. If several profiles of a user pin the same IDE, the pin from the oldest profile is used.
When you change or remove a pin, the host discards the prepared build. After you remove all pins, the IDE on the host returns to the regular update flow.
Neither the Toolbox App nor the Toolbox daemon is required on the host.
Configure a Remote Development host
To manage the remote backend, prepare each Remote Development host so that the IDE Services tokens are passed to the backend. To also use IDE version pinning, enable the feature on the IDE Services Server.
Enable IDE updates on Remote Development hosts
Add the following parameters to your server configuration file:
tbe.features.remote-host-ide-updates-enabled: true tbe.features.remote-host-ide-updates-ui-enabled: trueides.configCustomization.tbe.features.remote-host-ide-updates-enabled: true ides.configCustomization.tbe.features.remote-host-ide-updates-ui-enabled: trueremote-host-ide-updates-enabledturns on IDE updates on Remote Development hosts and the Dev Environment field in restrictions.remote-host-ide-updates-ui-enabledturns on the Pin host version toggle in restrictions. It requires the first parameter.
Optionally, change how often hosts check for the required build with
tbe.host-provisioning.poll-after-seconds(from60to3600,900by default).Restart your IDE Services Server.
Prepare the host
Create an automation token whose name starts with
impersonation, for example,impersonation-rd-hosts.Only tokens with this prefix can request data on behalf of a user. Keep the token secret: anyone who has it can act as any user of your IDE Services.
Make sure the host meets the requirements:
Linux, x64 or arm64.
The backend IDE is of build 262.1048 or later and has the JetBrains IDE Services plugin installed.
The Station plugin (
com.jetbrains.station) is enabled in the backend IDE.
As the user who runs the backend, create the ~/.config/JetBrains/tbe-host-provisioner.json file:
{ "tbeBaseUrl": "https://ides.example.com", "automationToken": "<automation token>", "userEmail": "developer@example.com" }tbeBaseUrl: the URL of your IDE Services Server. It must use HTTPS and must not end with/.automationToken: the token from the first step.userEmail: the email of the developer who uses the host. IDE Services applies the pins from this user's profiles.
Restrict access to the file. The JetBrains IDE Services plugin ignores the file if other users can read it:
chmod 600 ~/.config/JetBrains/tbe-host-provisioner.jsonOptionally, install Toolbox Agent manually and add the path to its executable to the file:
"tbcliPath": "/opt/jetbrains/tbcli/bin/tbcli"The path must be absolute. If you don't specify it, the JetBrains IDE Services plugin downloads Toolbox Agent through the IDE Services Server to ~/.cache/JetBrains/tbe-host-provisioner/.
Restart the backend IDE.
Install Toolbox Agent manually
Install Toolbox Agent manually if the host cannot download it through the IDE Services Server, or if you want to control which build runs on the host. The distribution is a .tar.gz archive with its own Java runtime.
Download the archive and its checksum for the host architecture (
x64oraarch64). Use build3.9.0.88335, the build the JetBrains IDE Services plugin installs automatically:curl -fLO https://download.jetbrains.com/toolbox/agent/tbcli-linux-x64-3.9.0.88335.tar.gz curl -fLO https://download.jetbrains.com/toolbox/agent/tbcli-linux-x64-3.9.0.88335.tar.gz.sha256If the host has no internet access, download the archive through your IDE Services Server instead. The request requires a user token:
https://ides.example.com/api/toolbox/downloads/download.jetbrains.com/toolbox/agent/tbcli-linux-x64-3.9.0.88335.tar.gzMake sure the checksum matches the value in the .sha256 file:
sha256sum tbcli-linux-x64-3.9.0.88335.tar.gzExtract the archive to a directory of your choice, for example, /opt/jetbrains:
sudo mkdir -p /opt/jetbrains sudo tar -xzf tbcli-linux-x64-3.9.0.88335.tar.gz -C /opt/jetbrainsThe archive contains the tbcli directory. The executable is tbcli/bin/tbcli.
Make sure the user who runs the backend can run the executable:
test -x /opt/jetbrains/tbcli/bin/tbcli && echo okSpecify
/opt/jetbrains/tbcli/bin/tbcliastbcliPathin ~/.config/JetBrains/tbe-host-provisioner.json.
For other ways to provide Toolbox Agent in offline environments, see Toolbox Agent in the Toolbox App documentation.
To check the setup, create a pin for an IDE build that differs from the one on the host. Within one check interval, the host starts preparing the pinned build.