AWS Cloud9: A Development Environment That Lives in the Browser, Not on Your Laptop

AWS Cloud9: A Development Environment That Lives in the Browser, Not on Your Laptop

A deep, intermediate-level walkthrough of how AWS Cloud9 is architected internally, how a single keystroke actually travels from your browser to a running EC2 instance, and how to run it securely and reliably for real development work.

Picture a workshop that exists entirely inside a shipping container — every tool, every workbench, every half-finished project sits inside that container, and no matter which port you open the doors from, the workshop looks exactly the same. AWS Cloud9 is that shipping-container workshop for software development: instead of installing an IDE, a compiler, and a debugger on your own laptop, you open a browser tab and the entire development environment — running on a dedicated cloud instance — is already there, identical every time, from any machine. This tutorial goes inside the container to see how that environment is actually built, how keystrokes and terminal sessions really travel over the network, and how to run it well as part of a real engineering workflow.

i
Current Status

AWS Cloud9 is no longer available to new customers as of its 2024 service change; existing customers can continue using it normally, and AWS has published migration guidance pointing toward the AWS IDE Toolkits and AWS CloudShell as forward-looking alternatives. This tutorial explains how Cloud9 works internally for teams still operating it today and evaluating whether to stay, migrate, or plan a transition.

1Core Concepts, One Level Deeper

Skipping “what is a cloud IDE,” this chapter builds the vocabulary you need before touching architecture: how a Cloud9 environment is actually composed and connected.

An Environment Is a Directory, Not Just an IDE Window

A Cloud9 environment is fundamentally a specific directory on a compute resource, paired with the browser-based IDE that presents it. The IDE itself is a thin client rendering files, a terminal, and a debugger UI — the actual file system, running processes, and installed tools all live on the backing compute resource, not inside the browser. This distinction matters because it explains why closing a browser tab doesn’t lose your work: the environment keeps existing (and, for EC2-backed environments, the instance keeps running or hibernating) independently of whether anyone currently has a browser open to it.

Two Environment Types: EC2 and SSH

Cloud9 supports two fundamentally different backing models. An EC2 environment provisions and manages a dedicated Amazon EC2 instance on your behalf, pre-installed with the Cloud9 SSM agent that the IDE communicates with. An SSH environment instead connects to any existing server you already control — on-premises, in another cloud, or an EC2 instance you manage yourself — over a standard SSH connection, meaning Cloud9 doesn’t own or provision the compute at all in that mode.

Simple Analogy

An EC2 environment is like renting a fully furnished workshop that the landlord builds and maintains for you. An SSH environment is like bringing your own workshop and just having a keycard cut so you can walk into your own space through Cloud9’s front door.

Environment

Environment

A named workspace consisting of a project directory, its files, and the compute resource backing it.

Member

Environment Member

An IAM identity granted access to a shared environment, with a permission level of read-only, read-write, or owner.

SSM Agent

SSM Agent

The AWS Systems Manager agent running on an EC2 environment’s instance that the Cloud9 service communicates through instead of a raw SSH connection.

Runner

Runner / Builder

A configured command Cloud9 executes to run or build a project directly from the IDE’s Run panel.

Automatic Hibernation, Not Automatic Deletion

An EC2-backed Cloud9 environment can be configured to automatically stop its underlying instance after a period of inactivity — this hibernates the instance to save cost, it does not delete the environment or its files, which live on the instance’s persistent EBS volume. The next time someone opens the IDE, Cloud9 automatically restarts the instance before reconnecting, at the cost of a short startup delay.

2Architecture and Components

The browser-based editor is only the visible tip of a small stack of coordinated services and processes.

Frontend

Browser-Based IDE (Ace Editor)

Renders the file tree, code editor, and terminal UI, and streams keystrokes and terminal I/O to the backing instance over a persistent connection.

Backend

Cloud9 Server Process

Runs on the backing instance, managing the file system, spawning terminal sessions, and running configured build/run commands.

Connectivity

