{"id":204034,"date":"2021-12-03T15:42:16","date_gmt":"2021-12-03T14:42:16","guid":{"rendered":"https:\/\/blog.jetbrains.com\/?post_type=blog&#038;p=204034"},"modified":"2025-09-19T13:57:45","modified_gmt":"2025-09-19T12:57:45","slug":"dive-into-jetbrains-gateway","status":"publish","type":"blog","link":"https:\/\/blog.jetbrains.com\/en\/blog\/2021\/12\/03\/dive-into-jetbrains-gateway","title":{"rendered":"A Deep Dive Into JetBrains Gateway"},"content":{"rendered":"\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"1280\" height=\"720\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/12\/Preview_page_1280x720.png\" alt=\"\" class=\"wp-image-210006\"\/><\/figure>\n\n\n\n<p>Recently we announced <strong>support for <a href=\"https:\/\/www.jetbrains.com\/remote-development\/\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\">remote development in JetBrains IDEs<\/a><\/strong>. This means you can host your source code, toolchains, and an IntelliJ-based IDE running as a service on a remote server. A local thin client, based on the familiar IntelliJ Platform, provides a rich, full featured UI for editing, building, running, testing, debugging, and more.<\/p>\n\n\n\n<p>Everything you need for working on your code can live remotely on a physical server or a virtual machine, giving you clean, reproducible development environments, the power of a server machine, and the ability to work from anywhere.<\/p>\n\n\n\n<p>If you haven\u2019t already seen the announcement, now is a <a href=\"https:\/\/blog.jetbrains.com\/blog\/2021\/11\/29\/introducing-remote-development-for-jetbrains-ides\/\">good time to check it out<\/a>.<\/p>\n\n\n\n<p><meta charset=\"utf-8\">Today, let\u2019s take a deeper look at the remote development workflow managed by the new <a aria-label=\"JetBrains Gateway app (opens in a new tab)\" href=\"https:\/\/www.jetbrains.com\/remote-development\/gateway\/\" target=\"_blank\" rel=\"noreferrer noopener\" class=\"ek-link\">JetBrains Gateway app<\/a>. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Remote development with JetBrains Gateway<\/h2>\n\n\n\n<p>JetBrains remote development will <strong>connect to a server via SSH<\/strong>. The IDE is installed as a backend service on the remote machine, where it will load the project without displaying a user interface. A thin client runs locally, connects to the IDE backend and provides a full, rich UI, while all the processing happens remotely.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/ig4KQ10_w2-7SwmWxVudk_pWuO9MIIrIEMxV-pZGl-mxE6PRtPmAsLizyREUK4-wUAc9iA7JlDFRaQvumnOrHBAXi2bt2gE572w0ADRbVurow4yWqpSkS7eqIzgvKqsGVkXCnmDM-5.png\" alt=\"\"\/><\/figure>\n\n\n\n<p>This whole process is managed by <strong>JetBrains Gateway<\/strong>, a new, compact, standalone app that provides everything you need to get started with remote development. Since it\u2019s standalone, it\u2019s the only thing you need to install locally to start working and is ideal for less powerful laptops and in cases where a full IDE install isn\u2019t desired.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/LBZGdetO6IYaVM9Mrch_pZwQhe7AUCouAoP767aUDU9jeWOBDpzw1fFAubjvgTrjZ_kEV2qKBzh37c74J8t_KUBOqsvaovRQFn2JkLqe_dNQCxhmS_TZbCq4WIl214AvB3EL0qGJ-5.png\" alt=\"\"\/><\/figure>\n\n\n\n<p>JetBrains Gateway is also <strong>bundled as a plugin<\/strong> with a <a href=\"https:\/\/www.jetbrains.com\/remote-development\/#toolset\" class=\"ek-link\" target=\"_blank\" rel=\"noopener\">number of JetBrains IDEs<\/a>. In this initial beta release, you can start a remote development session directly from the <em>Welcome screen<\/em> of IntelliJ IDEA Ultimate, PyCharm Professional, GoLand, PhpStorm, and RubyMine. Additionally, the <a href=\"https:\/\/www.jetbrains.com\/remote-development\/gateway\/\" target=\"_blank\" aria-label=\"standalone Gateway app (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\">standalone Gateway app<\/a> can install and manage CLion and WebStorm. More IDEs will be supported soon.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/1rRLwLa28IGpYLivbEEKKKZE9sBKQQ8ara71VvmCBERQ5-vQc24oKAaVnYB_t0WDqbCBhELf0q_4-7k_x_nFGwFOhJuFooX3XtrN28GcOlsG35rZbj7stRdDPLvnRF8Uwgl88ZRx-5.png\" alt=\"\"\/><\/figure>\n\n\n\n<p>Gateway will install the remote IDE backend and the local thin client, and connect them both via SSH. First, it sets up the SSH connection. Specify a host and username and provide either a key or a password, and Gateway will connect to the remote server. It checks to see whether an IDE backend is already installed and will download a new version from jetbrains.com if not.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/3W2C9eapksZpYx7h5vqIhtlvmJ-yeno6E9Z1BZ5mdUmd88gE2w7i85FY2GpJF2mG_NO_C5WRLrkMc8A2THTUSZfTqexdCuAOSH91voUMYIjKe1hW9koviaBCrta45SEYeUwQ3_eh-5.png\" alt=\"\"\/><\/figure>\n\n\n\n<p>In order to launch the IDE backend, Gateway needs to know the project directory. You can browse the remote file system and choose a directory, or if the project isn\u2019t available yet, you can use the <strong>built-in terminal to clone the project<\/strong> from your version control system.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/ydWFA_cLTj_V8LAaSfvk-oK8jcTd1tr_K5SZxZ0OAuaEvy_a2jVdFrgHCDpXoqXc2EoI5hNlqmdI433Lt8IWjPhXjd0NrxEtAWEmWJSH4bYDgsyUEDjSYWNmyaqSo-NrmSSP24xo-5.png\" alt=\"\"\/><\/figure>\n\n\n\n<p>Once the IDE version and project directory are selected, Gateway will download the IDE to the remote server, unpack it, and launch it with your project loaded. It then downloads, caches, and launches a matching version of the JetBrains Client locally.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"1600\" height=\"1200\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/12\/image6.png\" alt=\"\" class=\"wp-image-210142\"\/><\/figure>\n\n\n\n<p>The JetBrains Client runs locally and provides the user interface for the IDE backend. It\u2019s based on the IntelliJ Platform and <strong>feels just like a full IntelliJ-based IDE<\/strong> \u2013 it has the same editor, code completion, navigation, inspections, and refactoring tools as a local IDE, but all of the files are hosted remotely and all of the language processing is done on the remote server. It is the same JetBrains Client we use for <a href=\"https:\/\/www.jetbrains.com\/code-with-me\/\" target=\"_blank\" rel=\"noopener\">Code With Me<\/a>, although it\u2019s been taught a few new tricks. It can now show all of the dialogs and tool windows from the IDE backend locally in the rich IDE client, which allows access to all of the features of the remote IDE backend.<\/p>\n\n\n\n<p>Once you\u2019ve finished working with your code, you can simply close the JetBrains Client. The IDE backend will continue running, and you can <strong>easily reconnect by clicking the recent connection<\/strong> listed in Gateway.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Server configuration<\/h2>\n\n\n\n<p>So far, we haven\u2019t talked much about the remote server. Currently, <strong>remote development requires a Linux server<\/strong>, but this will be updated in the future (the Client runs on Windows, macOS, and Linux). Other than that, you can use whatever server you like &#8211; physical or virtual, hosted locally, in a data center, or in the cloud.<\/p>\n\n\n\n<p>One of the benefits of using virtual machines or containers is the ability to reproduce an environment and share it amongst the team. To help your DevOps team, JetBrains remote development <strong>includes a helper script that can be used to \u201cwarm up\u201d an existing environment<\/strong>, by loading the project, downloading dependencies, indexing, and compiling. The resulting image is now ready for you to immediately start coding.<\/p>\n\n\n\n<p>If you\u2019d prefer not to spend time writing your own scripts, JetBrains Space, our all-in-one solution for software teams and projects, has just <a href=\"https:\/\/www.jetbrains.com\/remote-development\/space-dev-environments\/\" class=\"ek-link\" target=\"_blank\" rel=\"noopener\">introduced cloud dev environments<\/a>. Any project hosted in Space can easily be turned into a dev environment, with support for warming up the project by loading, compiling, indexing, and then <strong>saving the environment as a snapshot that is ready for you to start coding in<\/strong>. Read the <a href=\"https:\/\/blog.jetbrains.com\/space\/2021\/11\/29\/introducing-remote-development-with-space\/\">Space announcement post for more details<\/a>.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/qP00s8xN69qsNHwTGZVoqVHalKeTx2Ie61RoLfVVARjGuMpLoxtygSa1c4hEqFfP99YAbV7i-mUeSATorRMAmhoQmRE5ni9bGCUs_E0tY2J-CnXW-xZzX_lN8B-M55PQ5hdXqSyG-5.png\" alt=\"\"\/><\/figure>\n\n\n\n<p>Get started with remote development using <strong>the standalone <\/strong><a href=\"https:\/\/www.jetbrains.com\/remote-development\/\" target=\"_blank\" rel=\"noopener\"><strong>JetBrains Gateway<\/strong><\/a><strong> tool<\/strong>, or <strong>download the 2021.3 release of your favorite IntelliJ-based IDE<\/strong> (released this week). <a href=\"https:\/\/www.jetbrains.com\/help\/idea\/2021.3\/remote-development-a.html\" target=\"_blank\" rel=\"noopener\">Check out the documentation<\/a> and please let us know about your experience!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">FAQ<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">What is the status of remote development support?<\/h3>\n\n\n\n<p>You might have noticed the \u201cbeta\u201d labels in the screenshots. Support for <a href=\"https:\/\/www.jetbrains.com\/remote-development\/\" target=\"_blank\" aria-label=\"remote development (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\">remote development<\/a> is baked into the IntelliJ Platform itself, and touches a huge number of features across all IDEs. While we\u2019re confident that the core scenarios work, there are still going to be some hiccups along the way. Nevertheless, we want to get the features into the hands of developers early.<\/p>\n\n\n\n<p>JetBrains Gateway is bundled as a plugin in a number of IDEs. Some other IDEs (CLion and WebStorm) don\u2019t bundle it, since they are not as far along with testing as the others. You can still try out Gateway on these other IDEs using the standalone app.<\/p>\n\n\n\n<p>Finally, there are a few IDEs that currently don\u2019t work with remote development: AppCode, DataGrip, DataSpell, Rider, and Android Studio. We\u2019re actively working to implement support for them as soon as possible.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">How is remote development licensed?<\/h3>\n\n\n\n<p>Remote development is <strong>included as part of an existing paid subscription<\/strong>. A license check is performed when the Client connects to a running IDE backend instance. A license is not required for automation use cases, such as using the IDE backend to create and \u201cwarm up\u201d a remote server or server image. However, a license is required in order to use the IDE backend interactively with the JetBrains Client.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Does remote development include collaborative development?<\/h3>\n\n\n\n<p>Not yet, but <strong>we have plans to add it<\/strong>. Remote development is based on the same technology that powers <a href=\"https:\/\/www.jetbrains.com\/code-with-me\/\" target=\"_blank\" aria-label=\"Code With Me (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\">Code With Me<\/a>, and the JetBrains Client is the same client used for Code With Me sessions.&nbsp;<\/p>\n\n\n\n<p>However, the usage scenarios are very different. Code With Me is intended to show some tool windows and dialogs to multiple simultaneous users, possibly with different views, while remote development needs to show <em>all<\/em> tool windows and dialogs to a single user. The team has just been focusing on this scenario for the initial release.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Does remote development offer the full JetBrains IDE experience?<\/h3>\n\n\n\n<p>Yes! Even though you\u2019re working with a thin client and a headless IDE backend, <strong>all key features, tool windows, and dialogs are available to you<\/strong>. Rich syntax highlighting, navigation, code completion, inspections, <em>Alt+Enter<\/em> actions, quick-fixes, context actions, refactorings, run configurations, run and debug support, testing and tool windows such as Gradle and Maven, plugins, and much more are available.<\/p>\n\n\n\n<p>Remote development also <strong>includes port forwarding<\/strong>, so it\u2019s possible to view projects running remotely via your local browser.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Are alternative UIs available, like web or iPad?<\/h3>\n\n\n\n<p>Remote development has been specifically designed to work with the JetBrains Client using the IntelliJ Platform to provide a rich, familiar client application with all of the well-known features of JetBrains IDEs, including customization and personalization with themes and plugins (which are automatically imported from any locally installed IDE). By reusing the approach behind both Rider and Code With Me, the protocol can be based on lightweight \u201cview models\u201d, which results in a <strong>good, responsive user experience<\/strong>. As such, we don\u2019t have plans to make a web frontend available.<\/p>\n\n\n\n<p>It is possible to use <a href=\"https:\/\/lp.jetbrains.com\/projector\/\" target=\"_blank\" rel=\"noopener\">Projector<\/a> to access a JetBrains IDE through a web browser. Note that Projector works on a lower level than the remote development protocol, so it has higher UI latency and uses significantly more network bandwidth. Another limitation of Projector is that it doesn&#8217;t support importing your settings and plugins from a locally installed IDE.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Are plugins supported?<\/h3>\n\n\n\n<p>The IntelliJ Platform has a <a href=\"https:\/\/plugins.jetbrains.com\" target=\"_blank\" rel=\"noopener\">great ecosystem of plugins<\/a>, which continue to work with remote development. If a plugin is designed to extend IDE functionality, for example by adding support for a new language or new inspections and highlighting, it <strong>can be installed on the IDE backend<\/strong> and these features will automatically be available in the JetBrains Client. Any new inspections, <em>Alt+Enter<\/em> actions, and so on will work through the Client just as they do when run with a local IDE. Plugin installation <a href=\"https:\/\/www.jetbrains.com\/help\/idea\/2021.3\/remote-development-a.html#plugins\" target=\"_blank\" rel=\"noopener\">can also be automated<\/a> by scripting the IDE backend.<\/p>\n\n\n\n<p>Plugins that modify the UI of the IDE, such as themes, can be installed on the JetBrains Client rather than the IDE backend. Editor plugins such as <a href=\"https:\/\/plugins.jetbrains.com\/plugin\/164-ideavim\" target=\"_blank\" rel=\"noopener\">IdeaVim<\/a> will also work on the Client.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Which operating systems are supported?<\/h3>\n\n\n\n<p>Currently, JetBrains remote development <a href=\"https:\/\/www.jetbrains.com\/help\/idea\/2021.3\/remote-development-a.html#remote_prerequisites\" target=\"_blank\" rel=\"noopener\"><strong>requires a Linux server<\/strong><\/a>, although the Client works on Windows, macOS, and Linux. We\u2019ll be adding support for Windows and macOS servers in the future.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Can I host remote servers in the cloud?<\/h3>\n\n\n\n<p>Of course! The remote server can be a physical server sitting in an office or a virtual machine on a desktop or in the cloud. It can be created as a Docker image, and the IDE backend includes scripts for downloading dependencies, compiling, and waiting for indexes to complete.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Are any third parties offering orchestration for JetBrains remote development?<\/h3>\n\n\n\n<p>JetBrains Space is currently the only tool offering remote server orchestration, using a Dockerfile to convert a repository into a ready-to-use virtual machine. We are talking to other providers about integration and will have more to announce in the future.<\/p>\n","protected":false},"author":96,"featured_media":210006,"comment_status":"closed","ping_status":"closed","template":"","categories":[286],"tags":[6826,477,6549,1038],"cross-post-tag":[],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/blog\/204034"}],"collection":[{"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/blog"}],"about":[{"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/types\/blog"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/users\/96"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/comments?post=204034"}],"version-history":[{"count":10,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/blog\/204034\/revisions"}],"predecessor-version":[{"id":638266,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/blog\/204034\/revisions\/638266"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/media\/210006"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/media?parent=204034"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/categories?post=204034"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/tags?post=204034"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/cross-post-tag?post=204034"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}