Offline remote development in the Toolbox App
You can configure the remote development in the Toolbox App for offline/air-gapped environments.
Toolbox Agent
The proper distribution of Toolbox Agent must be manually provided into the proper directory or must be accessible from either public or internal server. Currently, we require the Toolbox Agent to be exactly the same version as the Toolbox App. The full version of the Toolbox App is available in About section:
The URL to Toolbox Agent has the format: https://download.jetbrains.com/toolbox/agent/tbcli-{os}-{arch}-{build_number}.tar.gz
os: win32, linux, mac
arch: x64, aarch64
build_number is exactly the same as Toolbox App build version string
You have to construct the proper link based on your remote environment platform. Example link: https://download.jetbrains.com/toolbox/agent/tbcli-linux-x64-2.8.1.52155.tar.gz
SSH flow
The deployment process uses (among others) following environment variables:
cli_url - which should point to URL to download the correct version of Toolbox Agent
cli_sha256 - which should match the sha256 of Toolbox Agent archive
cli_dir_path - which should point to the directory of unpacked Toolbox Agent
Manual provision
In order to provision the artifacts manually, you have to override only cli_dir_path. The Agent distribution contains the Java runtime which will be automatically detected.
Internal repository / proxy server
If you want the Toolbox App to automatically download and extract the correct version of Toolbox Agent, you have to override the cli_url and cli_sha256 variables. You can construct the correct link using cli_version variable which is equal to build_number part of the distribution name.
Check the following example:
How to provide variables
The only way to provide those environment variables is by using an env override file. There are two env override files:
System-wide
/Library/Application Support/JetBrains/ToolboxSshDeploy/env.sh/etc/xdg/JetBrains/ToolboxSshDeploy/env.sh%ALLUSERSAPPDATA%/JetBrains/ToolboxSshDeploy/env.ps1User-specific
~/Library/Application Support/JetBrains/ToolboxSshDeploy/env.shIf
$XDG_CONFIG_HOMEis set then$XDG_CONFIG_HOME/JetBrains/ToolboxSshDeploy/env.shIf
$XDG_CONFIG_HOMEis not set then~/.config/JetBrains/ToolboxSshDeploy/env.sh%LOCALAPPDATA%/JetBrains/ToolboxSshDeploy/env.ps1The user-specific file will override the variables set in system-wide one.
Check the following example for the Unix content:
Check the following example for the Windows content:
Custom connection flow
If your custom plugin uses AgentConnectionBasedEnvironmentContentsView, then the only requirement is to launch the proper version of Toolbox Agent on the remote environment and provide the connection to the Toolbox App.
IDEs
Besides the Toolbox App and Toolbox Agent, in an air-gapped environment one also has to provide the IDE on the remote side and the compatible client on the local side.
Remote side
On the remote side, you have to provide the full IDE.
Local side
On the local side, you can either provide a corresponding JetBrains Client or the same full IDE as on the remote side.
Locations
By default, the Toolbox App detects tools only in the following default paths:
/Applications, ~/Applications
/usr/local/bin, ~/.local/share/JetBrains/Toolbox/apps
%PROGRAMFILES%, %LOCALAPPDATA%\Programs
However, the Toolbox App provides a way to scan additional paths:
~/Library/Application Support/JetBrains/Toolbox/preinstalled
~/.local/share/JetBrains/Toolbox/preinstalled
%LOCALAPPDATA%/JetBrains/Toolbox/preinstalled
Each tool should be represented by one JSON file in the directory. The format of file is:
Environment.json (only Toolbox Agent)
Toolbox Agent looks for environment.json file in:
~/Library/Application Support/JetBrains/Toolbox/environment.json
~/.local/share/JetBrains/Toolbox/environment.json
%LOCALAPPDATA%/JetBrains/Toolbox/environment.json
Feed
This step can be initially omitted. However, it might be needed in case of some problems:
The Toolbox App tries to download JetBrains Client for remote IDE even though there’s either a proper JetBrains Client or a full IDE on the local side.
Remote Development works but wrong config/system directories are used for either client or backend. (or plugins are missing).
In order to let the Toolbox App properly detect tools, you may need to provide the feed manually. Feed is a list of tools and information about them.
To be able to manually provide feed files, you have to start Toolbox with argument:
In such mode, the Toolbox App searches for the offline config file at the following location:
~/Library/Application Support/JetBrains/Toolbox/offline_config.json
~/.local/share/JetBrains/Toolbox/offline_config.json
%LOCALAPPDATA%/JetBrains/Toolbox/offline_config.json
The offline config should have a format:
The most recent feed file containing all IDEs is available under the following links:
https://download.jetbrains.com/toolbox/feeds/v1/public-feed.feed.xz.signed
https://download.jetbrains.com/toolbox/feeds/v1/public-feed-arm.feed.xz.signed
Notes
Check the following sample script that was used for preparing remote machine to test offline mode on Linux:
Default paths
Remote paths
Toolbox CLI:
~/Library/Caches/JetBrains/Toolbox-CLI-dist/JBR:
~/Library/Caches/JetBrains/Toolbox-CLI-dist/Default IDE path:
~/Applications/Environment:
~/Library/Application Support/JetBrains/Toolbox/environment.jsonVM Options:
~/Library/Application Support/JetBrains/<IDE_Name>/ide_name.vmoptions
Toolbox CLI:
~/.cache/JetBrains/Toolbox-CLI-dist/JBR:
~/.cache/JetBrains/Toolbox-CLI-dist/Default IDE path:
~/.local/share/JetBrains/Toolbox/apps/Environment:
~/.local/share/JetBrains/Toolbox/environment.jsonVM Options:
~/.config/JetBrains/<IDE_Name>/ide_name.64.vmoptions
Toolbox CLI:
%LOCALAPPDATA%\JetBrains\Toolbox-CLI-dist\JBR:
%LOCALAPPDATA%\JetBrains\Toolbox-CLI-dist\Default IDE path:
%LOCALAPPDATA%\Programs\Environment:
%LOCALAPPDATA%\JetBrains\Toolbox\environment.jsonVM Options:
%APPDATA%/JetBrains/<IDE_Name>/ide_name.64.exe.vmoptions
>
Local installations (JetBrains Client)
Client: ~/Library/Application Support/JetBrains/Toolbox/internal-tools/
Client: ~/.local/share/JetBrains/Toolbox/internal-tools/
Client: %LOCALAPPDATA%\JetBrains\Toolbox\internal-tools\