Codex Universal
Generated on 2 Jun 2026 from the Codex Universal catalog page
codex-universal is OpenAI’s base development container. It ships pre-built toolchains for modern software development so you can reproduce Codex-style environments on your own infrastructure.
- Multi-language runtimes — Python, Node.js, Rust, Go, Ruby, PHP, Java, Swift, and more
- Version pinning — Select language versions via
CODEX_ENV_*environment variables - Persistent workspace —
/root/workspaceon the host is mounted at/workspacein the container - Docker-based — Official image from
ghcr.io/openai/codex-universal - SSH workflow — SSH into the droplet and open an interactive shell inside the container
Key Features
- Approximate the OpenAI Codex cloud dev environment on a DigitalOcean Droplet
- Pre-configured default language versions (Python 3.12, Node 20, Rust 1.87, Go 1.23, and others)
- Override runtimes via
/opt/codex-universal/.envor droplet environment variables at create time - Helper scripts to start, stop, restart, update, and enter the environment
- Includes bun, Bazelisk, Erlang, and Elixir in the upstream image
System Requirements
The codex-universal image is large and includes many language toolchains. Use these Droplet sizes as a guide:
| Use Case | RAM | CPU | Storage |
|---|---|---|---|
| Minimum | 4 GB | 2 vCPU | 50 GB |
| Recommended | 8 GB | 4 vCPU | 80 GB |
Included System Components
- Ubuntu 24.04 LTS — Base operating system
- Docker & Docker Compose — Container runtime
- Codex Universal —
ghcr.io/openai/codex-universal:latest - systemd service —
codex-universal.servicekeeps the dev container running - UFW Firewall — SSH only (rate-limited)
Software Included
This Marketplace listing does not include a detailed software list.
Creating an App using the Control Panel
Click the Deploy to DigitalOcean button to create a Droplet based on this 1-Click App. If you aren’t logged in, this link will prompt you to log in with your DigitalOcean account.
Creating an App using the API
In addition to creating a Droplet from the Codex Universal 1-Click App using the control panel, you can also use the DigitalOcean API. As an example, to create a 4GB Codex Universal Droplet in the SFO2 region, you can use the following curl command. You need to either save your API access token to an environment variable or substitute it in the command below.
curl -X POST -H 'Content-Type: application/json' \
-H 'Authorization: Bearer '$TOKEN'' -d \
'{"name":"choose_a_name","region":"sfo2","size":"s-2vcpu-4gb","image":"codexuniversal"}' \
"https://api.digitalocean.com/v2/droplets"Getting Started After Deploying Codex Universal
1. Deploy the Droplet
- Select this 1-Click App from the DigitalOcean Marketplace
- Choose at least 4 GB RAM (8 GB recommended)
- Add your SSH key for secure access
- Optionally set
CODEX_ENV_*droplet environment variables to customize language versions - Create the Droplet
2. Wait for First Boot
First boot starts the Codex Universal container and runs language runtime setup. This can take several minutes.
3. SSH In
ssh root@your-droplet-ip
4. Enter the Development Environment
/opt/codex-universal/shell-codex-universal.sh
Inside the container, your workspace is at /workspace. On the host, the same files live in /root/workspace.
5. Work on Your Project
# On the host (before or after entering the shell)
cd /root/workspace
git clone https://github.com/your-org/your-repo.git
# Enter the Codex environment
/opt/codex-universal/shell-codex-universal.sh
# Inside the container
cd /workspace/your-repo
python3 --version
node --version
rustc --version
Configuring Language Runtimes
Edit /opt/codex-universal/.env and set CODEX_ENV_* variables, then restart:
/opt/codex-universal/restart-codex-universal.sh
Supported variables (see upstream docs):
| Variable | Example |
|---|---|
CODEX_ENV_PYTHON_VERSION |
3.12 |
CODEX_ENV_NODE_VERSION |
20 |
CODEX_ENV_RUST_VERSION |
1.87.0 |
CODEX_ENV_GO_VERSION |
1.23.8 |
CODEX_ENV_SWIFT_VERSION |
6.2 |
CODEX_ENV_RUBY_VERSION |
3.4.4 |
CODEX_ENV_PHP_VERSION |
8.4 |
CODEX_ENV_JAVA_VERSION |
21 |
You can also pass these as droplet environment variables when creating the Droplet.
Managing the Service
| Action | Command |
|---|---|
| Enter shell | /opt/codex-universal/shell-codex-universal.sh |
| Start | /opt/codex-universal/start-codex-universal.sh |
| Stop | /opt/codex-universal/stop-codex-universal.sh |
| Restart | /opt/codex-universal/restart-codex-universal.sh |
| Update image | /opt/codex-universal/update-codex-universal.sh |
| Status | /opt/codex-universal/status-codex-universal.sh |
| Version info | /opt/codex-universal/codex-universal-version.sh |
Or use systemd directly:
systemctl status codex-universal
systemctl restart codex-universal
journalctl -u codex-universal -f
Updating
Pull the pinned image and restart:
/opt/codex-universal/update-codex-universal.sh
The image is pinned by digest (IMAGE and IMAGE_DIGEST in /opt/codex-universal/.env) for reproducible builds. To adopt a newer upstream release, update the digest in the env file and rebuild the 1-click snapshot, or edit IMAGE / IMAGE_DIGEST manually after verifying the new digest.
Resources
License
Codex Universal is maintained by OpenAI. See the upstream repository for license terms.