SSM-Based Communication (EC2 environments)

Uses AWS Systems Manager Session Manager under the hood rather than opening an inbound SSH port on the instance’s security group.

IAM

IAM and Environment Membership

Controls both who can access the Cloud9 console/API and who is a member of a specific shared environment.

Why SSM Instead of Direct SSH for EC2 Environments

For EC2-backed environments, Cloud9 deliberately routes IDE traffic through AWS Systems Manager Session Manager rather than requiring a directly reachable SSH port. This means the instance’s security group doesn’t need an inbound rule opening port 22 to any source at all — connectivity is brokered entirely through the SSM service, which itself is authorized by IAM, collapsing what would otherwise be a network-security decision into an identity-and-access decision instead.

The AWS Toolkit Integration Layer

A Cloud9 environment ships with the AWS Toolkit pre-integrated, giving direct access to browse and interact with other AWS services — S3 buckets, Lambda functions, CloudFormation stacks — from inside the same IDE window, without needing to separately configure AWS CLI credentials, since the environment already runs under an IAM role or the identity of the connecting user.

graph TD
    Browser[Developer Browser] -->|HTTPS| IDE[Cloud9 Web IDE]
    IDE -->|SSM Session| Agent[SSM Agent on EC2 Instance]
    Agent --> FS[Project File System - EBS]
    Agent --> Term[Terminal Process]
    IDE --> Toolkit[AWS Toolkit]
    Toolkit --> S3[Amazon S3]
    Toolkit --> Lambda[AWS Lambda]
    IAM[AWS IAM] -.authorizes.-> IDE
    IAM -.authorizes.-> Agent
        
FIG 1 — A browser connecting through the Cloud9 IDE to an EC2-backed instance via SSM, with the AWS Toolkit bridging to other services

3Internal Working: What Happens When You Type

A keystroke in the browser and a running process on a remote instance are two very different things — here’s how Cloud9 keeps them in sync.

Real-Time File and Terminal Synchronization

When you edit a file in the browser, changes are transmitted incrementally over a persistent connection to the Cloud9 server process running on the backing instance, which writes them to the actual file on disk. Terminal sessions work similarly in reverse: keystrokes sent from the browser are relayed to a real shell process running on the instance, and that shell’s output is streamed back to render in the browser’s terminal panel — the terminal you see genuinely is the remote machine’s shell, not a simulation.

1

Browser Connects

The IDE establishes an authenticated session to the environment, brokered through IAM and, for EC2 environments, SSM.

2

File Tree and State Load

The current project directory structure and any previously open files/tabs are loaded from the instance.

3

Live Edit and Terminal Streaming

Keystrokes and terminal I/O are continuously synchronized between the browser and the remote shell/file system.

4

Run/Build/Debug Execution

Configured runners execute directly on the instance, with output streamed back into the IDE’s console panel.

Collaborative Editing Internals

When an environment is shared with multiple members, Cloud9 broadcasts editing events (cursor position, text changes) to every connected participant’s browser in real time, so two developers can see each other’s cursors and edits live in the same file — functioning much like collaborative document editors, but operating on a real shared file system and shell rather than a document abstraction.

Debugger Integration

For supported languages, Cloud9’s debugger attaches to the actual running process on the backing instance, setting breakpoints and stepping through execution exactly as a local IDE debugger would — the debugging experience is remote in location but not reduced in capability, since the process being debugged is real and running with real data.

4Data Flow and Lifecycle

An environment has a life story of its own — created, used, hibernated, and eventually decommissioned.

The EC2 Environment Lifecycle

Creating an EC2 environment provisions a new EC2 instance from a Cloud9-managed image, attaches an EBS volume for persistent project storage, and installs the SSM agent and Cloud9 server process automatically. After a configurable idle period, the instance can automatically stop (hibernate) to save cost, while the EBS volume and its contents persist independent of the instance’s running state. Reopening the IDE triggers an automatic instance start before reconnecting.

