Dev environments are virtual machines running in the Space cloud. You can use these machines for software development instead of your local machine:
Your local machine works as a frontend. It runs only a thin client that is connected to a dev environment.
The dev environment works as a backend. It runs all heavy-weight IDE operations: processes the source code, builds indexes, compiles the code, and so on.
Space dev environments can provide backend for the following IDEs:
JetBrains Fleet: a lightweight IDE that works as a thin client.
IntelliJ-based IDEs with JetBrains Gateway (a thin client based on IntelliJ IDEA). Currently, only IntelliJ IDEA is supported.
You can install these IDEs using JetBrains Toolbox App.
Use JetBrains Toolbox App to install JetBrains Fleet. It's a lightweight IDE that can serve as a thin client for dev environments.
Open your project in Space and then the Repositories page.
Find the required repository and click Open in IDE next to it.
In the New Dev Environment window, select a project branch, a suitable instance type, an IDE of your choice (JetBrains Fleet or Intellij IDEA via Gateway) and click Create.
That's it! Space will create a dev environment and start the selected IDE.
Note that these instructions don't include configuring your dev environment. That's why the environment container will use the default image and the IDE will require some time to build project indexes. So, we recommend that you configure the environment for your project before using it.
How does it work
Creating a dev environment
Every project repository page in Space has the Open in IDE button that creates a new dev environment. Learn more
Dedicated virtual machine and a container
When you create a dev environment, Space assigns a dedicated virtual machine to your Space account. Dev environments are individual – only you can access your environments (though, it's possible to share your environment with other users for collaborative work).
A dev environment is a Docker container that runs inside the dedicated virtual machine. By default, if you haven't configured the environment, it uses the default image for the container.
Dev environment storage
Each dev environment has an assigned storage. When a dev environment is started for the first time, Space clones the project repository to the storage and mounts it to the dev environment.
Preparing a dev environment for a project
Before creating a dev environment, you can configure it for your project. Typically, this should be done only once for a project. The configuration is performed with two files:
Dockerfile: a custom image for your dev environment that may include the frameworks, runtimes, and tools required by your project.
.space.kts: an Automation script that warms up the dev environment. It does whatever is needed to speed up loading the project: builds project indexes, downloads dependencies, and so on. The result of the warm-up job is saved on the same storage that is mounted to the dev environment.
Connecting to a dev environment
After the dev environment is started, Space suggest you to connect to it using an editor of your choice: JetBrains Fleet or one of the IntelliJ-based IDEs with JetBrains Gateway.
Developing in a dev environment
When you make changes to the code in the local editor (the frontend), they are sent to the dev environment (the backend) that takes care of the rest. Your local editor only renders the user interface and handles the communication with the backend.
Dev environment lifecycle
If there's no activity with a dev environment for more than 30 minutes, Space hibernates the environment: It performs graceful shutdown for the container (
docker stop), and releases the virtual machine. If you had any uncommitted changes, they are automatically saved to the dev environment storage and will be available after you restart the environment.