In regulated industries—finance, healthcare, government—the question of where code lives matters as much as what it does. Source code, configuration, credentials, and the data your code processes: if any of it touches a developer's laptop, you have an endpoint risk problem. Laptops get lost, stolen, or compromised. They leave the office. They connect to unknown networks. They are, from a compliance perspective, the weakest link in your development chain.

cloudX takes a different approach: your code never leaves AWS. Developers work in VSCode as they always have, but the editor's backend—where files are stored, where code runs, where AWS credentials live—is an EC2 instance inside your own AWS environment.

The Compliance Case

For organizations under GDPR, ISO 27001, SOC 2, or sector-specific regulations, keeping development artefacts inside a governed AWS environment addresses several common controls in one move:

The Model: Thin Client, Thick Cloud

With cloudX, a developer's laptop becomes a thin client. VSCode runs locally, but everything else happens on an EC2 instance in your AWS account:

When a developer closes their laptop, nothing of consequence is there. The working state is on the EC2 instance in your VPC.

This is a meaningful shift for compliance. Instead of trying to control what happens on N developer laptops across N operating systems with N security postures, you control one thing: the AWS environment.

No Open Ports, No Public IP

The connection between VSCode and the EC2 instance runs through AWS Systems Manager Session Manager. The instance has no public IP address, no inbound security group rules, and no SSH port exposed to the internet. There is no network path to the instance that doesn't go through AWS IAM authentication first.

From a network security standpoint, the instance is as locked down as your production workloads.

cloudX-proxy is the client-side tool that makes this transparent. It handles instance startup, SSH key distribution via EC2 Instance Connect, and SSM tunneling—and writes an SSH config entry so VSCode Remote just sees a regular SSH host. Developers don't interact with any of the underlying mechanics.

The Architecture

cloudX has two parts: the AWS side and the client side.

The AWS side is a set of CloudFormation templates you deploy to your account:

The client side is cloudX-proxy, a Python package (uvx cloudX-proxy) that handles the SSH proxy magic. The first connection takes 2–3 minutes while the instance starts and VSCode Server installs. Reconnecting is ~30 seconds.

Access Control: ABAC and Multiple Environments

cloudX uses attribute-based access control (ABAC) to tie developers to their own instances. A developer cannot reach another developer's instance, even in the same environment. Environments are fully isolated—each has its own VPC subnet, security group, IAM group, and SSM Parameter Store namespace.

You can run cloudX-dev-erik, cloudX-prod-erik, and cloudX-research-erik as completely separate SSH targets in separate environments, with separate IAM permissions, in the same AWS account.

Software That Comes Pre-Installed

Package Default
Homebrew
direnv
Zsh + Oh My Zsh (easytocloud theme)
uv (Python package manager)
privpage (AWS CLI output privacy)
fortools (multi-account AWS iteration)
Docker Optional
NVM (Node.js) Optional
Anaconda Optional

Getting Started

Deploy the environment template first:

Launch Stack

Then deploy an instance for yourself:

Launch Stack

On your local machine, install the proxy and run setup:

uvx cloudX-proxy setup

The setup wizard prompts for your AWS profile, instance ID, and a hostname. It writes an SSH config entry and you're done. Open VSCode Remote Explorer, connect to cloudX-{env}-{hostname}, and you're developing in AWS.

cloudX is open source. The CloudFormation templates and the proxy client are both on our GitHub.