Design a Cloud IDE With SSH Access Where One or More Users Share a Host

Read the full interview experience this question came from →

Quick Overview

A system design question about building a cloud IDE in which developers get SSH access to remote development hosts, and a host can be used by one person or shared by several. It tests host lifecycle management, connection routing through a gateway, workspace persistence, multi-user access control and isolation.

Design a Cloud IDE With SSH Access Where One or More Users Share a Host

Company: OpenAI

Role: Software Engineer

Category: System Design

Difficulty: medium

Interview Round: Technical Screen

Design a cloud IDE: a service that gives developers a development environment on remote machines instead of their own computers. Developers connect to a remote host, edit and build code there, and run commands in a terminal. The prompt left the requirements open, and the design was scoped to an SSH-based version. A user gets SSH access to a remote development host, and one host can be used by a single person or shared by several people. ```hint Separate managing hosts from carrying sessions Creating, starting, stopping and sharing a host is a different problem from carrying a user's live terminal traffic to it. Decide which component owns each. ``` ```hint What survives a host Decide what a user expects to find after the host they were using is stopped, crashes or is replaced, and where that state must live. ``` ```hint Sharing is a permission, not just a connection When a second person joins a host, decide how they are authenticated, what they may do there, and how the owner can revoke their access. ``` ### Constraints and Clarifications - The scope is SSH access to a remote Linux host: terminal sessions, plus any editor tooling that runs over the same connection. A browser-based editor with real-time co-editing is not required unless you add it as an extension. - A host belongs to one user or is shared by several users at the same time. - Scale, machine sizes, regions and cost targets are not given. State your assumptions. ### Clarifying Questions - When several people share a host, do they share one account and one set of files, or does each person get their own account and home directory on it? - Should a host keep running when nobody is connected, or stop after a period of inactivity and start again on the next connection? - What must persist across a host restart: only the files, or also installed packages, running processes and open terminal sessions? - How do users sign in, and who may invite others to a host? - Are the users employees of the same organizations, or members of the public whose hosts must be strongly isolated from each other? ### What a Strong Answer Covers - A control plane (API, metadata, scheduling) separated from the data path that carries SSH sessions - The host lifecycle (create, start, idle stop, resume, delete) as an explicit state machine that is safe under concurrent requests - Workspace storage that is independent of the machine running the host, and what is lost when that machine fails - Routing connections through a gateway to private hosts, with short-lived, revocable credentials - A sharing model with roles, isolation between users on a shared host and between hosts, revocation of live sessions, and audit - Scaling the fleet and the gateways, time to a usable shell, cost control, and failure handling for hosts, gateways and the control plane ### Follow-up Questions - The owner of a shared host removes a collaborator who is in the middle of a session. What happens to that collaborator's open connections and running processes? - Connecting to a stopped host takes too long. How would you shorten the time to a usable shell? - The physical machine under a running host fails. What does the user see, and what do they lose? - How would you let a user open, in their browser, a web server running on their host, without exposing it publicly?

Overview: A system design question about building a cloud IDE in which developers get SSH access to remote development hosts, and a host can be used by one person or shared by several. It tests host lifecycle management, connection routing through a gateway, workspace persistence, multi-user access control and isolation.

Read the full OpenAI Software Engineer interview experience this question came from

|Home/System Design/OpenAI
OpenAI logo
OpenAI
Jul 13, 2026
mediumSoftware EngineerTechnical ScreenSystem Design
0
0

Design a cloud IDE: a service that gives developers a development environment on remote machines instead of their own computers. Developers connect to a remote host, edit and build code there, and run commands in a terminal.

The prompt left the requirements open, and the design was scoped to an SSH-based version. A user gets SSH access to a remote development host, and one host can be used by a single person or shared by several people.

Constraints and Clarifications

  • The scope is SSH access to a remote Linux host: terminal sessions, plus any editor tooling that runs over the same connection. A browser-based editor with real-time co-editing is not required unless you add it as an extension.
  • A host belongs to one user or is shared by several users at the same time.
  • Scale, machine sizes, regions and cost targets are not given. State your assumptions.

Clarifying Questions Guidance

  • When several people share a host, do they share one account and one set of files, or does each person get their own account and home directory on it?
  • Should a host keep running when nobody is connected, or stop after a period of inactivity and start again on the next connection?
  • What must persist across a host restart: only the files, or also installed packages, running processes and open terminal sessions?
  • How do users sign in, and who may invite others to a host?
  • Are the users employees of the same organizations, or members of the public whose hosts must be strongly isolated from each other?

What a Strong Answer Covers Guidance

  • A control plane (API, metadata, scheduling) separated from the data path that carries SSH sessions
  • The host lifecycle (create, start, idle stop, resume, delete) as an explicit state machine that is safe under concurrent requests
  • Workspace storage that is independent of the machine running the host, and what is lost when that machine fails
  • Routing connections through a gateway to private hosts, with short-lived, revocable credentials
  • A sharing model with roles, isolation between users on a shared host and between hosts, revocation of live sessions, and audit
  • Scaling the fleet and the gateways, time to a usable shell, cost control, and failure handling for hosts, gateways and the control plane

Follow-up Questions Guidance

  • The owner of a shared host removes a collaborator who is in the middle of a session. What happens to that collaborator's open connections and running processes?
  • Connecting to a stopped host takes too long. How would you shorten the time to a usable shell?
  • The physical machine under a running host fails. What does the user see, and what do they lose?
  • How would you let a user open, in their browser, a web server running on their host, without exposing it publicly?

Submit Your Answer to Earn 20XP

Sign in to leave a comment

Loading comments...