The Visual Studio Code Server empowers you to run VS Code on a remote development machine, whether it’s your powerful desktop or a cloud-based Virtual Machine (VM). This service enables secure access to your remote development environment from any location using a local VS Code client, streamlining your workflow without the traditional reliance on SSH.
Understanding the VS Code Server
VS Code is designed to maximize developer productivity by seamlessly integrating with various development environments. The VS Code Remote Development extensions exemplify this, allowing you to work within Windows Subsystem for Linux (WSL), access remote machines via SSH, and utilize dev containers directly from your local VS Code. These extensions function by installing a server component on the remote environment, facilitating smooth interaction between your local VS Code instance and the remote codebase and runtime.
Building upon this foundation, the standalone “VS Code Server” emerges as a dedicated service. It incorporates the core server technology from the remote extensions and expands upon it with enhanced features. These additions include an interactive Command Line Interface (CLI) and mechanisms for establishing secure connections, particularly beneficial for scenarios involving vscode.dev.
Delving into the Architecture
Our goal is to deliver a consistent and unified VS Code experience, regardless of whether you’re working locally or remotely, on a desktop application or within a web browser.
Access to the VS Code Server is seamlessly integrated into the familiar code
CLI. This CLI is instrumental in establishing a secure tunnel between your VS Code client and the remote machine hosting the server. Tunneling, in essence, creates a secure conduit for data transmission across networks.
Diagram illustrating the VS Code Server architecture, highlighting the tunnel connection between the local VS Code client and the remote server.
The VS Code Server experience is composed of these key components:
- VS Code Server: The essential backend service that powers VS Code’s remote development capabilities.
- Remote – Tunnels extension: This extension, automatically activated in your local VS Code client, manages and simplifies the connection to your remote machine. Learn more in the Remote Tunnels documentation.
Key Use Case Scenarios
The VS Code Server unlocks a range of innovative ways to leverage VS Code, adapting to diverse development needs:
- Developing on Remote Machines with Restricted SSH: Ideal for scenarios where SSH access to a remote machine is limited by network policies or security constraints, or when you require browser-based access for greater flexibility.
- Accessing Development Environments from Limited Devices: Enables development on devices that may not support the installation of the full VS Code desktop application, such as iPads, tablets, or Chromebooks, extending your development reach.
- Enhanced Client-Side Security: Capitalize on the inherent security benefits of client-side execution. By running code within the browser’s sandbox, the VS Code Server provides an extra layer of protection.
Getting Started with VS Code Server
Initiating tunneling with VS Code Server offers two straightforward pathways. Detailed instructions are available in the dedicated documentation for each method: VS Code Remote Development documentation.
Exploring Further
Licensing and Command-Line Interface
Upon the initial execution of the VS Code Server, you will be presented with the VS Code Server license agreement. You can review the complete license terms here.
* Visual Studio Code Server * * By using the software, you agree to * the Visual Studio Code Server License Terms (https://aka.ms/Vscode-server-license) and * the Microsoft Privacy Statement (https://privacy.microsoft.com/en-US/privacystatement).
To explore the full capabilities of the CLI, use the command code -h
. For commands specifically related to tunneling, use code tunnel -help
:
Screenshot displaying the output of the code tunnel -help
command in the command-line interface, showcasing available tunneling options and parameters.
Extension-Based Commands
Similar to the CLI, the VS Code Remote Tunnels extension offers a set of commands accessible through the VS Code Command Palette (F1
). Simply type Remote Tunnels to discover and utilize these commands. Further details are available in the Remote Tunnels documentation.
Telemetry Configuration
To disable telemetry data collection, include the --disable-telemetry
flag when launching the VS Code Server: code tunnel --disable-telemetry
. Alternatively, to specify a particular telemetry level, such as collecting only error information, use --telemetry-level
followed by the desired level (e.g., error
).
If telemetry is not explicitly disabled through the CLI, the VS Code Server will dynamically align with the telemetry settings of the connecting client (whether it’s vscode.dev or the desktop VS Code application) once a successful connection is established.
Frequently Asked Questions
Is VS Code Server designed for multi-user access to a single remote instance?
No, each VS Code Server instance is intended for access by a single, individual user. Concurrent access by multiple users to the same server instance is not supported.
Can I host the VS Code Server as a persistent service?
No, the VS Code Server license https://aka.ms/vscode-server-license explicitly prohibits hosting it as a long-running service. It is designed for interactive, on-demand use.
Is there a comprehensive list of endpoints used by VS Code Server?
If you are operating within a restricted network environment, ensure that the VS Code Server has the necessary access to the endpoints detailed in these articles: [list of endpoints articles – insert links to relevant articles if available, or general VS Code network requirements documentation]. (Note: As I don’t have access to external browsing, I’m indicating where this information would ideally be linked.)
Are there limitations on extension compatibility?
Yes, extensions that are purely UI-based are not supported when using a web-based VS Code instance connected via VS Code Server. For extension developers, the Remote Development guide provides in-depth information on extension architecture and compatibility in remote scenarios.
Are there any browser-specific limitations?
Working within a browser environment introduces certain limitations and may require specific browser configurations. The VS Code for the Web documentation offers comprehensive details on browser-related considerations.
How do I keep my VS Code Server version up to date?
VS Code will automatically notify you within the application when you connect to your remote machine if a VS Code Server update is available. You can then initiate the update process directly through this notification, ensuring you are always running the latest version.
I’m encountering an error related to keyring storage. What should I do?
Settings Sync functionality relies on authentication with a Settings Sync server. The associated secret for this authentication is securely stored on the server. This process necessitates setting up a keyring on the server machine. If a keyring is not configured, the VS Code Server will default to using an in-memory secret storage, which is only persistent for the duration of the server session.
This GitHub issue provides further context and troubleshooting steps. If you continue to experience issues, please report a new issue in the VS Code Remote GitHub repository.
Where can I submit feedback or report an issue with VS Code Server?
For any issues or feedback regarding VS Code Server, please file a detailed report in the VS Code Remote GitHub repository. When submitting a report, include verbose logging, which can be enabled by launching the VS Code Server with the -v
flag: code -v tunnel
.
You can specifically filter for VS Code Server related issues using the code-server
label within the repository.
02/06/2025