sequenceDiagram
    participant Dev as Developer
    participant Console as Cloud9 Console
    participant EC2 as EC2 Instance
    participant EBS as EBS Volume
    Dev->>Console: Create environment
    Console->>EC2: Provision instance
    EC2->>EBS: Attach persistent volume
    Dev->>EC2: Work in IDE
    Note over EC2: Idle timeout reached
    EC2->>EC2: Auto-stop (hibernate)
    Dev->>Console: Reopen environment
    Console->>EC2: Auto-start instance
    EC2-->>Dev: Reconnect IDE session
        
FIG 2 — An EC2 environment’s lifecycle from creation through idle hibernation to reconnection

Environment Sharing and Membership Changes

Adding a member to a shared environment grants that IAM identity access at a chosen permission level without creating a separate copy of the environment — everyone works against the same underlying file system and instance. Removing a member immediately revokes their access, and ownership changes propagate the same way, all without requiring the environment itself to be recreated.

Pair Programming Across Time Zones

Two engineers in different time zones share a single EC2 environment for a joint feature, each connecting from their own browser at their own hours, working against the exact same file system and dependency installation rather than needing to keep two separate local setups in sync.

Environment Deletion

Deleting an EC2 environment terminates its backing instance and its associated resources; unless the project’s files were pushed to a separate persistent store like a Git repository, deleting the environment deletes the work along with it — a straightforward but easy-to-overlook consequence of the environment being a real, disposable instance rather than an abstract project record.

5Advantages, Disadvantages, and Trade-offs

Advantages

  • Identical development environment reachable from any machine with a browser, with nothing to install locally.
  • No inbound SSH port required for EC2 environments, since connectivity is brokered through IAM-authorized SSM sessions.
  • Built-in real-time collaborative editing without third-party tooling.
  • Native AWS Toolkit integration for direct interaction with other AWS services from inside the IDE.
  • Automatic instance hibernation reduces cost for environments that sit idle outside working hours.

Disadvantages / Trade-offs

  • No longer available to new customers, which affects long-term roadmap confidence for teams considering it today.
  • Editor features and extension ecosystem are more limited than mature desktop IDEs.
  • EC2 environments incur ongoing compute and storage cost even when hibernated (for the EBS volume), unlike a fully serverless alternative.
  • Network latency between browser and instance can make the editing experience feel less immediate than a local IDE, especially on poor connections.
“A development environment that lives in the cloud trades a little immediacy for a lot of consistency — every teammate, every machine, the exact same workshop.”

6Performance and Scalability

Performance in Cloud9 is a function of instance sizing, network latency, and how many people share one environment — not something that scales automatically like a serverless service.

Instance Sizing for Workload Demands

Because an EC2 environment’s compute, memory, and IOPS are all determined by the underlying instance type, resource-intensive workloads — large compilations, running local databases, heavy test suites — require deliberately choosing a larger instance type, exactly as they would for any EC2-based workload. Cloud9 does not automatically resize an instance to match load; under-provisioning shows up as a genuinely slow build or a frozen terminal, not a gracefully degraded experience.

2 types
EC2-backed and SSH-backed environments
SSM
Connectivity mechanism for EC2 environments
Auto
Instance hibernation after configurable idle time

Network Latency and Perceived Responsiveness

Because keystrokes and terminal output travel over the network round-trip between browser and instance, developers on high-latency connections will notice a small but real lag compared to editing locally. Choosing an AWS Region geographically close to the development team minimizes this round-trip time and is the single most effective lever for perceived editor responsiveness.

Shared Environment Contention

Because all members of a shared environment run against the same underlying instance, CPU- or memory-intensive work by one member (a heavy build, a long-running test suite) can degrade responsiveness for everyone else connected to that same environment — a trade-off inherent to the shared-instance model that dedicated per-developer environments avoid entirely.

Choosing SSH Environments to Reuse Existing Capacity

Teams with already-provisioned, appropriately sized compute — an existing EC2 fleet, an on-premises development server — can point Cloud9 at that existing infrastructure through an SSH environment rather than provisioning new, separately billed EC2 instances purely for IDE access.

