platform/eel/docs/EelApi_as_Run_Targets_2.0.md
EelApi represents a significant evolution in how IntelliJ-based IDEs interact with different execution environments, positioning itself as "Run Targets 2.0". This document explains the relationship between EelApi and Run Targets, the underlying technology that makes it possible, and the benefits it provides.
Run Targets was the original approach to supporting remote execution environments in IntelliJ-based IDEs. While it provided a way to work with remote environments, it had limitations in terms of user experience, performance, and integration with the IDE.
EelApi was created to address these limitations and provide a more unified, seamless experience when working with different execution environments, particularly local isolated environments like WSL and Docker containers.
EelApi aims to unify the local and remote worlds, ensuring that the user experience with isolated environments is no different from the local one. It eliminates the need for environment-specific checks and allows developers to write clean code without worrying about the underlying environment.
EelApi provides performance optimizations compared to traditional approaches:
Unlike Remote Development (RD), which requires downloading and setting up a separate backend, EelApi provides a more integrated approach:
EelApi is powered by IJent, a small agent application that provides access to remote environments. Here's how it works:
IJent is an agent application written in Rust that resides on the remote side (e.g., inside a WSL distribution or Docker container). It provides a bridge between the IDE and the remote environment, allowing the IDE to interact with the remote file system, processes, and network.
The development of IJent involved solving several technical challenges:
While IJent and EelApi are closely related, they serve different purposes:
In general, IJent implements the EelApi interface, providing the actual functionality that EelApi exposes to the IDE and plugins.
EelApi provides seamless integration with WSL, allowing you to:
EelApi also works with Docker containers, enabling:
While EelApi currently focuses on "local remotes" like WSL and Docker, there are plans to extend it to support "true" remotes over SSH in the future. This would provide a unified API for all types of remote environments, from local containers to remote servers.
EelApi represents a significant step forward in how IntelliJ-based IDEs interact with different execution environments. By providing a unified API that works consistently across local and remote environments, it enables a more seamless and productive development experience.
As the API stabilizes, it will become available to plugin developers, allowing them to create plugins that work consistently across different environments without having to worry about the underlying details.