7High Availability and Reliability

A Cloud9 environment’s reliability profile follows the reliability profile of a single EC2 instance — which shapes exactly what teams need to plan for.

Single-Instance Availability Model

An EC2-backed environment runs on a single instance in a single Availability Zone; there’s no automatic multi-AZ failover the way a managed database might offer. If that instance or its Availability Zone experiences an issue, the environment becomes unavailable until the underlying problem resolves or the environment is recreated from persisted data.

!
Common Misconception

An EBS-backed persistent volume protects against instance loss, but it is not a substitute for actual source control. Files that only ever exist in a Cloud9 environment and are never pushed to a Git repository or otherwise backed up remain at risk if the environment or its volume is ever deleted or corrupted.

Snapshotting the EBS Volume for Recovery

Because Cloud9’s persistent project storage is a standard EBS volume, standard EBS snapshot practices apply directly — periodic snapshots (manual or automated through AWS Backup) give a recovery point independent of the Cloud9 service itself, protecting against accidental deletion or corruption beyond what version control alone would catch.

Treating Cloud9 as a Development Tool, Not Production Infrastructure

Cloud9 environments are explicitly a development-time tool, not something that should sit in a production request path. Reliability planning for Cloud9 is therefore about protecting developer productivity and work continuity — through source control discipline and volume backups — rather than about the uptime guarantees expected of a customer-facing production service.

8Security

Because a Cloud9 environment often has direct access to project source code, cloud credentials, and running processes, its security model deserves the same attention as any production system.

IAM Governs Both Console Access and Environment Membership

Two separate IAM-governed layers control Cloud9 access: account-level IAM policies determine who can create, view, or manage environments at all, while environment-level membership determines who specifically has access to a given environment’s files and terminal, and at what permission level (read-only, read-write, or owner).

No Inbound Ports Required for EC2 Environments

Because EC2 environment connectivity is brokered through SSM rather than direct SSH, the backing instance’s security group does not need an open inbound port for IDE access — a meaningfully smaller network attack surface than a traditional remote development server that must expose SSH publicly.

Credentials

Instance Role Credentials

An EC2 environment can run under an IAM instance role, giving the AWS Toolkit and CLI access to other services without hardcoded credentials in the environment.

Encryption

EBS Volume Encryption

The persistent project volume can be encrypted using AWS KMS-managed keys, protecting source code at rest.

Auditing

CloudTrail Logging

Environment creation, membership changes, and other management actions are recorded in AWS CloudTrail for audit purposes.

Isolation

VPC Placement

EC2 environments can be placed inside a specific VPC and subnet, letting network-level isolation policies apply the same way they would to any other EC2 workload.

Shared Environments Need Deliberate Permission Discipline

Because every member of a shared environment can potentially reach whatever IAM role or credentials are available on that instance, granting environment membership should be treated with the same care as granting access to a shared production credential — read-only membership for reviewers, read-write reserved for active contributors.

9Monitoring, Logging, and Metrics

Because an EC2 environment is, underneath, a real EC2 instance, most useful observability comes from standard EC2 tooling rather than Cloud9-specific metrics.

Standard EC2 Metrics Apply Directly

MetricWhat It Tells You
CPUUtilizationWhether the instance is under-sized for build or test workloads running inside the environment.
EBS VolumeReadOps / WriteOpsDisk I/O pressure, relevant when running local databases or large test suites inside the environment.
NetworkIn / NetworkOutTraffic volume, useful when the environment is used for tasks like large file transfers or dependency downloads.
StatusCheckFailedSignals an underlying instance health problem that would make the environment unreachable.

CloudTrail for Environment and Membership Auditing

Actions like environment creation, deletion, and membership changes are captured in CloudTrail, giving administrators a record of who created which environments and who was granted access to them — useful both for cost attribution and for security review of who could reach a given project’s code.

Simple Analogy

EC2 metrics for a Cloud9 environment are like checking the vital signs of the actual workshop building — temperature, power draw, foot traffic — rather than anything specific to the tools inside it.

Cost Visibility Through Standard Billing Tools

Because Cloud9 EC2 environments bill as ordinary EC2 instances and EBS volumes, standard AWS Cost Explorer and billing alarms apply directly, letting teams track and alert on Cloud9-related spend the same way they would for any other EC2 workload, including tagging environments by team or project for cost allocation.

10Deployment and Cloud Footprint

“Deployment” here means choosing environment type, instance size, and Region — decisions that shape both cost and day-to-day experience.

Onboarding New Engineers Quickly

A team standardizes new-hire onboarding around a pre-configured EC2 environment template, letting a new engineer start contributing code within minutes of getting AWS access, without a multi-hour local development-environment setup process.

Reusing Existing Infrastructure via SSH Environments

An organization with an established fleet of development servers connects Cloud9 to those servers through SSH environments, gaining the browser-based IDE experience without provisioning any new, separately billed compute.

Serverless Application Development

Teams building Lambda-based serverless applications use Cloud9’s native AWS Toolkit integration to edit, test, and deploy functions directly from the IDE, keeping the entire development loop inside one browser tab.

Region Selection

Cloud9 environments are created in a specific Region; choosing one close to the development team minimizes network latency for editing and terminal responsiveness, while some teams also weigh Regional availability of other services their project depends on.

Planning a Transition Given the New-Customer Closure

Because Cloud9 is closed to new customers, teams currently building new development workflows should evaluate AWS’s suggested alternatives — the AWS IDE Toolkits for popular local editors, or AWS CloudShell for lightweight browser-based command-line access — against their specific collaborative-editing and always-available-environment needs before committing further investment into new Cloud9 environments.

11Design Patterns and Anti-patterns

ANTI-PATTERN-01 Avoid
Problem

Treating a Cloud9 environment as the sole copy of a project’s source code, never pushing to a separate Git repository.

Why It’s Harmful

An accidentally deleted environment, a corrupted EBS volume, or a mistaken instance termination can permanently destroy work that was never independently version-controlled.

Correct Approach

Treat the environment as a workspace, not a repository — commit and push work to a proper Git remote regularly, exactly as you would from a local machine.

ANTI-PATTERN-02 Avoid
Problem

Granting broad IAM instance-role permissions to a shared environment used by many team members with varying trust levels.

Why It’s Harmful

Every member with access to the environment can act using whatever permissions the instance role carries, effectively extending those permissions to everyone in the shared environment regardless of their individual IAM identity.

Correct Approach

Scope an environment’s instance role to the minimum permissions actually needed for the project, and reserve broader-access environments for smaller, more trusted groups.

Pattern: SSH Environments for Bring-Your-Own-Compute

Rather than always provisioning a new EC2 instance, pointing Cloud9 at existing, appropriately sized infrastructure through an SSH environment lets a team standardize on the IDE experience without duplicating compute spend for machines that already exist.

Pattern: Idle Timeout Tuned to Team Working Hours

Configuring the automatic-hibernation idle timeout to match a team’s actual working pattern — short for a team with predictable hours, longer for a globally distributed team with staggered activity — balances cost savings against the friction of frequent cold-start reconnections.

12Best Practices and Common Mistakes

Best Practice

Push Work to Git Regularly

Never let an environment become the only copy of important source code.

Best Practice

Size Instances to the Actual Workload

Choose an instance type based on real build and test resource needs, not the smallest default option.

Best Practice

Encrypt Project Volumes

Enable EBS encryption for any environment holding proprietary or sensitive source code.

Best Practice

Review Membership Periodically

Remove access for members who no longer need it, especially on long-lived shared environments.

Mistake

Ignoring Idle Timeout Cost Impact

Leaving hibernation disabled or set too long on rarely used environments leads to paying for idle compute unnecessarily.

Mistake

Assuming EBS Persistence Equals Backup

Persistent storage protects against instance restarts, not against accidental environment deletion — that needs separate snapshotting or version control.

i
Best Practice

Given the closure to new customers, document any team-specific Cloud9 setup (dependencies, runners, environment variables) clearly, so migrating to an alternative tool later — if it becomes necessary — is a matter of following documentation rather than reverse-engineering tribal knowledge.

13Real-World and Industry Examples

Coding Bootcamps and Training Environments

Educational programs use Cloud9 to give every student an identical, pre-configured development environment reachable from any device, eliminating the “it works on my machine” setup problems that otherwise consume valuable class time.

Hackathons and Short-Lived Team Projects

Hackathon organizers provision shared Cloud9 environments so ad-hoc teams can start collaborating on shared code within minutes, without any team member needing pre-installed local tooling for the event’s specific tech stack.

Serverless and IoT Prototyping

Teams building AWS Lambda functions or working with AWS IoT services use Cloud9’s tight AWS Toolkit integration to iterate quickly on cloud-native code without needing separate local SDK and credential setup.

Remote and Contractor Access to a Fixed Environment

Organizations working with short-term contractors use Cloud9 environment membership to grant precisely scoped, easily revocable access to project code, avoiding the need to provision and later decommission a full local development machine for temporary team members.

14Frequently Asked Questions

Q1Can I still create new Cloud9 environments today?

Only existing customers can continue creating and using Cloud9 environments as normal; the service is no longer available for onboarding entirely new customers, and AWS has published guidance pointing toward the AWS IDE Toolkits or AWS CloudShell as alternatives for new projects.

Q2What happens to my files if the EC2 instance backing my environment stops?

Nothing is lost — the project files live on a persistent EBS volume separate from the instance’s running state. When the instance auto-stops due to inactivity, the volume and its contents remain intact and are reattached automatically when the environment is reopened.

Q3Do I need to open an SSH port to use an EC2-backed environment?

No — EC2 environments connect through AWS Systems Manager Session Manager rather than a direct SSH connection, so no inbound port needs to be opened on the instance’s security group for the IDE to function.

Q4Is Cloud9 suitable for resource-intensive builds or local databases?

Yes, as long as the backing EC2 instance is sized appropriately for that workload — Cloud9 doesn’t automatically scale instance resources, so a resource-heavy project needs a deliberately chosen larger instance type, exactly as it would running directly on EC2.

Q5Can multiple people work in the same environment at once?

Yes — shared environments support real-time collaborative editing among members, though because everyone shares the same underlying instance, heavy resource use by one member can affect responsiveness for others connected at the same time.

15Summary and Key Takeaways

AWS Cloud9’s real architecture is simpler than it might first appear: a browser-based editor streaming keystrokes and terminal I/O to a real, persistent compute resource, brokered securely through IAM and, for EC2 environments, AWS Systems Manager instead of open network ports. That simplicity is exactly what makes it powerful for consistent, low-setup development environments — and understanding it clearly is also what makes the trade-offs honest: a single-instance availability model, a service closed to new customers, and a genuine need for source-control discipline since the environment itself is not a backup strategy.

Key Takeaways

  • An environment is a real compute resource, not a sandboxed abstraction. EC2 environments run on genuine EC2 instances with persistent EBS storage.
  • SSM replaces open SSH ports for EC2 environments. Connectivity is brokered through IAM-authorized sessions, shrinking the network attack surface.
  • Hibernation saves cost without losing work. Idle instances stop automatically; the persistent volume and its contents remain intact.
  • Shared environments mean shared resources. Every member works against the same instance, so sizing and permission scoping both need deliberate planning.
  • Persistence is not backup. EBS volumes survive instance restarts, but only Git or explicit snapshots protect against deletion or corruption.
  • The service is closed to new customers. Existing users can continue normally, but new projects should weigh AWS’s suggested alternatives before investing further.
  • Reliability planning should match its role. Cloud9 is a development-time tool; plan for developer continuity, not production-grade uptime.